天天看点

sys不能远程登录的问题

环境:在数据服务器a(red hat enterprise linux server release 5.5 (tikanga))上装有数据库oracle 10g,但是我们现在从机器b上用dba账号远程连接数据库时,登录不了。如下所示:

问题一:sysdba不能远程登录(此处是不是指crt远程登录)

sysdba不能远程登录分两种情况:

1:提示的是ora-01017:用户名密码出错

c:\users\kerry>sqlplus "sys/wgods123@gsp as sysdba"

sql*plus: release 11.2.0.1.0 production on 星期五 1月 11 11:08:07 2013

copyright (c) 1982, 2010, oracle. all rights reserved.

error:

ora-01017: invalid username/password; logon denied

这样的错误,明明密码和用户名明明输入的都是正确的。这又是为什么叻,出现这种情况,一般是系统参数remote_login_password的设置问题:pfile文件中有个参数remote_login_password 对passwordfile进行控制:

remote_login_passwordfile =none时,停用口令文件验证,oracle数据库不允许远程sysdba/sysoper身份登录,无法通过远程进行数据库起停等操作管理;

remote_login_passwordfile =exclusive时,启用口令文件,允许远程登录;

remote_login_passwordfile =shared 时,多个数据库可以共享一个口令文件,但是只可以识别一个用户:sys;

当口令文件丢失时,用/nolog方式登录,通过orapwd重建口令文件来解决。如果口令文件丢失,可以使用orapwd可以重建口令文件。

这里需要启动密码文件的话,需要前提就是这个值, 这里的值可以none,exclusive和share。exclusive和share都可以,exclusive是独占的文件,share是多实例的体系中的共享模式。这个问题基本上就是这个值导致的

sql>alter system set remote_login_passwordfile=exclusive scope=spfile;

然后重启服务就可远程以sysdba登录。

但是还有一种情况如下:

检查一下系统参数remote_login_password的值,发现是exclusive。而且密码文件也存在,但是就是报上面错误。

sql> show parameter remote_login_password

name type value

------------------------------------ ----------- ------------------------------

remote_login_passwordfile string exclusive

最后发现:sys账户的密码是错误的,重置sys密码后

sql> alter user sys identified by wgods123;

问题解决了。

2:ora-01031: insufficient privileges

sql*plus: release 11.2.0.1.0 production on 星期五 1月 11 14:37:11 2013

ora-01031: insufficient privileges

这种情况一般是由于你的密码文件缺损或者不存在了,例如口令文件删除了,而oracle实例对sysdba的权限是根据这个密码文件来判断的,如果你的用户被grant to sysdba了,那么这个用户的密码和用户名也在这个密码文件了。这样也就发现你不是sysdba的角色,当然as sysdba就会提示权限不足了哟。为什么这样做了,如果我们的数据库没有open,那么对于的一些动态视图是不能打开的,所以oracle必须把这些用户的口令和username放在一个独立的文件里,这样在数据库还不是open的状况写,有个地方判断了。

如何解决了。我们首先来判断一下

sql> select * from v$pwfile_users;

username sysdba sysoper

------------------------------ ------ -------

如果这里选择不出了记录的话,就是密码文件没有叻。

这里解决的方法就是重建orapwd文件

使用密码文件orapwd 命令 [oracle@wgods dbs]$ orapwd file=/database/oracle/product/dbhome/dbs/orapwgsp entries=4 password=wgods123 force=y

再次查看 v$pwfile_users 这时候有一条记录了