Introducing Oracle Cloud Database Report for Multicloud (OCI/AWS/Azure/GCP)

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/

Simo

Recent Posts

Test you can connect to your OCI Streaming endpoint

This is more of a bookmark/reminder, but I ran into issues where we weren't sure…

7 months ago

Configuring OCI VTAP with Guardian to monitor your OT network

This will probably not be useful post for many but if you ever run into…

9 months ago

Oracle Autonomous Database on GCP – Using gcloud CLI for operations

Continuing testing Oracle Database@Google features, this time I wanted to test provisioning using gcloud CLI…

10 months ago

OCI Networking – Routing Oracle Services Network Public IPs via Service Gateway

This topic keeps coming up and there are many good blog posts from Oracle and…

10 months ago

Can I connect with custom private hostname to my Autonomous Database?

Short answer: Yes! When you deploy your Autonomous Database with a private endpoint, you will…

10 months ago

Using Google Cloud Storage with Autonomous Database@GCP

If you've worked with Autonomous Database previously, you know that every now and then you…

11 months ago