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

ORA-01994 GRANT 失敗:口令文件缺失或已禁用解決方案

     編輯:MySQL 綜合教學

ORA-01994 GRANT 失敗:口令文件缺失或已禁用解決方案

Oracle 資料庫執行 GRANT SYSDBA TO user 時報 ORA-01994: GRANT failed: password file missing or disabled。根因通常是 口令文件 (orapwSID) 大小寫不匹配 或 remote_login_passwordfile 參數配置錯誤。本文記錄診斷與修復步驟。

錯誤現場

SYS@ORCL> GRANT SYSDBA TO SYS;
ERROR at line 1:
ORA-01994: GRANT failed: password file missing or disabled

診斷步驟

  1. 檢查參數:
    SHOW PARAMETER remote_login_passwordfile;
    -- 輸出:EXCLUSIVE (正確值應為 EXCLUSIVE 或 SHARED,NONE 會禁用)
  2. 檢查 $ORACLE_HOME/dbs 目錄實際檔案:
    LS -L $ORACLE_HOME/dbs
    -- 輸出範例:
    -rw-r----- 1 oracle oinstall 2560 Sep 21 16:26 orapwDBSID  <-- 注意大寫 DBSID
  3. 對比 ORACLE_SID 環境變數:
    ECHO $ORACLE_SID
    -- 輸出:dbsid (小寫)

根因確認

Linux/Unix 區分大小寫。orapwd 工具按 ORACLE_SID 生成檔案名 orapw${ORACLE_SID},若 ORACLE_SID 為小寫 dbsid,檔案為 orapwdbsid;但實際目錄下卻是 orapwDBSID (大寫),導致 Oracle 找不到對應口令文件。

修復方案:統一大小寫

# 進入 dbs 目錄
CD $ORACLE_HOME/dbs

# 重命名為小寫匹配 ORACLE_SID
MV orapwDBSID orapwdbsid

# 驗證
SQL> SELECT * FROM V$PWFILE_USERS;
USERNAME  SYSDBA  SYSOPER  SYSASM
SYS       TRUE    TRUE     FALSE

完整口令文件管理最佳實踐

  1. 建立口令文件:
    ORAPWD FILE=$ORACLE_HOME/dbs/orapw${ORACLE_SID} ENTRIES=10 FORCE=Y IGNORECASE=Y
    • ENTRIES:最大 SYSDBA/SYSOPER 用戶數,預留擴容空間。
    • FORCE=Y:覆蓋既有檔案。
    • IGNORECASE=Y (12c+):密碼大小寫不敏感,相容舊應用。
  2. 參數配置 (spfile/pfile):
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE  -- 單實例專用,允許修改口令文件
    -- RAC 環境需設為 SHARED
  3. 授權 SYSDBA/SYSOPER:
    GRANT SYSDBA TO app_admin;
    GRANT SYSOPER TO backup_user;
  4. 查看授權用戶:
    SELECT * FROM V$PWFILE_USERS;
  5. 備份口令文件: 納入 RMAN/檔案級備份策略,避免單點故障。

常見變體錯誤

錯誤碼原因處理
ORA-01994口令文件缺失/大小寫錯/參數 NONE檢查檔案存在性、大小寫、參數值
ORA-01031權限不足 (非 SYSDBA 連線嘗試 GRANT)以 SYSDBA 身分連線:sqlplus / as sysdba
ORA-01996GRANT/REVOKE 口令文件用戶失敗 (文件唯讀/磁碟滿)檢查磁碟空間、檔案權限 640 oracle:dba

核心教訓: Oracle 環境變數 ORACLE_SID 大小寫直接決定口令文件命名。建立資料庫、配置環境、編寫腳本時,**全流程強制統一大小寫 (推薦全大寫)**,杜絕「肉眼看不出差異」的低級故障。

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