This guide covers creating, managing, and leveraging snapshots and bookmarks to establish recovery points and baselines for virtual databases. Estimated time: 12 minutes.
Snapshots vs bookmarks
| Feature | Snapshot | Bookmark |
|---|---|---|
| Creation | Automatic via policy, or manual | Always manual |
| Purpose | Incremental backup points | Named, shareable milestones |
| Scope | Single VDB or dSource | One or more VDBs, or a dSource |
| Best for | Regular automated backups, routine recovery, daily data capture | Release milestones, QA approval points, shared team baselines, pre/post deployment states |
Working with snapshots
List snapshots
# VDB snapshots
dct-toolkit get_vdb_snapshots vdb_id=<VDB_NAME_OR_ID>
# dSource snapshots
dct-toolkit get_dsource_snapshots dsource_id=<DSOURCE_NAME_OR_ID>
# Sort by most recent
dct-toolkit search_snapshots dataset_id=<VDB_OR_DSOURCE_ID> sort=-timestamp --columns=id,timestamp,consistency
# View full details for a specific snapshot
dct-toolkit get_snapshot_by_id snapshot_id=<SNAPSHOT_ID> --json
dct-toolkit returns a maximum of 1000 snapshots per call. Use filter arguments to narrow results, or use the cursor value from response_metadata.next_cursor to paginate.
Take a manual snapshot
dct-toolkit snapshot_vdb vdb_id=<VDB_NAME_OR_ID>
dct-toolkit snapshot_dsource dsource_id=<DSOURCE_NAME_OR_ID>
Manage snapshot retention
If a future expiration date is set, automatic cleanup will not run against that snapshot.
# Set a specific expiration date
dct-toolkit update_snapshot snapshot_id=<SNAPSHOT_ID> expiration=2026-12-31T12:00:00Z
# Keep indefinitely
dct-toolkit update_snapshot snapshot_id=<SNAPSHOT_ID> --retain_forever
Delete a snapshot
dct-toolkit delete_snapshot snapshot_id=<SNAPSHOT_ID>
Deleting a snapshot does not immediately reclaim storage if it is referenced by a bookmark or VDB. Use the Engine Storage Report to understand snapshot dependencies before deleting.
Working with bookmarks
Bookmarks are user-created, named points in time. If no snapshot exists at the requested time, one is created automatically. A bookmark can only be created in the past if transaction logs are available or a matching snapshot exists.
Create a bookmark
# Single VDB
dct-toolkit create_bookmark name=<BOOKMARK_NAME> vdb_ids=<VDB_NAME_OR_ID>
# Multiple VDBs (comma-separated)
dct-toolkit create_bookmark name=<BOOKMARK_NAME> vdb_ids=<VDB1>,<VDB2>
# With additional options
dct-toolkit create_bookmark \
name="Release_v2.5.0" \
vdb_ids=Oracle_DEV \
retention=180 \
bookmark_type=PRIVATE \
tags='Team=Alpha','Quarter=Q4'
The retention value is relative to the creation date. To set an absolute expiration after creation, use update_bookmark with an expiration date.
Share a bookmark
Bookmarks are private by default. Making one public allows it to be used by any VDB within the shared lineage.
dct-toolkit update_bookmark bookmark_id=<BOOKMARK_NAME_OR_ID> bookmark_type=PUBLIC
dct-toolkit update_bookmark bookmark_id=<BOOKMARK_NAME_OR_ID> bookmark_type=PRIVATE
List and search bookmarks
# All bookmarks
dct-toolkit get_bookmarks
# Bookmarks for a specific VDB
dct-toolkit get_bookmarks_by_vdb vdb_id=<VDB_NAME_OR_ID>
# Search with filters
dct-toolkit search_bookmarks --columns=id,name,creation_date,bookmark_type,bookmark_status
# View full details
dct-toolkit get_bookmark_by_id bookmark_id=<BOOKMARK_NAME_OR_ID> --json
Update a bookmark
# Extend expiration
dct-toolkit update_bookmark bookmark_id=<BOOKMARK_NAME_OR_ID> expiration=2026-10-20T12:00:00Z
# Rename
dct-toolkit update_bookmark bookmark_id=<BOOKMARK_NAME_OR_ID> name="New_Name"
Tag bookmarks
# Add tags
dct-toolkit create_bookmark_tags bookmark_id=<BOOKMARK_ID> tags='Release=2.5.0','Team=QA','Quarter=Q4'
# View tags
dct-toolkit get_bookmark_tags bookmark_id=<BOOKMARK_ID>
# Delete tags
dct-toolkit delete_bookmark_tags bookmark_id=<BOOKMARK_ID> delete_tags='<KEY>'
Delete a bookmark
dct-toolkit delete_bookmark bookmark_id=<BOOKMARK_NAME_OR_ID>
Deleting a bookmark does not guarantee deletion of the underlying snapshots. The snapshot may remain available based on its own retention policy. Use the Engine Storage Report to manage storage reclamation.
Workflow examples
QA approval process
# QA testing complete — create and tag a bookmark
dct-toolkit create_bookmark name="QA_Approved_Sprint_24" vdb_ids=Oracle_QA,MSSQL_QA
dct-toolkit create_bookmark_tags bookmark_id="QA_Approved_Sprint_24" tags='Sprint=24','Status=Approved'
# Share with the team
dct-toolkit update_bookmark bookmark_id="QA_Approved_Sprint_24" bookmark_type=PUBLIC
# Dev refreshes to QA baseline
dct-toolkit refresh_vdb_from_bookmark vdb_id=Oracle_DEV bookmark_id="QA_Approved_Sprint_24"
Release management
# Before release
dct-toolkit snapshot_dsource dsource_id=Oracle_PROD
dct-toolkit create_bookmark name="Pre_Release_v2.6.0" vdb_ids=Oracle_PROD retention=365
dct-toolkit update_bookmark bookmark_id="Pre_Release_v2.6.0" bookmark_type=PUBLIC
# After successful release
dct-toolkit snapshot_dsource dsource_id=Oracle_PROD
dct-toolkit create_bookmark name="Release_v2.6.0" vdb_ids=Oracle_PROD retention=365
dct-toolkit create_bookmark_tags bookmark_id="Release_v2.6.0" tags='Version=2.6.0','Type=Release'
Troubleshooting
| Issue | Resolution |
|---|---|
| Bookmark not visible | The bookmark may be private. Check with get_bookmarks --columns=id,name,bookmark_type and make it public if needed. |
| Manual snapshot not appearing | Check recent job status with get_jobs --columns=id,status,type,target_name sort=-start_time and verify the VDB is in a running state. |
| Bookmark refresh fails | Verify the bookmark exists with get_bookmark_by_id, confirm the VDB is compatible using get_bookmarks_by_vdb, and check that the VDB is running. |