Email收到了这样的报错:

2016-12-07 02:52:22  WARNING OGG-01004  Aborted grouped transaction on 'MSP.USER_ACTIVITY_LIFETIME_AGG', Database error 1403 (OCI Error ORA-01403: no data found, SQL <UPDATE "MSP"."USER_ACTIVITY_LIFETIME_AGG" x SET x."USER_ACTIVITY_LIFETIME_ID" = :a0,x."NIKE_PLUS_USER_ID" = :a1,x."ACTIVITY_NUM" = :a3,x."FUEL_TOTAL" = :a4,x."STEP_TOTAL" = :a5,x."CALORIE_TOTAL" = :a6,x."DURATION_TOTAL" = :a7,x."DISTANCE_TOTAL" = :a8,x."WALK_TOTAL" = :a9,x."FUEL_ACTIVITY_NUM" = :a10,x."FUEL_DAILY_AVG" = :a11,x."BEST_ACTIVE_HOUR_START" = :a12,x."BEST_ACTIVE_MINUTE_START" = :a13,x."BEST_ACTIVE_HOUR_END" = :a14,x."BEST_ACTIVE_MINUTE_END" = :a15,x."FUEL_BEST_ACTIVE_HOUR" = :a16,x."FUEL_BEST_DAY" = :a17,x."FUEL_BEST_DAY_AMT" = :a18,x."FUEL_BEST_WEEK" = :a19,x."FUEL_BEST_WEEK_AMT" = :a20,x."FUEL_BEST_MONTH" = :a21,x."FUEL_BEST_MONTH_AMT" = :a22,x."CREATE_DATE" = :a23,x."UPDATE_DATE" = :a24,x."FUEL_BEST_HOUR_AMT" = :a25,x."CURRENT_STREAK" = :a27,x."CURRENT_STREAK_START_DATE" = :a28,x."MISS_STREAK" = :a29,x."MISS_STREAK_START_DATE" = :a30,x."LONGEST_STREAK" = :a31,x."LONGEST_STREAK_START_DATE" = :a32,x."LONGEST_MISS_STREAK" = :a33,x."LONGEST_MISS_STREAK_START_DATE" = :a34,x."DEVICE_ID" = :a35,x."FUEL_BEST_SUNDAY" = :a36,x."FUEL_BEST_SUNDAY_AMT" = :a37,x."FUEL_BEST_MONDAY" = :a38,x."FUEL_BEST_MONDAY_AMT" = :a39,x."FUEL_BEST_TUESDAY" = :a40,x."FUEL_BEST_TUESDAY_AMT" = :a41,x."FUEL_BEST_WEDNESDAY" = :a42,x."FUEL_BEST_WEDNESDAY_AMT" = :a43,x."FUEL_BEST_THURSDAY" = :a44,x."FUEL_BEST_THURSDAY_AMT" = :a45,x."FUEL_BEST_FRIDAY" = :a46,x."FUEL_BEST_FRIDAY_AMT" = :a47,x."FUEL_BEST_SATURDAY" = :a48,x."FUEL_BEST_SATURDAY_AMT" = :a49,x."ACTIVE_PERCENTAGE" = :a50,x."FUEL_BEST_YEAR" = :a51,x."FUEL_BEST_YEAR_AMT" = :a52,x."SUPER_GOAL_CNT" = :a53,x."TAG_IT_STREAK_CAREER" = :a54,x."TAG_IT_STREAK_CURRENT" = :a55,x."TAG_IT_TOTAL" = :a56,x."TAG_NOT_IT_TOTAL" = :a57,x."TAG_STREAK_CAREER" = :a58,x."TAG_STREAK_CURRENT" = :a59,x."ESP_SCORE_TOTAL" = :a60,x."ACTIVE_TIME_TOTAL" = :a61,x."STEP_CNT" = :a62,x."STEP_CNT_AVG" = :a63,x."STEP_WEEK_AVG" = :a64,x."STEP_CNT_MAX" = :a65,x."STEP_DATE_LONGEST" = :a66,x."FUEL_BEST_CURRENT_WEEK" = :a67,x."FUEL_BEST_CURRENT_WEEK_AMT" = :a68,x."START_DATE" = :a69,x."SMALL_HOURS_COUNT" = :a70,x."LATE_NIGHT_COUNT" = :a71,x."BRIGHT_AND_EARLY_COUNT" = :a72,x."MORNING_COUNT" = :a73,x."EARLY_MORNING_COUNT" = :a74,x."LATE_MORNING_COUNT" = :a75,x."DAYTIME_COUNT" = :a76,x."EARLY_AFTERNOON_COUNT" = :a77,x."LATE_AFTERNOON_COUNT" = :a78,x."EVENING_COUNT" = :a79,x."EARLY_EVENING_COUNT" = :a80,x."EARLY_NIGHT_COUNT" = :a81,x."MOST_CALORIES_BURNED" = :a82,x."LONGEST_ACTIVITY_DURATION" = :a83,x."FUEL_BEST_SESSION" = :a84,x."WORKOUTOFDAY_TOTAL" = :a85,x."SOCIAL_SHARE_TOTAL" = :a86,x."FUEL_BEST_SESSION_DATE" = :a87,x."LAST_ACTIVITY_TZ_OFFSET" = :a88,x."LAST_ACTIVITY_DST_OFFSET" = :a89,x."CALORIE_BEST_WEEK" = :a90,x."CALORIE_BEST_WEEK_AMT" = :a91,x."LONGEST_ACTIVITY_DURATION_DATE" = :a92,x."DURATION_BEST_WEEK" = :a93,x."DURATION_BEST_WEEK_AMT" = :a94,x."INTENSITY_BEST_AMT" = :a95,x."INTENSITY_BEST" = :a96,x."FUEL_SUNDAY_TOTAL" = :a97,x."FUEL_SUNDAY_TOTAL_COUNT" = :a98,x."FUEL_MONDAY_TOTAL" = :a99,x."FUEL_MONDAY_TOTAL_COUNT" = :a100,x."FUEL_TUESDAY_TOTAL" = :a101,x."FUEL_TUESDAY_TOTAL_COUNT" = :a102,x."FUEL_WEDNESDAY_TOTAL" = :a103,x."FUEL_WEDNESDAY_TOTAL_COUNT" = :a104,x."FUEL_THURSDAY_TOTAL" = :a105,x."FUEL_THURSDAY_TOTAL_COUNT" = :a106,x."FUEL_FRIDAY_TOTAL" = :a107,x."FUEL_FRIDAY_TOTAL_COUNT" = :a108,x."FUEL_SATURDAY_TOTAL" = :a109,x."FUEL_SATURDAY_TOTAL_COUNT" = :a110,x."STARS_BEST_DAY_AMT" = :a111,x."STARS_BEST_DAY_DATE" = :a112,x."MOST_FUEL_IN_SESSION" = :a113,x."MOST_FUEL_IN_SESSION_DATE" = :a114 WHERE x."UPM_USER_ID" = :b0 AND x."ACTIVITY_TYPE_ID" = :b1>).

2016-12-07 02:52:28  WARNING OGG-01154  SQL error 1403 mapping MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG OCI Error ORA-01403: no data found, SQL <UPDATE "MSP"."USER_ACTIVITY_LIFETIME_AGG" x SET x."USER_ACTIVITY_LIFETIME_ID" = :a0,x."NIKE_PLUS_USER_ID" = :a1,x."ACTIVITY_NUM" = :a3,x."FUEL_TOTAL" = :a4,x."STEP_TOTAL" = :a5,x."CALORIE_TOTAL" = :a6,x."DURATION_TOTAL" = :a7,x."DISTANCE_TOTAL" = :a8,x."WALK_TOTAL" = :a9,x."FUEL_ACTIVITY_NUM" = :a10,x."FUEL_DAILY_AVG" = :a11,x."BEST_ACTIVE_HOUR_START" = :a12,x."BEST_ACTIVE_MINUTE_START" = :a13,x."BEST_ACTIVE_HOUR_END" = :a14,x."BEST_ACTIVE_MINUTE_END" = :a15,x."FUEL_BEST_ACTIVE_HOUR" = :a16,x."FUEL_BEST_DAY" = :a17,x."FUEL_BEST_DAY_AMT" = :a18,x."FUEL_BEST_WEEK" = :a19,x."FUEL_BEST_WEEK_AMT" = :a20,x."FUEL_BEST_MONTH" = :a21,x."FUEL_BEST_MONTH_AMT" = :a22,x."CREATE_DATE" = :a23,x."UPDATE_DATE" = :a24,x."FUEL_BEST_HOUR_AMT" = :a25,x."CURRENT_STREAK" = :a27,x."CURRENT_STREAK_START_DATE" = :a28,x."MISS_STREAK" = :a29,x."MISS_STREAK_START_DATE" = :a30,x."LONGEST_STREAK" = :a31,x."LONGEST_STREAK_START_DATE" = :a32,x."LONGEST_MISS_STREAK" = :a33,x."LONGEST_MISS_STREAK_START_DATE" = :a34,x."DEVICE_ID" = :a35,x."FUEL_BEST_SUNDAY" = :a36,x."FUEL_BEST_SUNDAY_AMT" = :a37,x."FUEL_BEST_MONDAY" = :a38,x."FUEL_BEST_MONDAY_AMT" = :a39,x."FUEL_BEST_TUESDAY" = :a40,x."FUEL_BEST_TUESDAY_AMT" = :a41,x."FUEL_BEST_WEDNESDAY" = :a42,x."FUEL_BEST_WEDNESDAY_AMT" = :a43,x."FUEL_BEST_THURSDAY" = :a44,x."FUEL_BEST_THURSDAY_AMT" = :a45,x."FUEL_BEST_FRIDAY" = :a46,x."FUEL_BEST_FRIDAY_AMT" = :a47,x."FUEL_BEST_SATURDAY" = :a48,x."FUEL_BEST_SATURDAY_AMT" = :a49,x."ACTIVE_PERCENTAGE" = :a50,x."FUEL_BEST_YEAR" = :a51,x."FUEL_BEST_YEAR_AMT" = :a52,x."SUPER_GOAL_CNT" = :a53,x."TAG_IT_STREAK_CAREER" = :a54,x."TAG_IT_STREAK_CURRENT" = :a55,x."TAG_IT_TOTAL" = :a56,x."TAG_NOT_IT_TOTAL" = :a57,x."TAG_STREAK_CAREER" = :a58,x."TAG_STREAK_CURRENT" = :a59,x."ESP_SCORE_TOTAL" = :a60,x."ACTIVE_TIME_TOTAL" = :a61,x."STEP_CNT" = :a62,x."STEP_CNT_AVG" = :a63,x."STEP_WEEK_AVG" = :a64,x."STEP_CNT_MAX" = :a65,x."STEP_DATE_LONGEST" = :a66,x."FUEL_BEST_CURRENT_WEEK" = :a67,x."FUEL_BEST_CURRENT_WEEK_AMT" = :a68,x."START_DATE" = :a69,x."SMALL_HOURS_COUNT" = :a70,x."LATE_NIGHT_COUNT" = :a71,x."BRIGHT_AND_EARLY_COUNT" = :a72,x."MORNING_COUNT" = :a73,x."EARLY_MORNING_COUNT" = :a74,x."LATE_MORNING_COUNT" = :a75,x."DAYTIME_COUNT" = :a76,x."EARLY_AFTERNOON_COUNT" = :a77,x."LATE_AFTERNOON_COUNT" = :a78,x."EVENING_COUNT" = :a79,x."EARLY_EVENING_COUNT" = :a80,x."EARLY_NIGHT_COUNT" = :a81,x."MOST_CALORIES_BURNED" = :a82,x."LONGEST_ACTIVITY_DURATION" = :a83,x."FUEL_BEST_SESSION" = :a84,x."WORKOUTOFDAY_TOTAL" = :a85,x."SOCIAL_SHARE_TOTAL" = :a86,x."FUEL_BEST_SESSION_DATE" = :a87,x."LAST_ACTIVITY_TZ_OFFSET" = :a88,x."LAST_ACTIVITY_DST_OFFSET" = :a89,x."CALORIE_BEST_WEEK" = :a90,x."CALORIE_BEST_WEEK_AMT" = :a91,x."LONGEST_ACTIVITY_DURATION_DATE" = :a92,x."DURATION_BEST_WEEK" = :a93,x."DURATION_BEST_WEEK_AMT" = :a94,x."INTENSITY_BEST_AMT" = :a95,x."INTENSITY_BEST" = :a96,x."FUEL_SUNDAY_TOTAL" = :a97,x."FUEL_SUNDAY_TOTAL_COUNT" = :a98,x."FUEL_MONDAY_TOTAL" = :a99,x."FUEL_MONDAY_TOTAL_COUNT" = :a100,x."FUEL_TUESDAY_TOTAL" = :a101,x."FUEL_TUESDAY_TOTAL_COUNT" = :a102,x."FUEL_WEDNESDAY_TOTAL" = :a103,x."FUEL_WEDNESDAY_TOTAL_COUNT" = :a104,x."FUEL_THURSDAY_TOTAL" = :a105,x."FUEL_THURSDAY_TOTAL_COUNT" = :a106,x."FUEL_FRIDAY_TOTAL" = :a107,x."FUEL_FRIDAY_TOTAL_COUNT" = :a108,x."FUEL_SATURDAY_TOTAL" = :a109,x."FUEL_SATURDAY_TOTAL_COUNT" = :a110,x."STARS_BEST_DAY_AMT" = :a111,x."STARS_BEST_DAY_DATE" = :a112,x."MOST_FUEL_IN_SESSION" = :a113,x."MOST_FUEL_IN_SESSION_DATE" = :a114 WHERE x."UPM_USER_ID" = :b0 AND x."ACTIVITY_TYPE_ID" = :b1>.

2016-12-07 02:52:28  ERROR   OGG-01296  Error mapping from MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG.

2016-12-07 02:52:28  ERROR   OGG-01668  PROCESS ABENDING.

大致的看一下就是因为要update的数据没找到,然后abended了

平时这种报错看得太多了,加个HC参数(handlecollision) 然后等lag追上了或者等几分钟把HC参数注掉就是了

今天这个case也不例外

但是自己想去挖掘是哪条/哪几条记录造成update的no data found

先来看看HC参数的影响,

使用HANDLECOLLISIONS的几个场景:

1.    target丢失delete记录(missing delete),忽略该问题并不记录到discardfile

2.    target丢失update记录(missing update)

  •    更新的键值是主键=》 update转换成INSERT ,默认情况下插入记录不完整
  •    更新的键值是非主键=》 忽略该问题并不记录到discardfile

3.    重复插入已存在的主键值到target表中,这将被replicat转换为UPDATE现有主键值的行的其他非主键列

另:该参数仅处理数据本身的Insert/Delete冲突,如果出现两端映射或其它结构性问题Replicat进程依然会abend,不能被忽略

 

此外对于主键的更新操作,若在target使用HANDLECOLLISIONS且该update丢失,在会转换为INSERT该主键的操作,注意默认情况下插入的记录不完整,FETCHOPTIONS FETCHPKUPDATECOLS将捕获完整的redo image镜像到trail中,这保证把primary key的更新通过HANDLECOLLISIONS转换为对target的一个完整记录的插入。

因为自己一开始遇到这报错,也就先加个HC参数把进程启起来再说了。

事后深入分析嘛---->如下:

看了HC关于update的说法,先看看表主键

SQL> select a.constraint_name,  a.column_name

2   from dba_cons_columns a, dba_constraints b

3   where a.constraint_name = b.constraint_name

and b.constraint_type = 'P'

and a.table_name = 'USER_ACTIVITY_LIFETIME_AGG'  4    5  ;

no rows selected

没有主键!!!

那么就是说加了HC之后就忽略这个报错也不记到discard file里面去了。

那么就是说有数据丢失了!那几条数据也就不管了!(关于数据丢失的话其实得看数据库的数据要求严格与否!因为这里的库是个报表库,定期也有数据的refresh,所以对数据的精确度要求没太高)

看看一开始因为什么数据不存在造成的abended

之前自己都是在logdump里面乱看的,完全找不到很明确的record

经过一番的分析,进程abended的时候会记ggserr.log 也会去记discard file或者report file呀

应该去report、discard file里面找找有价值的信息

先把abended以后的info r4f_sp信息贴出来

2016-12-07 02:52:28  WARNING OGG-01154  SQL error 1403 mapping MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG OCI Error ORA-01403: no data found,

2016-12-07 02:52:28  WARNING OGG-01003  Repositioning to rba 709137304 in seqno 6889.

===================================

GGSCI (ora-bi-p-5.va2.b2c.nike.com) 6> info R4F_SP

REPLICAT   R4F_SP    Last Started 2016-12-03 18:16   Status ABENDED

Checkpoint Lag       00:00:08 (updated 00:05:57 ago)

Log Read Checkpoint  File /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006889

2016-12-07 02:52:20.002353  RBA 709137304

=========================================

GGSCI (ora-bi-p-5.va2.b2c.nike.com) 29> sh ls -lrt /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4*

.......(省略)

-rw-r-----. 1 ggadmin oinstall 1023999438 Dec  7 01:04 /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006888

-rw-r-----. 1 ggadmin oinstall  820886242 Dec  7 03:11 /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006889

==========================================

去report file找找信息:

***********************************************************************

*                   ** Run Time Statistics **                         *

***********************************************************************

Last record for the last committed transaction is the following:

___________________________________________________________________

Trail name :  /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006889

Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)

UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)

RecLength  :  1619 (x0653)    IO Time    : 2016-12-07 02:52:20.002353

IOType     :    15  (x0f)     OrigNode   :   255  (xff)

TransInd   :     .  (x02)     FormatType :     R  (x52)

SyskeyLen  :     0  (x00)     Incomplete :     .  (x00)

AuditRBA   :      55760       AuditPos   : 2023822924

Continued  :     N  (x00)     RecCount   :     1  (x01)

2016-12-07 02:52:20.002353 FieldComp          Len  1619 RBA 709135576

Name: MSP.USER_ACTIVITY_LIFETIME_AGG

___________________________________________________________________

Reading /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006889, current RBA 709153355, 11861808 records

Report at 2016-12-07 02:52:28 (activity since 2016-12-07 00:01:00)

From Table MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG:

#                   inserts:      6112

#                   updates:    450184

#                   deletes:         0

    #                  discards:         1       因为process abended所以会记到discard file了(在未启用HC的情况下)(所以要求我们平时正常运行的goldengate一定不要加上HC参数,实在紧急处理数据问题、abended问题再去用,用完也记得及时注释掉)

Last log location read:

FILE:      /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4006889

SEQNO:     6889

  RBA:       709153355(最后一次log读到这里,待会可以用logdump看看这个RBA的位置)

TIMESTAMP: 2016-12-07 02:52:20.002360

EOF:       NO

READERR:   0

2016-12-07 02:52:28  ERROR   OGG-01668  PROCESS ABENDING.

好的,report file就如上的有用的信息。那么接下来可以看看discard file看看是哪条记录!!!!

ggadmin@ora-bi-p-5:DCBIPRD5:/gg/app/ggadmin/product/12.1.2.1.0/dirrpt$less r4f_sp1.dsc

Oracle GoldenGate Delivery for Oracle process started, group R4F_SP discard file opened: 2016-12-03 18:16:22.461903

Current time: 2016-12-07 02:52:28

Discarded record from action ABEND on error 1403

OCI Error ORA-01403: no data found, SQL <UPDATE "MSP"."USER_ACTIVITY_LIFETIME_AGG" x SET x."USER_ACTIVITY_LIFETIME_ID" = :a0,x."NIKE_PLUS_USER_ID" = :a1,x."ACTIVITY_NUM" = :a3,x."FUEL_TOTAL" = :a4,x."STEP_TOTAL" = :a5,x."CALORIE_TOTAL" = :a6,x."DURATION_TOTAL" = :a7,x."DISTANCE_TOTAL" = :a8,x."WALK_TOTAL" = :a9,x."FUEL_ACTIVITY_NUM" = :a10,x."FUEL_DAILY_AVG" = :a11,x."BEST_ACTIVE_HOUR_START" = :a12,x."BEST_ACTIVE_MINUTE_START" = :a13,x."BEST_ACTIVE_HOUR_END" = :a14,x."BEST_ACTIVE_MINUTE_END" = :a15,x."FUEL_BEST_ACTIVE_HOUR" = :a16,x."FUEL_BEST_DAY" = :a17,x."FUEL_BEST_DAY_AMT" = :a18,x."FUEL_BEST_WEEK" = :a19,x."FUEL_BEST_WEEK_AMT" = :a20,x."FUEL_BEST_MONTH" = :a21,x."FUEL_BEST_MONTH_AMT" = :a22,x."CREATE_DATE" = :a23,x."UPDATE_DATE" = :a24,x."FUEL_BEST_HOUR_AMT" = :a25,x."CURRENT_STREAK" = :a27,x."CURRENT_STREAK_START_DATE" = :a28,x."MISS_STREAK" = :a29,x."MISS_STREAK_START_DATE" = :a30,x."LONGEST_STREAK" = :a31,x."LONGEST_STREAK_START_DATE" = :a32,x."LONGEST_MISS_STREAK" = :a33,x."LONGEST_MISS_STREAK_STAR

Aborting transaction on /gg/app/ggadmin/product/12.1.2.1.0/dirdat/replicate/pdsp/r4 beginning at seqno 6889 rba 709137304

       error at seqno 6889 rba 709153355(这个RBA跟之前看report file时候log读到最后一个位置的RBA一样,已经很明显的说明了这个位置开始的记录必定是造成process abended的记录,不要暂时不要着急,慢慢来)

Problem replicating MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG

Record not found

Mapping problem with compressed update record (target format)...

*

USER_ACTIVITY_LIFETIME_ID = fa873844-39c5-4b9f-bee1-9dcbe76ece4e

000000: 66 61 38 37 33 38 34 34 2d 33 39 63 35 2d 34 62 |fa873844-39c5-4b|

000010: 39 66 2d 62 65 65 31 2d 39 64 63 62 65 37 36 65 |9f-bee1-9dcbe76e|

000020: 63 65 34 65                                     |ce4e            |

NIKE_PLUS_USER_ID = 430995F13A1119D6E05330690C0ADA3B

000000: 34 33 30 39 39 35 46 31 33 41 31 31 31 39 44 36 |430995F13A1119D6|

000010: 45 30 35 33 33 30 36 39 30 43 30 41 44 41 33 42 |E05330690C0ADA3B|

UPM_USER_ID = 430995F13A1019D6E05330690C0ADA3B

000000: 34 33 30 39 39 35 46 31 33 41 31 30 31 39 44 36 |430995F13A1019D6|

000010: 45 30 35 33 33 30 36 39 30 43 30 41 44 41 33 42 |E05330690C0ADA3B|

后面的列的信息就不贴了,因为这张表有一百多列

看完这里,我就去查查记录在源库PDSP和目标库BI的数据信息

BI:目标库无记录

SQL> select USER_ACTIVITY_LIFETIME_ID,NIKE_PLUS_USER_ID from msp.USER_ACTIVITY_LIFETIME_AGG where UPM_USER_ID ='430995F13A1019D6E05330690C0ADA3B';

no rows selected

PDSP:源库有三条纪录

SQL> select USER_ACTIVITY_LIFETIME_ID,NIKE_PLUS_USER_ID from msp.USER_ACTIVITY_LIFETIME_AGG where UPM_USER_ID ='430995F13A1019D6E05330690C0ADA3B';

USER_ACTIVITY_LIFETIME_ID               NIKE_PLUS_USER_ID

---------------------------------------------------------------------------------------------------------------------------

fa873844-39c5-4b9f-bee1-9dcbe76ece4e                              430995F13A1119D6E05330690C0ADA3B

d8174109-5a5c-4ef4-a752-d30370b67f7c                               430995F13A1119D6E05330690C0ADA3B

2cc196ae-4959-4d3e-a34d-713310aab95e                             430995F13A1119D6E05330690C0ADA3B

看到这里于是明白了,结合这条update语句来看,update语句如下格式

UPDATE "MSP"."USER_ACTIVITY_LIFETIME_AGG"  SET 表的各个列=xxxx    WHERE "UPM_USER_ID" = :b0 AND "ACTIVITY_TYPE_ID" = :b1>.

但是UPM_USER_ID ='430995F13A1019D6E05330690C0ADA3B';这个在BI里面没记录呀(当然也可以根据ACTIVITY_TYPE_ID来找,或者两个一起找,结果一样的)

可以再去logdump里面看看trail file是不是这样的:

直接pos 709153355到这个位置来看

可以看到从709153355这个位置开始后面三条纪录正好是update所丢失的记录

所以这次的问题分析的很透彻,就是BI里面没这三条记录从而导致update不到造成abended,那么该怎么做呢?

个人觉得可以跳过这三条记录,然后手工insert这三条记录进去。(这三条记录直接往源库里面查下,然后转换成insert语句执行在目标库即可完事)

跳过的方法无非就是HANDLECOLLISION或者REPORT ERROR,不过report error好就好在会把这三条跳过去的记录记到discard file!

关于HC和report error的区别在后面另开一篇可以详细的讲下。

分析到这里,也结束了。

自己当时只是加了HC参数去起起来,然后等lag没了再去把HC注掉。其实这样在数据严格要求的环境下这样是不行的。

但是这里要求不太高。定期也有数据重新refresh的操作。

这里再发点加完HC参数起起来之后的信息状态,也可以佐证之前的分析:

可以看到stats看到的        Total update collisions                            3.00

即说明了是三条记录,之前也说了加了HC参数有冲突的数据是不会记到discard file的,我去看了,是没有!

