2025-10-08 04:00:04 -04:00
2025-10-03 06:06:30 -04:00
2025-10-07 05:20:19 -04:00
2025-10-03 10:09:04 -04:00
2025-10-03 06:06:30 -04:00
2025-10-03 06:06:30 -04:00
2025-10-03 10:15:23 -04:00
2025-10-08 04:00:04 -04:00

Oracle Clone Script

This script (oracle_clone.sh) performs a clone of an Oracle database using the Rubrik CDM API. it integrates with the scripting already present at Die Mobiliar for orchestrating Oracle backup and recovery management.

Usage

./oracle_clone.sh [options] <srcSID> <tgtHOSTNAME>
  • <srcSID>: Source Oracle database SID.
  • <tgtHOSTNAME>: Target hostname for the clone.

Options

  • -h <dbhost> Source DB hostname (if source SID is not unique)
  • -t <timestamp> Recovery point timestamp ("YYYY-MM-DD HH:MM:SS", uses latest if not specified)
  • -n <newsid> New database SID for the clone
  • -p <pfilepath> Custom pfile for the clone
  • -a <key,value> Advanced Cloning Options (can be used multiple times)
  • -b <pdb1,pdb2> Comma-separated list of PDBs to clone (include only these PDBs. PDB$SEED is always included)
  • -c <channels> Number of RMAN channels to use (sets numChannels in the API payload)
  • -d Dry run mode - show API payload without executing

Configuration (rbk_api.conf)

Before running the script, you must configure Rubrik API access in the rbk_api.conf file (located in the same directory). This file should define the following variables:

  • RUBRIK_IP: The IP address or DNS name of your Rubrik CDM cluster.
  • ID: The service account ID or user credential for API authentication.
  • SECRET: The secret or password for the service account/user.
  • RSC_HOST: API endpoint host for SLA modification and other GraphQL calls

Example rbk_api.conf:

RUBRIK_IP=<cdm IP address>
ID="client|your-service-account-id"
SECRET=your-service-account-secret
RSC_HOST=customername.my.rubrik.com

Note: Do not share your rbk_api.conf file or secrets publicly.

Notes

  • The script requires access to the Rubrik API and expects the supporting functions oracle_funcs.sh to be present in the same directory.
  • Time is passed to date on the local machine and uses the local timezone.
  • If -b is specified, the script will print the list of PDBs included in the clone.
  • The -c option allows you to specify the number of RMAN channels to use for the clone operation. This is passed as numChannels in the API payload.

Example

./oracle_clone.sh -h dbhost01 -t "2024-06-01 12:00:00" -n CLONE01 -b PDB1,PDB2 -c 8 orcl targethost

This will clone the orcl database from dbhost01 to targethost, using the specified timestamp, new SID CLONE01, only include PDB$SEED, PDB1, and PDB2, and use 8 RMAN channels for the operation.

./oracle_clone.sh -n CLNONE -a AUDIT_FILE_DEST,/u01/app/oracle/admin/CLNONE/adump \
    -a DB_FILE_NAME_CONVERT,"'SHED','CLNONE'" -a DB_CREATE_FILE_DEST,/u01/app/oracle/oradata/CLNONE/ \
    -a CONTROL_FILES,"'/u01/app/oracle/oradata/CLNONE/control01.ctl, /u01/app/oracle/fast_recovery_area/CLNONE/control02.ctl'" \
    -b PDBXYZ,PDBABC SHED pve-ora19c-3

Uses the latest available Point-in-Time of the source SHED and clones to a new database CLNONE on the target host pve-ora19c-3. The Advanced Cloning Options are present:

AUDIT_FILE_DEST = /u01/app/oracle/admin/CLNONE/adump
DB_FILE_NAME_CONVERT = 'SHED','CLNONE'
DB_CREATE_FILE_DEST = /u01/app/oracle/oradata/CLNONE/
CONTROL_FILES = '/u01/app/oracle/oradata/CLNONE/control01.ctl, /u01/app/oracle/fast_recovery_area/CLNONE/control02.ctl'

Additionally, only PDBs PDBXYZ and PDBABC will be cloned.

Description
No description provided
Readme 90 KiB
Languages
Shell 100%