1.ORACLE有两种方式可以认证sysdba/sysoper用户:
1).操作系统级认证:即登录到oracle数据库主机,使用如下用户登录后,可以直接使用sqlplus / as sysdba登录:在linux/unix下隶属于dba权限组(linux/unix)的用户,在windows下隶属于ORA_DBA组的用户;
2).远程认证:口令文件认证,即在任何主机都可以使用sqlplus sys/xxx@sid登录。
2.两种方式有各自的开关:
1).操作系统级认证的开关:sqlnet.ora中AUTHENTICATION_SERVICES,当SQLNET.AUTHENTICATION_SERVICES=NTS,NTS代表NTSecurity时,即采用OS认证;如果为NONE则关闭操作系统级认证,必须采用usr/pwd as sysdba/sysoper 登陆。
2).口令文件认证的开关:spfile/pfile中remote_login_passwordfile参数:
remote_login_passwordfile = EXCLUSIVE,则一个实例专用;
remote_login_passwordfile = SHARE则可以多个实例共享(用于OPS/RAC环境);
remote_login_passwordfile = NONE则不启用口令文件,此时任何sysdba/sysoper都无法连接进来。
remote_login_passwordfile = shared:More than one database canuse a password file. However, the only user recognized by the password file isSYS.
OS级认证是优先于口令文件认证的。这两个认证方式可以同时打开、同时关闭或者只开一个,图示如下:
3.口令文件:
1).口令文件的生成与重建
orapwd file=filename password=password entries=max_users
filename: Name of the password file(mandatory)
password: The password forSYSOPERand SYSDBA (mandatory)
entries: The maximum number ofdistinct users allowed to connect as SYSDBAor
SYSOPER. If you exceed this number,you must create a new password file. It is safer to have a larger number. Thereare no spaces around the equal-to (=) character.
windows下密码文件默认的位置是ora92/database目录,默认的文件名是pwdSID.ora,linux下oracle默认的位置是$ORACLE_HOME/dbs目录,默认的文件名是orapwSID,对于别的文件名是不认的。
2).密码文件用户的维护与查询
执行grant sysdba/sysoper to 用户 ,oracle会自动在口令文件中增加一个条目,并且把密码copy过来。
select * fromv$pwfile_users可以查看口令文件
例如:
SQL> grant sysdbato scott;
Grant succeeded
SQL> select * fromv$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
------------------------------------ ------- ------
SYS TRUE TRUE FALSE
SCOTT TRUE FALSE FALSE