首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

ORA-01031: Insufficient Privileges 錯誤原因與排查方向

     編輯:Oracle 教學

ORA-01031: Insufficient Privileges 錯誤原因與排查方向

遇到 ORA-01031: insufficient privileges 錯誤時,表示當前使用者嘗試執行的操作缺乏必要的系統權限或物件權限。常見於:

  • 以非 SYSDBA/SYSOPER 身分執行 STARTUP、SHUTDOWN、ALTER DATABASE 等管理指令。
  • 一般使用者嘗試建立表空間、建立使用者、授予系統權限等 DBA 操作。
  • 存取其他 Schema 物件時缺乏 SELECT/INSERT/UPDATE/DELETE/EXECUTE 等物件權限。
  • 執行 ALTER SYSTEM、ALTER SESSION 特定參數時權限不足。

排查步驟

  1. 確認當前使用者與角色: SELECT USER FROM DUAL; SELECT * FROM SESSION_ROLES;
  2. 檢查系統權限: SELECT * FROM SESSION_PRIVS; 或 DBA 查詢 DBA_SYS_PRIVS。
  3. 檢查物件權限: SELECT * FROM ALL_TAB_PRIVS WHERE TABLE_NAME='...';
  4. 確認是否需以 AS SYSDBA 連線: 管理操作需 CONNECT / AS SYSDBA 或具備 SYSDBA 權限的使用者。
  5. 檢查密碼檔: 遠端管理連線需 $ORACLE_HOME/dbs/orapw<SID> 存在且 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE/SHARED。

典型解決範例

-- 一般使用者無法建立表空間
GRANT CREATE TABLESPACE TO app_user; -- 需 DBA 執行

-- 一般使用者無法查詢其他 Schema 表
GRANT SELECT ON hr.employees TO app_user; -- 需物件擁有者或 DBA 執行

-- 遠端 SYSDBA 連線失敗
-- 1. 檢查密碼檔或重建: orapwd file=$ORACLE_HOME/dbs/orapwORCL password=sys password_entries=10
-- 2. 確認 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

系統相關設置錯誤截圖

如截圖所示,系統相關設置介面提示權限不足,請依上述步驟逐項排查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved