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

Oracle 切換歸檔模式完整實戰:標準流程、監聽器故障排查與 SPFILE 災難復原

     編輯:Oracle 資料庫基礎

標準切換流程(七步走)

  1. 確認當前模式
    SQL> ARCHIVE LOG LIST;
    Database log mode: No Archive Mode  -- 需切換
  2. 設定歸檔目的地(多路徑建議)
    ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/arch1' SCOPE=BOTH;
    ALTER SYSTEM SET log_archive_dest_2='LOCATION=/u02/arch2' SCOPE=BOTH;
    -- 10g n=1~10, 11g+ n=1~31
  3. 關閉資料庫
    SHUTDOWN IMMEDIATE;
  4. 啟動至 MOUNT 狀態
    STARTUP MOUNT;
  5. 切換歸檔模式
    ALTER DATABASE ARCHIVELOG;
  6. 開啟資料庫
    ALTER DATABASE OPEN;
  7. 啟用自動歸檔與驗證
    ALTER SYSTEM SET log_archive_start=TRUE SCOPE=BOTH;  -- 10g
    -- 11g+ 自動歸檔為預設,無此參數
    ALTER SYSTEM SWITCH LOGFILE;  -- 手動觸發一次歸檔驗證
    ALTER SYSTEM SET db_recovery_file_dest_size=5G SCOPE=BOTH;  -- 快閃區大小

實戰避坑:MOUNT 階段卡住 → 監聽器配置缺失

現象

SQL> STARTUP MOUNT;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
-- 或監聽器錯誤:TNS-12514, TNS-12541

根因

listener.ora 缺少 SID_LIST_LISTENER 靜態註冊,導致 MOUNT 狀態下實例未向監聽器註冊,遠端連線失敗。

解決步驟(使用 Net Manager 圖形化避免手寫錯誤)

  1. 啟動 netmgr (Net Manager)。
  2. Local → Listeners → LISTENER → Database Services → Add Database。
  3. Global Database Name = tnsnames.ora 中的 SERVICE_NAME(如 ORCL)。
  4. Oracle Home = 實際安裝路徑。
  5. SID Name = 實例名(如 ORCL)。
  6. Save → 自動更新 listener.ora。

生成的關鍵片段:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = ORCL)
    )
  )

重新載入監聽器並驗證

$ lsnrctl reload
$ lsnrctl status
-- 確認 Services Summary 顯示 ORCL 狀態 READY

SQL> STARTUP MOUNT;  -- 此次應成功

災難復原:誤用 WordPad 儲存 SPFILE 導致損壞

現象

以 WordPad 開啟 SPFILE(二進位檔)並儲存,檔頭魔數被破壞,Oracle 拒絕啟動:

ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file

復原步驟

  1. 確認 PFILE 存在(通常在 $ORACLE_HOME/dbs/init.ora 或 $ORACLE_BASE/admin//pfile/)。
  2. 以 SYSDBA 連線空閒實例:
SQL> CONN / AS SYSDBA
Connected to an idle instance.
  1. 從 PFILE 重建 SPFILE:
CREATE SPFILE='/u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfileORCL.ora' 
FROM PFILE='/u01/app/oracle/product/19.0.0/admin/ORCL/pfile/init.ora.20240101';
  1. 啟動驗證:
STARTUP;
-- 成功後,以後修改參數務必用:
ALTER SYSTEM SET parameter=value SCOPE=SPFILE;

最佳實踐檢查清單

  1. [ ] 歸檔目的地至少雙路徑(不同磁碟/掛載點)。
  2. [ ] log_archive_start=TRUE (10g) / 11g+ 自動啟用。
  3. [ ] 監聽器靜態註冊 SID_LIST_LISTENER 完整配置。
  4. [ ] db_recovery_file_dest_size 設定快閃區上限,防止寫滿掛庫。
  5. [ ] 切換後立即 ALTER SYSTEM SWITCH LOGFILE 驗證歸檔生成。
  6. [ ] 絕不以文本編輯器開啟/儲存 SPFILE,參數修改專用 ALTER SYSTEM ... SCOPE=SPFILE。
  7. [ ] 定期備份 SPFILE/PFILE 至異地。

總結

切換歸檔模式核心流程固定,但監聽器靜態註冊是遠端操作 MOUNT 狀態的關鍵前置條件,常被忽略導致卡關。SPFILE 二進位特性要求嚴格使用 ALTER SYSTEM 修改,任何文本編輯器操作皆為高風險行為。建立標準化 Runbook,納入「驗證監聽器靜態註冊」、「禁止手動編輯 SPFILE」兩鐵律,可消除 90% 切換失敗風險。

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