sys用户远程登录报ORA-01031 insufficient privileges

来源:这里教程网 时间:2026-03-03 16:51:22 作者:

问题现象:本地sysdba登录正常,远程sysdba登录报权限不足。问题排查:远程sysdba登录需要校验口令文件,执行命令select * from V$PWFILE_USERS,返回为空,证明口令文件存在异常。问题解决:重建口令文件orapwd file=orapw $SID password=password entries=max_users 备注:$SID需要与ps -ef|grep smon查出的实例名一致,大小写敏感,此次异常的根本原因是口令文件实例名大小写出现偏差导致。重新执行验证sql,返回有数据,远程sysdba登录恢复正常。SQL> select * from V$PWFILE_USERS;USERNAME       SYSDB SYSOP —————————— —– —– SYS       TRUE  TRUE

附:Oracle口令文件详解

文件位置:$ORCLE_HOME/dbs目录下  

作用: 主要进行 DBA权限 的身份认证  

默认情况下 sysdba 角色中存在 sys 用户, sysoper 角色中存在 system 用户  

 

口令文件中,存放着 被授予 sysdba/sysoper 权限的用户的用户名和密码   

数据库在没有启动前,数据库 内建用户 是无法通过 数据库本身来验证身份的 ,是通过口令文件。 

Oracle的两种认证方式:  

 

1、与操作系统OS一起进行身份认证:  

11G 文件目录D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN下的sqlnet.ora文件  

SQLNET.AUTHENTICATION_SERVICES = (NTS)  

此设置值仅用于Windows NT系统,只有在设置了(NTS)值之后运行在Windows系统上的Oracle才支持OS认证。

 

2、直接Oracle数据库的密码文件进行身份认证  

SQLNET.AUTHENTICATION_SERVICES = (NONE)  

此设置值在Windows和Linux是作用一样的,指定Oracle只使用 口令文件认证。 

Oracle数据库究竟使用OS认证还是口令文件认证来进行管理取决于下面 三个因素:  

SQLNET.ORA参数文件中的参数 SQLNET.AUTHENTICATION_SERVICES设置

PFILE(SPFILE)参数文件中的参数 REMOTE_LOGIN_PASSWORDFILE设置

口令文件orapw$SID(Linux) | PWD$SID.ora(Windows) 

查询参数remote_login_passwordfile:  

SQL > show parameter login ;  

此参数可以设置的值有 三个:  

REMOTE_LOGIN_PASSWORDFILE = NONE  

不使用口令文件

REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE  

使用口令文件,但 只有一个数据库实例可用使用

REMOTE_LOGIN_PASSWORDFILE = SHARED  

多个数据库实例共用一个口令文件,这种设置下是不能增加其他数据库用户作为特殊权限用户到口令文件中的。

相关推荐