ITPub博客

首页 > 数据库 > Oracle > rman技术速查手册

rman技术速查手册

原创 Oracle 作者:yaanzy 时间:2005-04-05 14:43:14 0 删除 编辑
1、配置catalog恢复目录
   create tablespace ts_rman datafile='d:oratestrman.dbf' size=100M;
   create user rman identified by rman default tablespace ts_rman;
   grant connect ,resource , RECOVERY_CATALOG_OWNER to rman;[@more@]

  连接到目标数据库和CATALOG数据库
   rman target / catalog rman/rman@catalog_tnsname
  
   创建CATALOG用户的表
   rman>create catalog
  
   登记目标数据库:
   rman>register database
  
   解除登记数据库(在恢复目录数据库上执行)
   SQL> select db_key,dbid from rc_database  --查出dbid
   SQL> execute dbms_rcvcat.unregisterdatabase(db_key, db_id);
  
   删除CATALOG用户的表
   rman>drop catalog;

2、rman备份方案

   采用多级备份是为了减少了恢复所需要的时间和减少每天备份所需要的时间,而又保证系统有很好的恢复性。
   以下是一种建议的方案:
  
   每半年做一个数据库的全备份(包含只读表空间)
 每个月做一次零级备份(不包含只读表空间)
 每个星期做一次一级备份
 每天做一个二级备份
 任何表空间改成只读状态后做一个该表空间的备份。
 当需要时(如四个小时归档文件系统就要接近满了)备份归档文件
 
数据库全备份脚本:
run {
allocate channel c1 type disk;
backup full  tag 'dbfull' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database ;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

零级备份脚本(只读表空间除外)
run {
allocate channel c1 type disk;
backup incremental level 0 filesperset 5 tag 'dbL0' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

一级备份脚本
run {
allocate channel c1 type disk;
backup incremental level 1 filesperset 5 tag 'dbL1' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

二级备份脚本
run {
allocate channel c1 type disk;
backup incremental level 2 filesperset 5 tag 'dbL2' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

表空间备份脚本(以users表空间为例)
run {
allocate channel c1 type disk;
backup  tag 'tsusers' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' tablespace users;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

归档文件备份脚本
run {
allocate channel c1 type disk;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}


   则每天所需要备份的数据量只有一天的改变量。而做恢复时最多只要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件。
  
3、RMAN恢复案例:

   【1】 丢失全部数据文件,控制文件、日志文件必须存在
  
   模拟介质损坏:删除所有dbf文件
   启动数据库:startup mount
   恢复语句:
   run{
 allocate channel c1 type disk;
 restore database;
 recover database;
 sql 'alter database open';
 release channel c1;
 }
   注意:Oracle永远不会备份使用临时文件的TEMPORARY表空间,因为临时表空间包含的只是暂时
        性的数据,根本不必还原。不过在还原后数据字典中还是有临时表空间的相关信息,你只要
        简单的重建一个临时表空间,设置其为缺省临时表空间,再把以前的临时表空间删除即可。
   SQL> create temporary tablespace temp2 tempfile 'd:oracleoradataoradbtemp02.dbf' size 100M;
   SQL> alter database default temporary tablespace temp2;
   SQL> drop tablespace temp including contents and datafiles;

   【2】 丢失非系统数据文件恢复

   模拟介质损坏:删除users01.dbf文件
   启动数据库:startup mount
   恢复语句:
   run {
 allocate channel c1 type disk;
 restore tablespace users;
 recover tablespace users;
 sql 'alter database open';
 sql 'alter tablespace users online';
 release channel c1;
 }

   【3】 丢失全部数据文件、控制文件、日志文件恢复
  
   注意:在备份时配置了configure controlfile autobackup on;
  
   [oracle@Linux1 rman_backup]$ rman target /
   RMAN>  set DBID=285819149
   RMAN>  restore controlfile from autobackup;
   启动数据库:startup mount

   恢复语句:
   run{
 allocate channel c1 type disk;
 restore database;
 recover database;
 sql 'alter database open resetlogs';
 release channel c1;
 }
  

4、维护RMAN RMAN的维护主要分为几个方面
   a、  查看RMAN的信息
         检查现有备份
           RMAN>list backup
         列出过期备份
           RMAN>report obsolete
         删除过期的备份
           RMAN>allocate channel for maintenance type disk;
           RMAN>change backupset id delete;
           RMAN>release channel;
         删除所有过期的备份
           RMAN>delete obsolete;
          
   b、  同步或重置RMAN
  
        如果目标数据库物理对象发生了变化,如添加了一个数据文件,需要用如下命令同步:
        RMAN>resync catalog;
        如果目标数据库reset了数据库,需要用如下命令同步
        RMAN>reset database;
       
        当手工删除了数据库的归档文件后,要执行以下脚本同步
        RMAN>allocate channel for maintenance type disk;
        RMAN> change archivelog all crosscheck;
        RMAN>release channel;
       
        当手工删除了数据库的RMAN备份后,要执行以下脚本来同步
        RMAN>allocate channel for maintenance type disk;
    RMAN>crosscheck backup;
    RMAN>delete expired backup;
    RMAN>release channel;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3898/viewspace-795017/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    759658