oracle同步2个表
oracle synchronize 2 tables
我有以下场景,需要在ORACLE中解决:
Table A 在数据库服务器上
Table B 在不同的服务器上
Table A 将填充数据。
每当向 Table A 插入某些内容时,我想将其复制到 Table B。
Table B 几乎有类似的列,但有时我只想得到
tableA 中 2 列的内容并将其连接并保存到
Table B.
我对ORACLE不是很熟悉,但是研究了一下GOOGLE
有人说你可以用TRIGGERS或VIEWS来做,你会怎么做?
所以一般来说,有一个table会被填充,它的内容
应该复制到不同的 table.
这是我目前想出的解决方案
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;
/
如何 select 插入最新的行?
如果这两个table的数据库在两个不同的服务器上,那么你需要在[=32]中创建一个数据库link(db-link) =] 一个模式,以便它可以使用 db-link.
访问(read/write)Table B 数据
第一步:在TableA服务器db中创建数据库link指向TableB服务器DB
步骤 2: 为 Table A 创建触发器,这有助于使用数据库 link 将数据插入 table B。您可以在触发器内部自定义(连接值),然后再将其插入 table B.
这个link应该对你有帮助
http://searchoracle.techtarget.com/tip/How-to-create-a-database-link-in-Oracle
是的,您可以使用触发器来做到这一点。但是可能会有一些缺点。
数据库B不可用怎么办? -> 触发器中的异常处理。
如果数据库 B 有 2 小时不可用怎么办?您将数据插入到数据库 A 中,而该数据现在在数据库 B 中丢失了。-> 通过临时将其插入到数据库 A 中的缓存 table 中来做一些疯狂的事情。
性能。好吧,插入大量数据的性能会很难看。每次插入数据时,Oracle都会启动PL/SQL引擎将数据插入远程数据库。
也许您可以考虑使用 MViews(物化视图)通过数据库复制数据 link。稍后您可以构建查询,以便它们从数据库 B 访问 tables 并通过加入 MViews 从数据库 A 添加所需的数据。
您还可以使用快速刷新来(几乎)实时复制数据。
从 Oracle 数据库管理员的角度来看,这比触发器方法更有意义。
试试这个代码
数据库链接被认为是相当不安全的,而且 oracle 自己的选项现在有相关的许可证,其他一些选项也被弃用了。
https://gist.github.com/anonymous/e3051239ba401e416565cdd912e0de8c
使用 ora_rowscn 跨两个不同的 Oracle 数据库同步表。
我有以下场景,需要在ORACLE中解决:
Table A 在数据库服务器上 Table B 在不同的服务器上
Table A 将填充数据。 每当向 Table A 插入某些内容时,我想将其复制到 Table B。 Table B 几乎有类似的列,但有时我只想得到 tableA 中 2 列的内容并将其连接并保存到 Table B.
我对ORACLE不是很熟悉,但是研究了一下GOOGLE 有人说你可以用TRIGGERS或VIEWS来做,你会怎么做?
所以一般来说,有一个table会被填充,它的内容 应该复制到不同的 table.
这是我目前想出的解决方案
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;
/
如何 select 插入最新的行?
如果这两个table的数据库在两个不同的服务器上,那么你需要在[=32]中创建一个数据库link(db-link) =] 一个模式,以便它可以使用 db-link.
访问(read/write)Table B 数据第一步:在TableA服务器db中创建数据库link指向TableB服务器DB
步骤 2: 为 Table A 创建触发器,这有助于使用数据库 link 将数据插入 table B。您可以在触发器内部自定义(连接值),然后再将其插入 table B.
这个link应该对你有帮助
http://searchoracle.techtarget.com/tip/How-to-create-a-database-link-in-Oracle
是的,您可以使用触发器来做到这一点。但是可能会有一些缺点。
数据库B不可用怎么办? -> 触发器中的异常处理。
如果数据库 B 有 2 小时不可用怎么办?您将数据插入到数据库 A 中,而该数据现在在数据库 B 中丢失了。-> 通过临时将其插入到数据库 A 中的缓存 table 中来做一些疯狂的事情。
性能。好吧,插入大量数据的性能会很难看。每次插入数据时,Oracle都会启动PL/SQL引擎将数据插入远程数据库。
也许您可以考虑使用 MViews(物化视图)通过数据库复制数据 link。稍后您可以构建查询,以便它们从数据库 B 访问 tables 并通过加入 MViews 从数据库 A 添加所需的数据。
您还可以使用快速刷新来(几乎)实时复制数据。
从 Oracle 数据库管理员的角度来看,这比触发器方法更有意义。
试试这个代码
数据库链接被认为是相当不安全的,而且 oracle 自己的选项现在有相关的许可证,其他一些选项也被弃用了。
https://gist.github.com/anonymous/e3051239ba401e416565cdd912e0de8c
使用 ora_rowscn 跨两个不同的 Oracle 数据库同步表。