oracle 远程同步经历

两个不同城市的oracle数据库,暂定为ora01与ora02,ora01的表结构包含ora02的表结构,但比它字段多、表结构多,所以在同步时,ora01只需要将部分内容同步到ora02中即可:

 

最终选定方案为:定期执行批bat文件,通过ora01的存储过程,将数据通过DBLINK同步到ora02中。

 

在执行过程中碰到一下几个问题:

1、ora02中存在对部分表的触发器,直接同步会报错:ORA-04088: error during execution of trigger '(触发器名称)’

解决办法(很笨,但又不知道其他办法):

(1)在ora02中建立2个存储过程,将所有碍事的触发器关掉:execute immediate 'alter trigger (触发器名称) disable',开启:execute immediate 'alter trigger (触发器名称) ensable'

(2)在ora01中建立2个存储过程,通过dblinkl调用ora02中的2个存储过程(不能够直接 ’远程trigger名称@dblink‘ 调用)。

(3)在脚本中,先执行ora01中关闭触发器的存储过程,在执行同步内容,最后再执行开启内容。

2、事务rollback处理:(不会弄,希望看到的同志们帮解决一下)

 

最终内容如下:

 

databack.bat:

@echo off  
set wind=%date:~0,4%%date:~5,2%%date:~8,2%

sqlplus name/password@oracle  @c:\file.sql >> c:\logs\%wind%.log

 

file.sql:

exec remote_alter_trigger_disable;
exec remote_to_table01;

    .

    .

    .

exec remote_alter_trigger_enable;

exit;

 

将databack.bat加入到windows定时任务里就行了

 

 

 

结束语:方法比较笨,不知道达人们有什么其他办法,希望指点一二,万分感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值