Gathering GoldenGate deployment status

Posted in: Oracle, Technical Track

The objective of this post is to demonstrate how to gather existing GoldenGate deployment status. The rationale is to gather all the pertinent information for GoldeGate deployment using RAC in order to relocate the GoldenGate trail from DBFS to ACFS file system.

Although the deployment gathering can be performed manually, I have chosen to script as much of the process as possible since this will be performed for multiple environments versus just one.

Implementation created is also reusable for troubleshooting; hence, the work is not in vain.

WARNING: gi.env is used to dynamically source ASM instance provided the following requirements are met:
Last character from short host name must match ASM instance number.

Acceptable:      racnode-dc1-1/+ASM1 and racnode-dc1-2/+ASM2
UNAcceptable: host05/+ASM1 and host06/+ASM1

I chose to create gi.env so that the script can be deployed in any environment with the least possible change as long as the requirements above are met.

$ cat gi.env


set +x
unset ORACLE_UNQNAME
h=$(hostname -s)
n=1
. oraenv <<< +ASM${h:${#h} - $n}
export GRID_HOME=$ORACLE_HOME
env|egrep 'ORACLE|GRID'
sysresv|tail -1

From ogg_status.sh, grid (+ASM[n]) is sourced using gi.env.

$ cat ogg_status.sh


#!/bin/sh -ex
# MDinh : Feb 2019
. ~/working/dinh/gi.env
set -x
agctl query releaseversion
agctl query deployment
agctl status goldengate gg_xx
agctl config goldengate gg_xx

crsctl stat res -t|egrep -A2 'acfs|dbfs|xag'
crsctl stat res -t -w 'TYPE = ora.acfs.type'
crsctl stat res -t -w 'TYPE = xag.goldengate.type'
crsctl stat res -t -w 'TYPE = app.appvipx.type'
crsctl stat res -t -w 'TYPE = local_resource'

crsctl stat res -w "TYPE = xag.goldengate.type" -p|awk -F'=' '$2'
exit

Ideally, instead of hard coding goldengate instance_name (gg_xx) it can be determined using:


$ crsctl stat res -w 'TYPE = xag.goldengate.type'
NAME=xag.gg_xx.goldengate
TYPE=xag.goldengate.type
TARGET=ONLINE
STATE=ONLINE on host01

For now, I did not want to complicate the script too much.

Here is a demo from the script.

Do you see any potential issues from the output?

$ ./ogg_status.sh 
+ . /home/oracle/working/dinh/gi.env
++ set +x
ORACLE_SID = [+ASM1] ? The Oracle base remains unchanged with value /u01/app/oracle
ORACLE_SID=+ASM1
ORACLE_BASE=/u01/app/oracle
GRID_HOME=/u02/app/12.1.0/grid
ORACLE_HOME=/u02/app/12.1.0/grid
Oracle Instance alive for sid "+ASM1"
+ agctl query releaseversion
The Oracle Grid Infrastructure Agents release version is 3.1.0
+ agctl query deployment
The Oracle Grid Infrastructure Agents deployment is bundled
+ agctl status goldengate gg_xx
Goldengate  instance 'gg_xx' is running on host01
+ agctl config goldengate gg_xx
GoldenGate location is: /u03/app/gg/12.2.0
GoldenGate instance type is: target
Configured to run on Nodes: host01 host02
ORACLE_HOME location is: /u01/app/oracle/product/12.1.0/db_1
File System resources needed: dbfs_mount
Extracts to monitor: 
Replicats to monitor: 
Critical extracts: 
Critical replicats: 
Autostart on DataGuard role transition to PRIMARY: no
Autostart JAgent: no
+ egrep -A2 'acfs|dbfs|xag'
+ crsctl stat res -t
dbfs_mount
               ONLINE  ONLINE       host01                 STABLE
               OFFLINE OFFLINE      host02                 STABLE
--
ora.dbfs.db
      1        ONLINE  ONLINE       host01                 Open,STABLE
      2        ONLINE  ONLINE       host02                 Open,STABLE
--
xag.gg_xx-vip.vip
      1        ONLINE  ONLINE       host01                 STABLE
xag.gg_xx.goldengate
      1        ONLINE  ONLINE       host01                 STABLE
--------------------------------------------------------------------------------
+ crsctl stat res -t -w 'TYPE = ora.acfs.type'
+ crsctl stat res -t -w 'TYPE = xag.goldengate.type'
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
xag.gg_xx.goldengate
      1        ONLINE  ONLINE       host01                 STABLE
--------------------------------------------------------------------------------
+ crsctl stat res -t -w 'TYPE = app.appvipx.type'
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
xag.gg_xx-vip.vip
      1        ONLINE  ONLINE       host01                 STABLE
--------------------------------------------------------------------------------
+ crsctl stat res -t -w 'TYPE = local_resource'
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
dbfs_mount
               ONLINE  ONLINE       host01                 STABLE
               OFFLINE OFFLINE      host02                 STABLE
--------------------------------------------------------------------------------
+ awk -F= '$2'
+ crsctl stat res -w 'TYPE = xag.goldengate.type' -p
NAME=xag.gg_xx.goldengate
TYPE=xag.goldengate.type
ACL=owner:ggsuser:rwx,pgrp:dba:r-x,other::r--
ACTION_SCRIPT=%CRS_HOME%/bin/aggoldengateas
ACTION_TIMEOUT=60
AGENT_FILENAME=%CRS_HOME%/bin/scriptagent
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=30
CLEAN_TIMEOUT=60
DATAGUARD_AUTOSTART=no
DEGREE=1
DELETE_TIMEOUT=60
DESCRIPTION="Oracle GoldenGate Clusterware Resource"
ENABLED=1
FAILURE_INTERVAL=600
FAILURE_THRESHOLD=5
FILESYSTEMS=dbfs_mount
GG_HOME=/u03/app/gg/12.2.0
GG_INSTANCE_TYPE=target
HOSTING_MEMBERS=host01 host02
INSTANCE_FAILOVER=1
JAGENT_AUTOSTART=no
LOAD=1
LOGGING_LEVEL=1
MODIFY_TIMEOUT=60
ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
PLACEMENT=restricted
RELOCATE_BY_DEPENDENCY=1
RESTART_ATTEMPTS=5
SCRIPT_TIMEOUT=60
START_DEPENDENCIES=hard(xag.gg_xx-vip.vip,dbfs_mount) pullup(xag.gg_xx-vip.vip,dbfs_mount)
START_TIMEOUT=300
STOP_DEPENDENCIES=hard(xag.gg_xx-vip.vip,intermediate:dbfs_mount)
STOP_TIMEOUT=300
UPTIME_THRESHOLD=10m
USER_WORKLOAD=no
VERSION=2
VIP_CREATED=1
VIP_NAME=xag.gg_xx-vip.vip
+ exit

In conclusion, scripting the process with some simple automation will provide better efficiencies to review and troubleshoot GoldenGate deployment for RAC on DBFS or ACFS.

email

Interested in working with Michael? Schedule a tech call.

No comments

Leave a Reply

Your email address will not be published. Required fields are marked *