各位好。
我这有个疑问是,复制端,如何配置,使得复制进程可以调用存储过程(中间表及存储过程在目标端数据库上)

场景描述:
我在源库oggs,目标库oggt中分别新建了张同构的表test01,oggs中的数据导到oggt中。
借助oggt上的中间表以及存储过程进行数据转换。

oggs上   
        ID        NAME
1        01        A
2        02        B
3        03        C
4        04        D


oggt上中间表
           MAPPING_GUID        MAPPING_FRMTABLE        MAPPING_FRMCOLNAME        MAPPING_FRMCOLVALUE        MAPPING_TOTABLE        MAPPING_TOCOLNAME        MAPPING_TOCOLVALUE
1        001        test01        name        A        test01        name        AA
2        002        test01        name        B        test01        name        BB
3        003        test01        name        C        test01        name        CC
4        004        test01        name        D        test01        name        DD


设想目标端投递结果为
Id   name
01        AA
02        BB
03        CC
04        DD



create or replace procedure procMappingTest(frmcolvalue in varchar,
                                            tocolvalue  out varchar) is
begin
  select mapping_tocolvalue
    into tocolvalue
    from mappingtable t
   where mapping_frmcolvalue = frmcolvalue;
end;




复制端参数配置
replicat repl
userid oggt, password aaaaaa
setenv (NLS_LANG = AMERICAN_AMERICA.US7ASCII)
assumetargetdefs
reperror default, discard
discardfile ./dirrpt/repl.dsc, append, megabytes 100
gettruncates
map oggs.test01, target oggt.test01,
sqlexec(id procMappingTest,spname procMappingTest,                   --这个地方id不添加,会start repl进程时就报错
params(frmcolvalue=mapping_frmcolvalue)),
colmap(usedefaults,name=@GETVAL(procMappingTest.tocolvalue));




可是执行过程中,复制进程挂起。出错日志如下

ERROR   OGG-00665  OCI Error executing alter session disable parallel dml (status = 12841-ORA-12841: Cannot alter the session parallel DML state within a transaction), SQL<Not available>.
标签: 暂无标签
格格巫

写了 2 篇文章,拥有财富 89,被 8 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2014-5-8 15:37:17
该问题已经解决。
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