This post is a demonstration on how to deploy a fully supported Oracle GoldenGate as cluster resources.
We are going to use the Oracle Grid Infrastructure Agents, called XAG to integrate the GoldenGate instance within our cluster as a cluster managed resource. This tool is provided by Oracle in the binaries with the release 12c and later but it is recommended to download and use the last version out of the box (available here).
This XAG provide an interface “agctl” which enable us to interact with GoldenGate resources the same way as “srvctl” does for Oracle database resources within the Oracle cluster. This tool support various product that can be integrated to the Oracle cluster like Tomcat, MySQL and so on.
Here what’s can be done with XAG:
[oracle@rac001 ~]$ agctl Manages Apache Tomcat, Apache Webserver, Goldengate, JDE Enterprise Server, MySQL Server, Peoplesoft App Server, Peoplesoft Batch Server, Peoplesoft PIA Server, Siebel Gateway, Siebel Server, WebLogic Administration Server as Oracle Clusterware Resources Usage: agctl <verb> <object> [<options>] verbs: add|check|config|disable|enable|modify|query|relocate|remove|start|status|stop objects: apache_tomcat|apache_webserver|goldengate|jde_enterprise_server|mysql_server|peoplesoft_app_server|peoplesoft_batch_server|peoplesoft_pia_server|siebel_gateway|siebel_server|weblogic_admin_server For detailed help on each verb and object and its options use: agctl <verb> --help or agctl <verb> <object> --help
We are going to deploy that GoldenGate HA configuration on top of our existing 12.2 Grid Infrastructure. I choose for that demo to deploy the whole GoldenGate instance and its binaries to a dedicated mount point using ACFS to be sure my GoldenGate resources will have access to their data regardless of the node where the GoldenGate instance will be running. Could also be a DBFS or NFS.
Step 1 – Create an ACFS mount point called /acfsgg
[oracle@rac001 Disk1]$ /u01/app/12.2.0/grid/bin/asmcmd volcreate -G DGFRA -s 4G --width 1M --column 8 ACFSGG [root@rac001 ~]# /sbin/mkfs -t acfs /dev/asm/acfsgg-215 [root@rac001 ~]# /u01/app/12.2.0/grid/bin/srvctl add filesystem -d /dev/asm/acfsgg-215 -m /acfsgg -u oracle -fstype ACFS -autostart ALWAYS [root@rac001 ~]# /u01/app/12.2.0/grid/bin/srvctl start filesystem -d /dev/asm/acfsgg-215 [root@rac001 ~]# chown oracle:oinstall /acfsgg [root@rac001 ~]# chmod 775 /acfsgg [oracle@rac001 ~]$ ./execall "df -hT /acfsgg" rac001: Filesystem Type Size Used Avail Use% Mounted on rac001: /dev/asm/acfsgg-215 acfs 4.0G 85M 4.0G 3% /acfsgg rac002: Filesystem Type Size Used Avail Use% Mounted on rac002: /dev/asm/acfsgg-215 acfs 4.0G 85M 4.0G 3% /acfsgg
Step 2 – install GoldenGate binaries in /acfsgg
cd /u01/install/ unzip 122022_fbo_ggs_Linux_x64_shiphome.zip cd fbo_ggs_Linux_x64_shiphome/Disk1 [oracle@rac001 Disk1]$ ./runInstaller -silent -nowait -showProgress INSTALL_OPTION=ORA12c SOFTWARE_LOCATION=/acfsgg START_MANAGER=false MANAGER_PORT= DATABASE_LOCATION= INVENTORY_LOCATION=/u01/app/oraInventory UNIX_GROUP_NAME=oinstall [...] Finish Setup successful. The installation of Oracle GoldenGate Core was successful. Please check '/u01/app/oraInventory/logs/silentInstall2018-01-04_06-37-02AM.log' for more details. Successfully Setup Software.
Step 3 – install the last version of XAG (recommended by Oracle) in all nodes
# creation of the XAG home on all nodes as root [root@rac001 ~]# mkdir /u01/app/xag [root@rac001 ~]# chown oracle. /u01/app/xag # back as oracle [oracle@rac001 ~]$ cd /u01/install/ [oracle@rac001 install]$ unzip xagpack.zip [oracle@rac001 xag]$ cd xag [oracle@rac001 xag]$ export XAG_HOME=/u01/app/xag [oracle@rac001 xag]$ ./xagsetup.sh --install --directory $XAG_HOME --all_nodes Installing Oracle Grid Infrastructure Agents on: rac001 Installing Oracle Grid Infrastructure Agents on: rac002 Done. [oracle@rac001 xag]$ /u01/app/12.2.0/grid/bin/agctl query releaseversion The Oracle Grid Infrastructure Agents release version is 7.1.0 [oracle@rac001 xag]$ $XAG_HOME/bin/agctl query releaseversion The Oracle Grid Infrastructure Agents release version is 8.1.0
Step 4 – configure GoldenGate instance and the manager
[oracle@rac002 acfsgg]$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1 [oracle@rac002 acfsgg]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib [oracle@rac002 acfsgg]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419_FBO Linux, x64, 64bit (optimized), Oracle 12c on Jun 30 2017 16:12:28 Operating system character set identified as UTF-8. Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved. GGSCI (rac001) 1> CREATE SUBDIRS Creating subdirectories under current directory /acfsgg Parameter files /acfsgg/dirprm: created Report files /acfsgg/dirrpt: created Checkpoint files /acfsgg/dirchk: created Process status files /acfsgg/dirpcs: created SQL script files /acfsgg/dirsql: created Database definitions files /acfsgg/dirdef: created Extract data files /acfsgg/dirdat: created Temporary files /acfsgg/dirtmp: created Credential store files /acfsgg/dircrd: created Masterkey wallet files /acfsgg/dirwlt: created Dump files /acfsgg/dirdmp: created GGSCI (rac001) 2> edit params mgr PORT 7809 AUTORESTART ER *, RETRIES 3, WAITMINUTES 3, RESETMINUTES 10 AUTOSTART ER * PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS LAGCRITICALMINUTES 5 LAGREPORTMINUTES 60 LAGINFOMINUTES 0
Step 5 – Add the GoldenGate resource to the cluster
[root@rac001 ~]# export XAG_HOME=/u01/app/xag [root@rac001 ~]# $XAG_HOME/bin/agctl add goldengate GGAPP01 --gg_home /acfsgg --instance_type source --oracle_home /u01/app/oracle/product/12.2.0/dbhome_1 --ip 192.168.179.15 --network 1 --user oracle --filesystems ora.dgfra.acfsgg.acfs Calling POSIX::isdigit() is deprecated at /u01/app/xag/agcommon.pm line 809. ## all parameters in above command are required except the FS specification [oracle@rac001 ~]$ $XAG_HOME/bin/agctl start goldengate GGAPP01 [oracle@rac001 ~]$ $XAG_HOME/bin/agctl status goldengate GGAPP01 Goldengate instance 'GGAPP01' is running on rac001 [oracle@rac001 ~]$ /u01/app/12.2.0/grid/bin/crsctl stat res -t [...] Cluster Resources -------------------------------------------------------------------------------- [...] xag.GGAPP01-vip.vip 1 ONLINE ONLINE rac001 STABLE xag.GGAPP01.goldengate 1 ONLINE ONLINE rac001 STABLE --------------------------------------------------------------------------------
At this stage we have an operational GoldenGate fully managed by the cluster and ready to be configured for replication.
In case of failure of the node running the Manager, the cluster will restart the Manger process on first remaining available node. As soon as the Manager start, it will automatically restart all Extract and Replicate processes as we instruct it in the Manager configuration file (parameter AUTOSTART). The restarting of Extraction and Replication processes will be also done by the Manager and not by the cluster (so far with this release).
We can add Extract and Replicate processes as cluster resources but in this case it will only be monitored by the cluster and the cluster will update their states with ONLINE, OFFLINE, INTERMEDIATE or UNKNOWN depending the scenario.
I hope it may help and please do not hesitate to contact us if you have any questions or require further information.