问题
在Oracle中,SYS用户登录报权限不足(ORA-01031: Insufficient Privileges)的常见原因有哪些?
答案
答案:现象如下所示:
C:\Documents and Settings\lhr>sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 10 00:02:59 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
或:
D:\Users\xiaomaimiao>sqlplus sys/lhr@192.168.1.31/orastrac as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sat Jul 15 11:36:54 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
或:
SQL> SELECT * FROM V$PWFILE_USERS;--为空
SQL> GRANT SYSDBA TO SYS;
GRANT SYSDBA TO SYS
*
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled
Oracle的SYS用户登录报权限不足(ORA-01031: Insufficient Privileges)的常见原因有如下几个:
① 检查服务器端sqlnet.ora文件。在Windows环境下,需要加上一句:“SQLNET.AUTHENTICATION_SERVICES=(NTS)”;在Linux环境下,可以没有这个文件或者加上这句:“SQLNET.AUTHENTICATION_SERVICES=(ALL)”,或者删除该句。
② 检查登陆Windows的用户。当前登录用户必须包含在ORA_DBA组中,域用户若没有连上域服务器时则可能出现这种现象。
③ 要保证参数REMOTE_LOGIN_PASSWORDFILE的值为EXCLUSIVE。
④ 检查服务器端密码文件。在服务器端,密码文件必须存在,可以查询视图V$PWFILE_USERS,该视图必须包含SYS用户,此外,执行命令“GRANT SYSDBA TO SYS;”也不能报错。
SQL> SELECT * FROM V$PWFILE_USERS;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------ -------- -------- --------
SYS TRUE TRUE FALSE
SQL> GRANT SYSDBA TO SYS;
Grant succeeded.
创建密码文件的命令为:
Windows:orapwd file="E:\oracle\lhrdb\DATABASE\PWDortest.ORA" password=lhr
Linux:orapwd file=$ORACLE_HOME/dbs/orapworcl password=lhr force=y
& 说明:
有关该错误的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-1214946/
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