If you use Oracle Data Guard, you have to check timeliness status every time. The below query will give to timeliness status. The differences between results have to be 1-2 when you use real time apply Data Guard. Otherwise, your Data Guard is not real time and has a problem.
Timeliness Status Query
SQL> SELECT a.resetlogs_id, DECODE (a.thread#, 1, ‘node1’, ‘node2’) HOST, b.last_seq last_occured,
a.applied_seq last_applied, TO_CHAR (a.last_applied_time, ‘dd/mm/yyyy hh24:mi:ss’) last_applied_time
FROM (SELECT resetlogs_id, thread#, MAX (sequence#) applied_seq, MAX (next_time) last_applied_time
FROM gv$archived_log
WHERE applied = ‘YES’ and resetlogs_id=(select max(resetlogs_id) from gv$archived_log)
GROUP BY resetlogs_id, thread# ) a,
(SELECT resetlogs_id, thread#, MAX (sequence#) last_seq
FROM gv$archived_log where resetlogs_id=(select max(resetlogs_id) from gv$archived_log)
GROUP BY resetlogs_id, thread# ) b
WHERE a.thread# = b.thread#;
You can add to schedule architecture for check.