用SYS本地登錄或遠程登錄引起ORA-01031錯誤


  "歷史總是上演驚人的相似", 在技術開發過程中,你也會總會碰到驚人相似的問題,這段時間我就碰到了”ORA-01031:insufficient privileges  權限不足”這個錯誤多次,一次是自己,一次是同事碰到的,順便整理了下這個知識點。

情況一:

如果數據庫實例安裝在服務器A上,你用管理員權限Administrator登錄后,使用SQL> conn system/manage as sysdba登錄 沒有問題。但是如果你在服務器A上建立一個etl賬號,使它率屬於Remote Desktop Users 和Users 組,如下所示:

此時你用sys賬號登錄數據庫時,就會報ORA-01031:insufficient privileges錯誤,退出etl賬號,用管理員登錄給etl賬號賦予率屬於Oracle DBA Group的權限

然后用etl賬號登錄,問題解決了,如果你賦予etl賬號管理員組權限,但是沒有ora_dba權限,如下所示, 結果會怎樣?答案是依然會報權限不足的錯誤

 

情況二:此時我在遠程機器B上,我使用sys賬號遠程登錄時報ORA-01031:insufficient privileges或ORA-01017: invalid username/password; logon denied錯誤。

首先去檢查下sqlnet.ora文件下是否有SQLNET.AUTHENTICATION_SERVICES= (NTS)設置,如何已經配置了這個選項。那么我們接下來檢查下一下密碼文件參數

很明顯密碼文件存在,如果查詢沒有記錄,則說明密碼文件不存在,需要重建密碼文件,有時候我們確實是sysdba的權限,為什么登錄卻提示你的權限不夠叻?這里的問題可能出現在密碼文件里,由於你的密碼文件缺損或者不存在,而ORALCE實例對sysdba的權限是根據這個密碼文件來判斷的,為什么這樣做呢?如果我們的數據庫沒有OPEN,那么對於的一些動態視圖是不能打開的,所以ORACLE必須把這些用戶的口令和USERNAME放在一個獨立的文件里,這樣在數據庫還不是OPEN的狀況寫,有個地方判斷了。使用orapwd命令重建密碼文件。orapwd命令的用法如下。

接下來查看系統參數remote_login_passwordfile

如果VALUE值不是EXCLUSIVE,那么需要設置參數remote_login_passwordfile的值為EXCLUSIVE,有一次我檢查配置了上述所有配置后,發現都符合,在遠程用SQL*PLUS登錄后,居然報如下錯誤

ORA-01017: invalid username/password; logon denied錯誤,很是納悶,仔細檢查了所有配置后,最后發現居然是服務器B的Guest賬號被禁用了(如下所示)


啟用了Guest賬號,然后在機器A上用sys賬號登錄,此時又報ORA-01031: insufficient privileges,趕緊給Guest賬號添加ora_dba用戶組,問題解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM