sqlnet.ora文件: D:\Study\oracle\product\11.2.0\dbhome_3\NETWORK\ADMIN\sqlnet.ora
參數文件:D:\Study\oracle\product\11.2.0\dbhome_3\dbs\init.ora
oracle11g 沒有pwdsid.orasqlnet.authentication_services=(NTS)|(NONE)
NTS:操作系統認證方式,不使用口令文件;
NONE:口令文件認證方式
remote_login_passwordfile=(NONE)|(EXCLUSIVE)|(SHARED)
NONE:不使用口令文件,操作系統認證;
EXCLUSIVE:口令文件認證方式,但只有一個數據庫實例可以使用此文件;
SHARED:口令文件認證方式,可以有多個數據庫實例可以使用此文件,但此設置下只有SYS帳號能被識別,即使文件中存在其他用戶的信息,也不允許他們以SYSOPER/SYSDBA登錄.
(1).sqlnet.authentication_services=(NTS)
同時Remote_login_passwordfile=(NONE),此時爲操作系統認證方式.
當以oracle_dba組下的用戶登錄進入本地的操作系統後,進行以下操作:
sqlplus /nolog
SQL>conn / as sysdba
可以以sysdba身份登錄成功,進行數據庫方面的操作.
當以遠程進行登錄時,執行:
sqlplus /nolog
SQL>conn / as sysdba
則會顯示:
ERROR:ORA-01031:insufficient privileges
即不允許以sysdba身份遠程登錄系統,這也是OS認證這所以稱爲本地認證方式的原因.
(2).Sqlnet.authentication_services=(NONE),同時
Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此時爲口令文件認證方式:
當在本地以oracle_dba組下的用戶登錄進入系統時,進行以下操作:
sqlplus /nolog
SQL>conn / as sysdba
則會顯示:
ERROR:ORA-01031:insufficient privileges
在本地或遠程進行下邊的操作:
sqlplus /nolog
SQL>conn sys/密碼@服務名 as sysdba
可以進入系統,也就是說口令文件認證方式允許用戶從本地或遠程以sysdba身份登錄,但必須提供口令字.
(3).Sqlnet.authentication_services=(NTS),同時
Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),配合口令文件PWDsid.ora,此時爲操作系統認證和口令文件認證同時起作用:
當在本地以oracle_dba組下的用戶登錄進入操作系統後,進行下邊的操作:
sqlplus /nolog
SQL>conn /as sysdba
可以進入系統.即操作系統認證方式登錄成功.
當在遠程執行:
sqlplus /nolog
SQL>conn sys/密碼@服務名 as sysdba
同時可正常登錄到數據庫系統,即口令文件認證方式登錄成功.
sqlplus /nolog
1: conn /as sysdba 本機登陸,使用操作系統認證,有無監聽都可以
2: conn sys/password as sysdba 本機登陸,使用密碼文件認證,有無監聽都可以
3: conn sys/password@dbanote as sysdba 可以本機可以遠程,使用密碼文件認證,必須有監聽,必須有tnsnames.ora,remote_login_passwordfile必須是EXCLUSIVE
說明:
從Oracle的解釋可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系統專用的,對Linux/UNIX是不適用的。
最後做一個簡單的總結:
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必須設置爲NTS或者ALL才能使用OS認證;不設置或者設置爲其他任何值都不能使用OS認證。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設置爲ALL,或者不設置的情況下,OS驗證才能成功;設置爲其他任何值都不能使用OS認證。