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;

  • 相关阅读:
    1451. Rearrange Words in a Sentence
    1450. Number of Students Doing Homework at a Given Time
    1452. People Whose List of Favorite Companies Is Not a Subset of Another List
    1447. Simplified Fractions
    1446. Consecutive Characters
    1448. Count Good Nodes in Binary Tree
    709. To Lower Case
    211. Add and Search Word
    918. Maximum Sum Circular Subarray
    lua 时间戳和时间互转
  • 原文地址:https://www.cnblogs.com/zfox2017/p/6731046.html
Copyright © 2011-2022 走看看