在给用户授予sysdba权限时,收到ORA-01994错误,查看描述信息即是password file missing or disabled。也可以使用oerr ora <error_number>
来查看错误号具体的细节。从描述来看应该是密码文件丢失或REMOTE_LOGIN_PASSWORDFILE参数设置的问题。下面给出具体过程。
来查看错误号具体的细节。从描述来看应该是密码文件丢失或REMOTE_LOGIN_PASSWORDFILE参数设置的问题。下面给出具体过程。
1、错误提示情况
sys@CNMMBO> grant sysdba to scott;
grant sysdba to scott
*
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled
/**************************************************/
/* Author: Robinson Cheng */
/* Blog: http://blog.csdn.net/robinson_0612 */
/* MSN: robinson_0612@hotmail.com */
/* QQ: 645746311 */
/**************************************************/
sys@CNMMBO> ho oerr ora 01994
01994, 00000, "GRANT failed: password file missing or disabled"
// *Cause: The operation failed either because the INIT.ORA parameter
// REMOTE_LOGIN_PASSWORDFILE was set to NONE or else because the
// password file was missing.
// *Action: Create the password file using the orapwd tool and set the
// INIT.ORA parameter REMOTE_LOGIN_PASSWORDFILE to EXCLUSIVE.
2、根据提示分析解决
sys@CNMMBO> show parameter remote_login -->查看参数remote_login_passwordfile的值已经是EXCLUSIVE
-->EXCLUSIVE表示登陆时要密码文件认证,且自己使用独占模式(此为默认值)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
sys@CNMMBO> ho ls $ORACLE_HOME/dbs/orapw* -->查看密码文件,有一个秘密文件存在,但非当前数据库
/users/oracle/OraHome10g/dbs/orapwCNBO1
sys@CNMMBO> ho orapwd file=$ORACLE_HOME/dbs/orapwCNMMBO password=oracle entries=10 -->使用orapwd重建当前数据库密码文件
sys@CNMMBO> ho ls $ORACLE_HOME/dbs/orapw*
/users/oracle/OraHome10g/dbs/orapwCNBO1 /users/oracle/OraHome10g/dbs/orapwCNMMBO
sys@CNMMBO> grant sysdba to scott; -->重建密码文件后再次授予sysdba权限成功
Grant succeeded.
总结:
1、有关 Oracle 故障根据错误信息号来进行分析是最直接的办法
2、注意sysdba,sysoper,dba不同权限之间的差异
3、和安全相关的参数和文件
参数:remote_login_passwordfile
o7_dictionary_accessibility
utl_file_dir
文件:sqlnet.ora
更多参考:
Oracle 密码文件
Oracle 用户、对象权限、系统权限
Oracle 角色、配置文件
system sys,sysoper sysdba 的区别