Oracle GoldenGate on EC2

Here is a sample GoldenGate environment file, feel free to comment about changes or additions


# This should be a .ggora12_env file

# This variable could be used to identify a site
export GG_SITE=01

# This could be used to identify a location
export GG_LOC=CO

# if there is only one DB related to this GG home,
# set NEW_ORACLE_SID to avoid constant switch between a DB env and its GG env
export NEW_ORACLE_SID=MRC01D011; . ~/.std_profile

# otherwise, set NEW_ORACLE_SID to dummy if there are multiple replicated databases related to same GG home
#export NEW_ORACLE_SID=dummy; . ~/.std_profile

# uncomment next three lines if  ORACLE_SID is dummy
# export ORACLE_HOME=/oracle/product/11.2.0/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib/$JAVA_HOME/lib/amd64/server:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

export GGS_HOME=/oracle/product/gg12.1

export PATH=$GGS_HOME:$PATH

# For OEM12c GG monitoring
export JAVA_HOME=/oracle/product/12.1.0/oem_1/agent/core/12.1.0.2.0/jdk/jre
export PATH=$JAVA_HOME/bin:$PATH
# export LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64/server:$LD_LIBRARY_PATH

#############################################
## For GI Agent (XAG)
##############################################
export XAG_HOME=/oracle/product/xag71
export PATH=$XAG_HOME/bin:$PATH

PS1="\\
\${PWD} \\
\${SNAME} [\${ORACLE_SID}] [GG12_site$GG_SITE"_"$GG_LOC]-> "
export PS1

alias ggsora12='. $HOME/.ggsora12_env;cd $GGS_HOME'
alias xag='. $HOME/.ggsora12_env;cd $XAG_HOME'
alias ggstatus='$XAG_HOME/bin/agctl status goldengate testdb01_oggapp'

The heartbeat function in 12.2 is more automated than in previous versions.

Heartbeat Table Issue 12.2 Resolved

GOLDENGATE HA MAA RAC ACFS XAG


#!/bin/bash

###############################
# determine the OS type
###############################
OSNAME=`uname`

case "$OSNAME" in
"SunOS")
echo "OSNAME = $OSNAME"
    ;;
Linux")
echo "OSNAME = $OSNAME"
    ;;
  "*")
    echo "This script has not been verified on $OSNAME"
    exit 1
    ;;
