Oracle的SYS用户登录报权限不足(ORA01031 Insufficient Privileges)的常见原因有哪些?

2024年 1月 25日 129.3k 0

现象

现象如下所示:

1C:Documents and Settingslhr>sqlplus "/as sysdba"
2
3SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 10 00:02:59 2014
4
5Copyright (c) 1982, 2010, Oracle.  All rights reserved.
6
7ERROR:
8
9ORA-01031: insufficient privileges

或:

1D:Usersxiaomaimiao>sqlplus sys/lhr@192.168.1.31/orastrac  as sysdba
2
3SQL*Plus: Release 11.2.0.1.0 Production on Sat Jul 15 11:36:54 2017
4
5Copyright (c) 1982, 2010, Oracle.  All rights reserved.
6
7ERROR:
8
9ORA-01031: insufficient privileges

或:

1SQL> SELECT * FROM V$PWFILE_USERS; -- 结果为空
2
3SQL> GRANT SYSDBA TO SYS;
4
5GRANT SYSDBA TO SYS
6
7*
8
9ERROR at line 1:
10
11ORA-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
组中,域用户若没有连上域服务器时则可能出现这种现象。

image-20240124120345155

③ 要保证参数REMOTE_LOGIN_PASSWORDFILE的值为EXCLUSIVE。

1SYS@lhrsdb> show parameter REMOTE_LOGIN_PASSWORDFILE
2
3NAME                                 TYPE        VALUE
4------------------------------------ ----------- ------------------------------
5remote_login_passwordfile            string      EXCLUSIVE

④ 检查服务器端密码文件。在服务器端,密码文件必须存在,可以查询视图V$PWFILE_USERS,该视图必须包含SYS用户,此外,执行命令“GRANT SYSDBA TO SYS;”也不能报错。

1SQL>  SELECT * FROM V$PWFILE_USERS;
2
3USERNAME          SYSDBA   SYSOPER   SYSASM
4---------------- -------- -------- --------
5SYS               TRUE     TRUE      FALSE
6
7SQL> GRANT SYSDBA TO SYS;
8
9Grant succeeded.

创建密码文件的命令为:

1Windows:orapwd file="E:oraclelhrdbDATABASEPWDortest.ORA" password=lhr
2
3Linux:orapwd file=$ORACLE_HOME/dbs/orapworcl password=lhr force=y

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论