问题现象:本地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
多个数据库实例共用一个口令文件,这种设置下是不能增加其他数据库用户作为特殊权限用户到口令文件中的。
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
