Windows環境下ORA-12638錯誤及SYS使用者登陸許可權驗證

keeptrying發表於2012-11-23

今天在辦公電腦(Windows XP)上安裝Oracle 10g時,安裝Oracle軟體時沒有出現問題,但是在DBCA建庫的時候,出現了“ORA-12638Credential retrieval failed”錯誤。

原因是:Oracle不能應用作業系統認證而導致的。電腦的使用者是域使用者,可能是域使用者沒有走作業系統認證的許可權。

解決方法:將sqlnet.ora檔案裡的SQLNET.AUTHENTICATION_SERVICES= (NTS)註釋掉,或者將這個引數改為SQLNET.AUTHENTICATION_SERVICES= (NONE)

 

NTSWindows作業系統登入資料庫的驗證方式,SQLNET.AUTHENTICATION_SERVICES= (NTS)這個引數只對Windows系統有效,這個引數等於NTS,即可以用口令檔案驗證,又可以用作業系統驗證的方式來登入Oracle資料庫;這個引數等於NONE表示只允許使用口令檔案驗證的方式來登入資料庫。而一般情況下域使用者不能應用作業系統認證而身份證明檢索失敗。

Oracle登入認證有兩種方式:

Oracle普通使用者的密碼是存在資料庫的資料字典裡,所以普通使用者只有在資料庫OPEN狀態下才能登入資料庫。但有兩種使用者可以在資料庫沒有開啟的狀態下登入資料庫,這就是具有SYSDBASYSOPER許可權的使用者。這兩種使用者登入資料庫有兩種方式,作業系統(OS)認證和口令檔案認證。使用者到底採用哪種方式登入,取決於sqlnet.ora檔案中的SQLNET.AUTHENTICATION_SERVICES引數。該引數的值設定為NTS,允許使用者使用OS認證,此時使用者可以不使用密碼直接登入資料庫,即“sqlplus / as sysdba”。該引數值為NONE,則關閉OS認證,此時使用者只能通過口令檔案認證的方式登入資料庫。

 

使用者能否通過口令檔案驗證成功登入資料庫,受以下兩個因素制約:

1、引數檔案中的remote_login_passwordfile引數,該引數有以下3個值可以設子:

NONE:指示Oracle系統不使用口令檔案,擁有SYS許可權的使用者通過OS認證的方式登入資料庫。

EXCLUSIVE:指只有一個資料庫例項可以使用此口令檔案。只有在此設定下的口令檔案可以包含除INTERNAL/SYS以外的使用者資訊,即允許將SYSDBA/SYSOPER許可權授予除INTERNAL/SYS以外的其他使用者。(10g11g預設)

SHARED:指可有多個資料庫例項使用此口令檔案。在此設定下只有INTERNAL/SYS使用者能被口令檔案識別,即使檔案中存有其他使用者的資訊,也不允許他們一SYSDBA/SYSOPER的許可權登入。   

可以通過下面的命令檢視remote_login_passwordfile的引數值:

 SQL> show parameter remote_login_password

NAME                    TYPE        VALUE

------------------------------------ ----------- ----------------------

remote_login_passwordfile   string      EXCLUSIVE

 

可以通過查詢V$PWFILE_USERS檢視來檢視擁有SYSDBA/SYSOPER許可權的使用者資訊:

SQL> select * from v$pwfile_users;

 

USERNAME        SYSDB      SYSOP

------------------------   -----          -----

SYS                TRUE       TRUE

 

2、口令檔案是否存在,密碼是否正確。

remote_login_passwordfile引數設定為EXCLUSIVESHARED的情況下,用有SYSDBASYSOPER許可權的使用者可以使用口令檔案驗證的方式登入資料庫。Oracle搜尋口令檔案的次序為:

1)、在系統註冊庫中查詢ORA_SID_PWFILE引數值(它為口令檔案的全路徑名);

2)、若未找到,則查詢ORA_PWFILE引數值;

3)、若仍未找到,則使用預設值ORACLE_HOME\DATABASE\PWDSID.ORA

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-749824/,如需轉載,請註明出處,否則將追究法律責任。

相關文章