共計 4124 個字符,預計需要花費 11 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 oracle 中 adg 主庫通過 rman 無法刪除歸檔怎么辦,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
oracle 11.2.0.4 ADG 環(huán)境
主庫 os 空間緊張,發(fā)現(xiàn)歸檔日志占用很大的一個比例!但是我們的備份腳本中每天都執(zhí)行
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
發(fā)現(xiàn)居然還有一年之前的歸檔日志文件,那就奇怪了?
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 天前的歸檔,就有了!說明記錄了倒數(shù) 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
再次查看歸檔目錄中的歸檔文件,發(fā)現(xiàn)確實是保留了最近 31 天的歸檔,原來是在歸檔 SEQUENCE# 為 1268 開始有了 adg, 這之前包括 1268 的歸檔主庫的控制文件都不記錄了!因此執(zhí)行下列命令是沒辦法刪除;
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 是否已經(jīng)在備庫 apply,只有 apply 后的 log 才能刪除。
當通過附加的 DELETE INPUT 子句刪除 Standby 數(shù)據(jù)庫仍需要的日志時,會提示 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,當歸檔已經(jīng)正常傳給了 standby,那么是可以手工地通過 DELETE ARCHIVELOG 方式刪除,但是由于網(wǎng)絡問題導致沒有傳給 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 出現(xiàn) archivelog gap 時過來取。
實驗中發(fā)現(xiàn)它也會將 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 {} \;
關于“oracle 中 adg 主庫通過 rman 無法刪除歸檔怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。