RMAN常用的命令和操作

it_newbalance發表於2012-07-05
常用的命令和操作:
1、backup和COPY
2、list
3、delete 和crosscheck
4、change
5、rman>report schema; --檢視資料庫有哪些表空間和資料檔案
6、備份指令碼
7、執行SQL語句(rman中的sql環境不能執行SELECT語句)
8、RMAN備份相關的動態效能表
 
1、backup和copy
backup 邏輯物理備,基於塊級別的備份,已經使用過的塊--熱點塊
備份格式
backup spfile;
backup current controlfile;
backup datafile 4;
backup tablespace users,sysaux;
backup archivelog sequence between ## and ##;
backup archivelog sequence between ## and ## delete input;
backup archivelog all;
-------------------------------------------------------
BACKUP DATABASE PLUS ARCHIVELOG;
  則在備份資料庫的同時自動對所有歸檔檔案進行備份。這種方式與上種有什麼區別呢,區別太明顯了,BACKUP.....PLUS ARCHIVELOG命令在備份過程中會依次執行下列步驟:
  1>.執行ALTER SYSTEM ARCHIVE LOG CURRENT語句對當前redolog進行歸檔。
  2>.執行BACKUP ARCHIVELOG ALL命令備份所有已歸檔日誌。
  3>.執行BACKUP命令對指定項進行備份。
  4>.再次執行ALTER SYSTEM ARCHIVE LOG CURRENT對當前redolog歸檔。
  5>.對新生成的尚未備份的歸檔檔案進行備份。
------------------------------------------------------
backup archivelog all delete input;   備份之後刪除歸檔目錄下的所有歸檔日誌。
backup full database plus archivelog  全庫加歸檔日誌備份
backup database skip readonly   還可以跳過不備份readonly的檔案,同樣可以跳過OFFLINE 等等
backup database;  備份引數檔案,控制檔案,所有資料檔案,不備份聯機日誌,歸檔日誌可以備份。
全庫備份時候,要注意資料檔案必須是online 和read write的,不然會提示不能備份
backup as compressed backupset full database; 備份時壓縮備份集
backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;
(備份system表空間或者備份database時,備份成功後回將控制檔案也自動備份出來)
sql>show parameter db_rec 定義閃回區的目錄
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest                string                 /oracle//flash_recovery_area
db_recovery_file_dest_size           big integer            2G
db_recycle_cache_size                big integer            0

壓縮備份集:
backup as compressed backupset tablespace users;
backup as compressed backupset database plus archivelog;
增量備份:(0 ~ 4)
backup incremental level 0 tablespace users;
backup incremental level 1 tablespace users;
backup incremental level 2 tablespace users;
backup incremental level 2 cumulative tablespace users;
-----------------------------------------------------------------------
補充點內容:
塊跟蹤(10g):記錄自從上一次備份以來資料塊的變化,相關後臺程式CTWR(Change Tracking Writer)
改善增量備份效能,RMAN可以不再掃描整個檔案以查詢變更資料
查詢是否啟用塊跟蹤
col FILENAME for a40
select filename,status,bytes from v$block_change_tracking;
啟用塊跟蹤
alter database enable block change tracking using '/home/oracle/block_track/orcl_block_track.log';
禁用塊跟蹤
alter database disable block change tracking;
修改塊修改跟蹤檔案路徑:
mount
目標檔案要存在
alter database rename file '' to '';
並行備份:(使用rman語句塊)
backup datafile 4,5;
-----------------------------------------------------------------------
copy 物理備
copy current controlfile to '';    物理備份   一般不用
copy datafile 4 to '';

2、list
list backup
list backup of database summary;
檢視映象拷貝:
list copy;
list copy of datafile 4;
list copy of controlfile;
檢視建立的指令碼:list script. names;
 

3、delete 和crosscheck
  1、刪除陳舊備份
  當使用RMAN執行備份操作時,RMAN會根據備份冗餘策略確定陳舊備份。     
  RMAN> delete obsolete;
  
  2、刪除EXPIRED備份
  執行crosscheck命令核對備份集,那麼會將該備份集標記為EXPIRED狀態。為了刪除相應的備份記錄,可以執行delete expired backup命令。     
  RMAN> delete expired backup;
  
  3、刪除EXPIRED副本
  RMAN> delete expired copy;
  
  4、刪除特定備份集
  RMAN> delete backupset 19;
  
  5、刪除特定備份片
  RMAN> delete backuppiece 'd:backupDEMO_19.bak';
  
  6、刪除所有備份集
  RMAN> delete backup;
  
  7、刪除特定映像副本
  RMAN> delete datafilecopy 'd:backupDEMO_19.bak';
  
  8、刪除所有映像副本
  RMAN> delete copy;
  
  9、在備份後刪除輸入物件
  RMAN> delete archivelog all delete input;
  RMAN> delete backupset 22 format = ''d:backup%u.bak'' delete input; 
