Oracle use cases for APIs
Oracle link + snapshot (sync)
The following script ingests links an environment database dSource (Oracle SID / Instance) and then takes a snapshot. See parameters for required values that you must provide.
This script demonstrates how to use name values inputs and get the respective Delphix object and/or object reference for use in the json input in downstream API calls.
Filename: link_oracle.sh # or link_oracle_jq.sh
Edit the file to update the parameters as required for your environment.
##########################################################
Parameter Initialization
DMIP=172.16.160.195
#DMPORT=8282
DMUSER=delphix_admin
DMPASS=delphix
# Required for Database Link and Sync
SOURCE_SID="DPXDEV01" # Source Environment Database SID
SOURCE_NAME="DPXDEV01" # Delphix dSource Name
SOURCE_ENV="Oracle Target" # Source Environment Name
SOURCE_GRP="Oracle_Source" # Delphix Group Name
DB_USER="delphixdb" # Source Database SID user account
DB_PASS="delphixdb" # Source Database SID user password
##########################################################
NO CHANGES REQUIRED BELOW THIS POINT
##########################################################
$ ./link_oracle.sh # or
# ./link_oracle_jq.sh
Authenticating on http://172.16.160.195/resources/json/delphix
Session and Login Successful ...
group reference: GROUP-35
sourceconfig reference: ORACLE_SINGLE_CONFIG-1
primaryUser reference: HOST_USER-3
Linking Source Database ...
Job: JOB-92
Job: JOB-92 100.0% Completed ...
Container: ORACLE_DB_CONTAINER-19
Running SnapSync ...
Job: JOB-93
Current status as of Mon Aug 15 13:07:53 EDT 2016: RUNNING: 0.0% Completed
Current status as of Mon Aug 15 13:08:03 EDT 2016: RUNNING: 15.0% Completed
Current status as of Mon Aug 15 13:08:13 EDT 2016: RUNNING: 35.0% Completed
Current status as of Mon Aug 15 13:08:24 EDT 2016: RUNNING: 59.0% Completed
Current status as of Mon Aug 15 13:08:34 EDT 2016 : RUNNING : 66.0% Completed
Current status as of Mon Aug 15 13:08:44 EDT 2016 : RUNNING : 74.0% Completed
Job: JOB-93 100.0% Completed ... Done ...
Oracle provision
Filename: provision_oracle.txt
Shown below is how to use the CLI to provision an Oracle 11g database that is already ingested into the Delphix Engine.
The key is to get the object reference names first. For example, to get the source database container name:
ssh delphix_admin@[delphix_engine_ip_address_or_hostname]
> database
> ls
> select "[database_name]"
> ls
Delphix5002HWv7 database
> select 'DPXDEV01'
Delphix5002HWv7 database 'DPXDEV01'
> ls
Properties
type: OracleDatabaseContainer
name: DPXDEV01
...
reference: ORACLE_DB_CONTAINER-18
...
Minimum parameters required to provision:
Delphix5002HWv7 database provision
> *commit
=== POST /resources/json/delphix/database/provision ===
{
"type": "OracleProvisionParameters",
"container": {
"type": "OracleDatabaseContainer",
"name": "VBITT", # Delphix Object Name, Typically matches VDB name
"group": "GROUP-36" # group ls select "[group_name]" ls
},
"source": {
"type": "OracleVirtualSource",
"mountBase": "/mnt/provision" # Delphix Filesystem Mount path
},
"sourceConfig": {
"type": "OracleSIConfig",
"repository": "ORACLE_INSTALL-3", # repository, select "[repository_name]"
"databaseName": "VBITT", # New VDB Name
"uniqueName": "VBITT",
"instance": {
"type": "OracleInstance",
"instanceName": "VBITT",
"instanceNumber": 1
}
},
"timeflowPointParameters": {
"type": "TimeflowPointSemantic",
"container": "ORACLE_DB_CONTAINER-18" # select "[database_name]" ls
}
}
=== RESPONSE ===
Sample CLI session
Delphix5002HWv7 database> setopt trace=false
Delphix5002HWv7 database> provision
Delphix5002HWv7 database provision > *ls
Properties
type: OracleProvisionParameters
container:
type: OracleDatabaseContainer
name: (required)
description: (unset)
diagnoseNoLoggingFaults: true
group: (required)
performanceMode: DISABLED
preProvisioningEnabled: false
sourcingPolicy: (unset)
credential: (unset)
maskingJob: (unset)
newDBID: false
openResetlogs: true
physicalStandby: false
source:
type: OracleLiveSource
name: (unset)
archivelogMode: true
config: (unset)
configParams: (unset)
configTemplate: (unset)
customEnvVars: (unset)
dataAgeWarningThreshold: 900sec
fileMappingRules: (unset)
manualProvisioning: false
mountBase: (required)
nodeListenerList: (unset)
operations: (unset)
redoLogGroups: 3
redoLogSizeInMB: 0
sourceConfig:
type: OraclePDBConfig
cdbConfig: (required)
databaseName: (required)
environmentUser: (unset)
linkingEnabled: true
repository: (unset)
services: (unset)
timeflowPointParameters:
type: TimeflowPointSemantic
container: (required)
location: LATEST_POINT
username: (unset)
OperationsdefaultsDelphix5002HWv7 database provision > *edit container
Delphix5002HWv7 database provision container> *ls
Properties
type: OracleDatabaseContainer
name: (required)
description: (unset)
diagnoseNoLoggingFaults: true
group: (required)
performanceMode: DISABLED
preProvisioningEnabled: false
sourcingPolicy: (unset)
Delphix5002HWv7 database provision container> *set name=VBITT
Delphix5002HWv7 database provision container> *set group=GROUP-36
Delphix5002HWv7 database provision container> *back
Delphix5002HWv7 database provision > *edit source
Delphix5002HWv7 database provision source > *ls
Properties
type: OracleLiveSource
name: (unset)
archivelogMode: true
config: (unset)
configParams: (unset)
configTemplate: (unset)
customEnvVars: (unset)
dataAgeWarningThreshold: 900sec
fileMappingRules: (unset)
manualProvisioning: false
mountBase: (required)
nodeListenerList: (unset)
operations: (unset)
redoLogGroups: 3
redoLogSizeInMB: 0
Delphix5002HWv7 database provision source > *set type=OracleVirtualSource
Delphix5002HWv7 database provision source > *set mountBase=/mnt/provision
Delphix5002HWv7 database provision source > *back
Delphix5002HWv7 database provision > *edit sourceConfig
Delphix5002HWv7 database provision sourceConfig > *ls
Properties
type: OraclePDBConfig
cdbConfig: (required)
databaseName: (required)
environmentUser: (unset)
linkingEnabled: true
repository: (unset)
services: (unset)
Delphix5002HWv7 database provision sourceConfig > *set type=OracleSIConfig
Delphix5002HWv7 database provision sourceConfig > *ls
Properties
type: OracleSIConfig
databaseName: (required)
environmentUser: (unset)
instance: (required)
linkingEnabled: true
nonSysCredentials: (unset)
nonSysUser: (unset)
repository: (required)
services: (unset)
uniqueName: (required)
Delphix5002HWv7 database provision sourceConfig > *set databaseName=VBITT
Delphix5002HWv7 database provision sourceConfig > *set repository=ORACLE_INSTALL-3
Delphix5002HWv7 database provision sourceConfig > *set uniqueName=VBITT
Delphix5002HWv7 database provision sourceConfig > *set instance.instanceName=VBITT
Delphix5002HWv7 database provision sourceConfig > *set instance.instanceNumber=1
Delphix5002HWv7 database provision sourceConfig > *ls
Properties
type: OracleSIConfig
databaseName: VBITT
environmentUser: (unset)
instance:
type: OracleInstance
instanceName: VBITT
instanceNumber: 1
linkingEnabled: true
nonSysCredentials: (unset)
nonSysUser: (unset)
repository: '/u02/ora/app/product/11.2.0/dbhome_1'
services: (unset)
uniqueName: VBITT
Delphix5002HWv7 database provision sourceConfig > *back
Delphix5002HWv7 database provision > *edit timeflowPointParameters
Delphix5002HWv7 database provision timeflowPointParameters> *ls
Properties
type: TimeflowPointSemantic
container: (required)
location: LATEST_POINT
Delphix5002HWv7 database provision timeflowPointParameters> *set container=ORACLE_DB_CONTAINER-18
Delphix5002HWv7 database provision timeflowPointParameters> *back
Delphix5002HWv7 database provision > *commit
VBITT
Dispatched job JOB-348
DB_PROVISION job started for "Oracle Target Virtual Databases/VBITT".
Starting provision of the virtual database "VBITT".
Creating new TimeFlow.
Generating recovery scripts.
Exporting storage.
Mounting filesystems for the virtual database instance "1".
Mounting read-only archive log filesystem for the virtual database instance "1".
Recovering Oracle database.
\|/-
Opening the virtual database "VBITT".
Opening Oracle database.
Oracle recovery was successful.
Unmounting read-only archive log filesystem for the virtual database instance "1".
The virtual database "VBITT" was successfully provisioned.
DB_PROVISION job for "Oracle Target Virtual Databases/VBITT" completed successfully.
Delphix5002HWv7 database>
With the setopt trace=true option set, you can convert the JSON output from the above CLI provision command to the RESTful API cURL commands. If VBITT exists, be sure to delete it first.
Request:
curl X POST -k --data @http://172.16.160.177/resources/json/delphix/database/provision \
-b cookies.txt -H "Content-Type: application/json" <<EOF
{
"type": "OracleProvisionParameters",
"container": {
"type": "OracleDatabaseContainer",
"name": "VBITT",
"group": "GROUP-36"
},
"source": {
"type": "OracleVirtualSource",
"mountBase": "/mnt/provision"
},
"sourceConfig": {
"type": "OracleSIConfig",
"repository": "ORACLE_INSTALL-3",
"databaseName": "VBITT",
"uniqueName": "VBITT",
"instance": {
"type": "OracleInstance",
"instanceName": "VBITT",
"instanceNumber": 1
}
},
"timeflowPointParameters": {
"type": "TimeflowPointSemantic",
"container": "ORACLE_DB_CONTAINER-18"
}
}
EOF
Response:
{
"type": "OKResult",
"status": "OK",
"result": "ORACLE_DB_CONTAINER-22",
"job": "JOB-353",
"action": "ACTION-649"
}
Put all the commands above within a shell script to automate the complete process of provisioning an Oracle 11.2.0.4 database.
Filename: provision_oracle.sh# or provision_oracle_jq.sh
Edit the file to update the parameters as required for your environment.
###################### DELPHIX CORP #######################
Parameter Initialization
DMIP=172.16.160.195
DMUSER=delphix_admin
DMPASS=delphix
COOKIE="~/cookies.txt"
COOKIE=`eval echo $COOKIE`
CONTENT_TYPE="Content-Type: application/json"
DELAYTIMESEC=10
BaseURL="http://${DMIP}/resources/json/delphix"
# Required for Database Link and Sync ...
# VDB_NAME="VBITT" # Delphix VDB Name
MOUNT_BASE="/mnt/provision" # Delphix Engine Mount Path
SOURCE_GRP="Oracle_Target" # Delphix Engine Group Name
TARGET_ENV="Oracle Target" # Target Environment used to get repository reference value
SOURCE_SID="DPXDEV01" # dSource name used to get db container reference value
##############################################
NO CHANGES REQUIRED BELOW THIS POINT
##############################################
Sample Output
$ ./provision_oracle.sh
# or ./provision_oracle_jq.sh
Authenticating on http://172.16.160.195/resources/json/delphix
Session and Login Successful ...
group reference: GROUP-36
container reference: ORACLE_DB_CONTAINER-36
env reference: UNIX_HOST_ENVIRONMENT-3
repository reference: ORACLE_INSTALL-1
Provisioning VDB from Source Database ...
Job: JOB-155
Current status as of Mon Aug 15 23:40:51 EDT 2016 : RUNNING 0.0% Completed
Current status as of Mon Aug 15 23:40:51 EDT 2016 : RUNNING 0.0% Completed
Current status as of Mon Aug 15 23:41:01 EDT 2016 : RUNNING 9.0% Completed
Current status as of Mon Aug 15 23:41:11 EDT 2016 : RUNNING 45.0% Completed
Current status as of Mon Aug 15 23:41:21 EDT 2016 : RUNNING 45.0% Completed
Current status as of Mon Aug 15 23:41:31 EDT 2016 : RUNNING 46.0% Completed
Current status as of Mon Aug 15 23:41:41 EDT 2016 : RUNNING 48.0% Completed
Current status as of Mon Aug 15 23:41:51 EDT 2016 : RUNNING 60.0% Completed
Job: JOB-155 COMPLETED 100.0% Completed ... Done ...
$
Filename: provision_oracle_child.sh# or provision_oracle_child_jq.sh
$ ./provision_oracle_child.sh
# or ./provision_oracle_child_jq.sh
Authenticating on http://172.16.160.195/resources/json/delphix
Session and Login Successful ...
group reference: GROUP-36
container reference: ORACLE_DB_CONTAINER-118
env reference: UNIX_HOST_ENVIRONMENT-9
repository reference: ORACLE_INSTALL-6
Provisioning VDB from Source Database ...
Job: JOB-857
Current status as of Mon Sep 5 22:48:28 EDT 2016 : RUNNING 0.0% Completed
Current status as of Mon Sep 5 22:48:28 EDT 2016 : RUNNING 0.0% Completed
Current status as of Mon Sep 5 22:48:38 EDT 2016 : RUNNING 9.0% Completed
Current status as of Mon Sep 5 22:48:48 EDT 2016 : RUNNING 27.0% Completed
Current status as of Mon Sep 5 22:48:58 EDT 2016 : RUNNING 42.0% Completed
Current status as of Mon Sep 5 22:49:08 EDT 2016 : RUNNING 45.0% Completed
Current status as of Mon Sep 5 22:49:28 EDT 2016 : RUNNING 46.0% Completed
Current status as of Mon Sep 5 22:49:38 EDT 2016 : RUNNING 48.0% Completed
Current status as of Mon Sep 5 22:49:48 EDT 2016 : RUNNING 51.0% Completed
Current status as of Mon Sep 5 22:50:08 EDT 2016 : RUNNING 71.0% Completed
Job: JOB-857 COMPLETED 100.0% Completed ... Done ...