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

Oracle 密碼檔管理詳解:建立、授權、登入與安全防護

     編輯:Oracle 資料庫基礎

密碼檔角色與位置

  • 儲存 SYS/INTERNAL 及具 SYSDBA/SYSOPER 權限用戶的認證資訊
  • 預設路徑:$ORACLE_HOME/dbs/orapw (Linux/Unix) 或 %ORACLE_HOME%\database\PWD.ora (Windows)
  • 由 ORAPWD 工具建立,或 DBCA 建庫時自動產生

建立密碼檔

orapwd file=$ORACLE_HOME/dbs/orapwORCL password=SysPassword entries=30 force=y

file      密碼檔完整路徑
password  SYS/INTERNAL 初始密碼
entries   最大使用者數 (含 SYS),預留擴充空間
force=y   覆蓋既有檔案 (12c+)

關鍵參數:REMOTE_LOGIN_PASSWORDFILE

生產環境必須設為 EXCLUSIVE 才能授予其他用戶 SYSDBA/SYSOPER。

授予/撤銷管理權限 (等同增減密碼檔用戶)

-- 前提:以 SYSDBA 登入,參數為 EXCLUSIVE
CONNECT sys/password AS SYSDBA

-- 授予 SYSDBA (自動寫入密碼檔)
GRANT SYSDBA TO dba_user;

-- 授予 SYSOPER
GRANT SYSOPER TO oper_user;

-- 撤銷 (自動從密碼檔移除)
REVOKE SYSDBA FROM dba_user;
REVOKE SYSOPER FROM oper_user;

使用密碼檔登入

-- 1. SYSDBA 身分
sqlplus dba_user/password AS SYSDBA

-- 2. SYSOPER 身分
sqlplus oper_user/password AS SYSOPER

-- 3. INTERNAL (舊版相容)
sqlplus internal/password

登入後 Session 位於 SYS Schema。

密碼檔防護與稽核

1. 查看密碼檔成員

SELECT * FROM v$pwfile_users;

2. 狀態同步機制

  • 啟動實例時讀取參數檔設定
  • 掛載資料庫時比對密碼檔內部狀態
  • 不一致時自動更新密碼檔狀態
  • 多節點/RAC 必須確保所有節點參數檔一致

3. 變更儲存位置

  1. 關閉所有實例
  2. 移動密碼檔至新路徑
  3. 修改註冊表 (Windows) 或環境變數 ORA__PWFILE 指向新路徑
  4. 啟動實例驗證

4. 刪除密碼檔

  1. 所有實例設定 REMOTE_LOGIN_PASSWORDFILE=NONE
  2. 刪除實體檔案
  3. 後續僅能透過 OS 驗證 (如 sqlplus / as sysdba) 登入

安全最佳實踐

  1. 定期輪換 SYS 密碼 (配合 orapwd 重建)
  2. 最小權限原則:僅必要 DBA 帳號授予 SYSDBA
  3. 稽核 v$pwfile_users 異動,納入合規檢查
  4. 檔案權限鎖定:OS 層面 chmod 600,僅 Oracle 安裝擁有者可讀寫
  5. 避免 SHARED 模式,防止權限混淆
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
值行為適用場景
NONE不使用密碼檔,僅 OS 驗證單機、僅本地 DBA 管理
EXCLUSIVE單一實例專用,可儲存多用戶標準生產環境、需遠端 SYSDBA 登入
SHARED多實例共用,僅識別 SYSRAC / 多實例共享同密碼檔 (罕用)