Using the Oracle Grid Infrastructure Agents for GoldenGate on Oracle restart
I was testing Oracle Goldengate on a non-clustered Oracle 12.1.0.2 database with ASM. With ASM, you need to have the grid infrastructure installed. The cluster ware for the single node install is called ‘oracle restart’.
The most convenient way to have Goldengate running at startup that I could find, was using the Oracle Grid Infrastructure Agents. These agents are not installed by default, you need to download these from the Oracle Technology Network. The download is with the grid infrastructure downloads in the database section.
The installation is very simple: unzip the xagpack_6.zip file, and run the xagsetup.sh script with the arguments ‘–install’ and ‘–directory’ arguments. The directory argument needs to point to a directory outside of the grid infrastructure home. My first choice would be to have it in the infrastructure home, but the install script does not allow that.
$ ./xagsetup.sh --install --directory /u01/app/oracle/product/xag Installing Oracle Grid Infrastructure Agents on: ogg-dest Done.
The control utility, ‘agctl’ can be run without any environment variables set to point to the directory where the utility is installed, or the grid infrastructure home.
$ /u01/app/oracle/product/xag/bin/agctl query releaseversion The Oracle Grid Infrastructure Agents release version is 6.1.1
To add a golden gate resource, add it via the agctl utility:
$ /u01/app/oracle/product/xag/bin/agctl add goldengate gg1 --gg_home /u01/app/oracle/product/12.1.2/oggcore_1 --instance_type target --oracle_home /u01/app/oracle/product/12.1.0.2/dbhome_1 --databases ora.dest.db
This is a very simple example, where a cluster resource called ‘gg1’ is created, for which we point out the golden gate home, the database ORACLE_HOME and the database cluster resource (not the database name as some documentation from Oracle says).
In my case, golden gate was not running. After the golden gate cluster resource was added, it’s offline:
xag.gg1.goldengate 1 OFFLINE OFFLINE STABLE
Now start the resource using the ‘agctl’ utility:
/u01/app/oracle/product/xag/bin/agctl start goldengate gg1
(please mind you could do exactly the same with crsctl: crsctl start res xag.gg1.goldengate)
Starting does not result in any message. Let’s look at the golden gate cluster resource:
xag.gg1.goldengate 1 ONLINE ONLINE ogg-dest STABLE
What it does, is start the golden gate manager (mgr) process:
$ /u01/app/oracle/product/12.1.2/oggcore_1/ggsci << H > info all > H Oracle GoldenGate Command Interpreter for Oracle Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO Linux, x64, 64bit (optimized), Oracle 12c on Aug 7 2014 10:21:34 Operating system character set identified as UTF-8. Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved. GGSCI (ogg-dest.local) 1> Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT ABENDED REP1 00:00:00 17:55:53
Let’s add monitoring of the replicat. In real life scenario’s it’s the extracts or replicats that are important, these perform the actual work golden gate is supposed to do!
/u01/app/oracle/product/xag/bin/agctl modify goldengate gg1 --monitor_replicats rep1
The cluster ware checks the golden gate resource type status every 30 seconds. So if you check the cluster immediately after modifying the golden gate resource, it could not have performed the check with the added check for the replicat.
xag.gg1.goldengate 1 ONLINE INTERMEDIATE ogg-dest ER(s) not running : REP1,STABLE
It now neatly reports the replicat group rep1 not running! I guess ‘ER’ means Extract and Replicat.
Now start the replicat, and check the status again:
xag.gg1.goldengate 1 ONLINE ONLINE ogg-dest STABLE
A few final notes. This is the simplest possible setup. I couldn’t find a lot of information on the infrastructure agents except for some Oracle provided ones, which is why I created this blog. If you apply this on a cluster, I would urge you to look into the oracle provided ones, and create the full setup with golden gate writing its files on a cluster filesystem, using an application VIP, etcetera, so golden gate could be started or failed over to another host.
Goldengate is not the only thing this agents can incorporate into the cluster ware. The current version (6.1.1) supports, besides golden gate: tomcat, apache, JDE, mysql, various types of peoplesoft servers, siebel and web logic.
Deinstalling is very simple, but might put you on your wrong foot. The agents are deinstalled by using the setup script (xagsetup.sh) with the ‘–deinstall’ argument. This of course is quite normal, but it deinstalls the agents from the location where you call xagsetup.sh. This means that if you run xagsetup.sh from the location where you unzipped it for installation, it will ‘deinstall’, which means clean out, from that directory, leaving the true installation alone. The documentation states that upgrades to the agents are done by removing them and installing the new version.
Nice post Frits. Did you have to configure a VIP for agctl to work in stand-alone server with Oracle Restart ? I followed the steps in your post and it fails complaining about not finding a VIP to register the resources with.
Hi Pratheesh,
Did you get this working? I am building standalone with dataguard, decided I didn’t need VIPs but the network and ip parameters are mandatory:
agctl add goldengate gg_primary –gg_home /u01/app/oracle/product/12.2.0.1/gg –oracle_home /u01/app/oracle/product/12.1.0.2/db –db_services ora.orcl.orcl_primary.svc –monitor_extracts ext,extdp –environment_vars ‘TNS_ADMIN=/u01/app/oracle/product/12.1.0.2/db/network/admin’ –filesystems dbfs_mount –-dataguard_autostart yes –-user oracle –group dba
What command did you use to configure XAG please?
Hi Fritz, Question on using XAG with Java extracts. All is well when I manually start the manager. Java user exit loads the library libggjava_ue.so and hence JVM without issues. But when agctl starts the manager, java extract abends trying to find the java path in the wrong place. my environment variable for agctl has been correctly set to use the java path. But it looks at the root directory of my ACFS filesystem, /acfs_dg. My GG home is /acfs_dg/GoldenGate and my java home is under /acfs_dg/Java_Software/jdk1.7.0_79. Any ideas where it is picking the path from?
I managed to get this working only when I changed the the ownership of the Goldengate binaries to the same user as GI, i.e. ‘grid’ user rather than ‘oracle’ user.
I’m not convinced that XAG is supported on Grid Infrastructure Standalone (Oracle Restart), but haven’t found anything to the contrary.