streams insert - update - commit error handler
Date: Mon, 15 Sep 2008 20:18:58 +0700
Message-ID: <3edcb66e0809150618l8c2a060r65f8de001ee86b64@mail.gmail.com>
lists,
I have tested streams on very simple configuration, which consist of
source and destination database.
for all simple transactions there are no serious conflict/error, but
with this kind of transaction, the apply process become stuck :)
at source database:
insert into tbl values (......) ; -- insert 1 record
update tbl set ...... where ..... ; -- update the row that inserted justnow
commit;
at destination, apply process complaining that no data found (ORA-01403). I Know this error, due to the first command is INSERT bu the latest command is UPDATE and then commit.
please let me know if you have handy procedure/function to handle this
kind of transaction.
I thinking that I have to set error handler and insert into particular
table at destination first, prior to execute the LCR, is it make
sense? :)
from trace files:
kngofre: freeing lcr
kngoonew: request dur= 89, numcols=7
kngoonew: creating lcr 3 - dur 89, actual dur 89
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acaec70
colsize = 7, allocsz_kngxrcol = 7
nat_kngoxrcol, allocated size = 12, actual size = 7
xrcolp->nat_kngoxrcol = ffffffff7acaeb40
colsize = 7, allocsz_kngxrcol = 7
nat_kngoxrcol, allocated size = 12, actual size = 7
xrcolp->nat_kngoxrcol = ffffffff7acaea10
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acae8e0
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acae7b0
colsize = 5, allocsz_kngxrcol = 5
nat_kngoxrcol, allocated size = 12, actual size = 5
xrcolp->nat_kngoxrcol = ffffffff7acae680
colsize = 1, allocsz_kngxrcol = 1
nat_kngoxrcol, allocated size = 12, actual size = 1
xrcolp->nat_kngoxrcol = ffffffff7acae550
knipdis ---------
*** 2008-09-15 20:24:38.667
userid: 69
sname:CC
oname:DIALCODES
opname:REP_INSERT
knipgisql: insert -------------------
insert /*+ restrict_all_ref_cons */ into "CC"."DIALCODES" p("DCID","DCIDPARENT","DCTEXT","DCTYPE","DCV ALIDFROM","DCVALIDTO","DCVALUE")values(:1,:2,:3,:4,:5,:6,:7) knipdmpargs: dump new argument list:
column: "DCID"
(dty, kncdty, acl, csf, csi, ind)=(2,0,3,0,0,0)
value = 8888
column: "DCIDPARENT"
(dty, kncdty, acl, csf, csi, ind)=(2,0,1,0,0,0)
value = 0
column: "DCTEXT"
(dty, kncdty, acl, csf, csi, ind)=(1,0,5,1,31,0)
value = PPPPP
column: "DCTYPE"
(dty, kncdty, acl, csf, csi, ind)=(1,0,3,1,31,0)
value = PPP
column: "DCVALIDFROM"
(dty, kncdty, acl, csf, csi, ind)=(12,0,7,0,0,0)
value = Mon Sep 15 19:42:57 2008
column: "DCVALIDTO"
(dty, kncdty, acl, csf, csi, ind)=(12,0,7,0,0,0)
value = Mon Sep 15 19:42:57 2008
column: "DCVALUE"
(dty, kncdty, acl, csf, csi, ind)=(1,0,3,1,31,0)
value = PPP
executing REP_INSERT
leaving knipdis ----
*** 2008-09-15 20:24:38.668
kngofre: freeing lcr
kngoonew: request dur= 89, numcols=5
kngoonew: creating lcr 3 - dur 89, actual dur 89
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acaec70
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acaeb40
colsize = 7, allocsz_kngxrcol = 7
nat_kngoxrcol, allocated size = 12, actual size = 7
xrcolp->nat_kngoxrcol = ffffffff7acaea10
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acae8e0
colsize = 3, allocsz_kngxrcol = 3
nat_kngoxrcol, allocated size = 12, actual size = 3
xrcolp->nat_kngoxrcol = ffffffff7acae7b0
knipdis ---------
*** 2008-09-15 20:24:38.668
userid: 69
sname:CC
oname:DIALCODES
opname:REP_UPDATE
knipgusql: update -------------------
update /*+ streams or_expand(p "DCIDPARENT" )restrict_all_ref_cons */ "CC"."DIALCODES" p set "DCID"=de
code(:1,'N',"DCID",:2), "DCIDPARENT"=decode(:3,'N',"DCIDPARENT",:4), "DCTEXT"=decode(:5,'N',"DCTEXT",:6
), "DCTYPE"=decode(:7,'N',"DCTYPE",:8),
"DCVALIDFROM"=decode(:9,'N',"DCVALIDFROM",:10), "DCVALIDTO"=dec ode(:11,'N',"DCVALIDTO",:12), "DCVALUE"=decode(:13,'N',"DCVALUE",:14) where (:15="DCID") and(:16="DCID
PARENT" or(:16 is null and "DCIDPARENT" is null)) and(:17="DCTEXT") and(:18="DCTYPE") and(:19="DCV
ALIDFROM") and(:20="DCVALIDTO") and(:21="DCVALUE") knipdmpargs: dump old argument list:
column: "DCID"
(dty, kncdty, acl, csf, csi, ind)=(2,0,3,0,0,0)
value = 8888
column: "DCIDPARENT"
no available value
column: "DCTEXT"
no available value
column: "DCTYPE"
(dty, kncdty, acl, csf, csi, ind)=(1,0,3,1,31,0)
value = PPP
column: "DCVALIDFROM"
no available value
column: "DCVALIDTO"
(dty, kncdty, acl, csf, csi, ind)=(12,0,7,0,0,0)
value = Mon Sep 15 19:42:57 2008
column: "DCVALUE"
(dty, kncdty, acl, csf, csi, ind)=(1,0,3,1,31,0)
value = PPP
knipdmpargs: dump new argument list:
column: "DCID"
no available value
column: "DCIDPARENT"
no available value
column: "DCTEXT"
no available value
column: "DCTYPE"
(dty, kncdty, acl, csf, csi, ind)=(1,0,3,1,31,0)
value = XXX
column: "DCVALIDFROM"
no available value
column: "DCVALIDTO"
no available value
column: "DCVALUE"
no available value
executing REP_UPDATE
*** 2008-09-15 20:24:38.669
ksedmp: internal or fatal error
ORA-01403: no data found
-- thanks and regards ujang | oracle dba jakarta | http://ora62.wordpress.com -- http://www.freelists.org/webpage/oracle-lReceived on Mon Sep 15 2008 - 08:18:58 CDT