Oracle之RMAN备份及还原(二)

2015-07-16 12:09:34 · 作者: · 浏览: 3
看:


backupset 查看:list backup summary(list backupset summary)


查看详情:list backupset BS


copy查看:list copy


按内容查看:


整个数据库:list backup of database;


tablespace:list backup of tablespace users;


数据文件:list backup of datafile n;


控制文件:list backup of controlfile;


归档日志:list archivelog all;


按规则查看:


查看根据保存规则可删除文件:report obsolete;


查看根据保存规则需要备份内容:report


RMAN和OS结合检查:corsscheck 内容;


7. 备份方式


full:全备;


Incremental:增量备份


可以增量备份的类型:数据库,数据文件,表空间


a. 首先需要做level 0备份作为基础。例如:backup incremental level 0 备份内容;(备份内容:所有使用过的data block,和image copy不同)


b. 增量类型:


累计增量:backup cumulative level 1 备份内容;


差异增量:backup incremental level 1 备份内容;


区别:累计增量始终是基于level 0的备份;


第一次差异增量是基于level 0的备份;从第二开始就是基于前一次增量备份


c. Image备份增量方式:


第一次:以Image全备为基础;


第二次:基于全备,做增量备份;完成后合成成一个Image全备


第三次:基于第二次的Image全备,做增量备份;完成后合成成一个Image全备


实现:


例如:针对tablespace example


RUN {
RECOVER COPY OF tablespace example WITH TAG 'incr_update';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
tablespace example;
}


d. 开启参数"block change tracking",可以提高速度


查看状态:SELECT status FROM v$block_change_tracking;


默认值:DISABLED


开启:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;(默认存放路径OMF中的DB_CREATE_FILE_DEST)


设置文件路径:


ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/MYSID/rman_change_track.f' REUSE;


关闭:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;


备份并检查:bakcup check logical 备份内容;


不备份只是检查文件:backup validate 备份内容;


如果检查有报错,查看:v$backup_corruption;v$copy_corruption


8. 备份内容:


整个数据库:RMAN>backup database;


经典整库备份:backup as compressed backupset database include current controlfile plus archivelog delete input;


tablespace:RMAN>backup tablespace 名字;


数据文件:RMAN>backup datafile n; (n:具体的数据文件编号select file_name,file_id,tablespace_name from dba_data_files;)


控制文件:RMAN>backup current controlfile;


或者RMAN>backup database include current controlfile;


日志文件:RMAN>backup archivelog all;


或者RMAN>backup database plus archivelog;


参数文件:RMAN>backup spfile;


9. 还原


a. 完全恢复


方法一:从最近的备份集恢复整个数据库,数据库会自动运行redo和archive日志(完全恢复):


SQL>shutdown immediate


SQL>startup mount


RMAN>restore database;


RMAN>recover database;


RMAN>sql 'alter database open';


方法二:从tag恢复整个数据库,数据库也会运行redo 和archive 日志(完全恢复),结果与上面的脚本一样:


1. 查看标签:


RMAN> list backupset summary;
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
25 B A A DISK 25-JUL-11 1 1 NO TAG20110725T104634
28 B 0 A DISK 25-JUL-11 1 1 NO TAG20110725T104645
29 B A A DISK 25-JUL-11 1 1 NO TAG20110725T104711
30 B F A DISK 25-JUL-11 1 1 NO TAG20110725T104713
31 B A A DISK 25-JUL-11 1 1 NO TAG20110725T105333
32 B A A DISK 25-JUL-11 1 1 NO TAG20110725T105350
33 B 1 A DISK 25-JUL-11 1 1 NO TAG20110725T105353
34 B A A DISK 25-JUL-11 1 1 NO TAG20110725T105408
35 B F A DISK 25-JUL-11 1 1 NO TAG20110725T105411
36 B A A DISK 25-JUL-11 1 1 NO TAG20110725T111403
37 B 1 A DISK 25-JUL-11 1 1 NO TAG20110725T111405
38 B A A DISK 25-JUL-11 1 1 NO TAG20110725T111421
39 B F A DISK 25-JUL-11 1 1 NO TAG20110725T111423


2. 还原数据库:


SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;


RMAN> recover database from tag TAG20110725T104645;


RMAN> alter database open;


b. ??完全恢复:


SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;


RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')";


RMAN>alter database open resetlogs;
注意:使用后所有的备份集都无效了,确保安全需要重新对数据库进行全备(ORACLE10G