GoldenGate 自动化初始数据

来源:这里教程网 时间:2026-03-03 11:58:32 作者:

  针对于上次《GoldenGate 自动化初始数据》过程中,存在的不适合场景,调整脚本,并对脚本进行优化,源端包括ogg_expdp.sh,目标端包括stop_rep.sh和ogg_impdp.sh  ogg_expdp.sh首先检查ogg抽取进程是否正常,正常则导出数据,否则重置抽取时间,启动抽取进程。  stop_rep.sh停止rep进程。  ogg_impdp.sh首先检查rep进程是否运行,运行则退出执行提示先执行stop_rep.sh,未运行则导入数据后启动复制。 stop_rep.sh脚本内容如下: #!/bin/bash ggsci=/ogghome/goldengate/ggsci echo 'kill rep_rep_cs' | $ggsci if [ $? -ne 0 ]; then    echo "Stop rep_rep_cs is failed, Please use ggsci check rep_rep_cs status" else    echo "Rep_rep_cs has been stop!!! " fi ogg_impdp.sh脚本内容如下: #!/bin/bash ##used for impdp connect=gaoyc/gaoyc_123 prefile=ogg_gaoyc diry=expdp_dir dmp_dir=/orabak/expdp ggsci=/ogghome/goldengate/ggsci ogg_dir=/ogghome/goldengate ##check rep_rep_cs status echo "First check rep_rep_cs is running......" rep_stats=`echo 'status rep_rep_cs' | $ggsci | grep REP_TZDB | awk -F ':' {'print $2'} |grep -o "[^ ]\+\+[]\+\+[]\+*"` echo "rep_rep_cs status is : $rep_stats" function exit_script() {     exit 1 } if [ "$rep_stats" == "RUNNING" ]; then       echo "rep_rep_cs is running, Please stop rep_rep_cs, then expdp "       echo "Please execute stop_ogg.sh,ogg_expdp.sh first"       exit_script else         echo "rep_status was stoped, continue" fi echo "Drop tables " sqlplus -s / as sysdba<<EOF truncate table gaoyc.t1; truncate table gaoyc.t2; ...... truncate table gaoyc.ogg_test; exit EOF if [ $? -eq 0 ]; then    echo "tables has been droped" else    echo "exit scripts, please check error"    exit_script fi echo "Begin import talbes" cd $dmp_dir csn=`cat $prefile.log | grep  -i flashback_s | awk -F '=' {'print $5'} | awk {'print $1'}` echo "scn: $csn" impdp $connect directory=$diry dumpfile=$prefile.dmp logfile=$prefile_imp.log INCLUDE=TABLE_DATA if [ $? -eq 0 ]; then           echo "tables has been imported"         else           echo "tables failed to import"           exit_script         fi rm $prefile* cd $ogg_dir commd="start rep_rep_cs,  ATCSN $csn" echo $commd echo $commd | $ggsci ogg_expdp.sh脚本内容如下: #!/bin/bash # Used for expdp and ftp BACKUPDIRECTORY=/orabak/expdp REMOTE_DIR=/orabak/expdp connect=gaoyc/Gaoyc_123 prefile=ogg_gaoyc diry=expdp_dir ggsci=/ogghome/goldengate/ggsci #used for check ext_cs and restart ext_cs echo "First check ext_cs is running??" ext_stats=`echo 'status ext_cs' | $ggsci | grep EXT_TZDB | awk -F ':' {'print $2'} |grep -o "[^ ]\+\+[]\+\+[]\+*"` echo $ext_stats function exit_script() {     exit 1 } function change_ext_cs() {    echo "Begin Chhange ext_cs extract time"    echo 'alter ext_cs, begin now' | $ggsci    if [ $? -eq 0 ]; then       echo "Ext_cs has been changed!!!!!!"    else       echo "Ext_cs has changed failed, please check info using ggsci"       exit_script    fi    echo 'start ext_cs' | $ggsci    if [ $? -eq 0 ]; then       echo "Ext_cs has been started!!!!"    else       echo "Ext_Tzdb started failed, Please check info"       exit_script    fi } if [ "$ext_stats" == "RUNNING" ]; then         echo 'kill ext_cs' | $ggsci         if [ $? -eq 0 ]; then           echo "Ext_cs has been stoped!!!!"           change_ext_cs         else           echo "Ext_cs stop was failed!!!!!!"           exit_script         fi         echo "Ext_staus is running !!!!" else         echo "Ext_status is not running!!!!"         change_ext_cs fi ###Used for used for expdp tables echo "Begin expdp tables" fcn=`sqlplus -S / as sysdba <<EOF  select  'curnt_scn:'||dbms_flashback.get_system_change_number scn from dual;  exit  EOF` fsn=`echo $fcn | awk -F ':' {'print $2'}` echo "SCN: $fsn" expdp $connect directory=$diry dumpfile=$prefile.dmp logfile=$prefile.log flashback_scn=$fsn tables=t1,t2,ogg_test echo "Expdp has been Successfull!!!" ftp -n<<EOF open 192.168.1.61 user oracle oracle cd $REMOTE_DIR lcd $BACKUPDIRECTORY prompt off bin mput $prefile* bye EOF echo "Dump is send to   192.168.1.61 " cd $BACKUPDIRECTORY rm $prefile* echo "Dump is deleted"

相关推荐