首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

dblink同步远程带有blob字段的表,该如何解决

2012-03-06 
dblink同步远程带有blob字段的表目前在做一个功能:数据库双机热备份,采用dblink和触发器来实现两个数据库

dblink同步远程带有blob字段的表
目前在做一个功能:数据库双机热备份,采用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;


[解决办法]
嗯,触发器里面不要select * from temp; 方式不太好,万一temp表数据量大的话,会严重影响数据库的性能的。
[解决办法]
厉害哦,学习了!居然可以这样的!
[解决办法]
挺好的思路。加个精华。
[解决办法]
支持你哈,是个好文章
[解决办法]
恩,学习了。
这思想可以。

[解决办法]
新思路,学习学习。
blob字段备份一直不方便
[解决办法]
帮顶!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
没试过,试试吧!!!!
[解决办法]
再把临时表的数据用insert into remoteTable@dblink_name select * from temp的形式插入到远程数据库中 
这个怎么样
[解决办法]
试试看.........
[解决办法]
强悍!!!!!!!!!!!!!!!!!!!!!!!!1
[解决办法]
jianshi le!!!
[解决办法]
1 hao ,very good, good luck to you
[解决办法]
顶,我曾经也有这样的困惑,有时间试一下
[解决办法]
ding a ding
[解决办法]
过年了,来看看,新年快乐!
[解决办法]
新年后第一天上班,过来看看,学习了,拜个晚年
[解决办法]
新思路,学习学习。 
新年快乐!
[解决办法]
mark一下,咋都有人上班了呀!
[解决办法]

探讨
引用:嗯,触发器里面不要select * from temp; 方式不太好,万一temp表数据量大的话,会严重影响数据库的性能的。

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

热点排行