首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 閃回區滿導致資料庫無法開啟:擴容、清理歸檔、轉移歸檔目的地完整實戰

     編輯:Oracle 資料庫相關知識

生產環境 AIX 平台 Oracle 10gR2 因閃回區 (DB_RECOVERY_FILE_DEST) 寫滿,導致 ORA-16014: log not archived, no available destinations,資料庫無法 OPEN。本文記錄完整排查流程:緊急擴容、RMAN 清理過期備份/歸檔、強制刪除舊歸檔、轉移歸檔目的地至 NFS、權限修復驗證。

一、故障現象與根因

SQL> ALTER DATABASE OPEN;
ORA-16014: log 3 sequence# 157 not archived, no available destinations
ORA-00312: online log 3 thread 1: '/opt/oracle/software/oradata/orcl/redo03.log'

根因:閃回區空間耗盡,LGWR 無法切換日誌,歸檔進程 (ARCn) 無寫入空間,導致線上日誌無法歸檔,資料庫掛起。

二、緊急處理三步走

1. 緊急擴容閃回區 (秒級生效)

SQL> ALTER SYSTEM SET db_recovery_file_dest_size=3G SCOPE=BOTH;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.

原理:動態調整參數,立即釋放寫入空間,讓歸檔進程恢復運作,資料庫順利 OPEN。

2. 徹底清理釋放空間 (RMAN)

RMAN> CROSSCHECK BACKUPSET;
RMAN> DELETE NOPROMPT EXPIRED BACKUPSET;
RMAN> DELETE OBSOLETE;
RMAN> DELETE NOPROMPT EXPIRED BACKUP;
RMAN> DELETE NOPROMPT EXPIRED COPY;

-- 清理歸檔
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
-- 若仍不足,強制刪除 7 天前歸檔 (謹慎!確認備份有效)
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

3. 根治:轉移歸檔目的地至獨立檔案系統

SQL> ALTER SYSTEM SET log_archive_dest_1='location=/nfsdisk/oraarc' SCOPE=BOTH;
System altered.
SQL> ARCHIVE LOG LIST;
Database log mode: Archive Mode
Archive destination: /nfsdisk/oraarc
Current log sequence: 163

-- 驗證切換
SQL> ALTER SYSTEM SWITCH LOGFILE;

三、權限陷阱與修復

設定 NFS 路徑後 SWITCH LOGFILE 卡住,查 V$ARCHIVE_DEST 發現 LOG_ARCHIVE_DEST_1 狀態為 ERROR。

SQL> COL DESTINATION FORMAT A20
SQL> SELECT DEST_ID, DEST_NAME, STATUS, DESTINATION FROM V$ARCHIVE_DEST;
-- DEST_1 顯示 ERROR /nfsdisk/oraarc

修復:OS 層授權 Oracle 用戶寫入權限

# chown oracle:oinstall /nfsdisk/oraarc
# chmod -R 777 /nfsdisk/oraarc

授權後歸檔恢復正常,STATUS 變為 VALID。

四、閃回區監控查詢

-- 查看歸檔模式
SQL> ARCHIVE LOG LIST;

-- 閃回區使用率
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

-- 總佔用空間 (GB)
SQL> SELECT SUM(PERCENT_SPACE_USED)*3/100 FROM V$FLASH_RECOVERY_AREA_USAGE;

五、最佳實踐總結

  1. 雙路徑保護:LOG_ARCHIVE_DEST_1 指向本地快速儲存,LOG_ARCHIVE_DEST_2 指向 NFS/遠端,參數 LOG_ARCHIVE_MIN_SUCCEED_DEST=1
  2. 監控告警:設定閃回區使用率 > 80% 告警,避免寫滿
  3. 定期清理:RMAN DELETE OBSOLETE、CROSSCHECK 納入每日排程
  4. 權限預檢:新增歸檔路徑前,先用 Oracle OS 用戶測試寫入

閃回區滿是典型的「空間換時間」失衡問題,緊急擴容救急,轉移歸檔路徑治本,配合自動化清理與監控,徹底杜絕復發。

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