大家好啊,
现在有个问题要请教,
我用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了,然后也可以连上了。