Python Oracle Scripts for Rubrik Security Cloud
This directory contains Python scripts that replicate the functionality of the shell scripts for managing Oracle databases in Rubrik Security Cloud (RSC).
Setup
-
Create and activate virtual environment:
python3 -m venv venv source venv/bin/activate -
Install dependencies:
pip install -r requirements.txt -
Copy and configure credentials:
cp rsc.json.example rsc.json # Edit rsc.json with your actual client_id, client_secret, and access_token_uri
Scripts
clone_oracle_database.py
Clones an Oracle database to a target host using Rubrik Security Cloud. This replicates the functionality of rsc_clone.sh.
Usage:
python clone_oracle_database.py -n <newname> -o <optionsfile> --targethost <targethost> [options] <srcdb>
Required Arguments:
-n, --newname: Database name/SID of the new cloned or live mounted database-o, --optionsfile: Path to options file containing Oracle parameters--targethost: Target host where the database will be created<srcdb>: Source database name or RSC database ID
Optional Arguments:
-s, --sourcehost: Source host (when there are multiple databases with the same name)-t, --timestamp: Recovery point timestamp in format "YYYY-MM-DD HH:MM:SS"-d, --dryrun: Show configuration without executing the operation--livemount: Create a live mount instead of a clone-c, --channels: Number of RMAN channels for the operation-p, --pfile: Custom pfile path (must be absolute path)
Examples:
# Basic clone with latest PIT
python clone_oracle_database.py -n NEWDB -o options.txt --targethost target-host SHED
# Live mount instead of clone
python clone_oracle_database.py -n LIVEMOUNT -o options.txt --targethost target-host --livemount SHED
# Clone with specific timestamp
python clone_oracle_database.py -n NEWDB -o options.txt --targethost target-host -t "2025-11-14 15:30:00" SHED
# Clone with source host disambiguation
python clone_oracle_database.py -n NEWDB -o options.txt --targethost target-host -s source-host SHED
# Dry run to see configuration
python clone_oracle_database.py -n NEWDB -o options.txt --targethost target-host --dryrun SHED
# Clone with custom RMAN channels
python clone_oracle_database.py -n NEWDB -o options.txt --targethost target-host -c 4 SHED
Options File Format: The options file contains Oracle initialization parameters. Example:
CONTROL_FILES='/u01/app/oracle/oradata/NEWDB/control01.ctl, /u01/app/oracle/fast_recovery_area/NEWDB/control02.ctl'
DB_FILE_NAME_CONVERT='SHED','NEWDB'
DB_CREATE_FILE_DEST=/u01/app/oracle/oradata/NEWDB/
AUDIT_FILE_DEST='/u01/app/oracle/admin/NEWDB/adump'
Features:
- Clone or Live Mount: Choose between creating a persistent clone or temporary live mount
- Automatic latest Point-in-Time (PIT) detection when no timestamp specified
- Host ID resolution for target hosts
- Comprehensive error handling and validation
- Job status monitoring with progress updates
- Dry-run mode for testing configurations
list_db_snapshots.py
Lists snapshots and recovery ranges available for a specific Oracle database, including distribution across source, replicated, and archived locations.
Usage:
python list_db_snapshots.py <database_name_or_id>
Examples:
python list_db_snapshots.py SHED
python list_db_snapshots.py b4194205-b7d6-5f0b-8360-e6f349b9fd82
This script will display:
- Database information (name, ID, cluster, host)
- Recoverable ranges (time periods when the database can be recovered)
- Snapshot Distribution: Shows where backups are stored:
- Local (Source): Backups on the original cluster
- Replicated: Backups replicated to other clusters
- Archived: Backups stored in archival locations
- Missed recoverable ranges (gaps in coverage)
Note: If multiple databases have the same name, the script will list them and ask you to specify the database ID instead.
introspect_schema.py
Explores the GraphQL schema dynamically using GraphQL introspection.
Usage:
# Explore Oracle-related types
python introspect_schema.py
# Get detailed info about a specific type
python introspect_schema.py OracleDatabase
Modules
rsc_auth.py: Handles authentication with RSC using OAuth2 client credentialsrsc_graphql.py: Provides a client for making GraphQL queries to RSC, including schema introspection capabilities
Notes
- Tokens are cached securely in
~/.rbkRscsession.*files - The scripts use the same GraphQL queries as the shell scripts
- Error handling includes GraphQL error checking