用透明网关与mssqlserver同步遇到神错误

row32hahaha 2014-07-07 02:35:18
测试环境具体情况入下:
Win7 X64 Oracle 10g oracle10g透明网关 表tba
Win7 X64 MSSQLSERVER2012 表tbb
场景是Oracle的tba与sql的tbb两表的FieldB要做到实时同步
于是透明网关创建完成,查询没任何问题。
problem:
create or replace trigger TRG_A
after update of fieldb on tba
for each row
declare
cnt integer;
begin
select count(1)
into cnt
from tbb@remote_db a
where a."FieldA" = :old.FieldA;
IF cnt < 1 THEN
dbms_output.put_line('远程数据库无此记录,修改失败!');
ROLLBACK;
RETURN;
END IF;
update tbb@remote_db a
set a."FieldB" = :new.fieldb
where a."FieldA" = :old.FieldA;
end TRG_A;

错误是ORA-02070: database remote_db not support SYS_OP_C2C in this context


google都快疯了,唯一只找到一句相关的还是日语:


看样子讲的还是DB2的类型与Oracle类型的原因。

求坛子里的大神啊,只剩30分,全给了
...全文
207 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
row32hahaha 2014-07-09
  • 打赏
  • 举报
回复
这坑爹的oracle 透明网关我已经放弃了,破玩意。。。。不知道为什么oracle的什么东西都要脚本都要命令行都要配置而mssql就可以UI伺候,奶奶的,折腾了我三天这烂东西,最后还提示些烂七八糟的错
row32hahaha 2014-07-08
  • 打赏
  • 举报
回复
最新情况: 好像是类型问题,我把两边数据库要查询的FieldA都改成Nvarchar(20),oracle是Nvarchar2(20)后不报错了 但是。。。。。commit依然有问题。分布事务又出问题了,而且mssql返回的这个错误看不懂啊,百度也没有
row32hahaha 2014-07-08
  • 打赏
  • 举报
回复
求解啊。好几天了。
潇洒王子 2014-07-08
  • 打赏
  • 举报
回复
不懂,等楼下高手。
row32hahaha 2014-07-07
  • 打赏
  • 举报
回复
引用 6 楼 z_shousi 的回复:
[quote=引用 5 楼 row32hahaha 的回复:] [quote=引用 4 楼 z_shousi 的回复:] 字段类型不一致造成的吧
mssql nvarchar(50) oracle VARCHAR2(20)[/quote] SYS_OP_C2C(:new.fieldb) 这个试过没[/quote] 刚试了,还是一样。这个函数是干啥的呢?
  • 打赏
  • 举报
回复
引用 5 楼 row32hahaha 的回复:
[quote=引用 4 楼 z_shousi 的回复:] 字段类型不一致造成的吧
mssql nvarchar(50) oracle VARCHAR2(20)[/quote] SYS_OP_C2C(:new.fieldb) 这个试过没
row32hahaha 2014-07-07
  • 打赏
  • 举报
回复
引用 4 楼 z_shousi 的回复:
字段类型不一致造成的吧
mssql nvarchar(50) oracle VARCHAR2(20)
  • 打赏
  • 举报
回复
字段类型不一致造成的吧
row32hahaha 2014-07-07
  • 打赏
  • 举报
回复
没人知道吗?快被逼疯,求解
row32hahaha 2014-07-07
  • 打赏
  • 举报
回复
不会,dblink建立用的是mssqlserver的sa帐号。
CT_LXL 2014-07-07
  • 打赏
  • 举报
回复
引用 楼主 row32hahaha 的回复:
测试环境具体情况入下: Win7 X64 Oracle 10g oracle10g透明网关 表tba Win7 X64 MSSQLSERVER2012 表tbb 场景是Oracle的tba与sql的tbb两表的FieldB要做到实时同步 于是透明网关创建完成,查询没任何问题。 problem: create or replace trigger TRG_A after update of fieldb on tba for each row declare cnt integer; begin select count(1) into cnt from tbb@remote_db a where a."FieldA" = :old.FieldA; IF cnt < 1 THEN dbms_output.put_line('远程数据库无此记录,修改失败!'); ROLLBACK; RETURN; END IF; update tbb@remote_db a set a."FieldB" = :new.fieldb where a."FieldA" = :old.FieldA; end TRG_A; 错误是ORA-02070: database remote_db not support SYS_OP_C2C in this context google都快疯了,唯一只找到一句相关的还是日语: 看样子讲的还是DB2的类型与Oracle类型的原因。 求坛子里的大神啊,只剩30分,全给了
是不是你远程用户没有权限修改啊

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