zoukankan      html  css  js  c++  java
  • ORACLE 11.2.0.4 Single To Single Data Guard 安装 physical standby

    [root@ORACLE ~]# su - oracle
    [oracle@ORACLE ~]$ sqlplus / as sysdba
    
    
    1. 查看主库归档模式:
    SQL> select log_mode from v$database;
    LOG_MODE
    ------------
    ARCHIVELOG
    
    2. 如果不是归档模式,进行如下修改:
    SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT;
    SQL>ALTER DATABASE ARCHIVELOG;
    SQL>ALTER DATABASE OPEN;
    
    
    3. 将主库修改为强制日志模式:
    SQL> alter database force logging;
    Database altered.
    
    
    4. 查看db_name,主库和备库的db_name要相同:
    SQL> show parameter db_name;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_name                              string      orcl
    
    
    5. 查看unique_name,主库和备库的unique_name必须不一样,那么在后面生成pfile拷给备库后,需要将db_unique_name改为orcl_dg。
    SQL> show parameter name;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cell_offloadgroup_name               string
    db_file_name_convert                 string
    db_name                              string      orcl
    db_unique_name                       string      orcl
    global_names                         boolean     FALSE
    instance_name                        string      oradb
    lock_name_space                      string
    log_file_name_convert                string
    processor_group_name                 string
    service_names                        string      orcl
    
    6. 为主数据库添加standby redolog文件:
    [oracle@ORACLE orcl]$ sqlplus / as sysdba
    SQL> alter database add standby logfile ('/u01/app/oracle/oradata/orcl/standby_redo01.log') size 50M;
    Database altered.
    SQL> alter database add standby logfile ('/u01/app/oracle/oradata/orcl/standby_redo02.log') size 50M;
    Database altered.
    SQL> alter database add standby logfile ('/u01/app/oracle/oradata/orcl/standby_redo03.log') size 50M;
    Database altered.
    SQL> alter database add standby logfile ('/u01/app/oracle/oradata/orcl/standby_redo04.log') size 50M;
    Database altered.
    
    6. 修改DG_CONFIG
    SQL> alter system set log_archive_config='DG_CONFIG=(orcl,orcl_dg)';
    System altered.
    SQL> show parameter recovery;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      /u01/app/oracle/fast_recovery_area
    db_recovery_file_dest_size           big integer 4182M
    recovery_parallelism                 integer     0
    
    7. 修改远程归档路径,将其发送到远程的orcl_dg服务器上。
    SQL> alter system set log_archive_dest_2='SERVICE=orcl_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_dg';
    System altered.
    
    8. 将第二个归档路径开启。
    SQL> alter system set log_archive_dest_state_2=enable;
    System altered.
    
    
    SQL> select group#,member from v$logfile;
    
        GROUP#  MEMBER
    ----------  --------------------------------------------------------------------------------
        3        /u01/app/oracle/oradata/orcl/redo03.log
        2        /u01/app/oracle/oradata/orcl/redo02.log
        1        /u01/app/oracle/oradata/orcl/redo01.log
        4        /u01/app/oracle/oradata/orcl/standby_redo01.log
        5        /u01/app/oracle/oradata/orcl/standby_redo02.log
        6        /u01/app/oracle/oradata/orcl/standby_redo03.log
        7        /u01/app/oracle/oradata/orcl/standby_redo04.log
    
    SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
    System altered.
    
    SQL> alter system set log_archive_max_processes=30;
    System altered.
    
    SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
    System altered.
    
    SQL> alter system set fal_server=orcl_dg;
    System altered.
    
    SQL> alter system set standby_file_management=auto;
    System altered.
    
    
    SQL> quit
    
    
    
    9. 在主备库中同时修改tnsname.ora,添加以下两个配置:
    [oracle@ORACLE oracle]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora 
    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    ORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ORACLE)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )
    
    ORCL_DG =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ORADG)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )
      
    "product/11.2.0/db_1/network/admin/tnsnames.ora" 30L, 682C written                               
    
    
    10. 开始备份:
    [oracle@ORACLE oracle]$ rman target /
    RMAN> backup database plus archivelog;
    
    Finished backup at 07-FEB-17
    
    RMAN> exit
    Recovery Manager complete.
    
    # 如果备库已经创建了库,那么只需要将备库的oradata路径下的文件全部删除,以及控制文件删除,密码文件删除
    # [oracle@ORADG ~]$ cd /u01/app/oracle/oradata/orcl/
    # [oracle@ORADG orcl]$ ls
    # control01.ctl  redo01.log  redo03.log    system01.dbf  undotbs01.dbf
    # example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf
    # 删除备库的oradata路径下面的文件,不需要重新创建该路径
    # [oracle@ORADG orcl]$ rm -rf *
    # 如果没有创建库,那么就需要在备库创建对应的路径:
    # [oracle@ORADG ~] mkdir -p /u01/app/oracle/oradata/orcl
    # [oracle@ORADG ~] mkdir -p /u01/app/oracle/fast_recovery_area/ORCL
    # [oracle@ORADG ~] mkdir -p /u01/app/oracle/admin/orcl/adump
    
    
    
    11. 生成pfile文件,将其拷贝到备用数据库,并进行修改
    [oracle@ORACLE admin]$ sqlplus / as sysdba
    SQL> create pfile='/u01/app/oracle/pfileoradb1.ora' from spfile;
    File created.
    SQL> show parameter spfile;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoradb.ora
    SQL> quit
    [oracle@ORACLE admin]$ scp /u01/app/oracle/pfileoradb1.ora 192.168.56.20:/u01/app/oracle/product/11.2.0/db_1/dbs/
    pfileoradb1.ora                                                                  100% 1319     1.3KB/s   00:00    
    
    
    12. 在节点2上进行修改,如下,将主库的pfile文件拷贝过来进行修改,修改以下三个参数
    [oracle@ORADG orcl]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
    [oracle@ORADG dbs]$ ls
    hc_orcl.dat  init.ora  lkORCL  lkORCL_DG  orapworcl  pfileoradb1.ora  spfileorcl.ora
    [oracle@ORADG dbs]$ mv spfileorcl.ora spfileorcl.ora.bak
    [oracle@ORADG dbs]$ vi pfileoradb1.ora 
    *.db_unique_name='orcl_dg'
    *.fal_server='orcl'
    *.log_archive_dest_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
    
    
    13. 在节点1上生成备用控制文件,并拷贝到节点2上:
    [oracle@ORACLE admin]$ sqlplus / as sysdba
    SQL> alter database create standby controlfile as '/tmp/orcl_dg.ctl';
    Database altered.
    SQL> quit
    [oracle@ORACLE admin]$ scp /tmp/orcl_dg.ctl 192.168.56.20:/u01/app/oracle/oradata/orcl/control01.ctl
    orcl_dg.ctl                                                                      100% 9520KB   9.3MB/s   00:00    
    
    
    14. 在节点2上另一个路径下生成第二个control02
    [oracle@ORADG adump]$ cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
    
    
    15. 将其余归档文件和备份文件一起考到备用数据库上
    [oracle@ORADG adump]$ scp -r 192.168.56.21:/u01/app/oracle/fast_recovery_area/ORCL/backupset /u01/app/oracle/fast_recovery_area/ORCL
    o1_mf_nnndf_TAG20170207T155257_d9lz6t7j_.bkp                                     100% 1122MB  17.5MB/s   01:04    
    o1_mf_annnn_TAG20170207T155438_d9lz9yv8_.bkp                                     100%  220KB 219.5KB/s   00:00    
    o1_mf_ncsnf_TAG20170207T155257_d9lz9x5f_.bkp                                     100% 9600KB   9.4MB/s   00:01    
    o1_mf_annnn_TAG20170207T155250_d9lz6lfj_.bkp                                     100%   82MB  16.5MB/s   00:05    
    [oracle@ORADG adump]$ scp -r 192.168.56.21:/u01/app/oracle/fast_recovery_area/ORCL/archivelog /u01/app/oracle/fast_recovery_area/ORCL
    o1_mf_1_10_d9lz9ykm_.arc                                                         100%  218KB 218.0KB/s   00:00    
    o1_mf_1_8_d9lxp78t_.arc                                                          100%   40KB  39.5KB/s   00:00    
    o1_mf_1_7_d9lxnfvf_.arc                                                          100%   37MB  37.0MB/s   00:01    
    o1_mf_1_9_d9lz6k42_.arc                                                          100% 2691KB   2.6MB/s   00:00    
    o1_mf_1_6_d9lk1v9w_.arc                                                          100%   43MB  42.7MB/s   00:01    
    [oracle@ORADG dbs]$ scp 192.168.56.21:/u01/app/oracle/product/11.2.0/db_1/dbs/orapworadb $ORACLE_HOME/dbs
    oracle@192.168.56.21's password: 
    orapworadb                                                                       100% 1536     1.5KB/s   00:00 
    
    16. 开启备库的监听:
    [oracle@ORADG dbs]$ lsnrctl start
    
    17. 在备库创建spfile
    [oracle@ORADG dbs]$ export ORACLE_SID=orcl
    [oracle@ORADG dbs]$ sqlplus / as sysdba
    SQL> create spfile from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/pfileoradb1.ora';
    
    
    18. 对备库进行恢复:
    [oracle@ORADG dbs]$ rman target /
    RMAN> startup mount
    RMAN> restore database;
    Finished restore at 07-FEB-17
    
    19. 此时在备库查看状态,没有MRP进程
    SQL> select process,status,sequence# from v$managed_standby;
    
    PROCESS   STATUS        SEQUENCE#
    --------- ------------ ----------
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    
    PROCESS   STATUS        SEQUENCE#
    --------- ------------ ----------
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    
    PROCESS   STATUS        SEQUENCE#
    --------- ------------ ----------
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    
    
    20. 进行同步(在备库上执行)可以看到已经有了MRP进程,
     
    SQL> alter database recover managed standby database using current logfile disconnect from session;
    Database altered.
    
    SQL> select process,status,sequence# from v$managed_standby;
    PROCESS   STATUS        SEQUENCE#
    --------- ------------ ----------
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    ARCH      CONNECTED             0
    MRP0      WAIT_FOR_GAP         10
    
    
    21. 但是还是没有进行同步,可以在线面看到status为WAIT_FOR_GAP,下面是排错过程:
    SQL> select process,client_process,sequence#,status from v$managed_standby;
    
    PROCESS   CLIENT_P  SEQUENCE# STATUS
    --------- -------- ---------- ------------
    ARCH      ARCH              0 CONNECTED
    MRP0      N/A              10 WAIT_FOR_GAP
    
    
    
    SQL> select sequence#,applied from v$archived_log;
    
     SEQUENCE# APPLIED
    ---------- ---------
             6 NO
             7 NO
             8 NO
             9 NO
            10 NO
    
    SQL> archive log list;
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     9
    Next log sequence to archive   11
    Current log sequence           11
    SQL> select dest_name,status from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
    
    DEST_NAME              STATUS
    -----------            ---------
    LOG_ARCHIVE_DEST_2     ERROR
    
    
    SQL> show parameter log_archive_dest_2
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_2                   string      SERVICE=orcl_dg LGWR ASYNC VAL
                                                     ID_FOR=(ONLINE_LOGFILES,PRIMAR
                                                     Y_ROLE) DB_UNIQUE_NAME=orcl_dg
    log_archive_dest_20                  string
    log_archive_dest_21                  string
    log_archive_dest_22                  string
    log_archive_dest_23                  string
    
    
    SQL> show parameter log_archive_dest_state_2
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_state_2             string      ENABLE
    log_archive_dest_state_20            string      enable
    log_archive_dest_state_21            string      enable
    log_archive_dest_state_22            string      enable
    log_archive_dest_state_23            string      enable
    log_archive_dest_state_24            string      enable
    log_archive_dest_state_25            string      enable
    log_archive_dest_state_26            string      enable
    log_archive_dest_state_27            string      enable
    log_archive_dest_state_28            string      enable
    log_archive_dest_state_29            string      enable
    
    
    SQL> alter system set log_archive_dest_state_2=enable;
    
    System altered.
    
    SQL> select dest_name,status from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
    
    DEST_NAME            STATUS
    --------------      -----
    LOG_ARCHIVE_DEST_2  ERROR
    
    
    SQL> 
    SQL> show parameter dump
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    background_core_dump                 string      partial
    background_dump_dest                 string      /u01/app/oracle/diag/rdbms/orc
                                                     l/oradb/trace
    core_dump_dest                       string      /u01/app/oracle/diag/rdbms/orc
                                                     l/oradb/cdump
    max_dump_file_size                   string      unlimited
    shadow_core_dump                     string      partial
    user_dump_dest                       string      /u01/app/oracle/diag/rdbms/orc
                                                     l/oradb/trace
    SQL> quit
    
    [oracle@ORACLE orcl]$ cd /u01/app/oracle/diag/rdbms/orcl/oradb/trace/
    [oracle@ORACLE trace]$ ls -l
    total 1156
    -rw-r-----. 1 oracle oinstall 389529 Feb  7 17:20 alert_oradb.log
    
    [oracle@ORACLE trace]$ tail -n 200 alert_oradb.log 
    ***********************************************************************
    TNS-12545: Connect failed because target host or object does not exist  (错误在这里可以看出,是因为无法连接到目标服务器)
        ns secondary err code: 12560
        nt main err code: 515
        
    TNS-00515: Connect failed because target host or object does not exist
        nt secondary err code: 111
        nt OS err code: 0
    Error 12545 received logging on to the standby
    PING[ARC1]: Heartbeat failed to connect to standby 'orcl_dg'. Error is 12545.
    
    
    
    [oracle@ORACLE trace]$ cd /u01/app/oracle/product/11.2.0/db_1/network/admin/
    [oracle@ORACLE admin]$ ls
    listener.ora  samples  shrept.lst  tnsnames.ora
    
    
    检查tnsname.ora文件,查看是否有错误,检查发现无措
    [oracle@ORACLE admin]$ cat tnsnames.ora 
    
    [oracle@ORACLE admin]$ tnsping ORCL_DG
    TNS-12545: Connect failed because target host or object does not exist
    (这里发现tnsping不同,在hosts文件中没有添加备库的host记录,而在tnsname.ora文件中使用的HOST为计算机名,因此无法解析,修改名称为IP)
    [oracle@ORACLE admin]$ vi tnsnames.ora 
    ORCL_DG =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.20)(PORT = 1521))
        )
          (SERVICE_NAME = orcl)
        )
    "tnsnames.ora" 30L, 690C written                                                                 
    [oracle@ORACLE admin]$ tnsping ORCL_DG 
    
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.20)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
    OK (50 msec)
    [oracle@ORACLE admin]$ sqlplus / as sysdba                            
    
    
    SQL> select dest_name,status from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
    
    DEST_NAME            STATUS
    ------------------  ---------
    LOG_ARCHIVE_DEST_2  ERROR
    
    
    SQL> alter system set log_archive_dest_state_2=enable;
    
    System altered.
    
    SQL> select dest_name,status from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
    
    DEST_NAME                STATUS
    --------------------    ---------
    LOG_ARCHIVE_DEST_2      VALID
    
    
    SQL> /
    
    DEST_NAME            STATUS
    ------------------  ---------
    LOG_ARCHIVE_DEST_2  ERROR
    
    
    SQL> quit   
    
    [oracle@ORACLE admin]$ cd /u01/app/oracle/diag/rdbms/orcl/oradb/trace/
    [oracle@ORACLE trace]$ tail -n 200 alert_oradb.log                    
    ***********************************************************************
    
    Fatal NI connect error 12545, connecting to:
     (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ORADG)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)(CID=(PROGRAM=oracle)(HOST=ORACLE)(USER=oracle))))
    
      VERSION INFORMATION:
            TNS for Linux: Version 11.2.0.4.0 - Production
            TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
      Time: 07-FEB-2017 17:21:40
      Tracing not turned on.
      Tns error struct:
        ns main err code: 12545
        
    TNS-12545: Connect failed because target host or object does not exist
        ns secondary err code: 12560
        nt main err code: 515
        
    TNS-00515: Connect failed because target host or object does not exist
        nt secondary err code: 111
        nt OS err code: 0
    Error 12545 received logging on to the standby
    PING[ARC1]: Heartbeat failed to connect to standby 'orcl_dg'. Error is 12545.
    Tue Feb 07 17:22:43 2017
    Error 1033 received logging on to the standby
    PING[ARC1]: Heartbeat failed to connect to standby 'orcl_dg'. Error is 1033.
    Tue Feb 07 17:22:55 2017
    ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;
    Tue Feb 07 17:23:45 2017
    Error 1033 received logging on to the standby
    PING[ARC1]: Heartbeat failed to connect to standby 'orcl_dg'. Error is 1033.
    
    
    注:密码文件在拷贝过来之后,是orapw+SID,SID要修改为备用数据库的instance_name,否则不生效
    [oracle@ORACLE trace]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
    [oracle@ORACLE dbs]$ ls
    hc_oradb.dat  init.ora  lkORCL  lkPRIMARY  orapworadb  snapcf_oradb.f  spfileoradb.ora
    
    [oracle@ORACLE dbs]$ scp orapworadb 192.168.56.20:$ORACLE_HOME/dbs/orapworcl
    orapworadb                                                                       100% 1536     1.5KB/s   00:00    
    [oracle@ORACLE dbs]$ sqlplus / as sysdba                                  
    
    DEST_NAME            STATUS
    ------------------  ---------
    LOG_ARCHIVE_DEST_2  ERROR
    
    
    SQL> alter system set log_archive_dest_state_2=enable;
    
    System altered.
    
    SQL> select dest_name,status from v$archive_dest_status where dest_name='LOG_ARCHIVE_DEST_2';
    
    DEST_NAME                STATUS
    --------------------    ---------
    LOG_ARCHIVE_DEST_2      VALID
    
    
    SQL> /
    
    DEST_NAME                STATUS
    --------------------    ---------
    LOG_ARCHIVE_DEST_2      VALID
    
    22. 经过以上排错,数据库同步正常(在备库上查询,已经生成了RFS进程,其中LGWR进程就是将主库上的redo抓取过来):
    SQL> select process,client_process,sequence#,status from v$managed_standby;
    
    PROCESS   CLIENT_P  SEQUENCE# STATUS
    --------- -------- ---------- ------------
    ARCH      ARCH              0 CONNECTED
    ARCH      ARCH              0 CONNECTED
    MRP0      N/A              12 APPLYING_LOG
    RFS       ARCH              0 IDLE
    RFS       UNKNOWN           0 IDLE
    RFS       LGWR             12 IDLE
    RFS       UNKNOWN           0 IDLE
    
    
    23. 将同步取消,MRP进程消失:
    SQL> alter database recover managed standby database cancel;
    
    Database altered.
    
    SQL> select process,client_process,sequence#,status from v$managed_standby;
    
    PROCESS   CLIENT_P  SEQUENCE# STATUS
    --------- -------- ---------- ------------
    ARCH      ARCH              0 CONNECTED
    ARCH      ARCH              0 CONNECTED
    ARCH      ARCH              0 CONNECTED
    RFS       ARCH              0 IDLE
    RFS       UNKNOWN           0 IDLE
    RFS       LGWR             12 IDLE
    RFS       UNKNOWN           0 IDLE
    
    24. 此时可将备库打开到open状态,及read_only,然后再进行同步:
    SQL> alter database open;
    
    Database altered.
    
    SQL> alter database recover managed standby database using current logfile disconnect from session;
    
    Database altered.
    
    SQL> select process,client_process,sequence#,status from v$managed_standby;
    
    PROCESS   CLIENT_P  SEQUENCE# STATUS
    --------- -------- ---------- ------------
    ARCH      ARCH              0 CONNECTED
    ARCH      ARCH              0 CONNECTED
    RFS       ARCH              0 IDLE
    MRP0      N/A              12 APPLYING_LOG
    RFS       UNKNOWN           0 IDLE
    RFS       LGWR             12 IDLE
    RFS       UNKNOWN           0 IDLE
    
    
    
    25. 从下面查询可以看出,此时数据库处于read_only并且正常同步状态
    SQL> select database_role,open_mode from v$database;
    
    DATABASE_ROLE    OPEN_MODE
    ---------------- --------------------
    PHYSICAL STANDBY READ ONLY WITH APPLY
    
    
    SQL> select database_role,switchover_status from v$database;
    DATABASE_ROLE    SWITCHOVER_STATUS
    ---------------- --------------------
    PHYSICAL STANDBY NOT ALLOWED
    
    
    
    测试:
    SQL> create table test as select * from dba_objects;
    
    Table created.
    
    在节点2上查询得到如下结果,开始有延时。
    SQL> select count(1) from test;
    select count(1) from test
                         *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    
    SQL> /
    
      COUNT(1)
    ----------
         86962
    
    
    在节点1上将test表truncate掉
    SQL> truncate table test;
    
    Table truncated.
    
    节点2上查询结果如下:
    SQL> 
    SQL> /
    
      COUNT(1)
    ----------
             0
    节点2上查询结果如下:
    
    
    
    
    
    #DG常用维护命令
    
    1、检查备库是否与主库同步
    执行时间:每天
    检查 applied 状态是否全部 为YES, 如果发现有 NO 行,请联系我 ;
    SQL> select sequence#,applied from v$archived_log;
    检查sequence#的序号主库和备库是否一致,如果一致,说明日志已正确传送到备库。
    检查 applied 状态是否为YES,如果是,说明规档日志已在备库中应用。NO为日志没有应用。
    
    2、备库归档日志的删除
    应定期删除 archive log, 以防止目录填满,导致整个 oracle 实例挂起 。 
    可以定制自动作业,用rman脚本,删除7天之前的的归档日志
    DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
    
    3、 swithover
    执行时间 : 计划 swithover
    主库和备份都正常在线进行的一种转换
    
    
    4、FAILOVER
    执行时间:主库故障
    
    
    5、    注册丢失的归档日志文件
    从9i以后,oracle dataguard 备库一般都不需要手工处理丢失的日志,FAL自动会帮我们处理。个别情况,也是需要手工处理丢失的日志的。
        在备库查询有哪些日志丢失,没应用到备库
    SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
    如果有记录,则把相应的归档日志从主库拷贝到备库。
        备库注册:
    ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
    
    6、在生产库停止Data Guard操作:
    SQL> show parameter log_archive_dest
    SQL> alter system set log_archive_dest_state_2=defer;
    
    7、在生产库开启Data Guard操作:
    SQL> alter system set log_archive_dest_state_2=enable;
    
    8、查询备库相关进程信息
    SQL> select process,client_process,sequence#,status from v$managed_standby; 
    PROCESS列显示进程信息
    CLIENT_PROCESS列显示对应的主数据库中的进程
    SEQUENCE#列显示归档redo的序列号
    STATUS列显示的进程状态
    
    9、正确关闭顺序
    首先关闭 standby database:
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    SQL>SHUTDOWN IMMEDIATE;
    
    然后关闭product database
    SQL>SHUTDOWN IMMEDIATE; 
  • 相关阅读:
    反转链表
    Kafka设计解析
    kafka丢失和重复消费数据
    阿里巴巴分布式数据库服务DRDS研发历程
    ZooKeeper系列文章
    阿里中间件RocketMQ
    Spring Cloud构建微服务架构
    TDDL调研笔记
    从OutStreamWriter 和Filewriter谈Java编码
    在Service里调用AlertDialog
  • 原文地址:https://www.cnblogs.com/zx3212/p/6378383.html
Copyright © 2011-2022 走看看