Oracle兩種登錄認證方式

轉http://blog.csdn.net/scofy0/article/details/46648321

ORACLE數據庫通過sqlnet.ora文件中的參數sqlnet.authentication_services,參數文件中的remote_login_passwordfile和口令文件pwdsid.ora三者協同作用實現身份認證.

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.ora

sqlnet.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認證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章