oracle远程同步,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、付费专栏及课程。

余额充值