Something new! Whenever I work with specific databases in cloud, I’ve typically had to pull information through CLI and/or via Console. When you have multiple databases or Exadata platforms, it’s gotten to a point that it’s hard to get simple view on what you have and where you are overall.
That’s why I’ve made (with help of AI coding tools) the Oracle Cloud Database Report. It will print out either your full Oracle database estate, or specific types of databases only.
So, if you want to view only information on your Autonomous databases, that’s doable. Similarly, only Exadata and it’s clusters and databases. Yes! Get data only from specific compartment, that works too.
It will pull the data that’s available through OCI API’s, so in this case we don’t get database internals as that would require database connectivity that would be harder to achieve.
The output choices for the report are currently: CSV, JSON, HTML, XLSX and PDF. I would imagine you mostly will require the last three.
Finally, permissions are listed in the README.md in the repository, but on high-level, you will need read access the resources and related resources such as networking to pull everything out.
Installation
Installation is fairly simple, you will need OCI CLI installed on your machine where you want to run it. It will also work directly from Cloud Shell which I’ll use as an example here.
First let’s clone the repository and install requirements.
git clone https://github.com/svilmune/ora-multiclouddbreport/ Cloning into 'ora-multiclouddbreport'... remote: Enumerating objects: 48, done. remote: Counting objects: 100% (48/48), done. remote: Compressing objects: 100% (25/25), done. remote: Total 48 (delta 25), reused 45 (delta 22), pack-reused 0 (from 0) Receiving objects: 100% (48/48), 84.73 KiB | 21.18 MiB/s, done. Resolving deltas: 100% (25/25), done. simo@cloudshell:~ (us-ashburn-1)$ cd ora-multiclouddbreport/ simo@cloudshell:ora-multiclouddbreport (us-ashburn-1)$ pip install -r requirements .... Installing collected packages: Pillow, mdurl, fonttools, defusedxml, markdown-it-py, fpdf2, rich Successfully installed Pillow-11.3.0 defusedxml-0.7.1 fonttools-4.60.2 fpdf2-2.8.4 markdown-it-py-3.0.0 mdurl-0.1.2 rich-14.3.3
After that, we’re ready to run the script!
Running the script
If you give it a flag –help it will display all the options you have. If you have multiple profiles under ~/.oci/config , you can use –profile MYPROFILE to run it against the one you want, if you don’t define it, it will use DEFAULT.
Running help will display the options:
python ora-dbxchecker.py --help
Usage: ora-dbxchecker.py [OPTIONS]
Oracle Database Cloud Report — multi-service OCI database scanner.
Examples:
# Scan all DB types in entire tenancy, output HTML
python ora-dbxchecker.py --tenancy --format html
# Include 7-day CPU/Memory/Storage usage metrics python ora-
dbxchecker.py --tenancy --include-metrics --format html
# Exadata only (backwards compatible) python ora-dbxchecker.py --tenancy
--type exadata --format xlsx
# Single Exadata infrastructure by OCID python ora-dbxchecker.py --ocid
ocid1.cloudexadatainfrastructure.oc1...
# Scan all infras in a compartment tree python ora-dbxchecker.py
--compartment ocid1.compartment.oc1...
# Autonomous DB only python ora-dbxchecker.py --tenancy --type adb
--format xlsx
# Skip database details (faster) python ora-dbxchecker.py --tenancy
--type exadata --nodbinfo
Options:
--ocid TEXT Scan a single Exadata Infrastructure by
OCID.
--compartment TEXT Scan all infras under this compartment
subtree.
--tenancy Scan entire tenancy (default if no
--ocid/--compartment).
--format [text|html|csv|json|xlsx|pdf]
Output format (default: text).
--output PATH Write output to file.
--nodbinfo Skip DB Home/Database/PDB collection.
--profile TEXT OCI config profile name.
--auth [config|instance_principal|resource_principal]
OCI authentication method.
--quiet Suppress informational messages.
--debug Enable debug output.
--type [all|exadata|exascale|adb|basedb]
Limit collection to one database service
type (default: all types). [default: all]
--region TEXT Limit scan to a specific OCI region name
(default: all subscribed regions).
--include-metrics Fetch 7-day CPU/Memory/Storage usage metrics
(slower; requires Monitoring read access).
--show-terminated Include TERMINATED resources in output
(default: hidden).
-h, --help Show this message and exit.
And now if we execute it with HTML flag:
simo@cloudshell:ora-multiclouddbreport (us-ashburn-1)$ python ora-dbxchecker.py --format HTML Scanning tenancy ocid1.tenancy.oc1..aaaa… Found 44 accessible compartments Scanning 2 region(s)… Region us-ashburn-1… Scanning compartments for Exadata infras… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 0 Exadata infrastructure(s) Found 0 AVM cluster(s), 6 serverless ADB(s) Found 13 Base DB system(s) Region us-phoenix-1… Scanning compartments for Exadata infras… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 0 Exadata infrastructure(s) Found 0 AVM cluster(s), 1 serverless ADB(s) Found 5 Base DB system(s) Collected 18 resource(s). Rendering html output… Report written to: /home/simo/ora-multiclouddbreport/oracle_db_report_mytenancy_20260316_123105.html
It will display on number of database resources it found and which regions it scanned, you can also restrict it to a single region if required.
Similar report but with xlsx output on a tenancy with Exadata resources and running it from my laptop (which has different profiles):
(.venv) simo@laptop ora-multiclouddbreport % python3 ora-dbxchecker.py --profile EXA --format xlsx Scanning tenancy ocid1.tenancy.oc1..aaaa... Found 50 accessible compartments Scanning 2 region(s)… Region us-ashburn-1… Scanning compartments for Exadata infras… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 2 Exadata infrastructure(s) Collecting infrastructure details… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 0 AVM cluster(s), 9 serverless ADB(s) Region us-phoenix-1… Scanning compartments for Exadata infras… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 2 Exadata infrastructure(s) Collecting infrastructure details… ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Found 0 AVM cluster(s), 3 serverless ADB(s) Collected 16 resource(s). Rendering xlsx output… Report written to: /opt/ora-multiclouddbreport/oracle_db_report_exatenancy_20260316_083747.xlsx
This time you see it got the Exadata Infrastructure and also Autonomous Databases deployed in the tenancy.
Outputs
If you’re running it from Cloud Shell, you have to download the output files but otherwise, you can just view the file. Let’s take a look on the HTML file!
Report will display first high level topology on Exadata Infrastructure and VM Clusters.

Later on it drills down to specific details of the cluster. For any updates available for cluster (and for databases etc.), those will be displayed as well.

And next the CDB/PDB details of given cluster, I’ve also included connection strings which can be copied for the ease of getting them.

And depending on your tenancy, you will have also other databases like Autonomous Database in my case.

Similarly excel output is available which sometimes is better for reporting/documentation purposes and everything is divided into separate tabs.

Summary
Nothing fancy but the script has helped me quite a lot working with different environments when I’ve had to get detailed info gathered what’s available from database perspective and how everything is configured.
If you end up using it, give it a star and any feedback is welcomed. The repository is here: https://github.com/svilmune/ora-multiclouddbreport/