OCI Data Safe ADB Inventory

Inventory tool for Oracle Cloud Infrastructure Autonomous Databases and Oracle Data Safe target registration.

The tool scans Autonomous Databases in an OCI tenancy, region, compartment, or compartment subtree, compares them with Oracle Data Safe target databases, and exports CSV or JSON reports showing whether each database is registered in Data Safe.

Features

  • Inventory Autonomous Databases by region, multiple regions, or all subscribed regions.
  • Limit scans to a specific compartment or recursively scan a compartment subtree.
  • Compare Autonomous Database OCIDs against Oracle Data Safe target databases.
  • Export a consolidated report with datasafe_registered=true/false.
  • Optionally generate separate reports for registered and not registered databases.
  • Show terminal progress with processed compartments and running counts.
  • Retry transient OCI API errors such as throttling (429 TooManyRequests).
  • Support OCI SDK by default, with optional OCI CLI fallback.

Requirements

  • Python 3.9 or later.
  • OCI Python SDK, installed from requirements.txt.
  • An OCI config profile in ~/.oci/config, or OCI instance/resource principal authentication.
  • Permissions to list:
    • IAM compartments
    • Autonomous Databases
    • Oracle Data Safe target databases

Install dependencies:

python3 -m pip install -r requirements.txt

On Windows, use python or py instead of python3 depending on your installation.

Run a scan for one region and generate the consolidated report plus the two split reports:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --workers 3 \
  --retries 8 \
  --retry-base-sleep 5 \
  --split-outputs \
  --output ./adb_datasafe_inventory.csv

Generated files:

  • adb_datasafe_inventory.csv: consolidated inventory.
  • adb_in_datasafe.csv: only Autonomous Databases registered in Data Safe.
  • adb_not_in_datasafe.csv: only Autonomous Databases not registered in Data Safe.

Scan A Specific Compartment

Scan only one compartment:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --compartment-id ocid1.compartment.oc1..example \
  --output ./adb_datasafe_inventory.csv

Scan one compartment and all of its subcompartments recursively:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --compartment-id ocid1.compartment.oc1..example \
  --compartment-subtree \
  --output ./adb_datasafe_inventory.csv

Other Common Options

Scan multiple regions:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --regions sa-saopaulo-1,us-ashburn-1 \
  --output ./adb_datasafe_inventory.csv

Scan all subscribed regions:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --all-regions \
  --output ./adb_datasafe_inventory_all_regions.csv

Generate only registered databases:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --filter registered \
  --output ./adb_in_datasafe.csv

Generate only databases not registered in Data Safe:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --filter not_registered \
  --output ./adb_not_in_datasafe.csv

Reduce API throttling:

python3 ./adb_datasafe_inventory.py \
  --profile DEFAULT \
  --region sa-saopaulo-1 \
  --workers 2 \
  --retries 8 \
  --retry-base-sleep 5 \
  --output ./adb_datasafe_inventory.csv

Output Columns

The first columns in the CSV are:

  1. datasafe_registered
  2. adb_time_created
  3. adb_compartment_name
  4. adb_compartment_path

Additional columns include Autonomous Database identifiers, lifecycle state, workload, compartment OCID, Data Safe target information, and associated target OCIDs.

Scripts

  • adb_datasafe_inventory.py: recommended consolidated inventory script.
  • adb_in_datasafe.py: legacy helper that exports only registered databases.
  • adb_not_in_datasafe.py: legacy helper that exports only databases not registered in Data Safe.
  • oci_datasafe_inventory.py: shared library used by the scripts.

OCI Cloud Shell

In OCI Cloud Shell:

unzip oci-datasafe-adb-inventory.zip
cd oci-datasafe-adb-inventory
python3 -m pip install --user -r requirements.txt

python3 ./adb_datasafe_inventory.py \
  --region sa-saopaulo-1 \
  --workers 3 \
  --retries 8 \
  --retry-base-sleep 5 \
  --split-outputs \
  --output ./adb_datasafe_inventory.csv

Notes

  • --all-regions can take a long time in tenancies with many compartments.
  • Use --workers conservatively if the tenancy hits API throttling.
  • Use --no-progress to disable the terminal progress bar.
  • Use --format json to export JSON instead of CSV.
  • By default, terminated Autonomous Databases and deleted Data Safe targets are excluded.
Description
Python scripts to inventory Autonomous Databases in an OCI tenancy and compare them against Oracle Data Safe targets, showing which databases are registered or not registered. Supports region-based scans, multiple regions, specific compartments, recursive compartment subtree scans, progress tracking, throttling retries, and CSV export.
Readme 45 KiB
Languages
Python 100%