实现方案
在本地建立两张表(T1,T2),这两张表和远程的表结构一样,通过触发器实现数据的同步,然后对本地的两张表进行物化,再在物化视图上建立触发器,实时的修改T表(并没有考虑大字段的情况)。
该方案是测试成功的,源数据库是oracle10.2.0.3.0,目标数据库是oracle10.2.0.3.0,并且做到了数据的实时更新。
具体实现
1、在源数据库创建database link,确保两台服务器可以连通。
首先在oracle 的E:\oracle\product\10.2.0\db_1\network\ADMIN\tnsnames.ora配置文件里添加远程oracle服务器的实例,具体如下:
ORCL103 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
然后执行创建database link的语句:
create database link ORCL103.REGRESS.RDBMS.DEV.US.ORACLE.COM
connect to CCPPH1
using 'orcl103';
然后测试是否已连通,在命令窗口输入:
Select count(*) from T1@orcl103;
2、在本地建表(T1, T2),要和源数据库中的表结构一致。
--T1表
Create table T1 as select * from T1@orcl103;
alter table T1 add constraint PK_ID primary key (ID);
--T2表
Create table T2 as select * from T2@orcl103;
alter table T2 add constraint PK_ID primary key (ID);
3、在源数据库上分别建立触发器
--T1表触发器
create or replace trigger TRI_T1
after insert or update or delete on T1
for each row
begin
if deleting then
dbms_output.put_line('删除');
delete from T1@orcl101 where id=:old.id;
end if;
if inserting then
dbms_output.put_line('插入');
insert into T1@orcl101(id,name)
values(:new.id,:new.name);
end if;
if updating then
dbms_output.put_line('修改');
update T1@orcl101 set id=:new.id,name=:new.name where id=:old.id;
end if;
end TRI_T1;
--T2表触发器
create or replace trigger TRI_T2
after insert or update or delete on T2
for each row
begin
if deleting then
dbms_output.put_line('删除');
delete from T2@orcl101 where id=:old.id;
end if;
if inserting then
dbms_output.put_line('插入');
insert into T2@orcl101(id,name)
values(:new.id,:new.name);
end if;
if updating then
dbms_output.put_line('修改');
update T2@orcl101 set id=:new.id,name=:new.name where id=:old.id;
end if;
end TRI_T2;
4、在目标数据库创建物化视图日志
--创建物化视图日志
create materialized view log on T1 with rowid;
create materialized view log on T2 with rowid;
5、在目标数据库创建物化视图
create materialized view MV_T
refresh fast on commit
as
select t1.rowid as t1rowid,t2.rowid as t2rowid,t1.id,t1.name,t2.id as t2id,t2.name as t2name from T1 t1,T2 t2 where t1.id = t2.id;
6、在目标数据库创建基于物化视图的触发器
create or replace trigger TRI_T
after insert or update or delete on mv_T
for each row
begin
if deleting then
dbms_output.put_line('删除');
delete from T where ID=:old.ID;
end if;
if inserting then
dbms_output.put_line('插入');
insert into T(id,name)
values(:new.id,:new.name);
end if;
if updating then
dbms_output.put_line('修改');
update T set id=:new.id,name=:new.name where id=:old.id;
end if;
end TRI_T;
已完毕,如果不出现意外,当在远程数据库中修改了数据,在本地也会有相应的改变。如果使用的数据库的版本不同也会有问题,有时会出现内部错误,但是数据确实是已经更新了。
分享到:
相关推荐
对在分布式环境下的Oracle数据库实现数据同步时,涉及的几个主要问题进行探讨,通过日志分析方法,分析了日志文件的归档,采用LogMiner对Oracle归档日志进行解析,解析和重构归档日志中的SQL语句等问题。设计了一个分布式...
《Oracle远程数据库同步方法的研究》这篇论文主要探讨了在分布式环境下如何实现Oracle数据库的同步策略,以及解决数据同步系统中的关键问题。以下是论文的核心内容: 首先,文章提到了分布式数据库的特点,即在逻辑...
### Oracle 跨实例数据同步详解 #### 一、概述 在企业级应用环境中,经常需要在不同的Oracle数据库实例之间进行数据同步。这种需求可能源于多种原因,比如数据备份、灾难恢复准备、分布式事务处理或是数据分发等。...
在Oracle数据库管理中,有时我们需要实现不同数据库之间的数据同步。本文将详细介绍如何通过dbLink与Job相结合的方式实现这一目标。 #### 一、dbLink简介 dbLink(Database Link)是Oracle提供的一种机制,用于...
3. **数据库链接服务器**:SQL Server支持创建到其他数据库(包括Oracle)的链接服务器,可以直接在SQL Server中编写跨服务器查询,实现数据同步。同样,Oracle也有相应的DB Link功能,可以实现反向同步。 4. **第...
- 配置备用重做日志,确保有足够的日志空间用于数据同步。 - 将SDU(System Data Unit)大小设置为65535,以允许更大的数据包传输,减少网络交互次数。 - 确保系统资源充足,包括CPU、内存和I/O,以支持高并发的...
3. **填写链接服务器名称**,选择“远程数据源类型”为“Oracle”。 4. **配置连接信息**,包括Oracle服务器地址、端口号、用户名和密码等。 5. **测试连接**并保存设置。 #### 4. 使用SQL Agent进行数据同步 一旦...
### Oracle 数据库的数据同步实例解析 #### 一、Oracle 数据同步概述 在现代企业级应用环境中,物理上可能有多个Oracle数据库分布在不同的地理位置上。这些数据库虽然物理上彼此独立,但在逻辑上却可以被视为一个...
### Oracle增量数据同步 在企业级数据库应用中,Oracle数据库因其强大的功能和高可靠性而被广泛应用。当涉及到数据同步特别是相同表结构之间的增量数据同步时,Oracle提供了多种实用的方法来确保数据的一致性和完整...
Oracle Change Data Capture (CDC) 是 Oracle 数据库提供的一项高级特性,用于捕捉数据库中的更改数据,以便在异步环境中实现高效的数据同步。Oracle CDC 特别适用于大数据集成、实时数据分析和企业级应用程序之间的...
《基于Oracle的数据同步技术在HIS中的应用与研究》 在信息技术日新月异的今天,数据库作为数据管理和处理的核心工具,其重要性不言而喻。本文主要探讨了Oracle数据库在医院信息系统(HIS)中的应用,尤其是Oracle的...
在某些场景下,用户可能需要实现从Oracle到Sybase的数据同步,以保持数据的一致性和完整性。本篇文章将深入探讨如何实现Oracle与Sybase之间的数据同步。 一、Oracle透明网关简介 Oracle透明网关(Oracle ...
通过Oracle的流复制实现数据库之间的同步,是一种高效的数据同步机制,尤其在企业级应用中,对于数据一致性和实时性有着极高的要求。Oracle Streams作为Oracle数据库的一项重要特性,自Oracle9i版本开始引入,取代了...
Oracle物化视图日志是一种强大的数据同步技术,尤其适用于分布式数据库和分布式应用系统之间的数据一致性维护。在当今信息化系统中,随着技术的快速发展,数据的分布性和实时性需求日益增强,数据同步成为了一个关键...
以上介绍了Oracle远程计算机导出和导入数据的方法,包括使用`expdp`和`impdp`命令、创建数据库链接以及通过存储过程进行数据同步等。这些方法为跨远程计算机的数据迁移提供了灵活的选择。根据具体的需求和环境条件...
DBSync 数据同步工具是一款异构数据库之间数据同步的工具,目前支持的数据库有:access、sqlserver、oracle、 db2、sybase ase 11-15,Mysql,同时,该软件提供的ODBC的同步功能,可以间接实现对FireBird,INTERBASE等...
总结来说,基于Oracle的数据同步技术在重庆不动产登记系统中扮演了关键角色,通过Oracle DataGuard实现了数据灾备和读写分离,而Oracle GoldenGate则支持了数据的按需分发和共享,有效解决了数据安全、性能优化和...
在本文档中,我们将深入探讨Oracle ADG如何实现远程数据保护,特别是其远程同步功能,以确保在任意距离下都能实现零数据丢失。 **Data Guard 零数据丢失保护** Oracle Data Guard通过多种方式确保数据安全性,其中...