檢測備份存在、正常否:  正常的是available  不存在的顯示:expired 過期
crosscheck copy;
crosscheck archivelog all;
crosscheck backup;
刪除不可用的備份集
delete expired backup,配合crosscheck backup;使用
delete noprompt expired backup   不需要互動模式
刪除拷貝:
delete copy;
delete datafilecopy '/home/oracle/rmanbk/users01.dbf';
刪除備份集:
delete backupset 1,2,3;
delete backup;
刪除陳舊的備份:(由備份保留策略引數決定) 比如定義為10天,
delete obsolete;和report obsolete 配合使用
  如果被判斷為廢棄的備份是一個單獨資料檔案的映象複製,那麼在執行DELETE命令時將直接刪除這個映象複製檔案。
  如果被判斷為廢棄的備份是一個備份集中的一部分,則必須等到整個備份集中所有其它檔案都被廢棄之後,才能刪除這個備份集。
delete obsolete redundance=3;
引數定義:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;  建議用保留的時間
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; 這個冗餘度引數,不建議用
 
校驗備份和還原的可行行:
backup validate database;
validate backupset 10;
restore tablespace users validate;
 
4、change
change backupset 140 unavilable;
 
6、備份指令碼:
run{
allocate channel c1 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
allocate channel c2 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
backup
(datafile 4 channel c1)
(datafile 5 channel c2);
delete noprompt obsolete;
}
控制備份片大小:
run{
allocate channel c1 type disk maxpiecesize=50m;
backup tablespace users format '/home/oracle/rmanbk/%s_%p.bkp';
}
控制備份集數量:控制
run{
allocate channel c1 type disk maxpiecesize=100m;
backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;
backup format '/backup/%d_%I_%e_%s_%p_%T_%t.bkp' archivelog all delete input;
delete noprompt obsolete;
}
backup database not backed up format '';

backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;

建立指令碼:  檢視本地指令碼:list script. names;必需要有catalog庫
create script. r1{
allocate channel c1 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
allocate channel c2 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
backup
(datafile 4 channel c1)
(datafile 5 channel c2);
delete noprompt obsolete;
}
執行指令碼,必需放在run{} 裡面:
rman>run{
rman>excute script. r1;
rman>}
刪除指令碼,rman>delete script. r1;
列印命令:rman>print script. r1;
編輯指令碼:先儲存rman>print script. r1 to '/oracle/..txt';
編輯之後再替換:rman>replace script. r1 from '/oracle/...txt'

全域性指令碼: 可以適合任何target資料庫
create global script. r1{
。。。。。。。
}
執行:
rman>run{
rman>excute global script. r1;
rman>}
RMAN命令執行方式:
  在進入演練之前,大家還有必要了解執行rman命令的方式,就目前已知的情況,共有4種執行方式。
  1、單個執行(沒啥說的,之前的示例都是這種方式)
  RMAN>backup database;
  
  2、批處理(呵呵,跳票的補上)
  RMAN>RUN{
  .......................
  .......................
  }
  批處理方式實質是將原來單個執行的命令組合到一起,並放在run{}之間,這種方式最大的好處是所有在run中的命令被視為一個作業,如果作業中任何一條命令執行失敗,則整個命令停止執行,即失敗命令後的其它命令都不會再被執行。這種方式是最常使用的方式,特別對於後臺執行。
  3、執行指令碼(又能細分為幾種方式如下:)
  C:>rman TARGET / @backup_db.rman
  RMAN> @backup_db.rman
  RMAN> RUN { @backup_db.rman }
  執行儲存在恢復目錄中的指令碼(需要首先為rman建立恢復目錄)
  RMAN> RUN { EXECUTE SCRIPT. backup_whole_db };
  看看,夠靈活吧。
  4、作業系統指令碼(linux,windows環境下小有差異,但只是作業系統命令的不同)
  C:>rman cmdfile=backup_db.rman
明眼人看的出來,後兩種其實是前面兩種加上作業系統命令的綜合應用。
 
7、執行SQL語句(rman中的sql環境不能執行SELECT語句)
  RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG ALL';
 
 
8、RMAN備份相關的動態效能表
  V$ARCHIVED_LOG:本檢視包含了所有歸檔重做日誌檔案的建立情況,備份情況以及其他資訊。
  V$BACKUP_CORRUPTION:這個檢視顯示了RMAN在哪些備份集中發現了損壞的資料壞。在你使用BACKUP VALIDATE命令對備份集進行檢查時如果發現了損壞的資料塊,RMAN將在這個檢視中寫入記錄。
  V$COPY_CORRUPTIO:本檢視顯示了哪些映象複製備份檔案已經被損壞。
  V$BACKUP_DATAFILE:本檢視通常用來獲取每個資料檔案中非空白資料塊的數量,從而幫助你建立出大小基本相等的備份集。另外,在檢視中也包含了資料檔案中損壞的資料塊的資訊。
  V$BACKUP_REDOLOG:本檢視顯示了在現有的備份集中飲食有哪些歸檔重做日誌檔案。
  V$BACKUP_SET:本檢視顯示了已經建立的備份集的資訊。
  V$BACKUP_PIECT:本檢視顯示了已經建立的備份片段的資訊。
可以通過如下SQL語句獲得正在進行的映象複製操作的狀態資訊:
Select sid,
       serial#,
       context,
       sofar,
       totalwork,
       round(sofar / totalwork * 100, 2) "% Complete"
  From v$session_longops
 where opname like 'RMAN:%'
   and opname not like 'RMAN:aggregate%'
通過如下SQL獲得rman用來完成備份操作的服務程式的SID與SPID資訊:
Select sid,spid,client_info from v$process p,v$session s where p.addr=s.paddr and client_info like '%id=rman%'

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

相關文章