4.8 KiB
Executable File
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.
Recommended Command
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:
datasafe_registeredadb_time_createdadb_compartment_nameadb_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-regionscan take a long time in tenancies with many compartments.- Use
--workersconservatively if the tenancy hits API throttling. - Use
--no-progressto disable the terminal progress bar. - Use
--format jsonto export JSON instead of CSV. - By default, terminated Autonomous Databases and deleted Data Safe targets are excluded.