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

Oracle 10g 歸檔日志模式全景指南:三種模式切換、閃回恢復區與傳統路徑配置實戰

     編輯:Oracle 資料庫基礎

一、 三種歸檔模式對比

模式適用場景管理複雜度恢復能力關鍵特性
NOARCHIVELOG 測試/開發/可重載數據倉庫 極低 僅支援實例恢復 (Crash Recovery),**無介質恢復** 無歸檔進程 (ARCn),Redo 循環覆蓋
ARCHIVELOG (傳統手動路徑) 生產環境、需時間點恢復 (PITR)、Data Guard 物理備庫 中 (需手動管理路徑、空間、刪除策略) 完整介質恢復、PITR、Data Guard `LOG_ARCHIVE_DEST_n`、`LOG_ARCHIVE_FORMAT` 手動配置
ARCHIVELOG + Flash Recovery Area (FRA) **10g+ 生產首選**、簡化管理、自動空間回收 低 (統一參數 `DB_RECOVERY_FILE_DEST`) 同傳統 + 自動過期清理、RMAN 深度整合 閃回日志、歸檔日志、控制文件備份、RMAN 備份集共享 FRA 空間

二、 關鍵視圖:監控歸檔狀態與性能

-- 歸檔模式狀態
SELECT log_mode FROM v$database; -- ARCHIVELOG / NOARCHIVELOG

-- 歸檔目標狀態
SELECT dest_id, status, target, destination, schedule, mountid 
FROM v$archive_dest WHERE status='VALID';

-- 歸檔進程
SELECT process, status, thread#, sequence# FROM v$managed_standby WHERE process LIKE 'ARC%';

-- 歸檔日志歷史
SELECT thread#, sequence#, first_time, next_time, blocks, block_size 
FROM v$archived_log WHERE dest_id=1 ORDER BY sequence# DESC;

-- FRA 空間使用
SELECT * FROM v$recovery_file_dest;
-- SPACE_LIMIT, SPACE_USED, SPACE_RECLAIMABLE, NUMBER_OF_FILES

三、 模式切換標準作業程序 (SOP) — 需停機維護窗口

1. 啟用 FRA 歸檔 (推薦生產首選)

-- 1. 設置 FRA 位置與大小 (動態生效,無需重啟)
ALTER SYSTEM SET db_recovery_file_dest_size = 20G SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest = '+FRA_DG' SCOPE=BOTH; -- ASM 磁盤組或文件系統路徑

-- 2. 關閉數據庫
SHUTDOWN IMMEDIATE;

-- 3. 掛載並啟用歸檔
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;

-- 4. 啟用自動歸檔 (10g FRA 模式下通常隱式啟用,顯式確認)
ALTER SYSTEM SET log_archive_start = TRUE SCOPE=SPFILE; -- 10g 參數,11g+ 忽略

-- 5. 打開數據庫
ALTER DATABASE OPEN;

-- 6. 驗證
ARCHIVE LOG LIST;
-- Database log mode: Archive Mode
-- Automatic archival: Enabled
-- Archive destination: USE_DB_RECOVERY_FILE_DEST
-- Oldest online log sequence: 50
-- Next log sequence to archive: 52
-- Current log sequence: 52

2. 啟用傳統手動路徑歸檔


SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;

-- 配置歸檔目標 (SCOPE=SPFILE 需重啟生效,或 SCOPE=MEMORY 即時生效但重啟失效)
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_2 = 'LOCATION=/u02/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD' SCOPE=SPFILE; -- 雙路徑冗余

-- 歸檔文件名格式 (%S=序列號零填充, %T=線程號零填充, %R=RESETLOGS ID)
ALTER SYSTEM SET log_archive_format = 'arch_%t_%s_%r.arc' SCOPE=SPFILE;

-- 啟用自動歸檔
ALTER SYSTEM SET log_archive_start = TRUE SCOPE=SPFILE;

SHUTDOWN IMMEDIATE;
STARTUP;

-- 驗證
ARCHIVE LOG LIST;

3. 關閉歸檔 (僅限測試/可重載環境)


SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ARCHIVE LOG STOP; -- 停止自動歸檔
ALTER DATABASE NOARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST; -- 確認 NOARCHIVELOG

四、 FRA 與傳統路徑雙向切換實戰

FRA → 傳統路徑

  1. OEM / SQL*Plus 修改初始化參數:清空 `LOG_ARCHIVE_DEST_1`...`_10` 所有值 (設為 `''`),`SCOPE=BOTH`。
  2. 設置傳統參數:`LOG_ARCHIVE_DEST_1`, `LOG_ARCHIVE_FORMAT`, `LOG_ARCHIVE_START` (10g)。
  3. 重啟實例生效 (靜態參數)。
  4. 清理舊 FRA 歸檔: 若手動刪除 FRA 內舊歸檔,**必須**用 RMAN 同步控制文件:
    RMAN> CROSSCHECK ARCHIVELOG ALL;
    RMAN> DELETE EXPIRED ARCHIVELOG ALL;

傳統路徑 → FRA

  1. 按「啟用 FRA 歸檔」步驟配置 `DB_RECOVERY_FILE_DEST` / `SIZE`。
  2. 清空 `LOG_ARCHIVE_DEST_n` 參數。
  3. 重啟實例。
  4. 同樣需 RMAN `CROSSCHECK`/`DELETE EXPIRED` 清理舊路徑殘留記錄。

五、 關鍵參數對照表 (10g vs 11g+ 變化)

參數10g11g+說明
LOG_ARCHIVE_STARTTRUE/FALSE廢棄 (隱式啟用)10g 控制自動歸檔啟停
LOG_ARCHIVE_DEST_n字符串路徑支援 SERVICE=... (Data Guard)、ALTERNATE、COMPRESSION傳統路徑配置核心
LOG_ARCHIVE_FORMAT%S %T %R新增 %d (DB_NAME), %r (RESETLOGS_ID)文件名模板
DB_RECOVERY_FILE_DEST引入核心參數FRA 根目錄
DB_RECOVERY_FILE_DEST_SIZE引入核心參數FRA 空間硬限制

六、 運維避坑指南

  1. FRA 空間滿 (ORA-19809/ORA-19804): 設置 `DB_RECOVERY_FILE_DEST_SIZE` 留 15-20% 緩衝;配置 RMAN 定期備份歸檔至磁帶/異地並 `DELETE ARCHIVELOG BACKED UP 2 TIMES TO DEVICE TYPE SBT`;監控 `V$RECOVERY_FILE_DEST.SPACE_USED / SPACE_LIMIT`。
  2. 歸檔卡住 (ARCH PROCESS STUCK):** 檢查磁盤 I/O、FRA 空間、網絡 (Data Guard 遠程歸檔);`ALTER SYSTEM ARCHIVE LOG CURRENT` 強制切日志觸發歸檔。
  3. 手動刪除歸檔文件 (OS 級 rm): **嚴禁**!會導致控制文件/RMAN Repository 不一致,必須用 RMAN `DELETE ARCHIVELOG` 或 `CROSSCHECK`+`DELETE EXPIRED`。
  4. RESETLOGS 後歸檔衝突: 打開數據庫 `RESETLOGS` 會生成新 Incarnation,舊歸檔不適用。RMAN `LIST INCARNATION` 確認當前化身,備份策略需覆蓋新化身。`LOG_ARCHIVE_FORMAT` 含 `%R` 可區分。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved