rdbms从11g升级到12c。11.2的ogg版本启动失败?诊断方法
复制进程启动失败的诊断方法:
Replicat Abends with Error OGG-01082 Call To The Dboci_Check_For_Virtual_Column: Oci Error (100-Ora-01403: No Data Found) Determining If Column Is Virtual (文档 ID 1556577.1)
In this Document
APPLIES TO:
Oracle GoldenGate - Version 11.2.1.0.3 and later
Information in this document applies to any platform.
SYMPTOMS
Replicat process abends with following
The call to the DBOCI_check_for_virtual_column: OCI error (100-ORA-01403: no data found) determining if column is virtual. Table: ERPDM.TWHWMD920628, Column: T$CONU$B$2 function from get_odbc_table_def failed with return code 0.
CAUSE
This issue occurs due to bug. Replicat abended with ERROR OGG-01082 THE CALL TO THE DBOCI_CHECK_FOR_VIRTUAL_CO. The hash value used to convert the column and table returned same value. So replicat assumes column name of one table as table name of another table and vice versa.
This is explained in the following bug:
Bug 16426333 - REPLICAT ABEND WITH ERROR OGG-01082 THE CALL TO THE DBOCI_CHECK_FOR_VIRTUAL_CO
Bug 16501008 - HASH FUNCTION CANNOT BE USED TO UNIQUELY IDENTIFY A STRING
SOLUTION
Workaround:
1. Enable SQL TRACE level 12 and check the SQL Query which has incorrect column name instead of table name and move the table to separate replicat
SQLEXEC "ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'"
Eg:
SELECT col#, segcol# FROM sys.col$ c, sys.obj$ o, sys.user$ u WHERE c.name = 'COMPANY' AND c.obj# = o.obj# AND o.name = 'T$CONU$B$2' AND o.owner# = u.user# AND u.name = 'ERPDM'
Here o.name is should be TWHWMD215609. Instead it shows o.name = 'T$CONU$B$2'. T$CONU$B$2 is the column of different table TWHWMD920628. .
2. Solution is to apply the patch which contains fix for bug 16426333 and 16501008.
REFERENCES
BUG:16573838 - NEED BUILD ON TOP OF 11.2.1.0.5 WITH FIX FOR BUG 16501008
NOTE:1259884.1 - ERROR OGG-01082 When Running A Replicat against an Oracle Database
BUG:16426333 - REPLICAT ABEND WITH ERROR OGG-01082 THE CALL TO THE DBOCI_CHECK_FOR_VIRTUAL_CO