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定时任务里就行了

 

 

 

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

你可能感兴趣的:(数据结构,oracle,sql,windows,脚本)