In a few days I will give a presentation at UKOUG Tech15 about Global Data Services, it will be the first time that I present this session.
I usually like to give the link to the material to my audience, so here we go:
Credits
I have to give special credits to my colleague Robert Bialek. I’ve got a late confirmation for this session and my slide deck was not ready at all, so I have used a big part of his original work. Most of the content included in the slides has been created by Robert, not me. (Thank you for your help! :-))
Slides
Demo recording
Demo script
clear function db { export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin } function gsm { export ORACLE_HOME=/u01/app/oracle/product/12.1.0/gsmhome_1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin } db echo "#### CURRENT CONFIGURATION: CLASSIC DATA GUARD, 3 DATABASES ####" dgmgrl -echo sys/password1@oltp_de <<EOF show configuration EOF echo "next: GSM config" read -p "" gsm echo "#### GSM CONFIGURATION ####" echo "GDS COMMAND: config" gdsctl <<EOF connect gsm_admin/password1@gsm1 config exit EOF echo "next: ADD GDSPOOL" read -p "" echo "#### ADD GDSPOOL ####" echo "GDS COMMAND: add gdspool -gdspool sales" gdsctl <<EOF connect gsm_admin/password1@gsm1 add gdspool -gdspool sales exit EOF echo "next: ADD BROKERCONFIG" read -p "" echo "#### ADD BROKERCONFIG ####" echo "GDS COMMAND: add brokerconfig -connect gsm02.trivadistraining.com:1521/oltp_de -pwd password1 -gdspool sales -region germany" gdsctl <<EOF connect gsm_admin/password1@gsm1 add brokerconfig -connect gsm02.trivadistraining.com:1521/oltp_de -pwd password1 -gdspool sales -region germany exit EOF echo "next: config databases" read -p "" echo "#### CONFIG DATABASES ####" echo "GDS COMMAND: config database" gdsctl <<EOF connect gsm_admin/password1@gsm1 config database exit EOF echo "next: modify databases" read -p "" echo "#### MODIFY DATABASES ####" echo "GDS COMMAND: modify database -database oltp_ch1 -region switzerland modify database -database oltp_ch2 -region switzerland " gdsctl <<EOF connect gsm_admin/password1@gsm1 modify database -database oltp_ch1 -region switzerland modify database -database oltp_ch2 -region switzerland config database exit EOF echo "next: add service read/write" read -p "" echo "#### ADD SERVICE R/W ####" echo "GDS COMMAND: add service -gdspool sales -service gsales_rw -role primary -preferred_all -failovertype SELECT -failovermethod BASIC -failoverretry 5 -failoverdelay 3 -locality LOCAL_ONLY -region_failover start service -service gsales_rw services" gdsctl <<EOF connect gsm_admin/password1@gsm1 add service -gdspool sales -service gsales_rw -role primary -preferred_all -failovertype SELECT -failovermethod BASIC -failoverretry 5 -failoverdelay 3 -locality LOCAL_ONLY -region_failover start service -service gsales_rw services exit EOF echo "next: ADD SERVICE R/O" read -p "" echo "#### ADD SERVICE R/O ####" echo "GDS COMMAND: add service -gdspool sales -service gsales_ro -role PHYSICAL_STANDBY -failover_primary -lag 20 -preferred_all -failovertype SELECT -failovermethod BASIC -failoverretry 5 -failoverdelay 3 -locality LOCAL_ONLY -region_failover start service -service gsales_ro services " gdsctl <<EOF connect gsm_admin/password1@gsm1 add service -gdspool sales -service gsales_ro -role PHYSICAL_STANDBY -failover_primary -lag 20 -preferred_all -failovertype SELECT -failovermethod BASIC -failoverretry 5 -failoverdelay 3 -locality LOCAL_ONLY -region_failover start service -service gsales_ro services exit EOF echo "next: stop apply ch1 (run cli_ro_short.sh first)" read -p "" db echo "#### STOP APPLY DATA GUARD ON OLTP_CH1 ####" dgmgrl -echo sys/password1@oltp_de <<EOF edit database oltp_ch1 set state='apply-off'; EOF echo "next: gds services" read -p "" gsm echo "#### GDS SERVICES ####" echo "GDS COMMAND: services " gdsctl <<EOF connect gsm_admin/password1@gsm1 services exit EOF echo "next: stop apply ch2 (run cli_ro_short.sh first)" read -p "" db echo "#### STOP APPLY DATA GUARD ON OLTP_CH2 ####" dgmgrl -echo sys/password1@oltp_de <<EOF edit database oltp_ch2 set state='apply-off'; EOF echo "next: gds services" read -p "" gsm echo "#### GDS SERVICES ####" echo "GDS COMMAND: services " gdsctl <<EOF connect gsm_admin/password1@gsm1 services exit EOF echo "next: gds services" read -p "" gsm echo "#### GDS SERVICES ####" echo "GDS COMMAND: services " gdsctl <<EOF connect gsm_admin/password1@gsm1 services exit EOF echo "next: start apply ch1 and ch2" read -p "" db echo "#### START APPLY DATA GUARD ON OLTP_CH1 and OLTP_CH2 ####" dgmgrl -echo sys/password1@oltp_de <<EOF edit database oltp_ch1 set state='apply-on'; EOF echo "sleeping 5" sleep 5 dgmgrl -echo sys/password1@oltp_de <<EOF edit database oltp_ch2 set state='apply-on'; EOF echo "next: gds services" read -p "" gsm echo "#### GDS SERVICES ####" echo "GDS COMMAND: services " gdsctl <<EOF connect gsm_admin/password1@gsm1 services exit EOF echo "next: gds services" read -p "" gsm echo "#### GDS SERVICES ####" echo "GDS COMMAND: services " gdsctl <<EOF connect gsm_admin/password1@gsm1 services exit EOF echo "next: switchover to CH1 (run cli_ro_long.sh and cli_rw_long.sh first)" read -p "" db echo "#### VALIDATE DATABASE OLTP_CH1 ####" dgmgrl -echo sys/password1@oltp_de <<EOF validate database oltp_ch1; EOF echo "next: switchover" read -p "" echo "#### SWITCHOVER TO OLTP_CH1 ####" dgmgrl -echo sys/password1@oltp_de <<EOF switchover to oltp_ch1; EOF echo "next: gds services" read -p ""
And the script to revert the demo:
clear function db { export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin } function gsm { export ORACLE_HOME=/u01/app/oracle/product/12.1.0/gsmhome_1 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin } db dgmgrl -echo sys/password1@oltp_de <<EOF switchover to oltp_de; EOF gsm echo "#### STOP and DELETE SERVICE, REMOVE BROKERCONFIG, REMOVE POOL ####" gdsctl <<EOF connect gsm_admin/password1@gsm1 stop service -service gsales_ro stop service -service gsales_rw remove service -service gsales_ro remove service -service gsales_rw remove brokerconfig remove gdspool -gdspool sales config exit EOF db dgmgrl -echo sys/password1@oltp_de <<EOF show configuration EOF echo "DEMO reverted." read -p ""
Cheers
—
Ludovico