zoukankan      html  css  js  c++  java
  • Oracle 11gR2使用RMAN duplicate复制数据库

    11g的RMAN duplicate 个人感觉比10g的先进了很多,10g需在rman备份的基础上进行复制,使用RMAN duplicate创建一个数据完全相同但DBID不同的数据库。而11g的RMAN duplicate 可通过Active database duplicate和Backup-based duplicate两种方法实现。
    Active database duplicate方式不需要先把目标数据库进行rman备份,只要目标数据库处于归档模式下即可直接通过网络对数据库进行copy,且copy完成后自动open数据库。这对于大数据特别是T级别的数据库来说优点非常明显,复制前不需要进行备份,减少了备份和传送备份的时间,同时节省备份空间。
    案例一:RMAN duplicate的Active database duplicate方式
    1、环境(同机测试,异机区别不大)
    target DB(ip:192.168.1.1;hostname:oradba;oraclesid:prod)
    auxiliary DB(ip:192.168.1.1;hostname:oradba;oraclesid:stby)
    2、创建auxiliary DB参数文件,启动实例到nomount状态
    可根据target DB参数文件进行修改使用,内容略,但需注意如下:
    db_file_name_convert=('/u01/app/oracle/oradata/prod/','/u01/app/oracle/oradata/stby/')
    log_file_name_convert=('/u01/app/oracle/oradata/prod/','/u01/app/oracle/oradata/stby/')
    为同一机器不同实例,参数文件中必须添加如上内容,否则复制时会报无法创建数据文件,如果异机复制 ,且两实例数据目录完全一致,这两参数可省略,另因同机,参数文件中的db_name不能一样,如果是异机复制,db_name完全可以一样。
    3、创建参数文件中相关目录并修改权限
    mkdir /u01/app/oracle/oradata/stby/ -pv
    mkdir /u01/app/oracle/fast_recovery_area/stby/ -pv
    chown oracle:oinstall /u01 -R
    4、启动实例到nomount状态
    SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initstby.ora';
    5、创建密码文件,必须保持target DB和auxiliary DB的密码一致
    此处选择复制target DB的密码文件:cp orapwprod orapwstby
    6、配置网络
    # cat ../network/admin/listener.ora
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
    (SID_NAME =prod)
    )
    (SID_DESC =
    (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
    (SID_NAME =stby)
    )
    )
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    )

    ADR_BASE_LISTENER = /u01/app/oracle
    # cat ../network/admin/tnsnames.ora
    prod =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = prod)
    ))

    stby =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = stby)
    ))
    7、开始复制,复制时需注意是否使用nofilenamecheck参数,如果两个实例相关数据目录结构完全相同,则需要指定,否则会报错。这里不需使用。
    $ export ORACLE_SID=stby --------异机操作可省略此步操作
    $rman target sys/oracle@prod auxiliary sys/oracle@stby
    /*RMAN> duplicate target database to stby from active database nofilenamecheck;*/
    RMAN> duplicate target database to stby from active database;
    8、检查结果
    select name from v$datafile;
    select status from v$instance;
    show parameter name
    show parameter pfile
    数据库已经open,各项参数正常,且已创建spfile并使用!整个复制过程完成!

    案例二:RMAN duplicate的Backup-based duplicate方式
    需求:将使用文件系统存储的数据库修改为ASM方式的存储。
    需求实现:可通过RMAN的backup as copy tablespace xx format '+DATA'等多种方式实现,这里使用duplicate方式。
    本次为实验测试,打算在单机实现,即先创建文件系统的prod数据库,rman备份后,删除文件系统方式的prod数据库,再创建ASM存储的prod数据库,再通过duplicate复制数据库。注意,不能在生产库上实施。大致步骤如下:
    1)DBCA创建文件系统存储的数据库prod
    2)rman方式备份文件系统存储的数据库prod
    3)备份pfile,导出控制文件到trace文件
    4)删除文件系统存储的数据库prod
    5)创建ASM实例,创建ASM磁盘组
    6)创建ASM存储方式的prod数据的所需目录
    7)创建ASM存储方式的prod数据库的监听
    8)使用文件系统prod数据库的全备duplicate复制数据库

    操作步骤如下:
    1、查看文件系统方式的prod数据库
    select name from v$datafile;
    select name from v$tempfile;
    select member from v$logfile;
    2、文件系统方式prod数据库创建pfile
    create pfile='/home/oracle/pfile' from spfile;
    修改pfile将控制文件路径修改为ASM磁盘组+DATA和+FRA上,修改快速恢复区路径为+FRA
    ##*.control_files='/u01/oradata/PROD/control01.ctl','/u01/fast_recovery_area/PROD/control02.ctl'
    *.control_files='+DATA/PROD/controlfile/control01.ctl','+FRA/PROD/controlfile/control02.ctl'
    ##*.db_recovery_file_dest='/u01/fast_recovery_area'
    *.db_recovery_file_dest='+FRA'
    3、文件系统方式prod数据库执行一次全备,保存路径为/home/oracle
    run{
    allocate channel c1 device type disk;
    backup tag 'prod_db' as compressed backupset format '/home/oracle/full_%U.bak' database
    include current controlfile;
    backup tag 'prod_arch' archivelog all format '/home/oracle/arch_%U.bak';
    release channel c1;
    }
    4、DBCA方式删除数据库,即文件系统方式的prod数据库不存在了,可以创建ASM方式的prod数据库了。
    5、创建ASM方式的prod数据库的所需目录
    mkdir -p $ORACLE_BASE/admin/PROD/adump
    6、创建ASM方式的prod数据库(即auxiliary数据库)密码文件
    $ orapwd file=$ORACLE_HOME/dbs/orapwPROD password=oracle entries=5
    7、在grid用户下为auxiliary数据库添加静态监听连接
    $ vi /grid/app/11.2.0/grid/network/admin/listener.ora
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = single)(PORT = 1521))
    )
    )
    SID_LIST_LISTENER=
    (SID_LIST=
    (SID_DESC=
    (SID_NAME=PROD)
    (ORACLE_HOME=/u01/oracle)
    (GLOBAL_DBNAME=PROD)))
    ADR_BASE_LISTENER = /grid

    ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent

    8、auxiliary数据库使用修改过的pfile启动数据库到nomount状态
    startup nomount pfile=/home/oracle/pfile;
    9、使用rman登录auxiliary数据库
    [oracle@single ~]$ rman auxiliary /
    10、使用RMAN执行duplicate复制灾备数据库
    在这一步需要从删除前的文件系统方式的prod数据库通过alter database backup controlfile to trace导出脚本,在使用select value from v$diag_info找到该trace的路径。将生成控制文件脚本中的数据库文件路径进行参考来写入set newname for datafile n,因为之前的数据库为文件系统,现在打算创建ASM方式的数据库。所以需要set newname来修改路径
    run{
    allocate auxiliary channel dup1 type disk;
    set newname for datafile 1 to '+DATA';
    set newname for datafile 2 to '+DATA';
    set newname for datafile 3 to '+DATA';
    set newname for datafile 4 to '+DATA';
    set newname for tempfile 1 to '+DATA';
    duplicate target database to PROD backup location '/home/oracle'
    logfile
    group 1('+DATA') size 50m reuse,
    group 2('+DATA') size 50m reuse,
    group 3('+DATA') size 50m reuse;
    }
    11、验证auxiliary数据库的复制结果,对比之前的文件系统目标库
    select name from v$datafile;
    select name from v$tempfile;
    select member from v$logfile;
    show parameter control_file;
    select name,open_mode from v$database;
    12、auxiliary数据库从内存中创建参数文件到ASM磁盘组+DATA/PROD
    create spfile='+DATA/PROD/spfilePROD.ora' from memory;
    13、创建auxiliary的pfile文件,指定spfile所在路径.红色字体内容是需要添加的。
    $ vi $ORACLE_HOME/dbs/initPROD.ora
    SPFILE='+DATA/PROD/spfilePROD.ora’
    14、使用新创建的initPROD.ora来启动auxiliary数据库
    shutdown immediate;
    startup;
    show parameter spfile;

  • 相关阅读:
    pku2704 Pascal's Travels
    MFC中获取各种类指针的方法 (转)
    VC中MessageBox的常见用法
    直接通过ADO操作Access数据库(转)
    (转)基于MapWinGis开发探索(三)改善缩放、渲染、显示文本
    VC画线几个常见方法
    虚拟现实技术发展的新趋势(转)
    (转)基于MapWinGis开发探索(二)——注册、加载、基本操作
    基于MFC的对话框程序加启动进度条
    IT应用新动向 未来需要云计算
  • 原文地址:https://www.cnblogs.com/zfox2017/p/6731046.html
Copyright © 2011-2022 走看看