[20221121]rman刪除歸檔日誌問題.txt

lfree發表於2022-11-23

[20221121]rman刪除歸檔日誌問題.txt

--//前幾天檢查發現同事設計的刪除歸檔指令碼執行的時如下命令(在dg上):
delete noprompt archivelog until time 'sysdate-15';

--//我看了我以前寫的類似指令碼,我執行的是:
delete noprompt archivelog all completed before 'trunc(sysdate)-15';

--//兩者有怎麼區別呢?我記憶裡我以前寫過blog,找了一下,發現如下連結:
http://blog.itpub.net/267265/viewspace-775193/

--//不再重複測試了:
--//http://blog.itpub.net/267265/viewspace-775193/
摘要:

Summary :

UNTIL TIME的TIME  指的是 ARCHIVELOG的FIRST_TIME ,即歸檔日誌中LOW SCN對應的時間戳;其意思為找出所有LOW SCN TIMESTAMP小於
等於指定的時間變數的歸檔日誌。

COMPLETED BEFORE  指的是ARCHIVELOG的COMPLETION_TIME,即實際歸檔操作完成的時間;其意思為找出所有歸檔完成時間小於指定的時
間變數的歸檔日誌。

COMPLETED AFTER   指的是ARCHIVELOG的COMPLETION_TIME,即實際歸檔操作完成的時間;其意思為找出所有歸檔完成時間大於等於指定
的時間變數的歸檔日誌。

--//注:如果使用completed.前面的all是必須的,不然報錯.
--//很明顯我感覺我寫的更加科學一下,對方until time 'sysdate-15',這樣採用的時間點是ARCHIVELOG的FIRST_TIME ,即歸檔日誌中
--//LOW SCN對應的時間戳, 很容易產生歧異.
--//而我寫的是all completed before 'trunc(sysdate)-15',這樣當天執行執行的時間點不會變,COMPLETED BEFORE  指的是ARCHIVELOG
--//的COMPLETION_TIME,即實際歸檔操作完成的時間.
--//實際上一個取redofile開始時間first_time,另外一個取redofile結束時間completion_time.對應檢視
SELECT recid, first_time, next_time, completion_time FROM v$archived_log where recid between 499 and 501;
--//注:我以前寫的一些也是類似before 'sysdate-15',有空做一次巡檢,全部改正過來.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2924664/,如需轉載,請註明出處,否則將追究法律責任。

相關文章