sys使用者遠端登入報ORA-01031 insufficient privileges

zhcunique發表於2021-08-03

問題現象:本地sysdba登入正常,遠端sysdba登入報許可權不足。

問題排查:遠端sysdba登入需要校驗口令檔案,執行命令select * from V$PWFILE_USERS,返回為空,證明口令檔案存在異常。

問題解決:重建口令檔案orapwd file=orapw $SID password=password entries=max_users

備註:$SID需要與ps -ef|grep smon查出的例項名一致,大小寫敏感,此次異常的根本原因是口令檔案例項名大小寫出現偏差導致。

重新執行驗證sql,返回有資料,遠端sysdba登入恢復正常。

SQL> select * from V$PWFILE_USERS;

USERNAME       SYSDB SYSOP
—————————— —– —–
SYS       TRUE  TRUE


附:Oracle口令檔案詳解

檔案位置:$ORCLE_HOME/dbs目錄下  

作用: 主要進行 DBA許可權 的身份認證  

預設情況下 sysdba 角色中存在 sys 使用者, sysoper 角色中存在 system 使用者  

 

口令檔案中,存放著 被授予 sysdba/sysoper 許可權的使用者的使用者名稱和密碼  

 

資料庫在沒有啟動前,資料庫 內建使用者 是無法透過 資料庫本身來驗證身份的 ,是透過口令檔案。

 

Oracle的兩種認證方式:  

 

1、與作業系統OS一起進行身份認證:  

11G 檔案目錄D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN下的sqlnet.ora檔案  

SQLNET.AUTHENTICATION_SERVICES = (NTS)  

此設定值僅用於Windows NT系統,只有在設定了(NTS)值之後執行在Windows系統上的Oracle才支援OS認證。

 

2、直接Oracle資料庫的密碼檔案進行身份認證  

SQLNET.AUTHENTICATION_SERVICES = (NONE)  

此設定值在Windows和Linux是作用一樣的,指定Oracle只使用 口令檔案認證

 

    Oracle資料庫究竟使用OS認證還是口令檔案認證來進行管理取決於下面 三個因素:  

    SQLNET.ORA引數檔案中的引數 SQLNET.AUTHENTICATION_SERVICES設定

    PFILE(SPFILE)引數檔案中的引數 REMOTE_LOGIN_PASSWORDFILE設定

    口令檔案orapw$SID(Linux) | PWD$SID.ora(Windows)

 

查詢引數remote_login_passwordfile:  

SQL > show parameter login ;  

此引數可以設定的值有 三個:  

REMOTE_LOGIN_PASSWORDFILE = NONE  

不使用口令檔案

REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE  

使用口令檔案,但 只有一個資料庫例項可用使用

REMOTE_LOGIN_PASSWORDFILE = SHARED  

多個資料庫例項共用一個口令檔案,這種設定下是不能增加其他資料庫使用者作為特殊許可權使用者到口令檔案中的。



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

相關文章