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 /instance_name/u01/diag/rdbms/trace
$ tail -f alert*.log
========================================================================
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 /instance_name/u01/diag/rdbms/trace
$ tail -f alert*.log
No comments:
Post a Comment