• dataguard switchover to physical stnadby


    首先做一系列的check

    check 当前primary 的 standby redo log是否存在

    SQL> select * from v$logfile;
    
        GROUP# STATUS  TYPE    MEMBER                                                  IS_
    ---------- ------- ------- ------------------------------------------------------- ---
             3         ONLINE  /oracle_asm/standby/itid1/datafile/itid/redo03.log      NO
             2         ONLINE  /oracle_asm/standby/itid1/datafile/itid/redo02.log      NO
             1         ONLINE  /oracle_asm/standby/itid1/datafile/itid/redo01.log      NO
             4         STANDBY /oracle_asm/standby/itid1/standby_redo/slog1.rdo        NO
             5         STANDBY /oracle_asm/standby/itid1/standby_redo/slog2.rdo        NO
             6         STANDBY /oracle_asm/standby/itid1/standby_redo/slog3.rdo        NO
             7         STANDBY /oracle_asm/standby/itid1/standby_redo/slog4.rdo        NO

    check standby 的redo log是否存在

    SQL> select * from v$logfile;
    
        GROUP# STATUS  TYPE    MEMBER                                                  IS_
    ---------- ------- ------- ------------------------------------------------------- ---
             3         ONLINE  /oracle_asm/standby/itid2/datafile/itid/redo03.log      NO
             2         ONLINE  /oracle_asm/standby/itid2/datafile/itid/redo02.log      NO
             1         ONLINE  /oracle_asm/standby/itid2/datafile/itid/redo01.log      NO
             4         STANDBY /oracle_asm/standby/itid1/standby_redo/slog1.rdo        NO
             5         STANDBY /oracle_asm/standby/itid1/standby_redo/slog2.rdo        NO
             6         STANDBY /oracle_asm/standby/itid1/standby_redo/slog3.rdo        NO
             7         STANDBY /oracle_asm/standby/itid2/standby_redo/slog1.rdo        NO
             8         STANDBY /oracle_asm/standby/itid2/standby_redo/slog2.rdo        NO
             9         STANDBY /oracle_asm/standby/itid2/standby_redo/slog3.rdo        NO
            10         STANDBY /oracle_asm/standby/itid2/standby_redo/slog4.rdo        NO
            11         STANDBY /oracle_asm/standby/itid2/datafile/log1.rdo             NO
            12         STANDBY /oracle_asm/standby/itid2/datafile/log2.rdo             NO
            13         STANDBY /oracle_asm/standby/itid2/datafile/log3.rdo             NO

    oops 现在才发现之前创建standby的时候创建的standby redo log太多了。其实group 11 12 13 是我想创建成为redo log的。但是不小心的加上了standby参数。从这里也可以看出创建standby redo 和 redo 的命令就在于有没有standby 这个参数。 不过奇怪的是,既然我创建redo的命令错了,那么为什么还是有redo生成了呢? 这个也许是oracle自己生成的。

    check primary的 log_archive_dest_n参数

    SQL> select name,value from v$parameter where name like 'log_archive_dest_%' and name not like '%state%' and value is not null;
    
    NAME                         VALUE
    ---------------------------- ------------------------------------------------------------------------------------
    log_archive_dest_1           LOCATION=/oracle_asm/standby/itid1/arch
    log_archive_dest_2           SERVICE=itid2 SYNC VALID_FOR=( ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=itid2
    log_archive_dest_3           LOCATION=/oracle_asm/standby/itid1/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,
                                 STANDBY_ROLE)

    check standby的 log_archive_dest_n参数

    SQL> select name,value from v$parameter where name like 'log_archive_dest_%' and name not like '%state%' and value is not null;
    
    NAME                         VALUE
    ---------------------------- ------------------------------------------------------------------------------------
    log_archive_dest_1           LOCATION=/oracle_asm/standby/itid2/arch
    log_archive_dest_2           SERVICE=itid1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itid1
    log_archive_dest_3           LOCATION=/oracle_asm/standby/itid2/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,
                                 STANDBY_ROLE)

    查看primary的datafile 和 logfile convert设置

    SQL> show parameter db_file_name_convert
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_file_name_convert                 string      /oracle_asm/standby/itid2/data
                                                     file/itid, /oracle_asm/standby
                                                     /itid1/datafile/itid
    SQL> show parameter log_file_name_convert
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_file_name_convert                string      /oracle_asm/standby/itid2/data
                                                     file/itid, /oracle_asm/standby
                                                     /itid1/datafile/itid

    查看standby的datafile和 logfile convert 设置

    SQL> show parameter db_file_name_convert
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_file_name_convert                 string      /oracle_asm/standby/itid1/data
                                                     file/itid, /oracle_asm/standby
                                                     /itid2/datafile/itid
    SQL> show parameter log_file_name_convert
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_file_name_convert                string      /oracle_asm/standby/itid1/data
                                                     file/itid, /oracle_asm/standby
                                                     /itid2/datafile/itid

    check primary的 FAL设置

    SQL> show parameter fal
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    fal_client                           string
    fal_server                           string      itid2

    check standby的 FAL 设置

    SQL> show parameter fal
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    fal_client                           string
    fal_server                           string      itid1

    check primary的standby_file_management

    SQL> show parameter STANDBY_FILE_MANAGEMENT
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    standby_file_management              string      AUTO

    check standby的standby_file_management

    SQL> show parameter STANDBY_FILE_MANAGEMENT
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    standby_file_management              string      AUTO

    check primary是否可以进行转换

    SQL> select switchover_status from v$database;
    
    SWITCHOVER_STATUS
    --------------------
    TO STANDBY

    转换primary为standby

    SQL> alter database commit to switchover to physical standby with session shutdown;
    
    Database altered.

    据说这一步会把control file 备份到当前session的trace。

    check standby 可以转化成primary

    SQL> select switchover_status from v$database;
    
    SWITCHOVER_STATUS
    --------------------
    TO PRIMARY

    要注意的是这一步必须是在primary ->  standby之后才有效否则的话返回的结果就是not allowed

    turn standby to primary

    SQL> alter database commit to switchover to primary with session shutdown;
    
    Database altered.

    open 新的primary database

    SQL> select status from v$instance;
    
    STATUS
    ------------
    MOUNTED
    
    SQL> alter database open;
    
    Database altered.

    在11gr2中turn standby to primary之后 新的primary是mount状态。

    在新的standby上应用redo

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION
    *
    ERROR at line 1:
    ORA-01665: control file is not a standby control file

    这一步遇到了错误说不是standby control file

    通过下列步骤可以fix

    SQL> shutdown abort
    ORACLE instance shut down.
    SQL> startup mount
    ORACLE instance started.
    
    Total System Global Area  502181888 bytes
    Fixed Size                  1345912 bytes
    Variable Size             385877640 bytes
    Database Buffers          109051904 bytes
    Redo Buffers                5906432 bytes
    Database mounted.
    SQL> alter database open read only
      2  ;
    
    Database altered.
    
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    
    Database altered.

    虽然我不知道为什么这样会fix。

    check一下redo传输和应用的情况

    primary端的日志archive情况如下

    SQL> select NAME,SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG  where sequence#>104 ORDER BY SEQUENCE#;
    
    NAME                                                     SEQUENCE# FIRST_TIM NEXT_TIME
    ------------------------------------------------------- ---------- --------- ---------
    /oracle_asm/standby/itid2/arch/1_105_840039496.dbf             105 12-MAR-14 12-MAR-14
    itid1                                                          105 12-MAR-14 12-MAR-14
    /oracle_asm/standby/itid2/arch/1_106_840039496.dbf             106 12-MAR-14 12-MAR-14
    itid1                                                          106 12-MAR-14 12-MAR-14

    standby端日志apply如下

    SQL> SELECT NAME,SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG WHERE sequence#>100 ORDER BY SEQUENCE#;
    
    NAME                                                                              SEQUENCE# APPLIED
    -------------------------------------------------------------------------------- ---------- ---------
    itid2                                                                                   101 YES
    /oracle_asm/standby/itid1/arch/1_101_840039496.dbf                                      101 YES
    itid2                                                                                   102 NO
    /oracle_asm/standby/itid1/arch/1_102_840039496.dbf                                      102 YES
    /oracle_asm/standby/itid1/arch/1_103_840039496.dbf                                      103 YES
    itid2                                                                                   103 NO
    /oracle_asm/standby/itid1/arch/1_104_840039496.dbf                                      104 YES
    /oracle_asm/standby/itid1/arch/1_105_840039496.dbf                                      105 YES
    /oracle_asm/standby/itid1/arch/1_106_840039496.dbf                                      106 NO
    /oracle_asm/standby/itid1/arch_from_standbyredo/1_106_840039496.dbf                     106 IN-MEMORY
  • 相关阅读:
    Java回调函数的理解
    android 解析json数据格式
    python类型转换、数值操作(收藏)
    PyQt4学习资料汇总 (转)
    HDU 2767 Proving Equivalences (Tarjan )
    apache2的安装与简单配置(转)
    HDU 3861 The King’s Problem (Tarjan + 二分匹配)
    MySql的一些基本使用及操作命令 (待更新)
    pcap的安装与配置
    ubuntu下配置安装PYQT4
  • 原文地址:https://www.cnblogs.com/kramer/p/3596354.html
Copyright © 2020-2023  润新知