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.
Last updated
Oct 8, 2026