需求:数据库双机热备份,采用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;
加QQ:800060152 获取Oracle技术沙龙,网络公开课资格http://www.cuug.com/jishushalong/jishushalong/