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