Oracle sys用户远程登录失败 ORA-01031

狂风中的少年 提交于 2020-01-27 05:10:40

今天在管理oracle的时候发现一个很奇怪的问题,通过sqlplus sys/password as sydba 或者 sqlplus / as sysdba均可以登陆。

但通过sqlplus sys/password@sid as sysdba登录的时候报错,显示

ORA-01031: insufficient privileges

明明是sys用户,为什么会登录不上呢?

这个原因是密码文件错误或失败导致的。Oracle通过密码文件来管理sysdba的权限。如果被赋予了

Sysdba权限,正常情况下在密码文件里就有用户与密码的记录。

经查:Oracle有两种认证的方式:

  1. 与操作系统集成认证方式

     

  2. 使用密码文件认证

过程中有以下几个疑点:

  1. oracle 密码文件是做什么用的呢?

主要是进行DBA权限的身份验证。

  1. Oracle密码文件存储在什么位置呢?

$ORACLE_HOME/dbs/orapw$ORACLE_SID

  1. 根据什么判断是使用操作系统集成认证还是使用密码文件认证呢?

    SQL> show parameter remote_login

     

    NAME TYPE VALUE

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

    remote_login_passwordfile string EXCLUSIVE

     

    其中remote_login_passworldfile有以下几个值:

  • shared

    One or more databases can use the password file. The password file can contain SYS as well as non-SYS users.

    一个或多个的数据库实例可以使用这个密码文件。内容含有sys和非sys用户

  • exclusive

    The password file can be used by only one database. The password file can contain SYS as well as non-SYS users.

    密码文件只能被一个实例使用。内容含有sys和非sys用户

  • none

    Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system.

    忽略任何密码文件。所以所有用户必须经过操作系统认证

经查数据库使用密码文件认证。那么需要重建密码文件。

orapwd file=$ORACLE_HOME/dbs/orapworcl password=password

提示已经有一个同名的文件

先删除orapwdorcl.ora 与orapwdorcl

rm orapwdorcl.ora

rm orapwdorcl

再执行

orapwd file=$ORACLE_HOME/dbs/orapworcl password=password

通过sqlplus sys/password@sid as sysdba登录还是提示

ORA-01031: insufficient privileges

Why?

经查执行orapwd命令缺少entries与force参数

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=password entries=5 force=y

再次登录,成功。

 

 

 

Ref:

https://aprakash.wordpress.com/2010/06/01/sys-as-sysdba-insufficient-privileges/

http://blog.csdn.net/leshami/article/details/5611672

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!