dblink同步远程带有blob字段的表

BadPattern 2010-02-12 10:55:23
加精
目前在做一个功能:数据库双机热备份,采用dblink和触发器来实现两个数据库同步,但是在同步插入操作主数据库中一张带有blob字段表的时候出现了问题,oracle的触发器不可以直接访问远程表的blob字段,会报错:无法使用从远程表选择的 lob 定位器。
解决方法如下:1,在本地数据库创建一个结构和含有blob字段表相同的临时表。
2,把新插入的数据插入到临时表中。
3,再把临时表的数据用insert into remoteTable@dblink_name select * from temp的形式插入到远程数据库中

示例代码如下:
CREATE GLOBAL TEMPORARY TABLE temp as select * from test(含有blob字段,字段名为file) where 1=2;
触发器:
create or replace trigger test_trigger
after insert on test
for each row
begin
if inserting then
insert into temp (id,file,name) values (:new.id,:new.file,:new.name);
insert into test@dblink_name select * from temp(只能用select * 的方式来插入,不然会报错)
where id=:new.id;
end if;
end;
...全文
8856 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxfsxkth 2012-07-16
  • 打赏
  • 举报
回复
这个方法我试了怎么不行啊,数据能同步,blob字段是空的啊。。。。。。求解释
gavinloo 2011-09-14
  • 打赏
  • 举报
回复
项目中碰到楼主类似的问题,从远程导入Blob字段失败。感谢。
jessie_01 2011-08-24
  • 打赏
  • 举报
回复
不用中间表直接insert也是可以成功,不过我的是写在存储过程里面的,为什么要加中间表~
zhiheyang 2011-07-19
  • 打赏
  • 举报
回复
insert 这样做可以,我试了,但是若是update,怎么做啊
windly4548 2011-06-27
  • 打赏
  • 举报
回复
图片能显示出来吗
?怎么没一个试出来的
gdd714 2010-08-06
  • 打赏
  • 举报
回复
双机热备和同步有什么关系,小数据量还可以接受,还是用基于硬件的方案吧
aries_nj 2010-07-24
  • 打赏
  • 举报
回复
找了好长时间了,终于找到这个方法了
化繁为简2007 2010-02-28
  • 打赏
  • 举报
回复
先收藏了,慢慢看!!!!
貓哥是個傳說 2010-02-23
  • 打赏
  • 举报
回复
學習,不錯~~~~~~~~
rehom1234 2010-02-22
  • 打赏
  • 举报
回复
还没试过,想法不错!
mywaypig 2010-02-21
  • 打赏
  • 举报
回复
FGHFGHFGGHGHFDGHFGHDGHGFHFGHGHFGHFG
scutLiu 2010-02-21
  • 打赏
  • 举报
回复
mark学习中
yxiaowang 2010-02-21
  • 打赏
  • 举报
回复
不错,值得学习!!值得学习
yangchao0618 2010-02-21
  • 打赏
  • 举报
回复
好帅啊???????高手
lgp8249 2010-02-21
  • 打赏
  • 举报
回复
不错!!不错!!不错!!不错!!不错!!
huhaizeyuan 2010-02-20
  • 打赏
  • 举报
回复
学习下,或许某天会用着。
多谢分享。
oraclemch 2010-02-20
  • 打赏
  • 举报
回复
引用 20 楼 dr8737010 的回复:
引用 1 楼 oraclemch 的回复:嗯,触发器里面不要select * from temp; 方式不太好,万一temp表数据量大的话,会严重影响数据库的性能的。

temp表只是个临时表,在commit以后里边数据会被清空掉(测试过了),所以不会出现这种情况,它相当于一个临时中转站


那你怎么保证这个临时表temp里面的数据全是你insert into的呢?万一别的oracle用户或者系统用户insert into temp的话,你怎么办呢?
wangjiahuhjh 2010-02-20
  • 打赏
  • 举报
回复
学习了 真的不错 ,感谢了
duqiangcise 2010-02-19
  • 打赏
  • 举报
回复
mark一下,咋都有人上班了呀!
nettman 2010-02-19
  • 打赏
  • 举报
回复
新思路,学习学习。
新年快乐!
加载更多回复(18)

17,377

社区成员

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

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