DBA基礎課程:Oracle備份恢復-RMAN備份
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢dba基礎課程:Oracle備份恢復-RMAN備份
平臺:Redhat linux as5,Oracle10g
RMAN備份是指用恢復管理器備份數據文件,控制文件,歸檔日志和spfile的方法,前面手動備份(用戶管理)的備份要借助OS命令執行備份操作,而RMAN備份由目標數據庫的服務器進程來完.在RMAN備份中有三個新概念,備份集,備份片和映像副本,備份集是RMAN提供的一種用于存儲備份信息的邏輯結構,備份片是用于存儲備份集信息的二進制文件,也就是OS上的一個個文件,映像副本類似手動的備份,是單個數據文件,單個控制文件單個歸檔日志的完整備份文件.
完全數據庫備份
1.一致性備份(冷備)完整過程
RMAN> connect target /
connected to target database: DB2 (DBID=1852673443)
RMAN> shutdown immediate;
RMAN> startup mount;
#開始備份
RMAN> backup database format='/oracle/rmanback/%d_%s.dbf';
Starting backup at 12-JUN-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=35 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/home/oracle/oracle/oradata/db2/system01.dbf
input datafile fno=00003 name=/home/oracle/oracle/oradata/db2/sysaux01.dbf
input datafile fno=00002 name=/home/oracle/oracle/oradata/db2/undotbs01.dbf
input datafile fno=00004 name=/home/oracle/oracle/oradata/db2/usertbs.dbf
channel ORA_DISK_1: starting piece 1 at 12-JUN-09
channel ORA_DISK_1: finished piece 1 at 12-JUN-09
piece handle=/oracle/rmanback/DB2_1.dbf tag=TAG20090612T071426 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:35
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 12-JUN-09
channel ORA_DISK_1: finished piece 1 at 12-JUN-09
piece handle=/oracle/rmanback/DB2_2.dbf tag=TAG20090612T071426 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04
Finished backup at 12-JUN-09
RMAN> sql 'alter database open';
RMAN> sql 'alter system archive log current';
這樣一個數據庫就備份完了,通過上面的輸出可以看到,把表空間,數據文件,控制文件,SPFILE都備份了,其中表空間,數據文件都備在DB2_1.dbf里,控制文件和spfile保存在DB2_2.dbf里,(比手動備份簡單多了)
查看備份后的文件
[oracle@oracle rmanback]$ pwd
/oracle/rmanback
[oracle@oracle rmanback]$ ls
DB2_1.dbf DB2_2.dbf
2.非一致性備份
因為一致性備份要中斷業務,一般使用非一致性備份,但非一致性備份一定要在歸檔模式下.
RMAN> connect target sys/123456
RMAN> backup database format='/oracle/rmanback/%d_%s.dbf';
[oracle@oracle rmanback]$ ls
DB2_1.dbf DB2_2.dbf DB2_3.dbf DB2_4.dbf
備份表空間
下面以表空間chenxy為例
RMAN> connect target sys/123456
RMAN> backup tablespace chenxy format='/oracle/rmanback/%N_%s.dbf';
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00005 name=/home/oracle/oracle/oradata/db2/chenxy.dbf
input datafile fno=00005 name=/home/oracle/oracle/oradata/db2/chenpy.dbf
channel ORA_DISK_1: starting piece 1 at 12-JUN-09
Finished backup at 12-JUN-09
[oracle@oracle rmanback]$ ls
CHENXY_6.dbf CHENXY_7.dbf DB2_1.dbf DB2_2.dbf DB2_3.dbf DB2_4.dbf
可以看到備份表空間就是把表空間內的所有數據文件備份下來
備份單個數據文件
RMAN> connect target sys/123456
RMAN> backup datafile 5 format='/oracle/rmanback/%N_%f_%s.dbf';
備份控制文件和歸檔日志
#備份控制文件
RMAN> backup current controlfile format='/oracle/rmanback/%d_%s.ctl';
#備份前一天的備檔日志
RMAN> backup format='/oracle/rmanback/%d_%s.arc'
2> archivelog from time='sysdate-1' until time='sysdate';
#同時備份數據文件和歸檔日志
RMAN> backup format '/oracle/rmanback/%d_%s.bak' tablespace chenxy plus archivelog;
備份映像副本
1.數據文件副本
RMAN> backup as copy format='/oracle/rmanback/df_5.dbf' datafile 5;
2.控制文件副本
RMAN> copy current controlfile to '/oracle/rmanback/db2.ctl';
[oracle@oracle rmanback]$ ls
db2.ctl df_5.dbf
3.歸檔日志副本
RMAN> backup as copy format='/oracle/rmanback/arc30.log' archivelog sequence 30;
RMAN> copy archivelog '/home/oracle/oracle/oradata/db2/arch/1_31_689217827.dbf'
2> to '/oracle/rmanback/arc31.log';
[oracle@oracle rmanback]$ ll
total 678288
-rw-r----- 1 oracle oinstall 23883776 Jun 12 08:16 arc30.log
-rw-r----- 1 oracle oinstall 1024 Jun 12 08:18 arc31.log
4.一次備份多個映像副本
RMAN> configure device type disk parallelism 3;
RMAN> backup as copy format='/oracle/rmanback/df_%f.dbf' datafile 2,3,4;
RMAN備份維護
1.報告目標數據庫
RMAN>report schema;
RMAN>report need backup incremental 3;
RMAN>report need backup days 3 tablespace chenxy;
RMAN>report need backup redundancy 2 database;
RMAN>report obsolete redundancy 2;
RMAN>report unrecoverable;
2.詳細分析RMAN資料庫
RMAN>list backup of tablespace chenxy;
RMAN>list backup of controlfile;
RMAN>list backup of archivelog all;
RMAN>list backup of spfile;
RMAN>list copy of datafile 5;
RMAN>list copy of controlfile;
RMAN>list copy of archivelog;
RMAN>list incarnation of database;
3.核對磁盤和磁帶上的備份文件
RMAN>crosscheck backup;
RMAN>crosscheck backup of database;
RMAN>crosscheck backup of tablespace system;
RMAN>crosscheck backup of datafile 4;
RMAN>crosscheck backup of controlfile;
RMAN>crosscheck backup of spfile;
RMAN>crosscheck backup of archivelog sequence 3;
RMAN>crosscheck backup of copy;
RMAN>crosscheck backup of database;
RMAN>crosscheck backup of tablespace users;
4.刪除備份記錄及相就的物理文件
RMAN>delete obsolete;
RMAN>delete noprompt expired backup;
RMAN>delete noprompt expired copy;
RMAN>delete noprompt backupset 12;
RMAN>delete noprompt backuppiece ‘/oracle/rmanback/ctl.bak’;
RMAN>delete noprompt backup;
RMAN>delete noprompt datafilecopy ‘/oracle/rmanback/*.bak’;
RMAN>delete noprompt copy;
RMAN>backup archivelog all delete input;
5.改變備份記錄的狀態
RMAN>change backupset 2 unavailable;
RMAN>change datafilecopy ‘/oracle/rmanback/*.bak’ unavailable;
RMAN>change backupset 10 keep forerer logs;
RMAN>change backupset 200 keep until time ‘sysdate+60’ logs;
RMAN>change backupset 20 nokeep;
6.追加備份記錄到RMAN資料庫
RMAN>catalog datafilecopy ‘/oracle/rmanback/chenxy01.bak’;
RMAN>catalog backuppiece ‘/oracle/rmanback/chenxy_10.dbf’;
RMAN>catalog start with ‘/oracle/rmanback’;
#注銷
RMAN>change datafilecopy ‘/oracle/rmanback/chenxy01.bak’ uncatalog;
RMAN>change controlfilecopy ‘‘/oracle/rmanback/db2.ctl’ uncatalog;
RMAN>change backuppiece ‘/oracle/rmanback/chenxy02.bak’ uncatalog;