文档课题:remote_login_passwordfile参数解析.
口令文件用于具有sysdba身份的用户执行远程登录数据库,Oracle允许用户通过口令文件验证,在数据库未启动之前登录,从而启动实例,加载打开数据库.
Oracle通过初始化参数remote_login_passwordfile限制口令文件的使用,通过配置该参数可以控制是否在多个数据库之间共享密码文件,也可以通过该参数禁用口令文件验证.
remote_login_passwordfile的值:
NONE:禁用口令文件验证.
a、 设置成none将直接禁用口令文件验证,sysdba用户只能通过操作系统认证登录数据库.此时的登录将会收到报错:
ORA-01017: invalid username/password; logon denied
b、操作系统认证方式涉及sqlnet.ora 文件中的SQLNET.AUTHENTICATION_SERVICES参数值.
1)NONE :关闭操作系统认证,只能通过口令文件认证.
2)ALL:linux/unix平台下,采用操作系统认证,但sysdba远程登录需使用口令文件认证.
3)NTS:windows平台下操作系统认证.
EXCLUSIVE:独占模式使用密码文件,官档中提到“only one instance of one database”使用exclusive方式,数据库中可以执行对于sysdba用户的增加,修改,删除动作,同样也可以修改sysdba用户的密码,这些更改会记录到密码文件中去,此为默认方式.
a、查看被授予sysdba权限的用户.
SELECT USERNAME FROM V$PWFILE_USERS WHERE SYSDBA=’TRUE’;
b、口令文件中添加/删除sysdba权限用户.
REVOKE SYSDBA FROM non-SYS-user;
GRANT SYSDBA TO non-SYS-user;
SHARED:在多个数据库间共享口令文件
a、配置shared值,口令文件可以被一台服务器上的多个数据库或RAC集群数据库共享,现在知道exclusive模式时说的“only one instance of one database“的含义了吧,就是为了区分RAC环境)
b、shared下的密码文件不可被修改,这就意味着无法再授权sysdba权限给非sys用户,修改sysdba权限用户的密码也不被允许,包括sys用户的密码.
SQL> show parameter password
NAME TYPE VALUE
———————————— ———– ——————————
remote_login_passwordfile string SHARED
SQL> grant sysdba to hr;
grant sysdba to hr
*
ERROR at line 1:
ORA-01999: password file cannot be updated in SHARED mode
SYS@db11g>alter user sys identified by netpwd ;
alter user sys identified by netpwd
*
ERROR at line 1:
ORA-28046: Password change for SYS disallowed
注意:
a、oracle建议首先将需要sysdba权限的用户在exclusive模式下设置好,然后将REMOTE_LOGIN_PASSWORDFILE 修改为shared共享口令文件.
b、oracle寻找口令文件的顺序:orapw$ORACLE_SID –> orapw –> Failure
Exclusive转变为shared:
a、修改口令文件名
$ mv orapwdb11g orapw
b、修改数据库remote_login_passwordfile值
SQL> alter system set remote_login_passwordfile=shared scope=spfile;
c、重启数据库生效
SQL> shutdown immediate;
SQL> startup;
备注:如果将none的口令文件转换为exclusive或shared,要保证口令文件中的sys密码设置和数据库中数据字典中记载的