Pages

Tuesday, July 26, 2016

How to Verify the log shipping from Primary to Standby

Verify the log shipping from Primary to Standby

Run below queries on both Primary and Standby:

Example result on Primary:

SQL> select thread#,max(sequence#) from v$archived_log group by thread#;

   THREAD# MAX(SEQUENCE#)
---------- --------------
         1           1030
         2           1976
         3            992

SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CLOSING            1030
ARCH      CLOSING            1007
ARCH      CLOSING            1028
ARCH      CLOSING            1029
LNS       WRITING            1031

Example result on Standby:

SQL> select thread#,max(sequence#) from v$archived_log where applied='YES' group by thread#;

   THREAD# MAX(SEQUENCE#)
---------- --------------
         1           1016
         2           1969
         3            986

SQL> select process,status,sequence# from v$managed_standby;

PROCESS   STATUS        SEQUENCE#
--------- ------------ ----------
ARCH      CONNECTED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
ARCH      CONNECTED             0
RFS       IDLE                  0
RFS       IDLE                  0
RFS       IDLE                  0
MRP0      APPLYING_LOG       1971 ß Current shipping log a Standby

To Identify real gap between Primary & Standby use below query on Standby:

SQL> SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received", APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"  FROM  (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,  (SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL  WHERE  ARCH.THREAD# = APPL.THREAD#  ORDER BY 1;

    Thread Last Sequence Received Last Sequence Applied Difference
---------- ---------------------- --------------------- ----------
         1                   3936                  3936          0
         2                   4127                  4127          0
         3                   4089                  4088          1

To Identify where the SYNC stuck, use below query on Standby:

SQL> set lines 400
SQL> select sequence#,process,pid,status,client_process,block#, active_agents, known_agents,BLOCKS FROM gv$managed_standby ORDER BY thread#, pid;

 SEQUENCE# PROCESS          PID STATUS       CLIENT_P     BLOCK# ACTIVE_AGENTS KNOWN_AGENTS     BLOCKS
---------- --------- ---------- ------------ -------- ---------- ------------- ------------ ----------
         0 ARCH           12301 CONNECTED    ARCH              0             0            0          0
         0 ARCH           12303 CONNECTED    ARCH              0             0            0          0
         0 ARCH           12306 CONNECTED    ARCH              0             0            0          0
         0 ARCH           12308 CONNECTED    ARCH              0             0            0          0
         0 RFS            63255 IDLE         ARCH              0             0            0          0
         0 RFS            64122 IDLE         ARCH              0             0            0          0
         0 RFS            94905 IDLE         ARCH              0             0            0          0
         0 RFS            95539 IDLE         UNKNOWN           0             0            0          0
         0 ARCH           98551 CONNECTED    ARCH              0             0            0          0
         0 ARCH           98553 CONNECTED    ARCH              0             0            0          0
         0 ARCH           98555 CONNECTED    ARCH              0             0            0          0
         0 ARCH           98557 CONNECTED    ARCH              0             0            0          0
         0 ARCH          107778 CONNECTED    ARCH              0             0            0          0
         0 ARCH          107780 CONNECTED    ARCH              0             0            0          0
         0 ARCH          107782 CONNECTED    ARCH              0             0            0          0
         0 ARCH          107784 CONNECTED    ARCH              0             0            0          0
         0 RFS           110810 IDLE         UNKNOWN           0             0            0          0
         0 RFS           111166 IDLE         UNKNOWN           0             0            0          0
         0 RFS           115561 IDLE         UNKNOWN           0             0            0          0
         0 RFS           125704 IDLE         UNKNOWN           0             0            0          0
      3937 RFS           110816 IDLE         LGWR         589311             0            0          2
      4128 MRP0           45057 WAIT_FOR_LOG N/A               0            73           73          0
      4128 RFS           110765 IDLE         LGWR         423411             0            0          1
      4090 RFS           115558 IDLE         LGWR         606837             0            0          1

24 rows selected.

Additional queries:

select DEST_ID,DEST_NAME,DESTINATION,TARGET,STATUS,ERROR from v$archive_dest where dest_id < 5;

select to_char(timestamp, 'dd-mon-yyyy, hh:mm'), message from v$dataguard_status;

We can also notice the log application from ALERT_LOG from Standby

$ cd /diag/rdbms/*/*/trace
$ tail -f alert*.log

1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete