Oracle

重複的數據庫留下孤立的歸檔日誌文件

  • February 2, 2015

CLONEDB定期將生產數據庫複製到另一個數據庫。我正在使用 rmanduplicate database腳本,例如:

run {
duplicate target database to CLONEDB
FROM ACTIVE DATABASE
PASSWORD FILE
SPFILE
SET ....
DB_FILE_NAME_CONVERT=....
LOGFILE
 GROUP 1 (
    ....
 ) SIZE 100M,
....
;
}

在執行腳本之前,我正在對 CLONEDB 進行歸檔日誌 rman 備份(它會刪除備份的歸檔日誌)和DROP DATABASE CLONEDB.

執行duplicate database時,rman 從源數據庫複製數據文件和歸檔日誌。例如,我可以看到這樣的文件已被複製:

input archived log thread=1 sequence=666 ...
output file name=+DYSK/archivelog/2015_01_16/thread_1_seq_666
channel ORA_DISK_1: archived log copy complete, elapsed time: 00:00:01

然後 rman 恢復數據庫(通過set until scn 666666; recover clone database delete archivelog;),因此將上面的歸檔日誌應用於數據庫:

starting media recovery
archived log for thread 1 with sequence 666 is already on disk as file +DYSK/archivelog/2015_01_16/thread_1_seq_666
archived log file name=+DYSK/archivelog/2015_01_16/thread_1_seq_666 thread=1 sequence=666
media recovery complete, elapsed time: 00:00:02
Finished recover at 2015.01.16 16:21:57
Oracle instance started

一切正常,數據庫啟動,使用者滿意。但是歸檔日誌文件(在本例中thread_1_seq_666)保留在磁碟上。並且由於 rman 在復製過程之後更改了數據庫化身,因此該文件在備份過程中永遠不會被刪除,因為它屬於先前的化身。

所以有時我必須做家務,直接從磁碟上刪除舊的、孤立的歸檔日誌。當然我想用複制腳本自動完成。我可以為舊文件添加rm命令asmcmd,但也許有辦法說服 rman 在duplicate database?

duplicate database ... from active database旨在在沒有任何現有備份的情況下工作。我希望 Oracle 能夠清理在複製過程中使用的歸檔日誌。

所以我會說這是一個意想不到的行為。嘗試在 Oracle 記錄服務請求。

我不記得在複製過程後是否必須清理歸檔日誌。好吧,我可以說我從未在數據庫複製後刪除歸檔日誌,因為我沒有檢查任何內容。我很少複製from active database. 我通常從備份位置複製而不連接到主數據庫。我以某種方式更喜歡那個。

作為解決方法,我會在之後用腳本刪除它們。

嘗試增加 control_file_record_keep_time 的值。您還可以嘗試在刪除數據庫之前強制刪除存檔日誌和備份。

SQL> show parameter control_file_record_keep_time

NAME                             TYPE      VALUE
-------------------------------- --------- ------
control_file_record_keep_time    integer   7

引用自:https://dba.stackexchange.com/questions/90410