zoukankan      html  css  js  c++  java
  • oracle数据库基于RMAN的异机迁移

    说明:此迁移方案适用于oracle rac 的迁移

    一、数据库迁移前准备

    1. 查看数据库版本
      su - oracle
      [oracle@rac1 ~] $sqlplus / as sysdba
      SQL > select * from v$version
      
    2. 查看OS信息
      SQL > select  dbms_utility.prot_string from dual;
      
    3. 查看数据库用户信息
      SQL > select * from dba_users;
      
    4. 查看数据库实例信息
      SQL > select instance_name ,status from v$instance;
      
    5. 查询数据库DBID信息
      SQL > select dbid from v$instance;
      
    6. 查询归档路径
      SQL > archive log list; 
      
    7. 查询数据库日志文件路径
      SQL > select name from v$controlfile;
      
    8. 查询参数文件路径
      SQL > show parameter pfile;
      

    二、增量备份

    做备份前确认数据库处于归档模式,检查数据库是否处于归档模式,当返回的信息中的Automatic archival为enabled时,说明处于归档模式,如果是disabled则需要开启归档模式

    SQL > archive log list;
    
    1.  0级备份和恢复,以下是0级备份的脚本,视情况而确定是否要备份日志文件
      【oracle@rac1 ~】$ mkdir -p /backup
      【oracle@rac1 ~】$ export ORACLE_SID=prod1
      【oracle@rac1 ~】$ rman target /
      RMAN > run {
      allocate channel c1 type disk;
      backup incremental level 0 database format '/backup/db0%u_%s_%p';
      backup current controlfile format '/backup/ctl0_%d_%U.bak';
      backup format '/backup/arch0%u_%s_%p' archivelog all delete input;
      release channel c1;
      }
      

      备份后检查备份文件

      RMAN > list backup;
      
    2. 0级备份的恢复,目的端创建了一个和源端实例名相同的数据库
      1. 将前期查询到的源数据库的参数文件pfile复制到目的端相同的路径下,将目的端原有的参数文件删除
      2. 关闭目的端数据库实例
        su - oracle
        [oracle@rac01 ~] $sqlplus / as sysdba
        SQL > shutdown immediate;
        
      3. 设置目的端DBID,这里的DBID是设置成和源端一直,dbid号根据具体查询为准
        RMAN > set dbid 4222488;
        
      4. 数据库启动到nomount状态,pfile是从源端复制到目的端的参数文件路径
        【oracle@rac01 ~】$ export ORACLE_SID=prod1
        【oracle@rac01 ~】$ sqlplus / as sysdba
        SQL > startup nomount pfile='/u01/app/oracle/admin/prod/pfile/init.ora.51120129';
        
      5. 还原控制文件
        RMAN > restore controlfile from  '/backup/ctl0_%d_%U.bak';
        

        还原控制文件后会生成一个控制文件,也会体现出一个控制文件的路径,在参数文件中找到control_file那行,将路径修改为生成的控制文件路径

      6. 挂载数据库
        RMAN > alter database mount;
        
      7. 恢复日志文件
        RMAN > restore archivelog all;
        
      8. 还原数据文件,recover数据库有报错为scn值不对,可以调整scn值,RMAN> recover database until scn 5584289;scn值是报错时提示的scn值。
        RMAN > restore database;
        RMAN > recover database;
      9. 创建spfile,路径和源端spfile一致
        RMAN > create spfile '+MGMT/PROD/PARAMETERFILE/spfile.ora' from pfile='/u01/app/oracle/admin/prod/pfile/init.ora.51120129';
        
      10. 开启数据库
        RMAN > alter database open resetlogs;
        
      11. 恢复数据完成后启动数据库,启动步骤如下
        1. 在数据库用户sysdba下操作
          【oracle@rac01 ~】$ sqlplus / as sysdba
          SQL > shutdown immediate
          SQL > startup mount;
          SQL > alter database open;
          SQL > select status from v$instance;
          
        2. 重新关闭数据库,开启数据库查看书否正常
          SQL > shutdown immediate;
          SQL > startup; 
    3. rac集群下其他节点数据恢复步骤
      1. 关闭数据库
        【oracle@rac02 ~】$ rman target /
        RMAN > shutdown immediate
        
      2. 设置环境变量
        【oracle@rac02 ~】$ export ORACLE_SID=prod2
        
      3. 将目的端rac01的参数文件复制到rac02节点上,路径保持一致
      4. 启动数据库
        RMAN > startup nomount pfile='/u01/app/oracle/admin/prod/pfile/init.ora.51120129';
        RMAN > startup nomount;
        RMAN > alter database open;
        RMAN > create spfile '+MGMT/PROD/PARAMETERFILE/spfile.ora' from pfile='/u01/app/oracle/admin/prod/pfile/init.ora.51120129';
        RMAN > shutdown immediate
        RMAN > startup
    4. 为了检测增量的备份和还原,给源数据库新增一些数据
    5. 做1级备份,和0级备份一样,写一个备份脚本
      RMAN > run {
      allocate channel c1 type disk;
      backup incremental level 1 database format '/backup/db1%u_%s_%p';
      backup current controlfile format '/backup/ctl1_%d_%U.bak';
      backup format '/backup/arch1%u_%s_%p' archivelog all delete input;
      release channel c1;
      }
      

      做完1级备份后检查备份文件

      RMAN > list backup;
      

       1级备份的还原和0级备份相比较,不用再创建spflie,其他的步骤一致,只是还原的控制文件和日志文件要和备份时生成的文件名要一致

    三、迁移完成后的检测

    1. 数据检测:在目的端进入迁移开始前源端创建的用户下检查数据的完整性
    2. 目的端实例监听检测:【oracle@rac01 ~】$ lsnrctl  status检测监听是否正常,如果监听不到实例状态,可以线关闭监听服务然后重新启动。
  • 相关阅读:
    hdu 1875 畅通project再续(kruskal算法计算最小生成树)
    Http post提交和get提交
    我的软考之路(五)——数据结构与算法(3)之图
    WPF 布局控件 之 DockPanel
    oracle存储结构
    马化腾最想做的事情是人工智能
    Android_Zip解压缩工具
    Unity的 Stats 窗体, Batched、SetPass、Draw Call 等
    尝试 “实验楼”在线教育平台
    POJ 3181 Dollar Dayz 01全然背包问题
  • 原文地址:https://www.cnblogs.com/shiguoqiang/p/11302178.html
Copyright © 2011-2022 走看看