oracle同步2个表
我有以下场景,需要在ORACLE中解决: 表A位于数据库服务器上 表B位于不同的服务器上 表A将填充数据。 每当有东西被插入表A时,我都想将它复制到表B。 表B几乎有相似的列,但有时我只想 从tableA中删除两列中的内容,并将其连接并保存到 表B 我对甲骨文不是很熟悉,但是在研究过谷歌之后 有人说你可以使用触发器或视图,你会怎么做 因此,一般来说,有一个将被填充的表及其内容 应该复制到另一张桌子上 这就是我目前提出的解决方案oracle同步2个表,oracle,triggers,views,Oracle,Triggers,Views,我有以下场景,需要在ORACLE中解决: 表A位于数据库服务器上 表B位于不同的服务器上 表A将填充数据。 每当有东西被插入表A时,我都想将它复制到表B。 表B几乎有相似的列,但有时我只想 从tableA中删除两列中的内容,并将其连接并保存到 表B 我对甲骨文不是很熟悉,但是在研究过谷歌之后 有人说你可以使用触发器或视图,你会怎么做 因此,一般来说,有一个将被填充的表及其内容 应该复制到另一张桌子上 这就是我目前提出的解决方案 create public database link othe
create public database link
other_db
connect to
user
identified by
pw
using 'tns-entry';
CREATE TRIGGER modify_remote_my_table
AFTER INSERT ON my_table
BEGIN INSERT INTO ....?
END;
/
如何选择插入的最新行?如果这两个表的数据库位于两个不同的服务器中,则需要在表a架构中创建数据库链接(db link),以便它可以使用db link访问(读/写)表B数据 步骤1:在表a服务器数据库中创建指向表B服务器数据库的数据库链接 步骤2:为表a创建触发器,这有助于使用数据库链接将数据插入表B。在将触发器插入表B之前,可以在触发器内部自定义(连接值) 这个链接应该对你有帮助
如果这两个表的数据库位于两个不同的服务器中,则需要在表a架构中创建数据库链接(db link),以便它可以使用db link访问(读/写)表B数据 步骤1:在表a服务器数据库中创建指向表B服务器数据库的数据库链接 步骤2:为表a创建触发器,这有助于使用数据库链接将数据插入表B。在将触发器插入表B之前,可以在触发器内部自定义(连接值) 这个链接应该对你有帮助
是的,您可以使用触发器执行此操作。但也有一些缺点
- 如果数据库B不可用怎么办?->触发器中的异常处理
- 如果数据库B在2小时内不可用怎么办?您将数据插入到数据库A中,而数据库B中现在缺少该数据。->将其临时插入数据库A中的缓存表中,可以做一些疯狂的事情
- 表演。嗯,插入大量数据的性能会很差。每次插入数据时,Oracle都会启动PL/SQL引擎将数据插入远程数据库
从Oracle数据库管理员的角度来看,这比触发器方法更有意义。是的,您可以使用触发器来实现这一点。但也有一些缺点
- 如果数据库B不可用怎么办?->触发器中的异常处理
- 如果数据库B在2小时内不可用怎么办?您将数据插入到数据库A中,而数据库B中现在缺少该数据。->将其临时插入数据库A中的缓存表中,可以做一些疯狂的事情
- 表演。嗯,插入大量数据的性能会很差。每次插入数据时,Oracle都会启动PL/SQL引擎将数据插入远程数据库
使用ora_rowscn跨两个不同的oracle数据库同步表。是的,您可以使用AFTER INSERT Trigger,这将有助于您对触发器定义的表进行所有插入。对于表A的更新和删除,表B不会同步。如果我想同步,那么我需要为INSERT、UPDATE、DELETE等创建多个触发器,对吗?不。您可以单独创建一个触发器,类似于“插入、删除或更新后”更新的编辑。请check@DeeJay14-很抱歉,但我绝不会建议使用触发器来解决任何问题,除了某种最后手段。首先,触发器混淆了逻辑,增加了流程的复杂性。第二,你可能会在某个时候变得如此复杂(或者忘记它),你会想知道这些回归是从哪里来的。第三,在99.9%的情况下,还有另一种更直接的方法……是的,您可以使用AFTER INSERT触发器,这将帮助您处理触发器定义表中发生的所有插入。对于表A的更新和删除,表B不会同步。如果我想同步,那么我需要为INSERT、UPDATE、DELETE等创建多个触发器,对吗?不。您可以单独创建一个触发器,类似于“插入、删除或更新后”更新的编辑。请check@DeeJay14-对不起,我不会建议用触发器来解决任何问题,除了最后的一次重新测试