esac
<div class="line number20 index19 alt1"></div>
<div class="line number21 index20 alt2">###############################</code></div>
<div class="line number22 index21 alt1"><code class="plain plain"># set the temp file</code></div>
<div class="line number23 index22 alt2"><code class="plain plain">###############################</code></div>
<div class="line number24 index23 alt1"><code class="plain plain">TMPFILE=/tmp/pmem.tmp</code></div>
<div class="line number25 index24 alt2"><code class="plain plain">if [ -f $TMPFILE ]</code></div>
<div class="line number26 index25 alt1"><code class="plain plain">then</code></div>
<div class="line number27 index26 alt2"><code class="plain spaces">  </code><code class="plain plain">rm -f $TMPFILE</code></div>
<div class="line number28 index27 alt1"><code class="plain plain">fi</code></div>
<div class="line number29 index28 alt2"></div>
<div class="line number30 index29 alt1"><code class="plain plain">################################</code></div>
<div class="line number31 index30 alt2"><code class="plain plain"># loop over the gg process types</code></div>
<div class="line number32 index31 alt1"><code class="plain plain">################################</code></div>
<div class="line number33 index32 alt2"><code class="plain plain">PROCESSES="extract replicat"</code></div>
<div class="line number34 index33 alt1"></div>
<div class="line number35 index34 alt2"><code class="plain plain">for PROCESS in $PROCESSES</code></div>
<div class="line number36 index35 alt1"><code class="plain plain">do</code></div>
<div class="line number37 index36 alt2"><code class="plain spaces">  </code><code class="plain plain">FLAG=""</code></div>
<div class="line number38 index37 alt1"><code class="plain spaces">  </code><code class="plain plain">FLAG=`ps -ef | grep $PROCESS`</code></div>
<div class="line number39 index38 alt2"><code class="plain spaces">  </code><code class="plain plain">if [ -z "FLAG" ]</code></div>
<div class="line number40 index39 alt1"><code class="plain spaces">  </code><code class="plain plain">then</code></div>
<div class="line number41 index40 alt2"><code class="plain spaces">    </code><code class="plain plain">echo "No $PROCESS processes found"</code></div>
<div class="line number42 index41 alt1"><code class="plain spaces">  </code><code class="plain plain">else</code></div>
<div class="line number43 index42 alt2"><code class="plain spaces">    </code><code class="plain plain">echo</code></div>
<div class="line number44 index43 alt1"><code class="plain spaces">    </code><code class="plain plain">echo "#####################################"</code></div>
<div class="line number45 index44 alt2"><code class="plain spaces">    </code><code class="plain plain">echo "# Individual $PROCESS Process Usage #"</code></div>
<div class="line number46 index45 alt1"><code class="plain spaces">    </code><code class="plain plain">echo "#####################################"</code></div>
<div class="line number47 index46 alt2"><code class="plain spaces">    </code><code class="plain plain">case "$OSNAME" in</code></div>
<div class="line number48 index47 alt1"><code class="plain spaces">      </code><code class="plain plain">"Linux")</code></div>
<div class="line number49 index48 alt2"><code class="plain spaces">        </code><code class="plain plain">ps -C $PROCESS -O rss > $TMPFILE</code></div>
<div class="line number50 index49 alt1"><code class="plain spaces">        </code><code class="plain plain">cat $TMPFILE | grep $PROCESS | awk '{print $2/1024, "MB", $12}' | sort -k 2</code></div>
<div class="line number51 index50 alt2"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number52 index51 alt1"><code class="plain spaces">      </code><code class="plain plain">"SunOS")</code></div>
<div class="line number53 index52 alt2"><code class="plain spaces">        </code><code class="plain plain">ps -efo vsz,uid,pid,ppid,pcpu,args | grep -v grep | grep $PROCESS > $TMPFILE</code></div>
<div class="line number54 index53 alt1"><code class="plain spaces">        </code><code class="plain plain">cat $TMPFILE | grep $PROCESS | awk '{print $1/1024, "MB", $8}' | sort -k 2</code></div>
<div class="line number55 index54 alt2"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number56 index55 alt1"><code class="plain spaces">      </code><code class="plain plain">"*")</code></div>
<div class="line number57 index56 alt2"><code class="plain spaces">        </code><code class="plain plain">echo "This script has not been verified on $OSNAME"</code></div>
<div class="line number58 index57 alt1"><code class="plain spaces">        </code><code class="plain plain">exit 1</code></div>
<div class="line number59 index58 alt2"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number60 index59 alt1"><code class="plain spaces">    </code><code class="plain plain">esac</code></div>
<div class="line number61 index60 alt2"><code class="plain spaces">    </code><code class="plain plain">rm -f $TMPFILE</code></div>
<div class="line number62 index61 alt1"></div>
<div class="line number63 index62 alt2"><code class="plain spaces">    </code><code class="plain plain">echo</code></div>
echo "#####################################"</code></div>
echo "#   Total $PROCESS Process Usage    #"</code></div>
echo "#####################################"</code></div>
<div class="line number67 index66 alt2"><code class="plain spaces">    </code><code class="plain plain">case "$OSNAME" in</code></div>
<div class="line number68 index67 alt1"><code class="plain spaces">      </code><code class="plain plain">"Linux")</code></div>
<div class="line number69 index68 alt2"><code class="plain spaces">        </code><code class="plain plain">ps -C $PROCESS -O rss > $TMPFILE</code></div>
<div class="line number70 index69 alt1"><code class="plain spaces">        </code><code class="plain plain">cat $TMPFILE | grep $PROCESS | awk '{count ++; sum=sum+$2; } END \</code></div>
<div class="line number71 index70 alt2"><code class="plain spaces">          </code><code class="plain plain">{ print "Number of processes      =",count; \</code></div>
<div class="line number72 index71 alt1"><code class="plain spaces">          </code><code class="plain plain">print "AVG Memory usage/process =",sum/1024/count, "MB"; \</code></div>
<div class="line number73 index72 alt2"><code class="plain spaces">          </code><code class="plain plain">print "Total memory usage       =", sum/1024,  " MB"}'</code></div>
<div class="line number74 index73 alt1"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number75 index74 alt2"><code class="plain spaces">      </code><code class="plain plain">"SunOS")</code></div>
<div class="line number76 index75 alt1"><code class="plain spaces">        </code><code class="plain plain">ps -efo vsz,uid,pid,ppid,pcpu,comm | grep -v grep | grep $PROCESS > $TMPFILE</code></div>
<div class="line number77 index76 alt2"><code class="plain spaces">        </code><code class="plain plain">cat $TMPFILE | awk '{count ++; sum=sum+$1; } END \</code></div>
<div class="line number78 index77 alt1"><code class="plain spaces">          </code><code class="plain plain">{ print "Number of processes      =",count; \</code></div>
<div class="line number79 index78 alt2"><code class="plain spaces">          </code><code class="plain plain">print "AVG Memory usage/process =",sum/1024/count, "MB"; \</code></div>
<div class="line number80 index79 alt1"><code class="plain spaces">          </code><code class="plain plain">print "Total memory usage       =", sum/1024,  " MB"}'</code></div>
<div class="line number81 index80 alt2"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number82 index81 alt1"><code class="plain spaces">      </code><code class="plain plain">"*")</code></div>
<div class="line number83 index82 alt2"><code class="plain spaces">        </code><code class="plain plain">echo "This script has not been verified on $OSNAME"</code></div>
<div class="line number84 index83 alt1"><code class="plain spaces">        </code><code class="plain plain">exit 1</code></div>
<div class="line number85 index84 alt2"><code class="plain spaces">        </code><code class="plain plain">;;</code></div>
<div class="line number86 index85 alt1"><code class="plain spaces">    </code><code class="plain plain">esac</code></div>
<div class="line number87 index86 alt2"><code class="plain spaces">    </code><code class="plain plain">rm -f $TMPFILE</code></div>
  fi
