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

Oracle 歸檔日誌刪除實戰:RMAN 與 OS 指令雙軌並行

     編輯:Oracle 資料庫基礎

情境

歸檔區滿(ORA-19809/ORA-00257),資料庫掛起,需緊急釋放空間並同步清理 Control File/RMAN Repository 記錄。

標準流程:RMAN 刪除(推薦)

# 1. 設定 SID
export ORACLE_SID=orcl

# 2. 連線 RMAN
rman target sys/pwd@orcl

# 3. 查看歸檔清單
RMAN> LIST ARCHIVELOG ALL;

# 4. 刪除 7 天前已備份的歸檔(含同步 Control File)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

COMPLETED BEFORE 以完成時間判斷,SYSDATE-7 為 7 天前。若啟用 Flashback,亦會刪除對應 Flashback Log。

替代語法:時間範圍刪除(謹慎)

RMAN> DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';  -- 刪除 7 天前至今所有,極高風險,執行後必須立即全備

OS 層面刪除 + RMAN 同步(適用大量舊檔)

# 1. OS 刪除 7 天前 .dbf
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} \;

# 2. RMAN 同步 Repository
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;

缺點:兩步驟、易遺漏、CROSSCHECK 需掃描所有歸檔耗時。優點:find 可加複雜條件(大小、名稱模式)。

緊急臨時釋放空間(不建議常態化)

  1. OS 刪除最舊幾個歸檔檔案(至少保留最近 2-3 天)。
  2. 啟動資料庫:STARTUP MOUNT → ALTER DATABASE OPEN。
  3. 立即執行 RMAN 刪除與完整備份。

預防措施

  • 設定 LOG_ARCHIVE_DEST_n 多路徑分散,或啟用 DB_RECOVERY_FILE_DEST (FRA) 並設 DB_RECOVERY_FILE_DEST_SIZE。
  • RMAN 設定 CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE DISK;。
  • 排程 DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-' 每日/每週執行。
  • 監控 FRA 使用率:SELECT * FROM v$flash_recovery_area_usage;。

結語

歸檔刪除核心原則:RMAN 為主(同步 Repository)、OS 為輔(特殊條件)、保留窗口滿足 RPO、刪除後必備份。將刪除邏輯封裝為 RMAN 腳本並納入排程,才是長久之計。

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