How to sincronize high data volume with GoldenGate

I was taking high workload with data load methods, so I decided to move out of comfort zone and fortunately discovered a excellent way to copy/move high data volume with GoldenGate Initial Load.

It’s well documented by Oracle and gavinsoorma.com (best and simple one).

# On source GoldenGate (ggsci>):

GGSCI> ADD EXTRACT load1, SOURCEISTABLE
GGSCI> EDIT PARAMS load1

EXTRACT load1
userid ggate@goldengate
RMTHOST target-mgr.grepora.com, MGRPORT 7809
RMTTASK replicat, GROUP load2 FORMAT LEVEL 4

---Loading tables
map CUSTOMER.TABLE1;
 

More“How to sincronize high data volume with GoldenGate”

Avoiding lost messages in JDBC Persistent Store, when processing Global Transactions with JMS.

   A few months ago, i had a problem in Persistence Store of JMS queues, soon after perform server restart, I get error from persistence store to recover message:

weblogic.store.PersistentStoreFatalException: [Store:280064]invalid handle 55981 (server="EVENTS01" store="JDBCStore_3022" table="JDBCStore_3022WLStore"),

   To resolve this problem, just add this parameter on server startup arguments:

 -Dweblogic.store.StoreBootOnError = true

   With this parameter, the server starts with OK status in WebLogic 11g and with FAILED status in Weblogic 12c, but in both the processing of the messages continues when active,
to remove FAILED status in Weblogic 12c, just need to truncate persistence table in database and restart server (This solution can be found in Oracle Docs).

   This solution did not solved my problem, because I can’t lost or delete messages.

Let’s go analyse the problem:

More“Avoiding lost messages in JDBC Persistent Store, when processing Global Transactions with JMS.”

Failure unregister integrated extract

Some times it’s impossible to unregister Integrated Extract, however it need to exclude to avoid RMAN failures.

Follow below to hack GoldenGate registration:

SQL> select CAPTURE_NAME from dba_capture;

CAPTURE_NAME
------------------------------
OGG$CAP_IE_CAPT

GGSCI (myhost as ggate@foodb) 13> unregister extract IE_CAPT database

ERROR OGG-08222 EXTRACT IE_CAPT must be registered with the database to perform this operation.

Try it:

SQL> select 'exec DBMS_CAPTURE_ADM.DROP_CAPTURE ('''||capture_name||''');' from dba_capture;

'EXECDBMS_CAPTURE_ADM.DROP_CAPTURE('''||CAPTURE_NAME||''');'
----------------------------------------------------------------------
exec DBMS_CAPTURE_ADM.DROP_CAPTURE ('OGG$CAP_IE_CAPT');

SQL> exec DBMS_CAPTURE_ADM.DROP_CAPTURE ('OGG$CAP_IE_CAPT');

PL/SQL procedure successfully completed.

Maiquel.

ERROR OGG-02636 when creating a integrated extract in Goldengate 12C on a Puggable database 12C

While creating an integrated extract in Goldengate 12C on a Puggable database 12C I came across the follow error, stating that the needed catalog name is mandatory  and was not being informed.

ERROR OGG-02636 Oracle GoldenGate Capture for Oracle, ext1.prm: The TABLE specification ‘TABLE table_name’ for the source table ‘table_name’ does not include a catalog name. The database requires a catalog name.

There is two ways to solve this case: The first , besides less indicated, is to add the name of pluggable database (Catalog) before the owner name on the table maps, for example:

GGSCI (host1.net) 1> edit param ext1

–Tables
TABLE PDB_NAME.SCHEMA_OWNER.TABLE_NAME;

Not really enjoying this solution and after searching for long hours without any other result , our friend Maiquel DC indicated a parameter that identifies the catalog name for all tables in the extract ;

Add the following parameter in extract  configuration file:

GGSCI (host1.net) 1> edit param ext1

–Parameters
SOURCECATALOG PDB_NAME

 

Thats all folks.
Dieison.

GoldenGate 12.1.2 not firing insert trigger

I had to troubleshoot a situation, after GoldenGate capture some DML and replicate that, Oracle database needs to run insert trigger making some business integration.

After to upgrade this enviroment from GG 11.1.1.1 to 12.1.2 and DB 11.2.0.3 to 12.1.0.2, was identified that GoldenGate wasn’t running this triggers

So, found interesting resolution on Oracle Docs:

SUPPRESSTRIGGERS | NOSUPPRESSTRIGGERS

Valid for nonintegrated Replicat for Oracle. Controls whether or not triggers are fired during the Replicat session. Provides an alternative to manually disabling triggers. (Integrated Replicat does not require disabling of triggers on the target system.)

SUPPRESSTRIGGERS is the default and prevents triggers from firing on target objects that are configured for replication with Oracle GoldenGate. SUPPRESSTRIGGERS is valid for Oracle 11.2.0.2 and later 11gR2 versions. SUPPRESSTRIGGERS is not valid for 11gR1.

So, added ‘DBOPTIONS NOSUPPRESSTRIGGERS’ in the replicat parameter file.

Regards!
Maiquel.

ERROR OGG-00446 – Unable to lock file “*” (error 11, Resource temporarily unavailable).

GoldenGate 12c was running over NFS filesystem and had unexpected stop then when it try starts take OGG-00446.

ERROR OGG-00446 Oracle GoldenGate Capture for Oracle, e_crm01.prm: Unable to lock file “/mnt/ggate/dirchk/MYCRM.cpe” (error 11, Resource temporarily unavailable).

Here the solution:
Move the file /mnt/ggate/dirchk/MYCRM.cpe to
/mnt/ggate/dirchk/MYCRM.cpe_backup

Then copy /mnt/ggate/dirchk/MYCRM.cpe_backup to
/mnt/ggate/dirchk/MYCRM.cpe

I can’t understand why Oracle keeps this stupid bugs on 12c.

C’est La Vie!
Maiquel.

nc -l – Starting up a fake service

Hi everyone!

Recently i have faced a situation that made me find out a very nice and useful command that helped me a lot, and i hope it comes to help you guys as well, and it’s named:

nc

Situation: We have a replicated environment from one datacenter to another (Using Golden Gate), where the ETL happens. So basically is:

Datacenter 1 (root data)

Replicates to datacenter 2 (transforming the data)

that replicates to datacenter 3 (production itself)

In Datacenter level 2, we have a dataguard configured. So then came the question:

  • What if we need to do the switchover to the standby environments?
  • Will we gonna have everything we need properly set up for the replication?
  • How are we going to test the ports if nothing is up in there? Aren’t we gonna get “connection refused”?

Calm down! There is a very nice workaround for this.

All you need to do is install the nc command as root (if it is not installed already):

yum install nc

Then execute it as follows, on the server you wanna test:

nc -l

example:

I wanna make sure that on the standby server the port 7809 (Golden Gate MANAGER port) is open. On the standby server you run:

nc -l 7809

Then, from a remote server, you are going to be able to connect through a simple telnet command:

telnet server.domain port

example:

telnet standby.company.com 7809

 

ON PRACTICE:

  • Try the telnet from the remote server to the standby:

remoteserver {/home/oracle}: telnet standby.server 7809

Trying 192.168.0.10…

telnet: connect to address 192.168.0.10: Connection refused

  • Then we start the fake service on the standby server!

standby.server {/home/oracle}: nc -l 7809

  • And try the telnet again:

remoteserver {/home/oracle}: telnet standby.server 7809

Trying 192.168.0.10…

Connected to standby.server.

Escape character is ‘^]’.

 

Cheers!

Rafael.

GoldenGate – exclude Oracle database thread#

Your Oracle database instance status changed , so you need to dismiss some thread# on GoldenGate.

SQL> select INST_ID,thread#,status from gv$thread;

INST_ID THREAD# STATUS
———- ———- ——
1                   1                OPEN
1                   2               CLOSED

Try to insert ‘THREADOPTIONS PROCESSTHREADS EXCEPT X’ on your GoldenGate PRM file.
Where X means thread# instance want to ‘exclude’.

It may cause data loss.

Maiquel.