Where the cost comes from
- Backup storage in Object Storage (incremental backups store changed blocks; full backups store everything).
- Retention length and frequency.
- Cross-region copies (storage in the destination region + transfer).
- Manual backups that never expire.
1. Inventory policies and assignments
oci bv volume-backup-policy list --compartment-id $C --query 'data[].{name:"display-name",id:id}' --output table
oci bv volume-backup-policy-assignment get-volume-backup-policy-asset-assignment --asset-id $VOL
Oracle-defined policies (Bronze, Silver, Gold) have fixed schedules. Gold, for example, includes daily, weekly, monthly and yearly backups with long retention. Many tenancies assign Gold everywhere, including dev.
2. Custom policies by tier
| Tier | Example schedule |
|---|---|
| Production critical | Daily incremental 14 d, weekly 8 w, monthly full 12 m; cross-region copy |
| Production standard | Daily incremental 14 d, weekly 4 w |
| Dev/test | Daily incremental 7 d (or none if rebuilt from IaC) |
oci bv volume-backup-policy create --compartment-id $C --display-name prod-standard \
--schedules '[
{"backupType":"INCREMENTAL","period":"ONE_DAY","retentionSeconds":1209600,"timeZone":"REGIONAL_DATA_CENTER_TIME","hourOfDay":1},
{"backupType":"INCREMENTAL","period":"ONE_WEEK","dayOfWeek":"SUNDAY","retentionSeconds":2419200,"timeZone":"REGIONAL_DATA_CENTER_TIME","hourOfDay":2}
]'
Assign policies by tier, ideally through Terraform modules so new volumes get the right one automatically.
3. Incremental vs full
Incremental backups only store blocks changed since the last backup, so they're cheaper and faster. Periodic full backups (e.g. monthly) shorten the restore chain and are independent of earlier backups; use them for long-retention points. Don't schedule daily full backups unless you have a specific reason.
4. Volume groups for consistency
Applications with several volumes (database data + logs) should be backed up as a volume group for crash-consistent, point-in-time backups across volumes. It's a recoverability improvement and avoids extra ad-hoc backups.
5. Cross-region copies only for DR tiers
Backup policies can copy backups to a destination region. Enable it only for systems whose DR plan relies on restoring in another region; others don't need the extra storage and transfer. For databases, application-level replication (Data Guard) may already cover DR.
6. Manual backups
oci bv backup list --compartment-id $C --query \
'data[?"source-type"==`MANUAL` && "expiration-time"==null].{name:"display-name",created:"time-created"}' --output table
Set an expiration on manual backups when creating them (before changes, migrations):
oci bv backup update --volume-backup-id $BKP --expiration-time "2026-12-31T00:00:00Z"
7. Database backups are separate
Base Database, Exadata and Autonomous backups have their own retention settings (and RMAN policies). Review those alongside volume backups. Backing up database volumes and the database itself is double cost with little benefit.
Caution
Cost tuning must not reduce recoverability silently. After changing a policy, restore a volume from each tier and record the result and the time it took.
Checklist
- Policies and assignments inventoried
- Custom tiered policies replacing blanket Gold
- Incremental with periodic full for long retention
- Volume groups for multi-volume applications
- Cross-region copies only for DR tiers
- Manual backups given expiry; database backups reviewed
- Test restores after changes