oracle adg主庫通過rman無法刪除歸檔
oracle 11.2.0.4 ADG環境
主庫os空間緊張,發現歸檔日誌佔用很大的一個比例!但是我們的備份指令碼中每天都執行
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-31';
也就是保留了31天的,那麼31天的怎麼會這麼大呢?
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oradata/ctidb/arch/
Oldest online log sequence 1319
Next log sequence to archive 1321
Current log sequence 1321
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@BJ-CTI-17 ctidb]$ cd /data/oradata/ctidb/arch/
[oracle@BJ-CTI-17 arch]$ ll -rt
-rw-r----- 1 oracle oinstall 369649664 Nov 8 2017 1_303_950667461.dbf
-rw-r----- 1 oracle oinstall 56832 Nov 8 2017 1_304_950667461.dbf
-rw-r----- 1 oracle oinstall 1024 Nov 8 2017 1_305_950667461.dbf
-rw-r----- 1 oracle oinstall 377382400 Nov 9 2017 1_306_950667461.dbf
-rw-r----- 1 oracle oinstall 55808 Nov 9 2017 1_307_950667461.dbf
-rw-r----- 1 oracle oinstall 1024 Nov 9 2017 1_308_950667461.dbf
-rw-r----- 1 oracle oinstall 305280000 Aug 10 2017 1_30_950667461.dbf
-rw-r----- 1 oracle oinstall 373349376 Nov 10 2017 1_309_950667461.dbf
-rw-r----- 1 oracle oinstall 141824 Nov 10 2017 1_310_950667461.dbf
-rw-r----- 1 oracle oinstall 1024 Nov 10 2017 1_311_950667461.dbf
發現居然還有一年之前的歸檔日誌檔案,那就奇怪了?
1)檢視控制檔案中記錄的歸檔的檔案資訊
SQL> select name ,SEQUENCE# from v$archeved_log;
name SEQUENCE#
---------------------------------------------------------------------------------------
accdbdg 1268
1268
accdbdg 1269
/caadb/oradata/arch/accdb/1_1269_943625125.dbf 1269
accdbdg 1270
/caadb/oradata/arch/accdb/1_1270_943625125.dbf 1270
accdbdg 1271
2)rman中檢視31天前的歸檔,顯示為空。說明控制檔案沒有記錄相關的資訊
RMAN> list archivelog all completed before 'sysdate-31';
3)rman中檢視30天前的歸檔,就有了!說明記錄了倒數31天的資訊
RMAN> list archivelog all completed before 'sysdate-30';
List of Archived Log Copies for database with db_unique_name ACCDB
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
2536 1 1269 A 05-JUL-18
Name: /caadb/oradata/arch/accdb/1_1269_943625125.dbf
2538 1 1270 A 06-JUL-18
Name: /caadb/oradata/arch/accdb/1_1270_943625125.dbf
2540 1 1271 A 06-JUL-18
Name: /caadb/oradata/arch/accdb/1_1271_943625125.dbf
再次檢視歸檔目錄中的歸檔檔案,發現確實是保留了最近31天的歸檔,原來是在歸檔 SEQUENCE#為 1268開始有了adg,這之前包括1268的歸檔主庫的控制檔案都不記錄了!因此執行下列命令是沒辦法刪除;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-31';
解決辦法是通過find命令從os層面刪除歸檔!
[oracle@BJ-CTI-17 arch]$ find /data/oradata/ctidb/arch -name "*.dbf" -mtime +30 -exec rm -f {} \;
一:關於adg的主庫歸檔刪除策略 :
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
該策略對應三個值:
1)NONE :設定為該值時,則不啟用歸檔檔案的刪除策略。預設情況下就是NONE。
2)APPLIED ON STANDBY :
設定為該值時,會強制檢查待刪除的log 是否已經在備庫apply,只有apply後的log才能刪除。
當通過附加的 DELETE INPUT 子句刪除Standby資料庫仍需要的日誌時,會提示RMAN-08137錯誤而無法刪除。 不過仍然可以手動地通過 DELETE ARCHIVELOG 方式刪除。
3) SHIPPED TO ALL STANDBY:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
注意: 如果設定 APPLIED ON STANDBY,當歸檔已經正常傳給了standby,那麼是可以手工地通過 DELETE ARCHIVELOG 方式刪除,但是由於網路問題導致沒有傳給standby,這樣你DELETE ARCHIVELOG 就無法刪除了!
二:刪除歸檔的方法:
1.刪除os目錄上不存在的歸檔,也就是刪除控制檔案中記錄的資訊
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
2.刪除超過恢復策略的歸檔
RMAN>delete noprompt obsolete; #不僅僅刪除過期的備份,相關的歸檔也會刪除!
RMAN指令碼中使用 “delete noprompt obsolete;” 刪除超出儲存策略的備份。
以前我的備份指令碼中處理歸檔日誌時都是“plus archivelog delete all input”,備份完archivelog後馬上刪除,總以為“delete noprompt obsolete;” 只刪除備份集不刪歸檔。
在做DataGuard時候,Primary需要儲存最近的archivelog,以便standby出現archivelog gap時過來取。
實驗中發現它也會將obsolete backupset相關的archivelog一併刪掉。
所有dataguard不能用delete noprompt obsolete;這個命令刪除。
那需要用什麼命令刪除呢?
delete archivelog until time 'sysdate-7' ; 刪除截止到前7天的所有archivelog
3.刪除n天前的歸檔,
delete archivelog all completed before 'sysdate-N'
注意:
list archivelog until time 'sysdate-1'; 此時是按照歸檔日誌開始時間即fisrt_time作為截止時間
list archivelog all completed before 'sysdate-1' 是按照歸檔日誌完成時間即completion_time作為截止時間
試想如果刪除歸檔日誌,還是採用delete archivelog all completed before 'sysdate-N'
4.通過os命令刪除30天前的歸檔
[oracle@BJ-CTI-17 arch]$ find /data/oradata/ctidb/arch -name "*.dbf" -mtime +30 -exec rm -f {} \;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2199175/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle rman 刪除過期的歸檔Oracle
- oracle adg備庫歸檔滿了無法同步Oracle
- [重慶思莊每日技術分享]-RMAN-08137 主庫無法刪除歸檔檔案
- 通過RMAN設定standby接收日誌後主庫歸檔日誌才可刪除
- ORACLE NBU調取oracle rman指令碼備份歸檔不自動刪除歸檔Oracle指令碼
- oracle 刪除過期的歸檔日誌Oracle
- RMAN正確地刪除Archivelog以及設定有備庫的歸檔刪除策略Hive
- 配置rman來自動刪除應用過的歸檔日誌
- [20221121]rman刪除歸檔日誌問題.txt
- RMAN刪除歸檔日誌出現RMAN-0813錯誤的處理
- 刪除歸檔
- oracle手工建庫後rman無法啟用(RMAN-04015)Oracle
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- ORACLE批量刪除無主鍵重複資料Oracle
- ADG歸檔不傳輸
- Oracle ADG環境下的RMAN備份策略Oracle
- Oralce資料庫關閉歸檔日誌並且刪除歸檔日誌資料庫
- u盤裡的檔案無法刪除 如何刪除u盤裡刪不掉的檔案
- mysql刪除主鍵索引,刪除索引語法MySql索引
- Oracle ADG 備庫新增備庫Oracle
- win10系統刪除檔案提示檔案正在使用無法刪除如何解決Win10
- 如何刪除檔名太長的檔案 Win10電腦檔名太長無法刪除Win10
- 電腦檔案被佔用無法刪除?Win10系統檔案被佔用無法刪除的解決方法Win10
- 【ARCH】留存,Oracle11g之前Dataguard環境刪除歸檔指令碼Oracle指令碼
- photoshop無法刪除圖層
- 達夢資料庫DM8之刪除歸檔日誌檔案資料庫
- ADG刪除應用完畢的日誌
- win10電腦刪除檔案時提示檔案正在使用無法刪除怎麼解決Win10
- RMAN備份整庫和歸檔日誌的方法
- Oracle 11g刪除庫重建Oracle
- Kubernetes 無法查詢到並且無法刪除pod例項的排查過程
- 無法刪除pod的處理
- Win10系統下檔名或檔案路徑過長無法刪除怎麼解決Win10
- oracle徹底刪除資料檔案Oracle
- Oracle 檔案意外刪除恢復(Linux)OracleLinux
- Oracle搭建rac到單庫的adgOracle
- Docker批量操作(啟停、刪除、歸檔、載入)Docker
- windows下Oracle資料庫完全刪除WindowsOracle資料庫