目前在做一个功能:数据库双机热备份,采用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一下,咋都有人上班了呀!
------解决方案--------------------