rman 中的 delete all input 和 delete input 的區別

kewin發表於2011-08-30
rman 中的 delete all input 和 delete input 的區別
Kevin Zou
2011-8-30
為了研究清楚rman 中的 delete all input 和 delete input 的區別,做了一個測試,在測試前帶有2個問題:
1)如果在LOCAL SERVER上設定了2個本地歸檔目錄,那在RMAN BACKUP ARCHIVELOG時,是不是同一個SEQUENCE的ARCHIVEDLOG備份兩次呢?
2)如何實現在每次BACKUP ARCHIVELOG後,刪除本地的全部已經備份的ARCHIVEDLOG呢?

我的測試環境:
WINDOWS XP + ORACLE 10.2.0.1
兩個ARCHIVED LOG DESTINATION分別是:
log_archive_dest_1                   string      location=D:\oracle\oradata\TEST\arch11
log_archive_dest_2                   string      location=D:\oracle\oradata\TEST\arch12
C:\Documents and Settings\wen zou>rman target /

恢復管理器: Release 10.2.0.1.0 - Production on 星期二 8月 30 22:45:38 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到目標資料庫: TEST (DBID=2000111656)

> show all;
RMAN 配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DATABASE\SNCFTE
ST.ORA'; # default

RMAN> run {
2> sql 'alter system switch logfile';
3>  backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%T_%
U' delete input;
4>  }

sql 語句: alter system switch logfile

RMAN> run {
2> sql 'alter system switch logfile';
3>  backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%T_%
U' delete input;
4>  }

sql 語句: alter system switch logfile

啟動 backup 於 30-8月 -11
當前日誌已存檔
使用通道 ORA_DISK_1
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH11\ARC00045_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00046_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00047_0701965227.001; 已經
備份 2 次
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =48 記錄 ID=15 時間戳=760575482
輸入存檔日誌執行緒 =1 序列 =49 記錄 ID=17 時間戳=760575499
輸入存檔日誌執行緒 =1 序列 =50 記錄 ID=19 時間戳=760575500
通道 ORA_DISK_1: 正在啟動段 1 於 30-8月 -11
通道 ORA_DISK_1: 已完成段 1 於 30-8月 -11
段控制程式碼=D:\ORACLE\ORADATA\TEST\RMAN\LOGS_TEST_3_1_20110830_03MLATGE_1_1 標記=TAG2
0110830T225820 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00048_0701965227.001 記錄 ID=15
 時間戳 =760575482
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00049_0701965227.001 記錄 ID=17
 時間戳 =760575499
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00050_0701965227.001 記錄 ID=19
 時間戳 =760575500
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00046_0701965227.001 記錄 ID=12
 時間戳 =760575291
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00047_0701965227.001 記錄 ID=14
 時間戳 =760575296
完成 backup 於 30-8月 -11

RMAN> run {
2> sql 'alter system switch logfile';
3>  backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%T_%
U' delete input;
4>  }

sql 語句: alter system switch logfile

啟動 backup 於 30-8月 -11
當前日誌已存檔
使用通道 ORA_DISK_1
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00048_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00049_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00050_0701965227.001; 已經
備份 2 次
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =51 記錄 ID=21 時間戳=760575639
輸入存檔日誌執行緒 =1 序列 =52 記錄 ID=23 時間戳=760575641
輸入存檔日誌執行緒 =1 序列 =53 記錄 ID=25 時間戳=760575650
輸入存檔日誌執行緒 =1 序列 =54 記錄 ID=27 時間戳=760575651
通道 ORA_DISK_1: 正在啟動段 1 於 30-8月 -11
通道 ORA_DISK_1: 已完成段 1 於 30-8月 -11
段控制程式碼=D:\ORACLE\ORADATA\TEST\RMAN\LOGS_TEST_4_1_20110830_04MLATL5_1_1 標記=TAG2
0110830T230051 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:04
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00051_0701965227.001 記錄 ID=21
 時間戳 =760575639
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00052_0701965227.001 記錄 ID=23
 時間戳 =760575641
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00053_0701965227.001 記錄 ID=25
 時間戳 =760575650
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00054_0701965227.001 記錄 ID=27
 時間戳 =760575651
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00048_0701965227.001 記錄 ID=16
 時間戳 =760575482
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00049_0701965227.001 記錄 ID=18
 時間戳 =760575499
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00050_0701965227.001 記錄 ID=20
 時間戳 =760575500
完成 backup 於 30-8月 -11


Note: The BACKUP ARCHIVELOG command only backs up one copy of each distinct log sequence number, so if the DELETE INPUT option is used without the ALL keyword, RMAN only deletes the copy of the file that it backs up.

