RMAN 跨平台备份、恢复

      自Oracle 12c 开始rman 支持跨平台备份恢复数据库、表空间,其本质还是传输数据库、传输表空间技术(也必须满足传输数据库、传输表空间的要求),只不过rman 进行了封装,使用起来更方便、简洁了,准对12c以及以上数据库跨平台之间的数据迁移,之前复杂的xtts数据迁移技术成为了历史。

     这里演示LInux 到 Windows 平台之间的表空间 、数据库备份恢复:

   1、跨平台备份、恢复表空间(源平台、目标平台数据库必须有相同的数据库字符集、国家字符集,12.2开始支持增量备份以减少迁移期间的服务中断时间)

        a、将要迁移的表空间TPCCTAB 设置为只读

          alter tablespace TPCCTAB read only;

        b、在源平台linux服务器使用rman 备份TPCCTAB 表空间,产生表空间备份文件以及包含表空间元数据的dump 文件:

           BACKUP
           TO PLATFORM 'Microsoft Windows x86 64-bit'
           FORMAT '/backup/TPCCTAB.bak'
           DATAPUMP FORMAT '/backup/trans_TPCCTAB_dmp.dmp'
           TABLESPACE TPCCTAB;

          image

         image

        image

        c、将TPCCTAB表空间备份文件、元数据文件传输至目标平台windows 服务器对应目录:

             image

         d、在目标平台windows 服务器使用RMAN 还原TPCCTAB表空间,导入表空间元数据,表空间涉及的schema用户需提前建立:

           RESTORE

           FOREIGN TABLESPACE TPCCTAB TO NEW
            FROM BACKUPSET 'D:\backup\TPCCTAB.bak'
            DUMP FILE FROM BACKUPSET 'D:\backup\trans_TPCCTAB_dmp.dmp';

           image

         image

         e、将表空间TPCCTAB 恢复为读写模式:

          alter tablespace TPCCTAB read write;

     

     2、跨平台备份、恢复数据库(源平台、目标平台必须是相同的字节序,12.2开始支持增量备份以减少迁移期间的服务中断时间)

        a、将要迁移的数据库设置为只读:
            SHUTDOWN IMMEDIATE;
            STARTUP MOUNT;
            ALTER DATABASE OPEN READ ONLY;  

   image

       b、在源平台linux服务器使用rman 备份SITDB 数据库,产生数据库备份文件:

          BACKUP
           FOR TRANSPORT
           FORMAT '/backup/sitdb_full.bak'
           DATABASE;

         image

         c、将SITDB数据库备份文件传输至目标平台windows 服务器对应目录:

         image

       d、在目标平台windows 服务器上建立初始化参数,创建数据库实例,将实例启动至nomount 状态:

         db_name=sitdb
          sga_target=4G
          pga_aggregate_target=500M
          processes = 150
          audit_file_dest='D:\oracle\app\oracle\admin\sitdb\adump'
          audit_trail ='db'
          db_block_size=8192
          db_create_file_dest='+DATA'
          db_recovery_file_dest='+DATA'
          db_recovery_file_dest_size=40G
          open_cursors=300
          remote_login_passwordfile='EXCLUSIVE'
          undo_tablespace='UNDOTBS1'
          control_files = ('+DATA/sitdb/controlfile/control01.ctl','+DATA/sitdb/controlfile/control02.ctl')

         image

         oradim -NEW -SID sitdb -PFILE 'D:\oracle\app\oracle\product\19.3.0\db_1\database\initsitdb.ora' -SRVC OracleServicesitdb -STARTMODE manual

      image    

      image 

e、在目标平台windows服务器使用RMAN还原数据库:

          RESTORE
           FROM PLATFORM 'Linux x86 64-bit'
           FOREIGN DATABASE TO NEW
           FROM BACKUPSET 'D:\backup\sitdb_full.bak';

        image

   f、在源平台linux 服务器数据库生成control file 创建脚本,在目标平台windows 服务器重建数据库control file

       alter database backup controlfile to trace resetlogs;

       image

      control file 重建脚本如下:(数据文件路径名称由于采用了OMF特性,需提前根据目标平台windows 服务器数据库中实际生成的数据文件名进行调整)

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SITDB" RESETLOGS  ARCHIVELOG
     MAXLOGFILES 16
     MAXLOGMEMBERS 3
     MAXDATAFILES 100
     MAXINSTANCES 8
     MAXLOGHISTORY 292
LOGFILE
   GROUP 1 (
     '+DATA/SITDB/ONLINELOG/redo01a.log',
     '+DATA/SITDB/ONLINELOG/redo01b.log'
   ) SIZE 200M BLOCKSIZE 512,
   GROUP 2 (
     '+DATA/SITDB/ONLINELOG/redo02a.log',
     '+DATA/SITDB/ONLINELOG/redo02b.log’
   ) SIZE 200M BLOCKSIZE 512,
   GROUP 3 (
     '+DATA/SITDB/ONLINELOG/redo03a.log',
     '+DATA/SITDB/ONLINELOG/redo03b.log'
   ) SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
   '+DATA/SITDB/DATAFILE/system.265.1090940195',
   '+DATA/SITDB/DATAFILE/sysaux.256.1090940239',
   '+DATA/SITDB/DATAFILE/undotbs1.263.1090940265',
   '+DATA/SITDB/DATAFILE/tpcctab.266.1091357069',
   '+DATA/SITDB/DATAFILE/users.259.1090940267'
CHARACTER SET AL32UTF8
;

保存控制文件创建脚本,上传至windows 服务器执行:

imageimage

打开数据库,添加TEMPFILE 文件:

ALTER DATABASE OPEN MOUNT;

ALTER DATABASE OPEN RESETLOGS;

ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/SITDB/TEMPFILE/temp.261.1090940323'
      SIZE 51380224  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

posted @ 2021-12-25 17:01  踏雪无痕2017  阅读(973)  评论(0编辑  收藏  举报