done

exit 0

 

When working with Oracle GoldenGate, you might need to refer to the checkpoints that are made by a process. Checkpoints save the state of the process for recovery purposes. Extracts and Replicats use checkpoints.

Extract checkpoint positions are composed of read checkpoints in the data source and write checkpoints in the trail. The following is a sampling of checkpoint information displayed with the INFO EXTRACT command with the SHOWCH option. In this case, the data source is an Oracle RAC database cluster, so there is thread information included in the output. You can view past checkpoints by specifying the number of them that you want to view after the SHOWCH argument.


gg_ext_stat()
{

ext=$1

# read the environment file for gg here
# . /var/opt/oracle/.ggsora12_env
#
# info extract <extract name>
# send EP1XXXDM, report

echo
echo "Extract status................."
echo

/oracle/product/12.1/gg_1/ggsci <<EOF

sh date

send ${ext}, status

EOF

}

 


gg_zipfile_chk()

# This assumes a standard directory of 
# /ora01/Oracle_SW/gg121 for the distribution media

{
#######################################################
# If the directory exists see if the files is there
#######################################################
clear

echo
echo "Checking for the V46695-01.zip file"
echo

echo
echo "Checking directory /ora01/Oracle_SW/gg121 for zip file ......."
echo

if [ -f /ora01/Oracle_SW/gg121/V46695-01.zip ]; then
echo "..../ora01/Oracle_SW/gg121/V46695-01.zip file found....."
else
echo "..../ora01/Oracle_SW/gg121/V46695-01.zip file not found."
fi

echo
echo "Checking directory /ora01/Oracle_SW/1212111/gg121 for zip file ......."
echo

if [ -f /ora01/Oracle_SW/gg121/1212111/V46695-01.zip ]; then
echo "..../ora01/Oracle_SW/gg121/1212111/V46695-01.zip file found....."
else
echo "..../ora01/Oracle_SW/gg121/1212111/V46695-01.zip file not found."
fi

echo
echo "Checking for the xagpack_7b.zip file"
echo

echo
echo "Checking /ora01/Oracle_SW/xag71 for zip file ......."
echo

if [ -f /ora01/Oracle_SW/xag71/xagpack_7b.zip ]; then
echo "..../ora01/Oracle_SW/xag71/xagpack_7b.zip file found....."
else
echo "..../ora01/Oracle_SW/xag71/xagpack_7b.zip file not found."
fi

}

 


gg_inst()
{
# Change to the correct directory
cd /ora01/Oracle_SW/gg121/1212111/fbo_ggs_Linux_x64_shiphome/Disk1

./runInstaller -silent -responseFile /oracle/admin/scripts/apex/ggcore.rsp

}

Ready for Action?

LET'S GO!
Copyright 2024 IT Remote dot com
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram