Category: OGG Errors

OGG-01031 Output file is not in any allowed output directories

There are many new features and enhancements introduced in Oracle GoldenGate 12.2. YES, the current version of OGG is 19c. But I still thought of writing this article as this one of the important one. In this article, I am going to explain you about the parameter ALLOWOUTPITDIR with an example.

The Extract Pump (DataPump) process is abending with the below error,

2019-06-11 21:48:42 ERROR OGG-01031 There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Output file /u02/ogg_data/dirdat/et000000 is not in any allowed output directories.).

2019-06-11 21:48:42 ERROR OGG-01668 PROCESS ABENDING.

In the above error message, do not see the ERROR code, which is a default or generic one. Check the message mentioned inside the braces.

Reply received is Output file /u02/ogg_data/dirdat/et000000 is not in any allowed output directories.

From the above message we can understand that, OGG is not allowing to open / create a trail file in above mentioned location and hence the process is failing with the error as above.

This is a new enhancement with respect to security from OGG 12.2

ALLOWOUTPUTDIR

A new parameter is introduced from Oracle GoldenGate 12.2 version. This parameter should be used in the ./GLOBALS parameter file. Failing to use it will encounter the error in the pump process at the Source as below,

ERROR OGG-01031 There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Output file is not in any allowed output directories.).

To overcome this issue, please follow the below action plan,

1. Stop the Manager, Replicat processes in the target.

2. Edit the ./GLOBALS parameter with the below command

GGSCI> EDIT PARAMS ./GLOBALS

3. Add the parameter ALLOWOUTPUTDIR with path to the output trail file directory and save it.

Example ALLOWOUTPUTDIR [relative_dir_name | absolute_dir_name]

4. Exit from the GGSCI prompt.

5. Enter the GGSCI prompt

6. Perform DBLOGIN

7. Start the Manager and Replicat processes.

Note: Whenever we make any changes to ./GLOBALS file, we need to exit and relogin to the GGSCI. Without this the changes made to ./GLOBALS will not be in effect.

This is case sensitive for Windows and driver letter should match exactly as is, for example:

If your driver letter is in lower case but you had mentioned as below,

ALLOWOUTPUTDIR D:\ogg_12c

You will again hit the error OGG-01031.

So, it should be as below,

ALLOWOUTPUTDIR d:\ogg_12c

Hope you enjoyed the post. Cheers 🙂

Oracle GoldenGate: Time recorded in the Jagent Log File is Not Correct

Oracle GoldenGate: Time recorded in the Jagent Log File is Not Correct

Installed Oracle GoldenGate Management Pack. When installing the JAgent 12.2.1 on the OGG target instances, came up with a curious behavior. In the ogg_agent.log files, the time is not the local time. The time shown in the log file is 8 hours ahead although System Time is correct. The latest data under “ogg_agent.log” was as below,

[2016-12-06T08:45:29.442+00:00] [JAGENT] [NOTIFICATION] [OGGMON-20051] [com.goldengate.monitor.jagent.mbeans.impl.Agent] [tid: RMI TCP Connection(56)-146.222.96.163] [ecid: 0000LZEiZuLFKAwtOCq2Td1OHHUM00000A,0] DerivedMBean is getting build... 

Later came to know that the cause of the issue was the incorrect setting or Java parameter missed in the Java command.

Please follow the below steps to resolve the issue,

1. edit jagent parameter file

2. add -Duser.timezone=Hongkong in command

For example, you will be having the below parameters in the Jagent parameter file,

COMMAND java -Dconfig.dir=/u05/app/goldengate/ggagent/agent1/cfg -Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration
-Doracle.core.ojdl.logging.config.file=/u05/app/goldengate/ggagent/agent1/cfg/logging-config.xml -Doracle.core.ojdl.logging.componentId=JAGENT -jar
-Xms512m -Xmx1024m /u05/app/goldengate/ogg_agent1/oggmon/ogg_agent/dirjar/jagent.jar
Program is 'java', arguments are '-Dconfig.dir=/u05/app/goldengate/ggagent/agent1/cfg
-Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration -Doracle.core.ojdl.logging.config.file=/u05/app/goldengate/ggagent/agent1
/cfg/logging-config.xml -Doracle.core.ojdl.logging.componentId=JAGENT -jar -Xms512m -Xmx1024m /u05/app/goldengate/ogg_agent1/oggmon/ogg_agent
/dirjar/jagent.jar'


So you need to add this -Duser.timezone=Hongkong in the first line after the COMMAND java

Note: Respective Timezones should be added according to the issue faced.

3. Restart the JAgent process from GGSCI.

GGSCI> stop JAgent

GGSCI> start JAgent

Remote Capture – OGG-00446 Could Not Find Archived Log

Remote Capture – OGG-00446 Could Not Find Archived Log

Remote Extract process is failing with the below error,

OGG-00446 Oracle GoldenGate Capture for Oracle, ext1.prm: Could not find archived log

Source Database and Target Database are installed in a separate server. Oracle GoldenGate is installed in a separate server. So, all the three are in their respective servers individually.

Database is running in Archive log mode. Oracle Client 11.2.0.1.0 is installed in the server where OGG is installed.

When using the Remote capture, we need to use the below parameter in the Extract parameter file.

TRANLOGOPTIONS DBLOGREADER

This parameter is not supported for the Oracle client 11.2.0.1.0. Here the Client version installed in 11.2.0.1.0

If one wants to be able to access archive logs from a different Oracle installation and using Classic Extract, then we need to use TRANLOGOPTOINS DBLOGREADER parameter. This does not imply or mean we are using ASM at the remote installation, it is just a means for OGG to read the remote archive logs.

The client version 11.2.0.1.0 is unable to use TRANLOGOPTOINS DBLOGREADER which is what is needed.

Install Oracle Client 11.2.0.4 and use the parameter TRANLOGOPTIONS DBLOGREADER in the Extract process parameter file. Restart the Extract process.

OGG-15051 Java or JNI exception: hadoop.hbase.HTableDescriptor.addFamily in Cloudera

OGG-15051 Java or JNI exception: hadoop.hbase.HTableDescriptor.addFamily in Cloudera

Oracle GoldenGate Replicat process for Cloudera HBase abend with the below error.

                                         Oracle GoldenGate Delivery
                         Version 12.2.0.1.160823 OGGCORE_OGGADP.12.2.0.1.0_PLATFORMS_170324.1532
                             Linux, x64, 64bit (optimized), Generic on Mar 24 2017 17:11:07

2017-10-12 05:01:44 INFO OGG-06511 Using following columns in default
map by name: ROW_ID, LAST_UPD, PAR_ROW_ID, BU_ID, NAME, CUST_STAT_CD,INTEGRATION_ID, OU_NUM,OU_TYPE_CD,
PAR_OU_ID, PR_ADDR_ID, ACCNT_TYPE_CD, PROCESS_TIMESTAMP,X_BILL_TYPE_BT, STAT_REASON_CD.
2017-10-12 05:01:44 INFO OGG-06510 Using the following key columns for
target table SCHEMA.TABLE: ROW_ID.
2017-10-12 05:01:59 INFO OGG-01021 Command received from GGSCI: STATS.
Oct 12, 2017 5:02:56 AM org.apache.hadoop.conf.Configuration
warnOnceIfDeprecated
INFO: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
Exception in thread "main" java.lang.NoSuchMethodError:
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)Lorg/apache/hadoop/hbase/HTableDescriptor;
at oracle.goldengate.handler.hbase.operations.HBase1TableWriter.createTable(HBase1TableWriter.java:254)
at oracle.goldengate.handler.hbase.operations.HBase1TableWriter.open(HBase1TableWriter.java:96)
at oracle.goldengate.handler.hbase.operations.HBase1Writer.getTableWriter(HBase1Writer.java:167)
at oracle.goldengate.handler.hbase.operations.HBase1Writer.put(HBase1Writer.java:110)
at oracle.goldengate.handler.hbase.operations.HBaseInsertDBOperation.processOp(HBaseInsertDBOperation.java:78)
at oracle.goldengate.handler.hbase.HBaseHandler.processOp(HBaseHandler.java:468)
at oracle.goldengate.handler.hbase.HBaseHandler.transactionCommit(HBaseHandler.java:411)
at oracle.goldengate.datasource.DsEventManager$2.send(DsEventManager.java:422)
at oracle.goldengate.datasource.DsEventManager$EventDispatcher.distributeEvent(DsEventManager.java:231)
at oracle.goldengate.datasource.DsEventManager.fireTransactionCommit(DsEventManager.java:430)
at oracle.goldengate.datasource.AbstractDataSource.fireTransactionCommit(AbstractDataSource.java:506)
at oracle.goldengate.datasource.UserExitDataSource.commitActiveTransaction(UserExitDataSource.java:1546)
at oracle.goldengate.datasource.UserExitDataSource.commitTx(UserExitDataSource.java:1469)

2017-10-12 05:02:56 ERROR OGG-15051 Java or JNI exception:
java.lang.NoSuchMethodError:
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)Lorg/apache/hadoop/hbase/HTableDescriptor;.

The root cause is Compatibility Issue. I came across a bug for this issue.

Bug 25591766 – HBase 1.2: java.lang.NoSuchMethodError: ….addFamily

In the bug it has been mentioned to set the below parameter, but already the below parameter is set and still facing the same issue.

gg.handler..hBase98Compatible=true.

This is a well known compatibility problem with Cloudera HBase. The root cause is that the Cloudera HBase client libraries broke binary compatibility with the Apache HBase libraries. You must be on OGGBD 12.3.0.1.x or earlier.

What the problem is and how to work around it, is explained in the documentation:

https://docs.oracle.com/goldengate/bd123010/gg-bd/GADBD/GUID-A6C0DEC9-480F-4782-BD2A-54FEDDE2FDD9.htm#GADBDGUID-8873BA41-35B8-4307-B406-EA9835DAA477

Go to section 1.2.2.2

The OGGBD 12.3.1.1.0 release provided improved support by resolving the offending HBase method using Java reflection. Therefore, if you are ready to move to OGGBD 12.3.1.1.0 or later this issue is resolved automatically.

See the documentation:

https://docs.oracle.com/goldengate/bd123110/gg-bd/GADBD/using-hbase-handler.htm#GADBD-GUID-1A9BA580-628B-48BD-9DC0-C3DF9722E0FB

Go to section 5.6.5

Cheers 🙂

OGG 12.2 – Extract Abend – OGG-00458 Cannot Find Metadata Property

OGG 12.2 – Extract Abend – OGG-00458 Cannot Find Metadata Property

Extract Process Abends with the below error,

2016-07-05 00:03:34 ERROR OGG-00458 Cannot find metadata property G41. DDL metadata [,G1='alter table "schema"."table" shrink space CHECK ',,C6='GGS.GGS_MARKER',,C5='6399704',,C2='4377220081',,S='99751',,W='schema',,X='table',,Y='TABLE',,Z='ALTER',,A1='104',,A1='104',,..........

Cause of the Issue was, by default “auto space advisor” is enabled in the Oracle Database. This advisor, shrinks the space of large tables and this causes the Oracle GoldenGate Extract process to get abended with the below error,

2016-07-05 00:03:34 ERROR OGG-00458 Cannot find metadata property G41. DDL metadata [,G1='alter table "schema"."table" shrink space CHECK ',,C6='GGS.GGS_MARKER',,C5='6399704',,C2='4377220081',,S='99751',,W='schema',,X='table',,Y='TABLE',,Z='ALTER',,A1='104',,A1='104',,..........

This is a Bug,

Bug 23154554 - Extract abends: OGG-00458 Cannot find metadata property G23. DDL metadata

But there is a Workaround for this, you can disable the “auto space advisor” feature which is the cause for triggering shrink space for large tables.

Steps to disable the “auto space advisor”

1. Check the status of the “auto space advisor”.

SQL> SELECT client_name, status FROM dba_autotask_client;
set lines 180 pages 1000
col client_name for a40
col attributes for a60
select client_name, status,attributes,service_name from dba_autotask_client;

2. Execute the below to disable the “auto space advisor”.

BEGIN
DBMS_AUTO_TASK_ADMIN.disable(
client_name => 'auto space advisor',
operation => NULL,
window_name => NULL);
END;
/

3. Check if the “auto space advisor” is disabled.

set lines 180 pages 1000
col client_name for a40
col attributes for a60
select client_name, status,attributes,service_name from dba_autotask_client;

Restart the Extract process after disabling the “auto space advisor”.

Note: Please check with your Oracle Core DBA before disabling this “auto space advisor”..