重複的數據庫留下孤立的歸檔日誌文件
我
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