always remember

Nothing is foolproof to a sufficiently talented fool... Make something
idiot proof, and the world will simply make a bigger idiot.

Using LogDump & RBA’s to Reposition a REPLICAT Process

When a REPLICAT process ABEND’s it can be dificult to pinpoint why, and trying to get over the error and allow the REPLICAT to continue can be tricky.

In this example, my source is an Oracle Linux 12c machine running EXTRACT, my target is a Windows Server 2016 machine running MSSQL/REPLICAT.

The Error:

In this example, we are presented with the following errors in the REPLCIAT report after it has ABENDED

2019-08-15 18:21:20  WARNING OGG-03014  Source column COLUMN_NAME has more characters than target column COLUMN_NAME can hold. Some source characters will not be mapped during conversion from source character set UTF-8 to target character set UTF-16.

2019-08-16 09:28:56  ERROR   OGG-01163  Bad column length (357) specified for column COLUMN_NAME in table TABLE.X, maximum allowable length is 255.

From the same report, we need to garner what RBA the fault occured at, you can see this here:

Last log location read:
     FILE:      C:GoldenGatedirdat/1p000003921
     SEQNO:     3921
     RBA:       4982061
     TIMESTAMP: 2019-08-16 09:28:53.053432
     EOF:       NO
     READERR:   0

With this information, open LogDump, prepare the application, and move to your RBA:

Logdump 1 > open C:GoldenGatedirdat/1p000003921 (use your filename here)
Logdump 2 > ghdr on
logdump 3 > detail on
logdump 4 > detail data
logdump 5 > ggstoken on
logdump 6 > ggstoken detail
logdump 7 > pos 4982061 (use your RBA here)

Type “N” and hit enter, for next, and it will display information about the specific statement being executed with the REPLICAT trail file. I’ve shown an example below, but blurred most of the information for infosec reasons. You can see that the description field has a large amount of data in it, so the error seen in the report is likely correct.

rbareplicat_1

At this point, you should evaluate why this has occured, and attempt to overcome the issue. In my case here, this was due to the client owning the source DB increasing the field length of description without consulting me as the OGG Administrator. This caused a difference in the source tables to what was define in the DEFGEN generated table definitions. I show how to fix this in THIS ARTICLE, but let’s just assume for now you want to ignore that, and move on from this error to continue the REPLICAT at a different “safe” RBA.

Hit “N” and enter again to move to the next RBA statement, when you’ve looked at the record and the field data, determined you want to move to this RBA, note the RBA from the first few lines:

2019/08/16 09:28:53.004.584 GGSUnifiedUpdate     Len  1657 RBA 4985338
Name: DATABASE.TABLE_Y  (TDR Index: 1)

Take that RBA back to GGSCI and reposition the REPLICAT as shown below. Start the REPLICAT:

GGSCI (ogg-sv-uat) 12> alter replicat RMSS2001 extrba 4985338

GGSCI (ogg-sv-uat) 12> start replicat RMSS2001

You should now see the REPLICAT has continued fomr the next RBA you chose and will be RUNNING:

GGSCI (ogg-sv-uat) 12> info replicat RMSS2001
 
REPLICAT   RMSS2001  Last Started 2019-08-16 11:33   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Process ID           41180
Log Read Checkpoint  File C:GoldenGatedirdat/1p000004156
                     2019-08-27 10:56:44.009352  RBA 1134564
 
GGSCI (ogg-sv-uat) 13>

 

 

dave / September 3, 2019 / Code, Oracle
Tags: , , , , , ,