分散パス・ターゲット変更スクリプトの例
次のスクリプト例を使用すると、ソースのOracle GoldenGateデプロイメント分散のターゲット・アドレスを変更して、Oracle Data Guardロールの移行後の受信側サーバーの新しい場所を反映させることができます。この例では、ソースのOracle GoldenGateデプロイメントがData Guardを使用したMAAアーキテクチャで構成されており、分散サーバーがプライマリ・システムとスタンバイ・システムの間で再配置できることを前提としています。
#!/bin/bash
# change_path_target.sh - changes the target host of a GG Distribution Path
# when the target moves between primary/standby systems.
# Example usage:
# ./change_path_target.sh <primary source VIP>:443 <standby source VIP>:443
# <path target VIP> <path name> <deployment name> <credentials file>
SOURCE1=$1 # PRIMARY Distribution Server VIP
SOURCE2=$2 # STANDBY Distribution Server VIP
TARGET=$3 # Distribution path target VIP
DPATH=$4 # Distribution path name
DEP=$5 # Deployment name
ACCESS=$6 # Config file containing the deployment credentials.
# Example contents:
# user = "oggadmin:<password>"
CONNECT=0
#echo "#${i} - `date`:"
LOGFILE=/tmp/ogg_dpatch_change.txt
result=$(curl -si -K
$ACCESS https://$SOURCE1/$DEP/distsrvr/services/v2/sources/$DPATH
-X GET| grep HTTP | awk '{print $2}')
# Will return NULL of nginx not running, 502 if cannot contact server, 200 if
# contact to server good, and others (404) for other bad reasons:
if [[ -z $result || $result -ne 200 ]]; then # Managed to access the Distr Server
echo "`date` - Couldn't contact Distribution Server at $SOURCE1
Deployment $DEP ****" >> $LOGFILE
else # Try the other source host:
echo "`date` - Got status of Distribution Server at $SOURCE1 Deployment
$DEP ***" >> $LOGFILE
SOURCE=$SOURCE1
CONNECT=1
fi
if [ $CONNECT -eq 1 ]; then
# For secure NGINX patch destination (wss)
PAYLOAD='{"target":{"uri":"wss://'${TARGET}'/services/ggnorth/v2/targets?trail=bb"}}'
curl -s -K $ACCESS https://$SOURCE/$DEP/distsrvr/services/v2/sources/$DPATH
-X PATCH --data '{"status": "stopped"}'
# Set new target for path:
curl -s -K $ACCESS https://$SOURCE/$DEP/distsrvr/services/v2/sources/$DPATH
-X PATCH --data "$PAYLOAD"
echo "`date` - Set path $DPATH on $SOURCE deployment $DEP:" >> $LOGFILE
curl -s -K $ACCESS https://$SOURCE/$DEP/distsrvr/services/v2/sources/$DPATH
-X GET | python -m json.tool | grep uri >> $LOGFILE
curl -s -K $ACCESS https://$SOURCE/$DEP/distsrvr/services/v2/sources/$DPATH
-X PATCH --data '{"status": "running"}'
exit 0
else
echo "`date` - ERROR: COULDN'T CHANGE DISTRIBUTION PATH ($DPATH) in Deployement
$DEP at $SOURCE! ***" >> $LOGFILE
fi
# If here, means we couldn't connect to either Distribution Servers
exit 1