Home  >  Article  >  Database  >  sys不能远程登录解决办法

sys不能远程登录解决办法

WBOY
WBOYOriginal
2016-06-07 17:46:261306browse

本文章来总结一下关于sys不能远程登录解决办法,有碰到此类问题的朋友可详细的参考参考。

本文章来总结一下关于sys不能远程登录解决办法,有碰到此类问题的朋友可详细的参考参考。

SYSDBA不能远程登录(此处是不是指CRT远程登录)

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

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

C:Userskerry>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/pass; 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

 

C:Userskerry>sqlplus "sys/wgods123@GSP as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 11 14:37:11 2013

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-01031: insufficient privileges

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

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

 代码如下 复制代码

SQL> SELECT * FROM V$PILE_USERS;

USERNAME SYSDBA SYSOPER

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

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

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

使用密码文件orapwd 命令

 代码如下 复制代码
[oracle@wgods dbs]$ orapwd file=/database/oracle/product/dbhome/dbs/orapwgsp entries=4 password=wgods123 force=y

这里还有一篇教程大家可参考http://www.111cn.net/database/Oracle/42484.htm

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn