您好,欢迎访问一九零五行业门户网

Oracle GoldenGate 系列:Replicat 进程遇 OCI Error ORA

生产环境发票管理库到总局主数据库 replicat 进程因报如下错误 abended: 2013-04-25 07:59:50 warning ogg-00869 oci error ora-14402: updating partition keycolumn would cause a partition change (status = 14402). updatehx_fp.fp_pzhdxx set swjg_dm
生产环境发票管理库到总局主数据库 replicat 进程因报如下错误 abended:
2013-04-25 07:59:50  warning ogg-00869  oci error ora-14402: updating partition keycolumn would cause a partition change (status = 14402). updatehx_fp.fp_pzhdxx set swjg_dm =:a1,xgrq = :a2,
sjgsdq = :a3 wherehdqcuuid = :b0.
2013-04-25 07:59:50  warning ogg-01004  aborted grouped transaction on'hx_fp.fp_pzhdxx', database error 14402 (oci error ora-14402: updatingpartition key column would cause a partition change (statu
s = 14402). updatehx_fp.fp_pzhdxx set swjg_dm = :a1,xgrq= :a2,sjgsdq = :a3 where hdqcuuid = :b0).
2013-04-25 07:59:50  warning ogg-01003  repositioning to rba 355778 in seqno 83.
2013-04-25 07:59:50  warning ogg-01154  sql error 14402 mapping hx_fp.fp_pzhdxx tohx_fp.fp_pzhdxx oci error ora-14402: updating partition key column would causea partition change (status = 14402). u
pdatehx_fp.fp_pzhdxx set swjg_dm =:a1,xgrq = :a2,sjgsdq = :a3 where hdqcuuid= :b0.
2013-04-25 07:59:50  warning ogg-01003  repositioning to rba 355778 in seqno 83.
source context :
 sourcemodule            :[er.errors]
 sourceid                :[/scratch/aime1/adestore/views/aime1_staxj16/oggcore/opensys/src/app/er/errors.cpp]
 sourcefunction          :[take_rep_err_action(short, int32_t, const char *, extr_ptr_def *,std_rec_hdr_def *, char *, file_def *, bool)]
  sourceline              : [623]
2013-04-25 07:59:50  error  ogg-01296  error mapping fromhx_fp.fp_pzhdxx to hx_fp.fp_pzhdxx.
warnning ogg-00869根据官方的 error reference 中的描述,专指ogg遇到了特定的数据库错误,可以忽略。
ogg-00869: {0}
cause: the specified database error occurred, but can be ignored.
action: contact oracle support only if a problem persists.
但在本例中,replicat 进程遇到的数据库错误为oci errorora-14402: updating partition key column would cause a partition change,显然无法忽略。ora-14402 错误一般是由于 update 操作更改了分区表的分区键的值触使该行迁移到其他的分区中。而表的 row movement 默认情况下处于禁用状态,从而导致报该错误。
[oracle@prod ~]$ oerr ora 14402
14402, 00000, updating partition keycolumn would cause a partition change
// *cause: an update statement attempted to change the value of a partition
//         key column causing migration of the row to another partition
// *action: do not attempt to update apartition key column or make sure that
//         the new partition key is within the range containing the old
//         partition key.
replicat 进程报错时正在修改的记录为:
logdump 7 >pos 355778
reading forward from rba 355778
logdump 8 >n
___________________________________________________________________
hdr-ind    :     e (x45)     partition  :    .  (x04) 
undoflag   :     . (x00)     beforeafter:     a (x41) 
reclength  :    91 (x005b)   io time    : 2013/04/24 20:33:00.010.627  
iotype     :    15 (x0f)     orignode   :  255  (xff)
transind   :     . (x00)     formattype :     r (x52)
syskeylen  :     0 (x00)     incomplete :     . (x00)
auditrba   :        950       auditpos   : 915048500
continued  :     n (x00)     reccount   :    1  (x01)
2013/04/24 20:33:00.010.627 fieldcomp            len    91 rba 355778
name: hx_fp.fp_pzhdxx
after  image:                                            partition 4   g  b  
 0000 0022 0000 4232 3742 3133 35354146 3646 3430 | .....b27b1355af6f40 
 3945 3839 3145 3142 4238 4144 36383837 4438 000c | 9e891e1bb8ad6887d8.. 
 000d 0000 3135 3030 3931 3030 30303000 1000 1500 | ....15009100000..... 
 0032 3031 332d 3034 2d32 343a 32303a33 333a 3030 | .2013-04-24:20:33:00 
 0011 0007 0000 3135 3030 39                       | ......15009 
column     0 (x0000), len    34 (x0022) 
column    12 (x000c), len    13 (x000d) 
column    16 (x0010), len    21 (x0015) 
column    17 (x0011), len     7 (x0007)
执行的 update 语句为:
update hx_fp.fp_pzhdxx set swjg_dm = ‘15009100000’,xgrq= ‘2013-04-24:20:33:00’,sjgsdq= ‘15009’ where hdqcuuid = ‘b27b1355af6f409e891e1bb8ad6887d8’
其中sjgsdq 正是hx_fp.fp_pzhdxx 表的分区键。
针对这种修改分区表分区键的操作导致的 replicat 进程挂起,metalink 上给出的建议为在应用设计时尽量避免这种操作,启用该表的 row movement便可临时解决这一问题。
sql> alter table hx_fp.fp_pzhdxx enablerow movement;
table altered.
ggsci (bjsczjdbzsj01) 1> info all
program    status      group       lag at chkpt time since chkpt
manager    running                                          
jagent     stopped                                          
extract    running     ezjts_ts    00:00:00      00:00:02   
extract    running     pzjts_ts    00:00:00      00:00:03   
replicat   abended     rfp_zj3     00:00:00      12:21:37   
replicat   running     rfx_zj3     00:00:00      00:00:07   
replicat   running     rgz_zj5     00:00:00      00:00:02   
replicat   running     rnsts_zj    00:00:00      00:00:03   
replicat   running     rns_zj2     00:00:00      00:00:01   
replicat   running     rsb_zj4     00:00:00      00:00:04   
ggsci (bjsczjdbzsj01) 3> start rfp_zj3
sending start request to manager ...
replicat rfp_zj3 starting
ggsci (bjsczjdbzsj01) 4> info all
program    status      group       lag at chkpt time since chkpt
manager    running                                          
jagent     stopped                                           
extract    running     ezjts_ts    00:00:00      00:00:05   
extract    running     pzjts_ts    00:00:00      00:00:06   
replicat   running     rfp_zj3     00:00:00      00:00:00   
replicat   running     rfx_zj3     00:00:00      00:00:00    
replicat   running     rgz_zj5     00:00:00      00:00:03   
replicat   running     rnsts_zj    00:00:00      00:00:06   
replicat   running     rns_zj2     00:00:00      00:00:09   
replicat   running     rsb_zj4     00:00:00      00:00:07
http://blog.csdn.net/xiangsir/article/details/8851677
其它类似信息

推荐信息