Oracle7 Server Distributed Systems Volume II: Replicated Data
Diagnosing Problems with Snapshots
Problems Creating Replicated Objects at Snapshot Site
If you unsuccessfully attempt to create a new replicated object at a snapshot site, try the following:
- For updatable snapshots, check that the associated master table has a master snapshot log.
- Make sure that you have the necessary privileges to create the object. The privileges to create an updatable snapshot as a replicated object are listed .
- If you are still unsuccessful, try passing the CREATE SNAPSHOT text to the CREATE_SNAPSHOT_REPOBJECT procedure as the DDL_TEXT parameter, instead of precreating the snapshot.
Problems with Snapshot Refresh
If you have a problem refreshing a snapshot, try the following:
- Check the NEXT value in the DBA_SNAPSHOTS view to determine if the refresh has been scheduled.
- If the refresh interval has passed, check the DBA_REFRESH view for the associated job number for the snapshot refresh and then follow the instructions for diagnosing a problem with job queues .
- You may also encounter an error if you attempt to define a master detail relationship between two snapshots. You should define master detail relationships only on the master tables by using declarative referential integrity constraints; the related snapshots should then be placed in the same refresh group to preserve this relationship.
- If you encounter a situation where your snapshots are being continually refreshed, you should check the refresh interval that you specified. This interval is evaluated before the snapshot is refreshed. If the interval that you specify is less than the amount of time it takes to refresh the snapshot, the snapshot will be refreshed each time the SNP background process checks the queue of outstanding jobs.
- If there are any outstanding conflicts recorded in the DefError view at the master site for the snapshots, you can only refresh the snapshots by setting the parameter REFRESH_AFTER_ERRORS to TRUE. This parameter can be set when you call DBMS_SNAPSHOT.REFRESH, DBMS_REFRESH.MAKE, or DBMS_REFRESH.CHANGE.
- If your snapshot logs are growing too large, see the section on managing snapshot space log use .
- Snapshots in the same refresh groups will have their rows updated in a single transaction. Such a transaction can be very large, requiring either a large rollback segment at the snapshot site (with the rollback segment specified to be used during refresh) or you will need to use more frequent refreshes to reduce the transaction size.
- If Oracle error ORA-12004 occurs, the master site may have run out of rollback segments when trying to maintain the snapshot log, or the snapshot log may be out of date (for example, it may have been purged or recreated, see ).
- Complete refreshes of a single table internally us the TRUNCATE feature to increase speed and reduce rollback segment requirements. However, until the snapshot refresh is complete, users may temporarily see no data in the snapshot. Refreshes of multiple snapshots (for example, refresh groups) do not use the TRUNCATE feature.
- Reorganization of the master table (for example, to reclaim system resources) should TRUNCATE the master table to force snapshots to do complete refreshes, otherwise, the snapshots will have incorrect references to master table ROWIDs. For more information see
See also for additional troubleshooting information.