conn / as sysdba 出現ORA-01031: insufficient privileges 解決辦法
阿新 • • 發佈:2019-01-30
sysdba不能遠端登入這個也是一個很常見的問題了。
碰到這樣的問題我們該如何解決呢?
我們用sysdba登入的時候,用來管理我們的資料庫例項,特別是有時候,伺服器不再本臺機器,這個就更是有必要了。
當我們用sqlplus "/ as sysdba"
是可以登入的。
但是我們如果用sqlplus "sys/[email protected] as sysbda"這樣的方式去不能登入.
這裡我們的錯誤一般分為兩類
第一類: 提示ORA-01031: insufficient privileges(許可權不足)
引用:
sqlplus "sys/password as sysdba"
ERROR:
ORA-01031: insufficient privileges或者
sqlplus /nolog
conn / as sysdba
ERROR:
ORA-01031: insufficient privileges
如果是這樣的錯誤,你明明是用這個sys登入的,而且確實是sysdba的許可權,為什麼登入卻提示你的許可權不夠叻。
這裡的問題出現在密碼檔案裡,由於你的密碼檔案缺損或者不存在,而Oracle例項對sysdba的許可權是根據這個
密碼檔案來判斷的,如果你的使用者被grant to sysdba了,那麼這個使用者的密碼和使用者名稱也在這個密碼檔案了。
這樣也就發現你不是sysdba的角色,當然as sysdba就會提示許可權不足了喲。
為什麼這樣做了,如果我們的資料庫沒有open,那麼對於的一些動態檢視是不能開啟的,所以oracle必須把這些
使用者的口令和username放在一個獨立的檔案裡,這樣在資料庫還不是open的狀況寫,有個地方判斷了。
如何解決了。我們首先來判斷一下
執行sql
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
如果這裡選擇不出了記錄的話,就是密碼檔案沒有叻。
這裡解決的方法就是重建orapwd檔案
使用密碼檔案orapwd 命令 orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=gelc123 entries=5 force=y 再次檢視 v$pwfile_users 這時候有一條記錄了
現在再試試,我們的問題基本上就解決了
還有一種情況,提示的是ORA-01017:使用者名稱密碼出錯
ORA-01017: invalid username/password; logon denied
這樣的錯誤,可是你的密碼和使用者名稱明明輸入的都是正確的。這又是為什麼叻
檢查一下系統引數remote_login_passwordfile的值,
這裡需要啟動密碼檔案的話,需要前提就是這個值, 這裡的值可以NONE,EXCLUSIVE和SHARE
EXCLUSIVE和SHARE都可以,EXCLUSIVE是獨佔的檔案,SHARE是多例項的體系中的共享模式
這個問題基本上就是這個值導致的
SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
現在重啟服務試試看。
已經OK解決了吧