我这里装了一个linux版本的oracle,其中一个表A要与另外一个oracle的一个表B同步,由于特殊原因,不可以使用,也不可能使用oracle提供的同步服务,请不要问我原因。
所以我想写一个中间层程序,时刻监控表A是否有更新。这样时刻监控表A有很多麻烦的地方,浪费资源,因为表A也不算小。因此我打算为表A写一些触发器,这样一旦表A有改动我就知道了,现在问题是怎么在触发器中可以让我的程序知道表A有改动?我想过在触发器中通过utl_file,text_io输出一个标志文件,但是我又不知道写linux程序,只知道写windows程序。不知道上面的utl_file,text_io能不能输出文件到我当前程序的机子上面。或者再建一个表B,程序监控表B。当A有改动时,在触发器内中,将表A有改动的标识写入表B中。这样表B也不大。或者不知道oracle本身就有没有通知我程序的方法,比如一些函数命令等。关键是可以让程序第一时间得到表A有改动的通知。我的程序应该是ado直接连接oracle。请大家各抒己见,出谋划策,谢谢。
所以我想写一个中间层程序,时刻监控表A是否有更新。这样时刻监控表A有很多麻烦的地方,浪费资源,因为表A也不算小。因此我打算为表A写一些触发器,这样一旦表A有改动我就知道了,现在问题是怎么在触发器中可以让我的程序知道表A有改动?我想过在触发器中通过utl_file,text_io输出一个标志文件,但是我又不知道写linux程序,只知道写windows程序。不知道上面的utl_file,text_io能不能输出文件到我当前程序的机子上面。或者再建一个表B,程序监控表B。当A有改动时,在触发器内中,将表A有改动的标识写入表B中。这样表B也不大。或者不知道oracle本身就有没有通知我程序的方法,比如一些函数命令等。关键是可以让程序第一时间得到表A有改动的通知。我的程序应该是ado直接连接oracle。请大家各抒己见,出谋划策,谢谢。
解决方案 »
- 两句sql合并
- ORA-12514: TNS:listener does not currently know of service requested in connect
- 再发新贴:关于oracle存储过程全表扫描处理百万数据的速度问题
- 请教大家一个查询出结果集合并的问题
- Sqlserver的存储过程如何变成在Oracle下可以执行的
- form开发中谁有好点的资料?给我一定给分!在线等!!!!!!
- 在SQL*PLUS中如果用CONN命令可以在不指定数据库的情况下连接到默认的数据库,怎样才能知道我机器中哪个数据库连接是默认的?
- ORACLE的WHERE条件中加判断如何处理?
- select查询没有找到from关键字
- oracle12C连接问题
- 请教sql
- 请教高手一条sql语句
-------------------------------
这种方式好像比较容易实现一些。
也可以直接在数据库写trigger,只要A表有操作就直接同步修改B表,这样做也可以保证数据完整性,效率差不多;
如果同步必须要人工干预(如生产中A流程完成后及时通知B流程操作员开始),那么就在前台或应用服务程序中通过消息机制直接实现,这样还可以减轻数据库服务器的负担
假如使用utl_file的话,可以建立linux系统的samba系统。用来连接windows系统。
除了utl_file,还有smtp,tcp的包等等。
都可以用来实现LZ想做的事情。
或者使用系统监察,你可以检查系统的监察纪录。也可以。
但是,真的需要用到吗?决定写触发器的话,数据真的很多的话,尽量不要用得太复杂了。万一网络呀,或者其他问题出现了。