Multiple Snapshots Showing Same Timestamp (KBA6748)
KBA
KBA# 6748
Issue
When reviewing snapshots in GUI or CLI, multiple snapshots may show with the same timestamp
Applicable Delphix Versions
- Click here to view the versions of the Delphix engine to which this article applies
-
Major Release All Sub Releases 6.0 6.0.0.0, 6.0.1.0, 6.0.1.1, 6.0.2.0, 6.0.2.1, 6.0.3.0, 6.0.3.1, 6.0.4.0, 6.0.4.1, 6.0.4.2, 6.0.5.0 5.3
5.3.0.0, 5.3.0.1, 5.3.0.2, 5.3.0.3, 5.3.1.0, 5.3.1.1, 5.3.1.2, 5.3.2.0, 5.3.3.0, 5.3.3.1, 5.3.4.0, 5.3.5.0 5.3.6.0, 5.3.7.0, 5.3.7.1, 5.3.8.0, 5.3.8.1, 5.3.9.0 5.2
5.2.2.0, 5.2.2.1, 5.2.3.0, 5.2.4.0, 5.2.5.0, 5.2.5.1, 5.2.6.0, 5.2.6.1
5.1
5.1.0.0, 5.1.1.0, 5.1.2.0, 5.1.3.0, 5.1.4.0, 5.1.5.0, 5.1.5.1, 5.1.6.0, 5.1.7.0, 5.1.8.0, 5.1.8.1, 5.1.9.0, 5.1.10.0
5.0
5.0.1.0, 5.0.1.1, 5.0.2.0, 5.0.2.1, 5.0.2.2, 5.0.2.3, 5.0.3.0, 5.0.3.1, 5.0.4.0, 5.0.4.1 ,5.0.5.0, 5.0.5.1, 5.0.5.2, 5.0.5.3, 5.0.5.4
4.3
4.3.1.0, 4.3.2.0, 4.3.2.1, 4.3.3.0, 4.3.4.0, 4.3.4.1, 4.3.5.0
4.2
4.2.0.0, 4.2.0.3, 4.2.1.0, 4.2.1.1, 4.2.2.0, 4.2.2.1, 4.2.3.0, 4.2.4.0 , 4.2.5.0, 4.2.5.1
4.1
4.1.0.0, 4.1.2.0, 4.1.3.0, 4.1.3.1, 4.1.3.2, 4.1.4.0, 4.1.5.0, 4.1.6.0
Cause
This issue can occur in the following condition:
- dSource is a standby database in real time apply mode
- No log switch has taken place between snapshots
When the Delphix Engine takes a SnapSync it ideally needs a log switch to be performed at the end of the SnapSync to allow for accurate mapping of Oracle SCNs to timestamps. When the dSource is a standby in real time apply mode this cannot be done automatically by the Delphix Engine, as such Delphix must selected the best safe timestamp to use, which is the start time of the current redo log.
If multiple SnapSyncs are performed without a log switch, then they will all use the same start time of the current redo log as their LATESTCHANGEPOINT.TIMESTAMP, resulting in the duplicate snapshots.
Resolution
To resolve this issue, we must ensure that a log switch is performed after ( or before or both ) every SnapSync, this can be done by creating a script which forces a log switch on your primary database server, which will cascade to the standby.
An example of how this could be done is below. The exact method of forcing a log switch is not important, only that it is done.
1. Create script on primary server to switch the logfile
#!/bin/bash export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 export ORACLE_SID=DBOMPRA8F280 $ORACLE_HOME/bin/sqlplus / as sysdba << EOF alter system switch logfile; exit EOF
2. Ensure ssh-keys between primary and standby are configured.
3. Configure Post Sync hook to call the remote script.
Known issues
While this solution will ensure a log switch is performed after each snapshot, the hook script will run after Delphix waits 5 minutes for the log to be automatically archived. If the log is not archived in this time a fault will be generated. A more complete workaround could make use of the api to query the snapshot job until it reaches the "event.jobs.oraclesnl.waiting.logsync" state, and then perform the snapsync. This would need to be run as a Pre Sync hook in the background.
Related Articles
The following articles may provide more information or related information to this article:
- Delphix Documentation - Hook Scripts for Automation and Customization
- Delphix Documentation - Oracle Hook Operations