SYS用户登录ORACLE权限验证真实案例
刚写完一个关于SYS用户登录ORACLE数据库验证的文章(http://www.dbdream.com.cn/2011/12/12/windows%E7%8E%AF%E5%A2%83ora-12638%E9%94%99%E8%AF%AF%E5%8F%8Asys%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%9D%83%E9%99%90%E9%AA%8C%E8%AF%81/),今天在ORACLE交流群里就遇到了和这有关的真实案例,太巧了,下面摘录群聊天记录的部分内容,对问题简单描述。
大家好啊,
现在有个问题要请教,
我用sqlplus sys/sys@ora as sysdba
刚开始能连上,但是过几秒钟就断开了。 应该查看什么找原因?
进去后 SQL> select * from dba_roles ;
select * from dba_roles
* ERROR at line 1:
ORA-01034: ORACLE not available
这是什么原因呢?
我用的是linux 5.3,oracle Version 10.2.0.4.0
每次一重启就能连上,过几秒就断了,本地登录不秒断,正常的,
远程登录的时候就秒断,我把防火墙都关了,换了个客户端机器连也是秒断。
sqlnet.log Tracing not turned on. Tns error struct: ns main err code: 12535 TNS-12535: TNS:operation timed out ns secondary err code: 12606 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0
此时大家都把注意里放到了inbound_connect_timeout参数上,她的inbound_connect_timeout的值是2,将inbound_connect_timeout=改为0,问题没解决。但是她给出的以下信息引起了我的注意。
SQL> select * from v$pwfile_users; no rows selected
对了会不会是这个问题?
v$pwfile_users视图里没有记录,通常是数据库没有开启对拥有SYSDBA或者SYSOPER权限的用户的密码文件验证,我让她查了下remote_login_passwordfile参数,很奇怪的是她的数据库竟然已经开启了超级用户密码文件验证。
SQL> show parameter passwordfile NAME TYPE VALUE ------------------------------------ ----------- --------- remote_login_passwordfile string EXCLUSIVE
经过确认,这个数据库只有以SYSDBA身份远程登录数据库才会出现问题,其他用户登录都正常,这更确定了我的判断,是密码文件验证出了问题,那么既然开启的密码文件验证,为什么v$pwfile_users视图里没有数据,很大可能是密码文件出了问题,我让他查了下密码文件。
ll orapwora orapwggdr -rw-r----- 1 dbadmin oinstall 1536 Dec 8 21:27 orapwggdr -rw-r----- 1 dbadmin oinstall 2048 Dec 12 22:12 orapwora
询问她连接数据库的实例名是什么,经她确认是gdr,这就确认是密码文件的名字错了,正常情况下,linux环境的数据库密码文件名字是orapw(sid),她的密码文件多了个字母g,修改后问题解决。
哈哈。可以了。
谢谢你啊 , 是名字不对。
v$pwfile_users视图里有SYS了,然后也可以连上了。
这里用到了ORACLE对拥有SYSDBA和SYSOPER权限的用户登录验证相关的知识,可以参考上文提到的我刚写完的文章。http://www.dbdream.com.cn/2011/12/12/windows%E7%8E%AF%E5%A2%83ora-12638%E9%94%99%E8%AF%AF%E5%8F%8Asys%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%9D%83%E9%99%90%E9%AA%8C%E8%AF%81/