GGSCI (ora-bi-p-5.va2.b2c.nike.com) 34> stats R4F_SP

Sending STATS request to REPLICAT R4F_SP ...

Start of Statistics at 2016-12-07 03:18:16.

Replicating from MSP.USER_ACTIVITY_LIFETIME_AGG to MSP.USER_ACTIVITY_LIFETIME_AGG:

*** Total statistics since 2016-12-07 03:07:15 ***

Total inserts                                    719.00

Total updates                                  54583.00

Total deletes                                      0.00

Total discards                                     0.00

Total operations                               55302.00

    Total update collisions                            3.00

*** Daily statistics since 2016-12-07 03:07:15 ***

Total inserts                                    719.00

Total updates                                  54583.00

Total deletes                                      0.00

Total discards                                     0.00

Total operations                               55302.00

Total update collisions                            3.00

*** Hourly statistics since 2016-12-07 03:07:15 ***

Total inserts                                    719.00

Total updates                                  54583.00

Total deletes                                      0.00

Total discards                                     0.00

Total operations                               55302.00

Total update collisions                            3.00

*** Latest statistics since 2016-12-07 03:07:15 ***

Total inserts                                    719.00

Total updates                                  54583.00

Total deletes                                      0.00

Total discards                                     0.00

Total operations                               55302.00

Total update collisions                            3.00

End of Statistics.

Track 造成Goldengate abended的那条record的更多相关文章

  1. goldengate abended with no data found

    先来看下报错ggserr.log: 2016-12-22 04:48:52  WARNING OGG-02544  Unhandled error (ORA-26787: The row with k ...

  2. OD使用经验【转载】

    文章整理发布:黑客风云  1.我的os是winXP,无法使用trw2000,而softice装了多次均未成功,还蓝屏死机多次.郁闷. 2.友好的gui界面,不像softice.可以边干活边听歌,不像s ...

  3. 7.8 Models -- The Rest Adapter

    一.概述 默认的,store将会使用 DS.RESTAdapter来加载和存储records.这个RESTAdapter假定URLS和JSON关联每一个model是约定好的:这意味着,如果你遵循这个规 ...

  4. Dynamics CRM 2015-如何修改Optionset Default Value

    在日常工作中,我们时不时会遇到在CRM测试环境上添加Optionset的时候,Default Value是某个值,但换到Production环境或者其他环境,添加的时候,Default Value可能 ...

  5. 【转载】十步完全理解SQL

    很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言) ...

  6. Distribution1:Distribution Reader

    在transactional replication中,在publication中执行了一个更新,例如:update table set col=? Where ?,如果table中含有大量的数据行, ...

  7. 转载文章----十步完全理解SQL

    转载地址:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程 ...

  8. Select查询执行顺序

    链接:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语 ...

  9. 006_Salesforce Sharing 使用说明

    Salesforce Sharing 使用说明 背景说明:Salesforce共享实施记录和其它数据时,需要员工之间共享或多个用户在一个组织间的共享.然而,共享这些数据是有风险的,尤其是当它涉及到敏感 ...

随机推荐

  1. How ASP.NET Web API 2.0 Works?[持续更新中…]

    一.概述 RESTful Web API [Web标准篇]RESTful Web API [设计篇] 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 二.路由 ...

  2. 最大子段和(c++)

    // 最大子段和.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using namesp ...

  3. delete

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Atitit java onvif 开源类库 getProfiles getStreamUri

    Atitit java onvif 开源类库 getProfiles getStreamUri 1. ONVIF Java Library by Milgo1 1.1. https://github. ...

  5. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  6. redis数据结构详解之Hash(四)

    序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引 ...

  7. 【Win 10 应用开发】UDP广播

    我们知道,对于UDP协议的通信,除了可以用来聊天外,可以发送广播数据.只要向广播地址的某个端口发送数据就可以进行广播,子网中只要监听该端口的socket就能收到广播消息. 最简单的方法就是向255.2 ...

  8. BOM,DOM,ECMAScripts三者的关系

    一:DOM 文档对象模型(DOM)是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口(API) DOM是HTML与JavaScript之间沟通的桥梁.   DOM下,HTM ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限全套完整图

    根据角色或用户或模块查询权限.

  10. KindEditor 给KindEditor赋值

    在项目的过程中,使用了KindEditor编辑器,然后在赋值的时候,我的编辑器ID是content,然后我想通过$("#content").html()来赋值,发现赋值失败,后来百 ...