zoukankan      html  css  js  c++  java
  • RMAN '异机异目录恢复'

    RMAN '异机异目录恢复'  

    2011-07-04 12:31:55|  分类: oracle |  标签: |字号 订阅

     
     
    前提条件:RMAN生成的全备,异机异目录恢复
    (参考:http://zhouwf0726.itpub.net/post/9689/244764)

    1)在原始数据库上:
         RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
         RMAN>backup database format='/mezi/oracle/app_11R1/rman_backup/%d_%s.dbf'
         //将会生成两个文件,controlfile和数据库

    2)将rman 生成的两个文件拷贝到远程服务器的目录: /db/sshan_temp/
          将原始数据库的初始化参数文件拷贝到目标服务器:$ORACLE_HOME/dbs/
          并修改相关目录:如controlfile目录和dump目录

    3)恢复controlfile 文件
          SQL>startup nomount;
          #./rman target /
          RMAN>restore controlfile from '/db/sshan_temp/ORCL_7.dbf';
         
    4)恢复数据文件
         RMAN>restore database from '/db/sshan_temp/ORCL_6.dbf';
         using channel ORA_DISK_1
         RMAN-00571: ===========================================================
         RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
         RMAN-00571: ===========================================================
         RMAN-03002: failure of restore command at 04/09/2008 14:15:17
         RMAN-06509: only SPFILE or controlfile can be restored from autobackup

         RMAN>list backup;   
         BS Key  Type LV Size       Device Type Elapsed Time Completion Time
         ------- ---- -- ---------- ----------- ------------ ---------------
         3       Full    21.00G     DISK        00:07:34     01-JUL-11     
         BP Key: 3   Status: EXPIRED  Compressed: NO  Tag: TAG20110701T045821
         Piece Name: /mezi/oracle/app_11R1/rman_backup/ORCL_6.dbf

         由于没有相关权限,所以无法创建和原始数据库一样的rman备份目录。

    **************************************************************************************************************************************************
         查看控制文件中数据文件列表:
         SQL>select name from v$datafile;
        FILE# NAME
    ---------- --------------------------------------------------
             1 /mezi/oracle/app_11R1/oradata/orcl/system01.dbf
             2 /mezi/oracle/app_11R1/oradata/orcl/sysaux01.dbf
             3 /mezi/oracle/app_11R1/oradata/orcl/undo.dbf
             4 /mezi/oracle/app_11R1/oradata/orcl/dfdata01.dbf
             5 /mezi/oracle/app_11R1/oradata/orcl/indx01.dbf
             6 /mezi/oracle/app_11R1/oradata/orcl/tools01.dbf
             7 /mezi/oracle/app_11R1/oradata/orcl/users01.dbf
             8 /mezi/oracle/app_11R1/oradata/orcl/undo1.dbf

     *************************************************************************************************************************************************

    5)
    使用 dbms_backup_restore 来恢复
    **************************************************************************************************************************************************
    DECLARE
    devtype varchar2(256);
    done boolean;
    BEGIN
    devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
    sys.dbms_backup_restore.restoreSetDatafile;
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>1,toname=>'/db/mezi/oracle/app/oradata/orcl/system01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>2,toname=>'/db/mezi/oracle/app/oradata/orcl/sysaux01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>3,toname=>'/db/mezi/oracle/app/oradata/orcl/undo.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>4,toname=>'/db/mezi/oracle/app/oradata/orcl/dfdata01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>5,toname=>'/db/mezi/oracle/app/oradata/orcl/indx01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>6,toname=>'/db/mezi/oracle/app/oradata/orcl/tools01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>7,toname=>'/db/mezi/oracle/app/oradata/orcl/users01.dbf');
    sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>8,toname=>'/db/mezi/oracle/app/oradata/orcl/undo1.dbfF');
    sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/db/sshan_temp/ORCL_6.dbf', params=>null);
    sys.dbms_backup_restore.deviceDeallocate;
    END;
    /
    **************************************************************************************************************************************************

     余下的收尾工作:
      SQL>recover database using backup controlfile until cacnel;
       根据提示,数据原始数据库的一个archivelog文件名称
      SQL>alter database rename datafile '/xxx/xxx/xxx.dbf' to '/xxx/xxx/xxx/xx/xx.dbf';  //修改控制文件中的数据文件路径
      SQL>alter database rename datafile '/xx/xx/xx/xxlog.dbf' to '/xx/xxx/xx/xx/xx.dbf'; //修改控制文件中的redo Log 路径
    /*
    这里或者在备库的pfile里做修改:
    修改init*.ora文件
    //改控制文件位置:
    *.control_files='/disk1/oradata/crmdb/controlstby01.ctl','/disk1/oradata/crmdb/controlstby02.ctl'
    //归档日志位置
    *.log_archive_dest='/disk1/oradata/crmdb/arch'
    //修改DBF文件,LOG文件的地址(如果路径一样,就不要改了)
    *.db_file_name_convert=('/data/oradata/crmdb/','/disk1/oradata/crmdb/')
    *.log_file_name_convert=('/data/oradata/crmdb/','/disk1/oradata/crmdb/')
    */

      SQL>alter database open resetlogs;
  • 相关阅读:
    方维o2o系统域名绑定破解详解
    smarty 学习笔记一
    手机禁止缩放网页 手机CSS导入
    Android 学习笔记(一)
    自动填充短信验证码(使用ContentObserver)
    分享100个开源android项目源码
    php如何实现验证码
    Zend Studio 13 v13.0.0汉化中文版
    java中的静态方法
    继承代码
  • 原文地址:https://www.cnblogs.com/weaver1/p/2487587.html
Copyright © 2011-2022 走看看