生产环境发票管理库到总局主数据库 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