看到ORACLE只選取了其中一個的ARCHIVED DESTINATION作為RMAN BACKUP 源。而且備份完成後也只是刪除了log_archive_dest_1   目錄下的歸檔日誌。
是不是log_archive_dest_2的歸檔日誌檔案就一直保留在SERVER上呢?
不是的。
再次執行backup archivelog 命令會發現,系統會把log_archive_dest_2 上次已經備份的日誌全部刪除,只保留上次備份結束新增的歸檔日誌。而log_archive_dest_1 又是刪除的乾淨。

上次備份了SEQUENCE =48/49/50的日誌,下次的備份就會刪除log_archive_dest_2中SEQUENCE =48/49/50的日誌。

至於為什麼只選擇log_archive_dest_1 作為備份源:
SQL> alter system set log_archive_dest_1 ='';

系統已更改。

SQL> alter system set log_archive_dest_10='location=D:\oracle\oradata\TEST\arch11';

系統已更改。
SQL> alter system switch logfile;

系統已更改。
RMAN> run {
2> sql 'alter system switch logfile';
3>  backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%T_%
U' delete    input;
4>  }

sql 語句: alter system switch logfile

啟動 backup 於 30-8月 -11
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =58 記錄 ID=35 時間戳=760578074
輸入存檔日誌執行緒 =1 序列 =59 記錄 ID=37 時間戳=760578104
輸入存檔日誌執行緒 =1 序列 =60 記錄 ID=39 時間戳=760578107
通道 ORA_DISK_1: 正在啟動段 1 於 30-8月 -11
通道 ORA_DISK_1: 已完成段 1 於 30-8月 -11
段控制程式碼=D:\ORACLE\ORADATA\TEST\RMAN\LOGS_TEST_6_1_20110830_06MLB01S_1_1 標記=TAG2
0110830T234147 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00058_0701965227.001 記錄 ID=35
 時間戳 =760578074
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00059_0701965227.001 記錄 ID=37
 時間戳 =760578104
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00060_0701965227.001 記錄 ID=39
 時間戳 =760578107
完成 backup 於 30-8月 -11
這裡把log_archive_dest_1置空,把log_archive_dest_10 改為location=D:\oracle\oradata\TEST\arch11.
可以看到RMAN選擇log_archive_dest_2 作為備份源。
至於RMAN選擇哪個作為備份源,我想其實每個dest 的相同的SEQUENCE的歸檔日誌都是相同的,那RMAN選擇了編號靠前的dest作為備份源。

如果要刪除已經備份的日誌,要加上DELETE ALL INPUT 。
run {
sql 'alter system switch logfile';
 backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%T_%U' delete all  input;
 }
RMAN>  backup archivelog all format 'D:\oracle\oradata\TEST\rman\logs_%d_%s_%p_%
T_%U' delete all  input;

啟動 backup 於 30-8月 -11
當前日誌已存檔
使用通道 ORA_DISK_1
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00051_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00052_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00053_0701965227.001; 已經
備份 2 次
正在略過存檔日誌檔案 D:\ORACLE\ORADATA\TEST\ARCH12\ARC00054_0701965227.001; 已經
備份 2 次
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =55 記錄 ID=29 時間戳=760577849
輸入存檔日誌執行緒 =1 序列 =56 記錄 ID=31 時間戳=760577916
輸入存檔日誌執行緒 =1 序列 =57 記錄 ID=33 時間戳=760577917
通道 ORA_DISK_1: 正在啟動段 1 於 30-8月 -11
通道 ORA_DISK_1: 已完成段 1 於 30-8月 -11
段控制程式碼=D:\ORACLE\ORADATA\TEST\RMAN\LOGS_TEST_5_1_20110830_05MLAVRV_1_1 標記=TAG2
0110830T233837 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00055_0701965227.001 記錄 ID=29
 時間戳 =760577849
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00055_0701965227.001 記錄 ID=30
 時間戳 =760577849
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00056_0701965227.001 記錄 ID=31
 時間戳 =760577916
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00056_0701965227.001 記錄 ID=32
 時間戳 =760577916
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH11\ARC00057_0701965227.001 記錄 ID=33
 時間戳 =760577917
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00057_0701965227.001 記錄 ID=34
 時間戳 =760577917
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00051_0701965227.001 記錄 ID=22
 時間戳 =760575639
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00052_0701965227.001 記錄 ID=24
 時間戳 =760575641
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00053_0701965227.001 記錄 ID=26
 時間戳 =760575650
存檔日誌檔名 =D:\ORACLE\ORADATA\TEST\ARCH12\ARC00054_0701965227.001 記錄 ID=28
 時間戳 =760575651
完成 backup 於 30-8月 -11
看到兩個歸檔目錄中的日誌都被刪除。

-THE END-

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

相關文章