4.6 KiB
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