在使用Oracle資料庫過程中經常會遇一些報錯,友善以後遇到可以“手起刀落”,在此做個彙總,所有的解決方案都是“親測可用”,但不排除還有其他解決方案, 此篇部落格也會随着問題出現解決一直更新!
解決Oracle ORA-01031、ORA-12560、ORA-28000、ORA-12638 ORA-01031

問題場景:在sqlplus中使用conn / as sysdba;登入時報“ORA-01031: insufficient privileges”的錯誤!
問題原因:
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必須設定為NTS或者ALL才能使用OS認證;不設定或者設定為其他任何值都不能使用OS認證。
2、使用sysdba 身份連接配接資料庫執行個體,使用的認證方式是作業系統認證,而這一認證操作過程是作業系統根據它管理的資訊去校驗該使用者是否可以連接配接資料庫的過程?是以,需要進一步分析的是,作業系統判斷oracle 使用者是否符合認證條件。
解決問題 1 :
在windows中,是通過sqlnet.ora這個檔案來實作驗證機制控制的。當你裝完資料庫并用netca建立了監聽,就會生成這個檔案。通常預設是下面内容:
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file won't exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (None)
SQLNET.AUTHENTICATION_SERVICES = (None) 更改為 SQLNET.AUTHENTICATION_SERVICES = (NTS)後重新開機監聽,再次嘗試conn / as sysdba;即顯示連接配接成功;
解決問題 2 :
當我們的sqlnet.ora檔案中已經是 SQLNET.AUTHENTICATION_SERVICES = (NTS)了,還是報“ORA-01031: insufficient privileges”的錯誤!很顯然,我們這裡的oracle 使用者的權限被作業系統或者oracle 系統拒絕了。
在“本地使用者群組”裡面,将administrator(管理者使用者)使用者加入到ORA_DBA組裡,再登陸資料庫:sqlplus / as sysdba;
大功告成!
解決Oracle ORA-01031、ORA-12560、ORA-28000、ORA-12638 ORA-12560

問題場景:資料庫正常,執行個體正常,listener正常,資料庫參數也是正常。就是不能sqlplus / as sysdba登入資料庫;
問題原因:右鍵“我的電腦”選擇屬性,進入進階系統環境變量設定,檢視Path路徑,發現D:\oracle\product\11.2.0\client_1等路徑放到了oracle11g資料庫服務路徑前面;
解決問題:将資料庫服務的路徑前置即可解決ORA-12560:TNS:協定擴充卡錯誤。
如:更改之前path路徑“ D:\oracle\product\11.2.0\client_1;D:\app\app\product\11.2.0\dbhome_1\bin;”,
更改之後“D:\app\app\product\11.2.0\dbhome_1\bin;D:\oracle\product\11.2.0\client_1;”
解決Oracle ORA-01031、ORA-12560、ORA-28000、ORA-12638 ORA-28000

問題場景:使用賬号密碼無法登陸資料庫;
問題原因: 檢視listener.log日志可以檢視導緻鎖使用者的ip;檢視FAILED_LOGIN_ATTEMPTS設定的值,
select * from dba_profiles
該值表示允許使用者登入失敗次數,超過設定值即鎖定使用者;
解決問題:使用conn / as sysdba 登入後解鎖鎖定的使用者;
alter user test(鎖定的使用者名) account unlock;
commit;
另外!設定FAILED_LOGIN_ATTEMPTS的值:
alter profile default limit FAILED_LOGIN_ATTEMPTS 30; //30表示次數
commit;
不限次數登陸失敗後鎖使用者配置;
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
commit;

ORA-12638
問題場景:使用賬号密碼登陸時提示“身份證明檢索失敗”;
問題原因: 因為Oracle的進階安全性驗證導緻;
解決問題:開始 -> 程式 -> Oracle -> Configuration and Migration Tools ->
Net Manager→本地→概要檔案→Oracle進階安全性→驗證→去掉所選方法中的 "NTS"; --2019年7月18日
注:文章内有部分内容引用其他部落客的解決方法,如有介者請聯系本人修改!學而無境,共勉!