如果資料庫執行個體安裝在伺服器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帳號Administrator 群組許可權,但是沒有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使用者組,問題解決了。