• ORACLE 11g RAC-RAC DG Duplicate 搭建(生产操作文档)


     

    ORACLE 11g RAC-RAC DG Duplicate 搭建(生产操作文档)

     

    环境:
    rhel 6.7 64位
    源库:ORACLE 11204 RAC 未打PSU
    备库:ORACLE 11204 RAC PSU 20170718


    一、停止中间件并做全库备份

    1、在节点2做全备

    2、首先要规划主、备库db_unique_name

    主库: 备库:
    ============================================================
    db_name mgrdb db_name mgrdb
    db_unique_name mgrdb db_unique_name mgrdbdg
    ============================================================

    3、vi /etc/hosts 修改主、备共计4个节点
    =========================================================
    #主库

    由于是生产系统IP 省略

    #备库
    由于是生产系统IP 省略
    ============================================================


    二、源库参数设置
    1、检查源库每个节点至少3组redo
    select group#,thread#,bytes/1024/1024,members,status from v$log;

    GROUP# THREAD# BYTES/1024/1024 MEMBERS STATUS
    ---------- ---------- --------------- ---------- ----------------
    5 1 500 2 INACTIVE
    6 1 500 2 INACTIVE
    7 1 500 2 INACTIVE
    8 1 500 2 CURRENT
    9 1 500 2 INACTIVE
    10 1 500 2 INACTIVE
    11 2 500 2 CURRENT
    12 2 500 2 INACTIVE
    13 2 500 2 INACTIVE
    14 2 500 2 INACTIVE
    15 2 500 2 INACTIVE

    GROUP# THREAD# BYTES/1024/1024 MEMBERS STATUS
    ---------- ---------- --------------- ---------- ----------------
    16 2 500 2 INACTIVE

    1节点2节点
    alter database add logfile thread 1 group 5 ('+DATA1') size 500m;
    alter database add logfile thread 2 group 6 ('+DATA1') size 500m;

    2、添加Standby Redo Log

    如果主库是Rac数据库,standby redo log组数=(所有节点中日志组数最大值+1)*RAC节点数;
    #################################################################################################
    --1节点
    alter database add standby logfile thread 1 group 21('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 22('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 23('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 24('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 25('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 26('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 1 group 27('+DATA1','+DATA1') size 500m;

    --2节点
    alter database add standby logfile thread 2 group 31('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 32('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 33('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 34('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 35('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 36('+DATA1','+DATA1') size 500m;
    alter database add standby logfile thread 2 group 37('+DATA1','+DATA1') size 500m;
    ##################################################################################################

    select group#,thread#,sequence#,BYTES/1024/1024,archived,used,status from v$standby_log;

    GROUP# THREAD# SEQUENCE# BYTES/1024/1024 ARC USED STATUS
    ---------- ---------- ---------- --------------- --- ---------- ----------
    21 1 0 500 YES 0 UNASSIGNED
    22 1 0 500 YES 0 UNASSIGNED
    23 1 0 500 YES 0 UNASSIGNED
    24 1 0 500 YES 0 UNASSIGNED
    25 1 0 500 YES 0 UNASSIGNED
    26 1 0 500 YES 0 UNASSIGNED
    27 1 0 500 YES 0 UNASSIGNED
    31 2 0 500 YES 0 UNASSIGNED
    32 2 0 500 YES 0 UNASSIGNED
    33 2 0 500 YES 0 UNASSIGNED
    34 2 0 500 YES 0 UNASSIGNED

    GROUP# THREAD# SEQUENCE# BYTES/1024/1024 ARC USED STATUS
    ---------- ---------- ---------- --------------- --- ---------- ----------
    35 2 0 500 YES 0 UNASSIGNED
    36 2 0 500 YES 0 UNASSIGNED
    37 2 0 500 YES 0 UNASSIGNED



    3、判断DG软件是否安装
    select * from v$option where parameter = 'Oracle Data Guard';

    4、允许Forced Logging
    alter database force logging;
    select INST_ID,name,force_logging from gv$database;

    --备份原始参数文件
    create pfile='/home/oracle/pfile0908.bak' from spfile;
    !ls -ltr /home/oracle

    5、设置主库初始化参数
    ##################################################################################################
    select name,db_unique_name from v$database;
    --alter system set db_unique_name=mgrdb scope=spfile sid='*';

    alter system set log_archive_config='dg_config=(mgrdb,mgrdbdg)' scope=spfile sid='*';

    alter system set log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdb' scope=spfile sid='*';

    alter system set log_archive_dest_2='SERVICE=standby OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdbdg' scope=spfile sid='*';

    alter system set log_archive_format = '%t_%s_%r.arc' scope=spfile sid='*';

    alter system set log_archive_dest_state_1=enable scope=spfile sid='*';
    alter system set log_archive_dest_state_2=enable scope=spfile sid='*';

    alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile sid='*';

    alter system set log_archive_max_processes = 10 scope=spfile sid='*';

    --Primary Database:Standby Role initialization parameters FAL参数定义的数据库名同样取自本地tnsnames.ora里配置的Oracle Net Service Name.
    alter system set fal_server=standby scope=spfile sid='*';

    alter system set standby_file_management=auto scope=spfile sid='*';

    alter system set db_file_name_convert='+DATA1','+DATA1' scope=spfile sid='*'; --备端的磁盘组写前面
    alter system set log_file_name_convert='+DATA1','+DATA1' scope=spfile sid='*'; --备端的磁盘组写前面

    ##################################################################################################

    #为使修改生效,重启Primary Database:
    alter system archive log current;
    alter system archive log current;
    alter system checkpoint;
    alter system checkpoint;

    ps -ef|grep LOCAL=NO

    set pages 999
    set lines 200
    col machine for a30
    select MACHINE,s.USERNAME, SID,s.SERIAL#,p.spid from v$session s,v$process p
    where s.paddr = p.addr and s.username is not null
    order by spid;


    ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

    #分别关闭2节点
    shut immediate;


    #srvctl stop database -d mgrdb
    #srvctl start database -d mgrdb


    #重启完后,可通过下面语句查看修改地方:
    set lines 500 pages 0
    col value for a90
    col name for a50
    select name,value
    from v$parameter
    where name in('db_name','db_unique_name',
    'log_archive_config',
    'log_archive_dest_1','log_archive_dest_2',
    'log_archive_dest_1',
    'log_archive_dest_2',
    'remote_login_passwordfile',
    'log_archive_format',
    'log_archive_max_processes',
    'fal_server',
    'db_file_name_convert',
    'log_file_name_convert',
    'standby_file_management')
    /

    6、将数据库备份、备份控制文件、备份参数文件
    su - oracle
    mkdir backup
    rman target /

    run
    {allocate channel c1 type disk;
    allocate channel c2 type disk;
    backup filesperset 3 database format '/home/oracle/backup/full_%d_%T_%s_%p';
    sql 'alter system archive log current';
    sql 'alter system archive log current';
    backup archivelog from time 'sysdate-1/24' format '/home/oracle/backup/arch_%d_%T_%s_%p';
    backup current controlfile for standby format '/home/oracle/backup/ctl_std';
    }

    7、创建备库的pfile

    su - oracle
    mkdir backup
    sqlplus / as sysdba
    CREATE PFILE='/home/oracle/backup/initstandby.ora' FROM SPFILE;

    --查看备份出来的参数文件
    cat /home/oracle/backup/initstandby.ora
    #################################################################################
    mgrdb1.__db_cache_size=14629732352
    mgrdb2.__db_cache_size=14361296896
    mgrdb1.__java_pool_size=939524096
    mgrdb2.__java_pool_size=939524096
    mgrdb1.__large_pool_size=134217728
    mgrdb2.__large_pool_size=402653184
    mgrdb1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
    mgrdb2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
    mgrdb1.__pga_aggregate_target=39996882944
    mgrdb2.__pga_aggregate_target=39460012032
    mgrdb1.__sga_target=24427626496
    mgrdb2.__sga_target=24964497408
    mgrdb1.__shared_io_pool_size=0
    mgrdb2.__shared_io_pool_size=0
    mgrdb1.__shared_pool_size=7784628224
    mgrdb2.__shared_pool_size=8321499136
    mgrdb1.__streams_pool_size=268435456
    mgrdb2.__streams_pool_size=268435456
    *.audit_file_dest='/u01/app/oracle/admin/mgrdb/adump'
    *.audit_trail='db'
    *.cluster_database=true
    *.compatible='11.2.0.4.0'
    *.control_files='+DATA1/mgrdb/controlfile/current.260.834178123','+DATA1/mgrdb/controlfile/current.3076.947956273'
    *.db_block_size=8192
    *.db_create_file_dest='+DATA1'
    *.db_domain=''
    *.db_file_name_convert='+DATA1','+DATA1'
    *.db_name='mgrdb'
    *.diagnostic_dest='/u01/app/oracle'
    *.fal_server='STANDBY'
    mgrdb1.instance_number=1
    mgrdb2.instance_number=2
    *.job_queue_processes=1000
    *.log_archive_config='dg_config=(mgrdb,mgrdbdg)'
    *.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdb'
    *.log_archive_dest_2='SERVICE=standby OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdbdg'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=10
    *.log_buffer=306790400
    *.log_file_name_convert='+DATA1','+DATA1'
    *.memory_max_target=64424509440
    *.memory_target=64424509440
    *.open_cursors=300
    *.parallel_force_local=FALSE
    *.pga_aggregate_target=25769803776
    mgrdb2.pga_aggregate_target=0
    mgrdb1.pga_aggregate_target=0
    *.processes=1000
    *.remote_listener='scanip:1521'
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sessions=1600
    *.sga_max_size=38654705664
    mgrdb2.sga_max_size=64424509440
    mgrdb1.sga_max_size=64424509440
    *.sga_target=38654705664
    mgrdb1.sga_target=0
    mgrdb2.sga_target=0
    *.shared_pool_reserved_size=288568115
    mgrdb2.shared_pool_reserved_size=524288000
    mgrdb1.shared_pool_reserved_size=524288000
    *.shared_pool_size=805306368
    mgrdb1.shared_pool_size=0
    mgrdb2.shared_pool_size=0
    *.standby_file_management='AUTO'
    *.streams_pool_size=268435456
    mgrdb2.thread=2
    mgrdb1.thread=1
    *.undo_retention=86400
    mgrdb2.undo_tablespace='UNDOTBS2'
    mgrdb1.undo_tablespace='UNDOTBS1'
    *.undo_tablespace='UNDOTBS2'

    #################################################################################


    8、修改主库tnsnames.ora 【两个节点都要修改】
    #修改1节点:
    vi $ORACLE_HOME/network/admin/tnsnames.ora

    #拷贝到2节点
    scp $ORACLE_HOME/network/admin/tnsnames.ora HOSTNAME:$ORACLE_HOME/network/admin
    ########################################################################33
    primary =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = public ip )(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdb)
    )
    )

    primary1 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdb)
    (SID = mgrdb1)
    )
    )

    primary2 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdb)
    (SID = mgrdb2)
    )
    )

    ########################################################################


    三、准备备库RAC Database
    1、复制参数文件
    从主库备份出来的参数拷贝到备库上,选择一个节点

    在主库上:
    scp /home/oracle/backup/initstandby.ora hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/initstandby.ora


    2、复制源端密码文件
    配置DG需要两边数据库密码保持一致,把主库的密码文件分别拷贝到【备库两个节点】

    在主库上:
    cd $ORACLE_HOME/dbs/
    scp orapwmgrdb1 hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/
    scp orapwmgrdb1 hostname:/app/u01/oracle/product/11.2.0/db_1/dbs/

    拷贝完后修改【备库第二节点】的密码文件名:
    在备库2节点:
    cd $ORACLE_HOME/dbs/
    mv orapwmgrdb1 orapwmgrdb2


    3、将主库备份文件拷贝到备端【因为用DUPLICATE方式,此步不做】
    #scp -r /home/oracle/backup hostname:/home/oracle

    4、按照参数文件中指定的目录去创建相关目录

    【备端1节点】:
    su - oracle
    mkdir -p /app/u01/oracle/admin/mgrdbdg/adump
    chmod 775 /app/u01/oracle/admin/mgrdbdg/adump

    【备端2节点】:
    mkdir -p /app/u01/oracle/admin/mgrdbdg/adump
    chmod 775 /app/u01/oracle/admin/mgrdbdg/adump

    5、【修改备库参数文件】
    加注释的为修改的地方,其他保留即可
    cd $ORACLE_HOME/dbs
    vi initstandby.ora
    ##################################################################################################
    *.audit_file_dest='/app/u01/oracle/admin/mgrdbdg/adump' =============
    *.audit_trail='db'
    *.cluster_database=true
    *.compatible='11.2.0.4.0'
    *.control_files='+DATA1/mgrdbdg/controlfile/control01.ctl' =============
    *.db_block_size=8192
    *.db_create_file_dest='+DATA1' =============
    *.db_domain=''
    *.db_file_name_convert='+DATA1','+DATA1' =============
    *.db_name='mgrdb'
    *.db_unique_name='mgrdbdg' =============
    *.diagnostic_dest='/oracle/app/oracle' =============
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orcldbXDB)'
    *.fal_server='primary' =============
    orcldb2.instance_number=2
    orcldb1.instance_number=1
    *.log_archive_config='dg_config=(mgrdb,mgrdbdg)'
    *.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdbdg' =============
    *.log_archive_dest_2='SERVICE=primary OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdb' =============
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=10
    *.log_file_name_convert='+DATA1','+DATA1' =============
    *.open_cursors=300
    *.pga_aggregate_target=545259520 =============
    *.processes=150
    *.remote_listener='scanip:1521' =============
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=817889280
    *.standby_file_management='AUTO'
    orcldb2.thread=2
    orcldb1.thread=1
    orcldb2.undo_tablespace='UNDOTBS2'
    orcldb1.undo_tablespace='UNDOTBS1'

    ##################################################################################################
    *.audit_file_dest='/app/u01/oracle/admin/mgrdbdg/adump'
    *.audit_trail='db'
    *.cluster_database=true
    *.compatible='11.2.0.4.0'
    *.control_files='+DATA1/mgrdbdg/controlfile/control01.ctl','+DATA1/mgrdbdg/controlfile/control02.ctl'
    *.db_block_size=8192
    *.db_create_file_dest='+DATA1'
    *.db_domain=''
    *.db_file_name_convert='+DATA1','+DATA1'
    *.db_name='mgrdb'
    *.diagnostic_dest='/app/u01/oracle'
    *.fal_server='primary'
    mgrdb1.instance_number=1
    mgrdb2.instance_number=2
    *.job_queue_processes=1000
    *.log_archive_config='dg_config=(mgrdb,mgrdbdg)'
    *.log_archive_dest_1='LOCATION=+DATA1 valid_for=(ALL_LOGFILES, ALL_ROLES) db_unique_name=mgrdbdg'
    *.log_archive_dest_2='SERVICE=primary OPTIONAL LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE, PRIMARY_ROLE) DB_UNIQUE_NAME=mgrdb'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=10
    *.log_buffer=306790400
    *.log_file_name_convert='+DATA1','+DATA1'
    *.memory_max_target=64424509440
    *.memory_target=64424509440
    *.open_cursors=300
    *.parallel_force_local=FALSE
    *.pga_aggregate_target=25769803776
    mgrdb2.pga_aggregate_target=0
    mgrdb1.pga_aggregate_target=0
    *.processes=1000
    *.remote_listener='scanip:1521'
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sessions=1600
    *.sga_max_size=38654705664
    mgrdb2.sga_max_size=64424509440
    mgrdb1.sga_max_size=64424509440
    *.sga_target=38654705664
    mgrdb1.sga_target=0
    mgrdb2.sga_target=0
    *.shared_pool_reserved_size=288568115
    mgrdb2.shared_pool_reserved_size=524288000
    mgrdb1.shared_pool_reserved_size=524288000
    *.shared_pool_size=805306368
    mgrdb1.shared_pool_size=0
    mgrdb2.shared_pool_size=0
    *.standby_file_management='AUTO'
    *.streams_pool_size=268435456
    mgrdb2.thread=2
    mgrdb1.thread=1
    *.undo_retention=86400
    mgrdb2.undo_tablespace='UNDOTBS2'
    mgrdb1.undo_tablespace='UNDOTBS1'
    *.undo_tablespace='UNDOTBS2'


    ##################################################################################################

    6、【备库1节点】创建ASM路径
    通过grid用户进入到asmcmd,在备库磁盘组下创建db_unique_name目录
    su - grid
    asmcmd
    ASMCMD> mkdir DATA1/mgrdbdg


    7、修改备库tnanames.ora 两个节点都要修改

    修改【备库1、2节点】tnanames.ora
    vi $ORACLE_HOME/network/admin/tnsnames.ora
    scp $ORACLE_HOME/network/admin/tnsnames.ora hostname:$ORACLE_HOME/network/admin

    ##################################################################################################
    standby =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdbdg)
    )
    )

    standby1 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdbdg)
    (SID = mgrdb1)
    )
    )

    standby2 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = standby)
    (SID = mgrdb2)
    )
    )


    primary =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdb)
    )
    )


    --标注的primary服务名必须添加,否则启动mrp时日志会报如下错误:
    Error 12154 received logging on to the standby
    FAL[client, MRP0]: Error 12154 connecting to orcldb fro fetching gap sequence

    FAIL_CLIENT 和 FAIL_SERVER 这两个参数值都需指定网络服务器,并非是db_unique_name
    FAL_SERVER=net_service_name
    FAL_CLIENT=net_service_name
    ##################################################################################################

    四、创建物理备库
    1、使用修改好的参数备库实例启动到nomount
    连接到oracle用户,使用上面已修改好的参数文件将备库实例启动到nomount

    仅在【备库的1节点】操作:
    echo $ORACLE_SID
    mgrdb1

    sqlplus / as sysdba
    startup nomount pfile = '$ORACLE_HOME/dbs/initstandby.ora'

    2、RMAN Duplicate复制数据库
    使用Rman Duplicate 方式,须先配置监听,添加静态服务名。
    Oracle 11gR2开始,所有高可用架构,如oracle restart,rac等,监听器的创建和管理
    都是由grid用户完成。

    在【备库1节点】:
    su - grid
    cd $ORACLE_HOME/network/admin
    cp listener.ora listener.ora.bak
    cp endpoints_listener.ora endpoints_listener.ora.bak
    vi listener.ora

    【添加】以下行:
    ===================================================
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = ANYTHING))
    (ADDRESS = (PROTOCOL = TCP)(HOST = public ip)(PORT = 1521))
    ) )

    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = mgrdbdg)
    (ORACLE_HOME = /app/u01/oracle/product/11.2.0/db_1)
    (SID_NAME = mgrdb1)
    ) )

    ===================================================

    #重启监听器并查看:
    su - grid
    grid> srvctl stop listener -n mgrdb1
    grid> srvctl start listener -n mgrdb1
    grid> lsnrctl status --正常应该显示如下信息

    Service "mgrdbdg" has 1 instance(s).
    Instance "mgrdb1", status UNKNOWN, has 1 handler(s) for this service...
    Instance "mgrdb1", status BLOCKED, has 1 handler(s) for this service...


    #在【主库1节点】 tnsnames.ora 中【添加】下面信息
    su - oracle
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    添加如下内容:
    ========================================================
    STANDBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = public ip)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdbdg)
    )
    )
    ========================================================

    启动监听,【主备库】共计4个节点都要测试
    主库1节点
    tnsping standby 3
    tnsping primary 3


    在主库1节点测试
    sqlplus 'sys/"XXXX"'@standby as sysdba

    在进制Rman Duplicate操作之前,我们还要修改oracle二进制命令的权限,参考下面:
    ----------------------------------------------------------------------------------
    During 11.2 Gird Infrastructure installation, it prompts to select ASM admin group and AS
    M dba group. Assume asmadmin is used for ASM admin group and asmdba is used for
    ASM dba group.

    Only users that are members of the asmadmin group have direct access to ASM disks an
    d maintenance. For other database users (software owners or dba group users), the acce
    ss is gained via the oracle executable ($ORACLE_HOME/bin/oracle). It should have a setg
    id bit with group set to "asmadmin".
    The 11.2 "oracle" binary is changed automatically via setasmgidwrap when the instance i
    s started by the CRS daemon (e.g. srvctl start database/instance). But for earlier release,
    the "oracle" binary group and ownership need to be set manually.
    ----------------------------------------------------------------------------------

    #在【备库1节点】操作:
    su - grid
    ls -lrt /app/u01/oracle/product/11.2.0/db_1/bin/oracle
    -rwsr-s--x 1 oracle oinstall 239626641 Dec 29 2015 /app/u01/oracle/product/11.2.0/db_1/bin/oracle

    /app/u01/11.2.0/grid/bin/setasmgidwrap -o=/app/u01/oracle/product/11.2.0/db_1/bin/oracle

    [grid@mgrdb1 ~]$ ls -l /app/u01/oracle/product/11.2.0/db_1/bin/oracle
    -rwsr-s--x 1 oracle asmadmin 239869951 Sep 8 10:20 /app/u01/oracle/product/11.2.0/db_1/bin/oracle


    如果从主库连备库
    sqlplus 'sys/"XXX"'@standby as sysdba
    报ORA-12537: TNS:connection closed
    是因为$ORACLE_HOME/bin/oracle权限有问题,使用下面命令修改:
    chmod u+s oracle
    chmod g+s oracle
    显示如下:
    [oracle@mgrdb1 bin]$ pwd
    /app/u01/oracle/product/11.2.0/db_1/bin
    [oracle@mgrdb1 bin]$ ls -l oracle
    -rwsr-x--x 1 oracle asmadmin 239869951 Sep 8 10:20 oracle

    如果不做上面的操作,在进行下面 DUPLICATE 复制操作时候会报 ASMLib 驱动错误:
    ---------------------------------------------------------------------------
    ORA-15183: ASMLIB initialization error [driver/agent not installed]
    WARNING: FAILED to load library: /opt/oracle/extapi/64/asm/orcl/1/libasm.so
    Errors in file /u01/app/oracle/diag/rdbms/standby/standby1/trace/standby1_rbal_13010.trc:
    ORA-15183: ASMLIB initialization error [driver/agent not installed]
    Mon Sep 03 09:30:10 2012
    SUCCESS: diskgroup SDATA was mounted
    Errors in file /u01/app/oracle/diag/rdbms/standby/standby1/trace/standby1_ora_13390.trc
    (incident=305):
    ORA-00600: internal error code, arguments: [kfioTranslateIO03], [], [], [], [], [], [], [],
    [], [], [], []
    Incident details in: /u01/app/oracle/diag/rdbms/standby/standby1/incident/incdir_305/standb
    y1_ora_13390_i305.trc
    Use ADRCI or Support Workbench to package the incident.
    See Note 411.1 at My Oracle Support for error and packaging details.
    Mon Sep 03 09:30:18 2012
    Dumping diagnostic data in directory=[cdmp_20120903093018], requested by (instance=1,
    osid=13390), summary=[incident=305].
    Errors in file /u01/app/oracle/diag/rdbms/standby/standby1/trace/standby1_ora_13390.trc
    (incident=306):
    ORA-00600: internal error code, arguments: [17090], [], [], [], [], [], [], [], [], [], [], []
    Incident details in: /u01/app/oracle/diag/rdbms/standby/standby1/incident/incdir_306/standb
    y1_ora_13390_i306.trc
    Use ADRCI or Support Workbench to package the incident.
    See Note 411.1 at My Oracle Support for error and packaging details.
    ERROR: unrecoverable error ORA-600 raised in ASM I/O path; terminating process 13390
    Dumping diagnostic data in directory=[cdmp_20120903093019], requested by (instance=1,
    osid=13390), summary=[incident=306].
    Mon Sep 03 09:30:20 2012
    ---------------------------------------------------------------------------


    #正式开始 RAMN DUPLICATE 复制

    在【主库1节点上】操作 【************一定要用后台脚本执行************】:
    #su - oracle
    #rman target / auxiliary sys/XXX@standby
    #RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;

    #查看非OMF类型的文件,然后加到脚本里:
    select file#,name from v$datafile;

    自动传输脚本:dup-mgrdb.sh

    注意,如果文件名不是ASM 自动命令格式,需要SET newname。


    su - root
    cd /home/oracle
    touch dup-mgrdb.sh
    chmod +x dup-mgrdb.sh
    =================================================================
    su - oracle -c "
    rman target / auxiliary 'sys/"XXXX"'@standby << EOF
    run {
    allocate channel d1 type disk;
    allocate channel d2 type disk;
    allocate channel d3 type disk;
    allocate channel d4 type disk;
    allocate channel d5 type disk;
    allocate channel d6 type disk;
    allocate channel d7 type disk;
    set newname for datafile 3 to '+DATA1';
    set newname for datafile 5 to '+DATA1';
    set newname for datafile 6 to '+DATA1';
    set newname for datafile 7 to '+DATA1';
    set newname for datafile 8 to '+DATA1';
    set newname for datafile 9 to '+DATA1';
    set newname for datafile 10 to '+DATA1';
    set newname for datafile 11 to '+DATA1';
    set newname for datafile 12 to '+DATA1';
    set newname for datafile 16 to '+DATA1';
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
    }
    EOF
    "
    =================================================================
    nohup ./dup-mgrdb.sh > dup-mgrdb.log 2>&1 &


    -----------------------------------------------------------------------------
    完整输出内容:
    Starting Duplicate Db at 2017-09-01 05:08:21
    using target database control file instead of recovery catalog
    allocated channel: ORA_AUX_DISK_1
    channel ORA_AUX_DISK_1: SID=33 instance=orcldb1 device type=DISK

    contents of Memory Script:
    {
    backup as copy reuse
    targetfile '/oracle/app/oracle/product/11.2.0/db_1/dbs/orapworcldb1' auxiliary format
    '/oracle/app/oracle/product/11.2.0/db_1/dbs/orapworcldb1' ;
    }
    executing Memory Script

    Starting backup at 2017-09-01 05:08:22
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=34 instance=orcldb1 device type=DISK
    Finished backup at 2017-09-01 05:08:23

    contents of Memory Script:
    {
    backup as copy current controlfile for standby auxiliary format '+DATA1/standby/controlfile/control01.ctl';
    }
    executing Memory Script

    Starting backup at 2017-09-01 05:08:23
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile copy
    copying standby control file
    output file name=/oracle/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcldb1.f tag=TAG20170901T050824 RECID=1 STAMP=953528905
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    Finished backup at 2017-09-01 05:08:28

    contents of Memory Script:
    {
    sql clone 'alter database mount standby database';
    }
    executing Memory Script

    sql statement: alter database mount standby database
    RMAN-05529: WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only.

    contents of Memory Script:
    {
    set newname for tempfile 1 to
    "+stdatadg";
    switch clone tempfile all;
    set newname for datafile 1 to
    "+stdatadg";
    set newname for datafile 2 to
    "+stdatadg";
    set newname for datafile 3 to
    "+stdatadg";
    set newname for datafile 4 to
    "+stdatadg";
    set newname for datafile 5 to
    "+stdatadg";
    set newname for datafile 6 to
    "+stdatadg";
    backup as copy reuse
    datafile 1 auxiliary format
    "+stdatadg" datafile
    2 auxiliary format
    "+stdatadg" datafile
    3 auxiliary format
    "+stdatadg" datafile
    4 auxiliary format
    "+stdatadg" datafile
    5 auxiliary format
    "+stdatadg" datafile
    6 auxiliary format
    "+stdatadg" ;
    sql 'alter system archive log current';
    }
    executing Memory Script

    executing command: SET NEWNAME

    renamed tempfile 1 to +stdatadg in control file

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    Starting backup at 2017-09-01 05:08:37
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00003 name=+DATADG/orcldb/datafile/undotbs1.261.946699483
    output file name=+STDATADG/standby/datafile/undotbs1.257.953529099 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00001 name=+DATADG/orcldb/datafile/system.259.946699473
    output file name=+STDATADG/standby/datafile/system.258.953529113 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00002 name=+DATADG/orcldb/datafile/sysaux.260.946699479
    output file name=+STDATADG/standby/datafile/sysaux.259.953529129 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00004 name=+DATADG/orcldb/datafile/undotbs2.263.946699493
    output file name=+STDATADG/standby/datafile/undotbs2.260.953529145 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00006 name=+DATADG/primary/datafile/test.296.953464749
    output file name=+STDATADG/standby/datafile/test.261.953529147 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00005 name=+DATADG/orcldb/datafile/users.264.946699495
    output file name=+STDATADG/standby/datafile/users.262.953529151 tag=TAG20170901T050837
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    Finished backup at 2017-09-01 05:09:30

    sql statement: alter system archive log current

    contents of Memory Script:
    {
    switch clone datafile all;
    }
    executing Memory Script

    datafile 1 switched to datafile copy
    input datafile copy RECID=1 STAMP=953529154 file name=+STDATADG/standby/datafile/system.258.953529113
    datafile 2 switched to datafile copy
    input datafile copy RECID=2 STAMP=953529154 file name=+STDATADG/standby/datafile/sysaux.259.953529129
    datafile 3 switched to datafile copy
    input datafile copy RECID=3 STAMP=953529154 file name=+STDATADG/standby/datafile/undotbs1.257.953529099
    datafile 4 switched to datafile copy
    input datafile copy RECID=4 STAMP=953529154 file name=+STDATADG/standby/datafile/undotbs2.260.953529145
    datafile 5 switched to datafile copy
    input datafile copy RECID=5 STAMP=953529154 file name=+STDATADG/standby/datafile/users.262.953529151
    datafile 6 switched to datafile copy
    input datafile copy RECID=6 STAMP=953529154 file name=+STDATADG/standby/datafile/test.261.953529147
    Finished Duplicate Db at 2017-09-01 05:09:40

    RMAN>
    -----------------------------------------------------------------------------

    下面为复制数据库过程中 备库端alert输出的完整日志:
    --------------------------------------------------------------------------
    NOTE: Loaded library: System
    Fri Sep 01 05:11:26 2017
    SUCCESS: diskgroup STDATADG was mounted
    Fri Sep 01 05:11:26 2017
    ERROR: failed to establish dependency between database STANDBY and diskgroup resource ora.STDATADG.dg
    Fri Sep 01 05:11:28 2017
    RFS connections have been disallowed
    alter database mount standby database
    This instance was first to mount
    Set as converted control file due to db_unique_name mismatch
    Changing di2dbun from PRIMARY to STANDBY
    Fri Sep 01 05:11:33 2017
    NSS2 started with pid=34, OS id=11471
    ARCH: STARTING ARCH PROCESSES
    Fri Sep 01 05:11:36 2017
    ARC0 started with pid=35, OS id=11473
    ARC0: Archival started
    ARCH: STARTING ARCH PROCESSES COMPLETE
    ARC0: STARTING ARCH PROCESSES
    Fri Sep 01 05:11:37 2017
    ARC1 started with pid=37, OS id=11475
    Fri Sep 01 05:11:37 2017
    ARC2 started with pid=38, OS id=11477
    Fri Sep 01 05:11:37 2017
    Successful mount of redo thread 1, with mount id 2389489025
    Physical Standby Database mounted.
    Lost write protection disabled
    Fri Sep 01 05:11:37 2017
    ARC3 started with pid=39, OS id=11479
    Fri Sep 01 05:11:37 2017
    ARC4 started with pid=40, OS id=11481
    Fri Sep 01 05:11:37 2017
    ARC5 started with pid=41, OS id=11483
    Create Relation IPS_PACKAGE_UNPACK_HISTORY
    Fri Sep 01 05:11:37 2017
    ARC6 started with pid=42, OS id=11486
    Fri Sep 01 05:11:37 2017
    ARC7 started with pid=43, OS id=11488
    Fri Sep 01 05:11:37 2017
    ARC8 started with pid=44, OS id=11490
    ARC1: Archival started
    ARC2: Archival started
    ARC3: Archival started
    ARC4: Archival started
    ARC5: Archival started
    ARC6: Archival started
    ARC7: Archival started
    ARC8: Archival started
    ARC1: Becoming the 'no FAL' ARCH
    ARC2: Becoming the heartbeat ARCH
    ARC2: Becoming the active heartbeat ARCH
    ARC2: Becoming the active heartbeat ARCH
    Fri Sep 01 05:11:37 2017
    ARC9 started with pid=45, OS id=11492
    Completed: alter database mount standby database
    Error 12154 received logging on to the standby
    FAL[client, ARC3]: Error 12154 connecting to PRIMARY for fetching gap sequence
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: '+STDATADG/orcldb/onlinelog/group_1.257.946699471'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_1.257.946699471
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_1.257.946699471' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: '+STDATADG/orcldb/onlinelog/group_1.257.946699471'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_1.257.946699471
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_1.257.946699471' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 2 of thread 1
    ORA-00312: online log 2 thread 1: '+STDATADG/orcldb/onlinelog/group_2.258.946699473'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_2.258.946699473
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_2.258.946699473' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 2 of thread 1
    ORA-00312: online log 2 thread 1: '+STDATADG/orcldb/onlinelog/group_2.258.946699473'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_2.258.946699473
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_2.258.946699473' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 3 of thread 2
    ORA-00312: online log 3 thread 2: '+STDATADG/orcldb/onlinelog/group_3.265.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_3.265.946701385
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_3.265.946701385' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 3 of thread 2
    ORA-00312: online log 3 thread 2: '+STDATADG/orcldb/onlinelog/group_3.265.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_3.265.946701385
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_3.265.946701385' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 4 of thread 2
    ORA-00312: online log 4 thread 2: '+STDATADG/orcldb/onlinelog/group_4.266.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_4.266.946701385
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_4.266.946701385' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 4 of thread 2
    ORA-00312: online log 4 thread 2: '+STDATADG/orcldb/onlinelog/group_4.266.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_4.266.946701385
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_4.266.946701385' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 11 of thread 1
    ORA-00312: online log 11 thread 1: '+STDATADG/orcldb/onlinelog/group_11.268.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_11.268.953459033
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_11.268.953459033' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 11 of thread 1
    ORA-00312: online log 11 thread 1: '+STDATADG/orcldb/onlinelog/group_11.268.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_11.268.953459033
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_11.268.953459033' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 12 of thread 1
    ORA-00312: online log 12 thread 1: '+STDATADG/orcldb/onlinelog/group_12.269.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_12.269.953459033
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_12.269.953459033' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 12 of thread 1
    ORA-00312: online log 12 thread 1: '+STDATADG/orcldb/onlinelog/group_12.269.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_12.269.953459033
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_12.269.953459033' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 13 of thread 1
    ORA-00312: online log 13 thread 1: '+STDATADG/orcldb/onlinelog/group_13.270.953459035'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_13.270.953459035
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_13.270.953459035' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 13 of thread 1
    ORA-00312: online log 13 thread 1: '+STDATADG/orcldb/onlinelog/group_13.270.953459035'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_13.270.953459035
    ORA-15012: ASM file '+STDATADG/orcldb/onlinelog/group_13.270.953459035' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 18 of thread 2
    ORA-00312: online log 18 thread 2: '+STDATADG/primary/onlinelog/group_18.273.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_18.273.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_18.273.953466059' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 18 of thread 2
    ORA-00312: online log 18 thread 2: '+STDATADG/primary/onlinelog/group_18.273.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_18.273.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_18.273.953466059' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 19 of thread 2
    ORA-00312: online log 19 thread 2: '+STDATADG/primary/onlinelog/group_19.272.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_19.272.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_19.272.953466059' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 19 of thread 2
    ORA-00312: online log 19 thread 2: '+STDATADG/primary/onlinelog/group_19.272.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_19.272.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_19.272.953466059' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 20 of thread 2
    ORA-00312: online log 20 thread 2: '+STDATADG/primary/onlinelog/group_20.271.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_20.271.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_20.271.953466059' does not exist
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_lgwr_6281.trc:
    ORA-00313: open failed for members of log group 20 of thread 2
    ORA-00312: online log 20 thread 2: '+STDATADG/primary/onlinelog/group_20.271.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_20.271.953466059
    ORA-15012: ASM file '+STDATADG/primary/onlinelog/group_20.271.953466059' does not exist
    ARC9: Archival started
    ARC0: STARTING ARCH PROCESSES COMPLETE
    Fri Sep 01 05:12:34 2017
    Switch of datafile 1 complete to datafile copy
    checkpoint is 1261264
    Switch of datafile 2 complete to datafile copy
    checkpoint is 1261282
    Switch of datafile 3 complete to datafile copy
    checkpoint is 1261246
    Switch of datafile 4 complete to datafile copy
    checkpoint is 1261309
    Switch of datafile 5 complete to datafile copy
    checkpoint is 1261323
    Switch of datafile 6 complete to datafile copy
    checkpoint is 1261317
    alter database clear logfile group 1
    Clearing online log 1 of thread 1 sequence number 114
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: '+STDATADG/orcldb/onlinelog/group_1.257.946699471'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_1.257.946699471
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: '+STDATADG/orcldb/onlinelog/group_1.257.946699471'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_1.257.946699471
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_1.257.946699471
    Completed: alter database clear logfile group 1
    alter database clear logfile group 2
    Clearing online log 2 of thread 1 sequence number 115
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 2 of thread 1
    ORA-00312: online log 2 thread 1: '+STDATADG/orcldb/onlinelog/group_2.258.946699473'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_2.258.946699473
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 2 of thread 1
    ORA-00312: online log 2 thread 1: '+STDATADG/orcldb/onlinelog/group_2.258.946699473'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_2.258.946699473
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_2.258.946699473
    Completed: alter database clear logfile group 2
    alter database clear logfile group 3
    Clearing online log 3 of thread 2 sequence number 90
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 3 of thread 2
    ORA-00312: online log 3 thread 2: '+STDATADG/orcldb/onlinelog/group_3.265.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_3.265.946701385
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 3 of thread 2
    ORA-00312: online log 3 thread 2: '+STDATADG/orcldb/onlinelog/group_3.265.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_3.265.946701385
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_3.265.946701385
    Completed: alter database clear logfile group 3
    alter database clear logfile group 4
    Clearing online log 4 of thread 2 sequence number 91
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 4 of thread 2
    ORA-00312: online log 4 thread 2: '+STDATADG/orcldb/onlinelog/group_4.266.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_4.266.946701385
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 4 of thread 2
    ORA-00312: online log 4 thread 2: '+STDATADG/orcldb/onlinelog/group_4.266.946701385'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_4.266.946701385
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_4.266.946701385
    Completed: alter database clear logfile group 4
    alter database clear logfile group 11
    Clearing online log 11 of thread 1 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 11 of thread 1
    ORA-00312: online log 11 thread 1: '+STDATADG/orcldb/onlinelog/group_11.268.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_11.268.953459033
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 11 of thread 1
    ORA-00312: online log 11 thread 1: '+STDATADG/orcldb/onlinelog/group_11.268.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_11.268.953459033
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_11.268.953459033
    Completed: alter database clear logfile group 11
    alter database clear logfile group 12
    Clearing online log 12 of thread 1 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 12 of thread 1
    ORA-00312: online log 12 thread 1: '+STDATADG/orcldb/onlinelog/group_12.269.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_12.269.953459033
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 12 of thread 1
    ORA-00312: online log 12 thread 1: '+STDATADG/orcldb/onlinelog/group_12.269.953459033'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_12.269.953459033
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_12.269.953459033
    Completed: alter database clear logfile group 12
    alter database clear logfile group 13
    Clearing online log 13 of thread 1 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 13 of thread 1
    ORA-00312: online log 13 thread 1: '+STDATADG/orcldb/onlinelog/group_13.270.953459035'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_13.270.953459035
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 13 of thread 1
    ORA-00312: online log 13 thread 1: '+STDATADG/orcldb/onlinelog/group_13.270.953459035'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/orcldb/onlinelog/group_13.270.953459035
    ORA-15173: entry 'orcldb' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/orcldb/onlinelog/group_13.270.953459035
    Completed: alter database clear logfile group 13
    alter database clear logfile group 18
    Clearing online log 18 of thread 2 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 18 of thread 2
    ORA-00312: online log 18 thread 2: '+STDATADG/primary/onlinelog/group_18.273.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_18.273.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 18 of thread 2
    ORA-00312: online log 18 thread 2: '+STDATADG/primary/onlinelog/group_18.273.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_18.273.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/primary/onlinelog/group_18.273.953466059
    Completed: alter database clear logfile group 18
    alter database clear logfile group 19
    Clearing online log 19 of thread 2 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 19 of thread 2
    ORA-00312: online log 19 thread 2: '+STDATADG/primary/onlinelog/group_19.272.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_19.272.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 19 of thread 2
    ORA-00312: online log 19 thread 2: '+STDATADG/primary/onlinelog/group_19.272.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_19.272.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/primary/onlinelog/group_19.272.953466059
    Completed: alter database clear logfile group 19
    alter database clear logfile group 20
    Clearing online log 20 of thread 2 sequence number 0
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 20 of thread 2
    ORA-00312: online log 20 thread 2: '+STDATADG/primary/onlinelog/group_20.271.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_20.271.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Errors in file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_11431.trc:
    ORA-00313: open failed for members of log group 20 of thread 2
    ORA-00312: online log 20 thread 2: '+STDATADG/primary/onlinelog/group_20.271.953466059'
    ORA-17503: ksfdopn:2 Failed to open file +STDATADG/primary/onlinelog/group_20.271.953466059
    ORA-15173: entry 'primary' does not exist in directory '/'
    Deleted Oracle managed file +STDATADG/primary/onlinelog/group_20.271.953466059
    Completed: alter database clear logfile group 20
    RFS connections are allowed
    Fri Sep 01 05:13:13 2017
    RFS[1]: Assigned to RFS process 11610
    RFS[1]: Opened log for thread 2 sequence 91 dbid -1912314293 branch 946699467
    Archived Log entry 1 added for thread 2 sequence 91 rlc 946699467 ID 0x8e6c5f93 dest 2:
    Fri Sep 01 05:13:14 2017
    Primary database is in MAXIMUM PERFORMANCE mode
    RFS[2]: Assigned to RFS process 11612
    RFS[2]: Selected log 18 for thread 2 sequence 93 dbid -1912314293 branch 946699467
    Fri Sep 01 05:13:14 2017
    RFS[3]: Assigned to RFS process 11614
    RFS[3]: Selected log 19 for thread 2 sequence 92 dbid -1912314293 branch 946699467
    Fri Sep 01 05:13:14 2017
    Archived Log entry 2 added for thread 2 sequence 92 ID 0x8e6c5f93 dest 1:
    Fri Sep 01 05:13:22 2017
    RFS[4]: Assigned to RFS process 11636
    RFS[4]: Opened log for thread 1 sequence 115 dbid -1912314293 branch 946699467
    Archived Log entry 3 added for thread 1 sequence 115 rlc 946699467 ID 0x8e6c5f93 dest 2:
    Fri Sep 01 05:13:23 2017
    Primary database is in MAXIMUM PERFORMANCE mode
    RFS[5]: Assigned to RFS process 11638
    RFS[5]: Selected log 11 for thread 1 sequence 117 dbid -1912314293 branch 946699467
    Fri Sep 01 05:13:23 2017
    RFS[6]: Assigned to RFS process 11641
    RFS[6]: Selected log 12 for thread 1 sequence 116 dbid -1912314293 branch 946699467
    Fri Sep 01 05:13:23 2017
    Archived Log entry 4 added for thread 1 sequence 116 ID 0x8e6c5f93 dest 1:

    ---------------------------------------------------------------------------


    3、修改主库的tnsnames.ora

    修改【主库1、2节点】tnsnames.ora

    su - oracle
    vi $ORACLE_HOME/network/admin/tnsnames.ora

    修改standby为如下内容:
    ================================================
    STANDBY =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip2)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = mgrdbdg)
    )
    )

    ================================================

    4、启动MRP进程
    在Rman Duplicate操作过程中,【备库】自动切换到mount状态
    select instance_name,status from v$instance;


    在【备库1节点】上:
    开启日志恢复进程
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;


    #测试应用日志过程,我们手动切换【主库1节点】的日志,并观察日志:
    alter system switch logfile;

    #备库1节点查询
    select member from v$logfile union select name from v$datafile union select name from v$tempfile;
    select group#,thread#,sequence#,BYTES/1024/1024,archived,used,status from v$standby_log;


    5、创建spfile并使用spfile 启动备库RAC DATABASE
    仅在【备库的1节点】执行:
    create spfile='+DATA1/mgrdbdg/parameterfile/spfilestandby.ora' from pfile='$ORACLE_HOME/dbs/initstandby.ora';

    在【备库的2节点】查看:
    su - grid
    asmcmd
    ASMCMD> ls -l +DATA1/mgrdbdg/parameterfile


    #将spfile路径分别添加到备库节点的init.ora里,如下:

    在备库1节点上:
    vi $ORACLE_HOME/dbs/initmgrdb1.ora
    spfile='+DATA1/mgrdbdg/parameterfile/spfilestandby.ora'

    在备库2节点上:
    vi $ORACLE_HOME/dbs/initmgrdb2.ora
    spfile='+DATA1/mgrdbdg/parameterfile/spfilestandby.ora'


    6、备库注册到OCR里
    添加备库和实例到OCR中,好让clusterware可以管理资源:
    仅在【备库1节点上】操作:
    su - oracle
    srvctl add database -d mgrdbdg -n mgrdb -o $ORACLE_HOME -p +DATA1/mgrdbdg/parameterfile/spfilestandby.ora -r physical_standby -a DATA1

    =================================================================================================
    srvctl add database -h

    Adds a database configuration to the Oracle Clusterware.

    Usage: srvctl add database -d <db_unique_name> -o <oracle_home> [-c {RACONENODE | RAC | SINGLE}
    [-e <server_list>] [-i <inst_name>] [-w <timeout>]] [-m <domain_name>] [-p <spfile>]
    [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY | SNAPSHOT_STANDBY}] [-s <start_options>]
    [-t <stop_options>] [-n <db_name>] [-y {AUTOMATIC | MANUAL | NORESTART}] [-g "<serverpool_list>"]
    [-x <node_name>] [-a "<diskgroup_list>"] [-j "<acfs_path_list>"]
    =================================================================================================


    #添加实例
    su - oracle
    srvctl add instance -d mgrdbdg -i mgrdb1 -n mgrdb1
    srvctl add instance -d mgrdbdg -i mgrdb2 -n mgrdb2


    #查看配置
    srvctl config database -d mgrdbdg


    7、将【备库1节点】 状态为UNKNOW 状态的监听删掉
    在【备库1节点】:
    su - grid
    cd $ORACLE_HOME/network/admin
    cp listener.ora listener.ora.bak
    vi listener.ora

    lsnrctl reload
    lsnrctl status

    8、重新启动ADG
    在【备库1节点】,重启备库
    alter database recover managed standby database cancel;
    shut immediate

    srvctl stop instance -d mgrdbdg -i mgrdb1
    srvctl start database -d mgrdbdg


    9、查看备库启动状态:
    set line 120
    select name,db_unique_name,database_role,open_mode,SWITCHOVER_STATUS from gv$database;

    启动MRP
    alter database recover managed standby database using current logfile disconnect from session;


    10、简单测试
    主库1节点:
    create tablespace test datafile size 50m;
    create user test identified by test default tablespace test;
    grant dba to test;
    conn test/test
    create table t as select * from dba_objects where rownum<=500;

    主库2节点:
    sqlplus test/test
    insert into t select * from t;
    commit;


    备库:
    sqlplus test/test
    select count(*) from t;

    五、DG传输过程监控

    1、查看备库工作模式及状态
    select inst_id,db_unique_name,database_role,open_mode,protection_mode,protection_level,switchover_status,force_logging from gv$database;
    select db_unique_name,protection_mode,synchronization_status,SYNCHRONIZED from v$archive_dest_status;


    2、日志恢复进程
    archive log list;
    select thread#,max(sequence#) from v$archived_log group by thread#;
    select pid,process,client_process,client_pid,thread#,sequence#,status,DELAY_MINS from v$managed_standby;


    --RFS进程从主数据库接收重做数据,并将其写入备用重做日志。

    3、查看standbylog状态,如果是RAC两节点,那么每个节点至少有一个是ACTIVE的状态,否则不对
    set lines 200
    select group#,thread#,sequence#,bytes/1024/1024,archived,used,status,first_change#,last_change# from v$standby_log;

    检查备库已恢复的最大归档日志序号
    select thread#,max(sequence#),registrar,applied,status from v$archived_log where applied='YES' and registrar='RFS' and name is not null
    group by thread#,registrar,applied,status;


    4、检查应用率和活动率(PS)
    --Redo Applied 值以MB衡量。剩余两个以KB/s计算。
    select to_char(start_time,'DD-MON-RR HH24:MI:SS') start_time,ITEM,sofar
    from v$recovery_progress
    where item in ('Active Apply Rate','Average Apply Rate','Redo Applied');

    5、审阅传输和应用滞后(PS+LS)
    --transport lag 表明从主数据库到物理备用数据库的重做数据传输时间。
    --apply lag 表明应用滞后时间,它反映了archive_log_dest_n参数中 DELAY 特性。

    COL NAME FOR A13
    COL VALUE FOR A20
    COL UNIT FOR A30
    SET LINES 200
    select name,value,unit,time_computed
    from v$dataguard_stats
    where name like '%lag%';


    6、查看Data Guard状态视图中的错误
    set lines 132
    col message for a80
    col timestamp for a20
    select error_code,severity,message,
    to_char(timestamp,'DD-MON-RR HH24:MI:SS') timestamp
    from v$dataguard_status
    where callout='YES'
    and timestamp > sysdate -1;

    7、检查日志文件是否传输到备用数据库
    select dest_name,status,error from v$archive_dest where dest_id=2;
    DEST_NAME STATUS ERROR
    -------------------- ---------- --------------------
    LOG_ARCHIVE_DEST_2 VALID

    status列如果为valid,说明归档成功,可以查看error列得到不能归档的原因

    六、修改DG保护模式
    1、查看当前保护模式 主库查询
    select inst_id,db_unique_name,database_role,open_mode,protection_mode,protection_level,switchover_status,force_logging from gv$database;

    2、将备库转换为最大可用模式
    --主库数据库操作 --将最大性能转为最大可用
    alter database set standby database to maximize availability;


    七、Primary 和 Standby 数据库Switchover切换

    1、检查主、备库alert日志是否有报错信息

    2、Switchover 到 Physical Standby Database
    保证主库只运行一个节点,先关闭2节点实例
    su - oracle
    sqlplus / as sysdba
    shut immediate

    srvctl status database -d orcldb


    3、看主库是否满足切换条件:
    主库操作:
    1)
    select inst_id,db_unique_name,database_role,open_mode,protection_mode,protection_level,switchover_status,force_logging from gv$database;
    select db_unique_name,protection_mode,synchronization_status,SYNCHRONIZED from v$archive_dest_status;

    select thread#,max(sequence#) from v$archived_log group by thread#;
    select pid,process,client_process,client_pid,thread#,sequence#,status,DELAY_MINS from v$managed_standby;


    2)select switchover_status from gv$database;
    SWITCHOVER_STATUS
    --------------------------
    TO STANDBY

    有时候会显示SESSION ACTIVE,这表示当前有活动的会话连接。


    主库执行下面命令切换:
    alter database commit to switchover to physical standby;
    alter database commit to switchover to physical standby WITH SESSION SHUTDOWN;

    输出日志类似:
    ========================================
    alter database commit to switchover to physical standby
    ORA-1031 signalled during: alter database commit to switchover to physical standby...
    Thu Aug 31 16:57:56 2017
    alter database commit to switchover to physical standby
    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY [Process Id: 24425] (orcldb1)
    Waiting for all non-current ORLs to be archived...
    All non-current ORLs have been archived.
    Waiting for all FAL entries to be archived...
    All FAL entries have been archived.
    Waiting for potential Physical Standby switchover target to become synchronized...
    Active, synchronized Physical Standby switchover target has been identified
    Switchover End-Of-Redo Log thread 1 sequence 64 has been fixed
    Switchover: Primary highest seen SCN set to 0x0.0x105ae0
    ARCH: Noswitch archival of thread 1, sequence 64
    ARCH: End-Of-Redo Branch archival of thread 1 sequence 64
    ARCH: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2
    ARCH: Standby redo logfile selected for thread 1 sequence 64 for destination LOG_ARCHIVE_DEST_2
    Archived Log entry 70 added for thread 1 sequence 64 ID 0x8e6b5733 dest 1:
    ARCH: Archiving is disabled due to current logfile archival
    Primary will check for some target standby to have received alls redo
    Final check for a synchronized target standby. Check will be made once.
    LOG_ARCHIVE_DEST_2 is a potential Physical Standby switchover target
    Active, synchronized target has been identified
    Target has also received all redo
    Backup controlfile written to trace file /oracle/app/oracle/diag/rdbms/standby/orcldb1/trace/orcldb1_ora_24425.trc
    Clearing standby activation ID 2389399347 (0x8e6b5733)
    The primary database controlfile was created using the
    'MAXLOGFILES 192' clause.
    There is space for up to 188 standby redo logfiles
    Use the following SQL commands on the standby database to create
    standby redo logfiles that match the primary database:
    ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 131072000;
    ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 131072000;
    ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 131072000;
    ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 131072000;
    ALTER DATABASE ADD STANDBY LOGFILE 'srl5.f' SIZE 131072000;
    Archivelog for thread 1 sequence 64 required for standby recovery
    Switchover: Primary controlfile converted to standby controlfile succesfully.
    Switchover: Complete - Database shutdown required
    USER (ospid: 24425): terminating the instance
    Thu Aug 31 16:58:01 2017
    ORA-1092 : opitsk aborting process
    Instance terminated by USER, pid = 24425
    Completed: alter database commit to switchover to physical standby
    Shutting down instance (abort)
    License high water mark = 8
    Thu Aug 31 16:58:01 2017
    Instance shutdown complete

    如果不关闭2节点,会报如下错误:
    Fri Sep 01 03:08:13 2017
    Switchover in progress in another database instance - Database is shutdown automatically
    LGWR (ospid: 9713): terminating the instance due to error 16456
    Instance terminated by LGWR, pid = 9713
    Fri Sep 01 03:08:13 2017
    ========================================


    关闭源主库重启到mount
    srvctl stop instance -d orcldb -i orcldb1
    srvctl start database -d orcldb -o mount

    用read only 模式打开源主库:
    主库1节点:
    alter database open read only;

    主库2节点:
    alter database open read only;

    输出日志类似:
    ========================================
    alter database open read only
    AUDIT_TRAIL initialization parameter is changed to OS, as DB is NOT compatible for database opened with read-only access
    This instance was first to open
    Beginning Standby Crash Recovery.
    Serial Media Recovery started
    Thu Aug 31 17:00:39 2017
    Managed Standby Recovery starting Real Time Apply
    Media Recovery Log +STDATADG/standby/archivelog/2017_08_31/thread_1_seq_64.337.953485079
    Identified End-Of-Redo (switchover) for thread 1 sequence 64 at SCN 0x0.105ae0
    Media Recovery Log +STDATADG/standby/archivelog/2017_08_31/thread_2_seq_34.336.953484769
    Media Recovery Log +STDATADG/standby/archivelog/2017_08_31/thread_2_seq_35.335.953484769
    Resetting standby activation ID 0 (0x0)
    Incomplete Recovery applied until change 1071840 time 08/31/2017 16:57:58
    Completed Standby Crash Recovery.
    Picked Lamport scheme to generate SCNs
    Thu Aug 31 17:00:40 2017
    SMON: enabling cache recovery
    Dictionary check beginning
    Dictionary check complete
    Database Characterset is ZHS16GBK
    No Resource Manager plan active
    Starting background process GTX0
    Thu Aug 31 17:00:41 2017
    GTX0 started with pid=47, OS id=24790
    replication_dependency_tracking turned off (no async multimaster replication found)
    Physical standby database opened for read only access.
    Completed: alter database open read only
    ========================================


    源主库启动 Redo 应用模式
    alter database recover managed standby database using current logfile disconnect from session;


    源主库切换后查看角色
    select database_role,switchover_status from v$database;
    DATABASE_ROLE SWITCHOVER_STATUS
    ---------------- --------------------
    PHYSICAL STANDBY TO PRIMARY


    源备库操作:

    查看源备库是否满足切换条件
    select database_role,switchover_status from v$database;

    DATABASE_ROLE SWITCHOVER_STATUS
    -------------------------------- ----------------------------------------
    PHYSICAL STANDBY TO PRIMARY


    源备库执行下面命令进行切换:
    alter database commit to switchover to primary;


    输出日志类似:
    ========================================
    alter database commit to switchover to primary
    ALTER DATABASE SWITCHOVER TO PRIMARY (orcldb1)
    Maximum wait for role transition is 15 minutes.
    Switchover: Media recovery is still active
    Forcing database into limbo
    Role Change: Canceling MRP - no more redo to apply
    Thu Aug 31 17:04:40 2017
    MRP0: Background Media Recovery cancelled with status 16037
    Errors in file /oracle/app/oracle/diag/rdbms/primary/orcldb1/trace/orcldb1_mrp0_18559.trc:
    ORA-16037: user requested cancel of managed recovery operation
    Thu Aug 31 17:04:40 2017
    Managed Standby Recovery not using Real Time Apply
    Recovery interrupted!
    Thu Aug 31 17:04:41 2017
    Reconfiguration started (old inc 5, new inc 7)
    List of instances:
    1 2 (myinst: 1)
    Global Resource Directory frozen
    Communication channels reestablished
    Master broadcasted resource hash value bitmaps
    Non-local Process blocks cleaned out
    Thu Aug 31 17:04:41 2017
    LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived
    Set master node info
    Submitted all remote-enqueue requests
    Dwn-cvts replayed, VALBLKs dubious
    All grantable enqueues granted
    Submitted all GCS remote-cache requests
    Fix write in gcs resources
    Reconfiguration complete
    MRP0: Background Media Recovery process shutdown (orcldb1)
    Role Change: Canceled MRP
    All dispatchers and shared servers shutdown
    CLOSE: killing server sessions.
    CLOSE: all sessions shutdown successfully.
    Thu Aug 31 17:04:42 2017
    SMON: disabling cache recovery
    Backup controlfile written to trace file /oracle/app/oracle/diag/rdbms/primary/orcldb1/trace/orcldb1_ora_4330.trc
    SwitchOver after complete recovery through change 1071840
    Online log +DATADG/orcldb/onlinelog/group_1.257.946699471: Thread 1 Group 1 was previously cleared
    Online log +DATADG/orcldb/onlinelog/group_2.258.946699473: Thread 1 Group 2 was previously cleared
    Online log +DATADG/orcldb/onlinelog/group_3.265.946701385: Thread 2 Group 3 was previously cleared
    Online log +DATADG/orcldb/onlinelog/group_4.266.946701385: Thread 2 Group 4 was previously cleared
    Standby became primary SCN: 1071838
    AUDIT_TRAIL initialization parameter is changed back to its original value as specified in the parameter file.
    Switchover: Complete - Database mounted as primary
    Completed: alter database commit to switchover to primary
    ========================================


    新主库打开数据库:
    On Current On Primary Node1:
    alter database open;

    Current On Primary Node2:
    alter database open;

    输出日志类似:
    ========================================
    alter database open
    This instance was first to open
    Picked broadcast on commit scheme to generate SCNs
    Thu Aug 31 17:05:24 2017
    Assigning activation ID 2389418825 (0x8e6ba349)
    Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
    Destination LOG_ARCHIVE_DEST_2 no longer supports SYNCHRONIZATION
    Thu Aug 31 17:05:24 2017
    ARC0: Becoming the 'no SRL' ARCH
    Thread 1 advanced to log sequence 66 (thread open)
    Thu Aug 31 17:05:24 2017
    ARC1: Becoming the 'no SRL' ARCH
    Thread 1 opened at log sequence 66
    Current log# 2 seq# 66 mem# 0: +DATADG/orcldb/onlinelog/group_2.258.946699473
    Successful open of redo thread 1
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
    Thu Aug 31 17:05:24 2017
    SMON: enabling cache recovery
    Thu Aug 31 17:05:24 2017
    minact-scn: Inst 1 is now the master inc#:7 mmon proc-id:18275 status:0x7
    minact-scn status: grec-scn:0x0000.00000000 gmin-scn:0x0000.00000000 gcalc-scn:0x0000.00000000
    minact-scn: Master returning as live inst:2 has inc# mismatch instinc:0 cur:7 errcnt:0
    [4330] Successfully onlined Undo Tablespace 2.
    Undo initialization finished serial:0 start:40587844 end:40588794 diff:950 (9 seconds)
    Dictionary check beginning
    ORACLE Instance orcldb1 - Cannot allocate log, archival required
    Thread 1 cannot allocate new log, sequence 67
    All online logs need archiving
    Examine archive trace files for archiving errors
    Current log# 2 seq# 66 mem# 0: +DATADG/orcldb/onlinelog/group_2.258.946699473
    Archived Log entry 117 added for thread 1 sequence 65 ID 0x8e6ba349 dest 1:
    Dictionary check complete
    Verifying file header compatibility for 11g tablespace encryption..
    Verifying 11g file header compatibility for tablespace encryption completed
    SMON: enabling tx recovery
    Database Characterset is ZHS16GBK
    Thu Aug 31 17:05:25 2017
    idle dispatcher 'D000' terminated, pid = (26, 1)
    Starting background process SMCO
    Thu Aug 31 17:05:26 2017
    SMCO started with pid=46, OS id=5558
    No Resource Manager plan active
    ******************************************************************
    LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
    ******************************************************************
    LGWR: Standby redo logfile selected for thread 1 sequence 67 for destination LOG_ARCHIVE_DEST_2
    Thread 1 advanced to log sequence 67 (LGWR switch)
    Current log# 1 seq# 67 mem# 0: +DATADG/orcldb/onlinelog/group_1.257.946699471
    Thu Aug 31 17:05:30 2017
    Archived Log entry 119 added for thread 1 sequence 66 ID 0x8e6ba349 dest 1:
    Starting background process QMNC
    Thu Aug 31 17:05:30 2017
    QMNC started with pid=52, OS id=5571
    Thu Aug 31 17:05:30 2017
    ARC4: Standby redo logfile selected for thread 1 sequence 66 for destination LOG_ARCHIVE_DEST_2
    LOGSTDBY: Validating controlfile with logical metadata
    LOGSTDBY: Validation complete
    Thu Aug 31 17:05:34 2017
    Completed: alter database open
    ========================================


    切换后查看角色
    select name,open_mode from gv$database;
    DATABASE_ROLE SWITCHOVER_STATUS
    -------------------------------- ----------------------------------------
    PRIMARY TO STANDBY


    查看数据保护模式
    On Current Primary Node1:
    select protection_mode,protection_level from v$database;


    select dest_id,database_mode,recovery_mode,protection_mode from v$archive_dest_status where dest_id=2;


    备注:
    Table 5-2 Minimum Requirements for Data Protection Modes
    ----------------------------------------------------------------------------------------------------------------------------------------------
    Maximum Protection Maximum Availability Maximum Performance
    Redo archival process LGWR LGWR LGWR or ARCH
    Network transmission mode SYNC SYNC SYNC or ASYNC when using LGWR process. SYNC if using ARCH process
    Disk write option AFFIRM AFFIRM AFFIRM or NOAFFIRM
    Standby redo log required? Yes Yes No, but it is recommended
    ----------------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    103
    101
    102
    100
    ByteView和Sink
    二叉排序树删除、搜索、插入的迭代实现
    怎样就地反转单链表?
    有序单链表的合并
    有序数组的合并
    静态表之整型数组的插入、删除、查找
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/14922583.html
Copyright © 2020-2023  润新知