`
liuys
  • 浏览: 2985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

oracle远程数据同步

阅读更多

实现方案

在本地建立两张表(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;

 

 

已完毕,如果不出现意外,当在远程数据库中修改了数据,在本地也会有相应的改变。如果使用的数据库的版本不同也会有问题,有时会出现内部错误,但是数据确实是已经更新了。

 

0
0
分享到:
评论

相关推荐

    Oracle远程数据库同步方法研究

    对在分布式环境下的Oracle数据库实现数据同步时,涉及的几个主要问题进行探讨,通过日志分析方法,分析了日志文件的归档,采用LogMiner对Oracle归档日志进行解析,解析和重构归档日志中的SQL语句等问题。设计了一个分布式...

    Oracle远程数据库同步方法的研究.pdf

    《Oracle远程数据库同步方法的研究》这篇论文主要探讨了在分布式环境下如何实现Oracle数据库的同步策略,以及解决数据同步系统中的关键问题。以下是论文的核心内容: 首先,文章提到了分布式数据库的特点,即在逻辑...

    oracle 跨实例 数据同步

    ### Oracle 跨实例数据同步详解 #### 一、概述 在企业级应用环境中,经常需要在不同的Oracle数据库实例之间进行数据同步。这种需求可能源于多种原因,比如数据备份、灾难恢复准备、分布式事务处理或是数据分发等。...

    oracle数据库之间同步数据 dbLink +job方式

    在Oracle数据库管理中,有时我们需要实现不同数据库之间的数据同步。本文将详细介绍如何通过dbLink与Job相结合的方式实现这一目标。 #### 一、dbLink简介 dbLink(Database Link)是Oracle提供的一种机制,用于...

    sql数据同步到oracle

    3. **数据库链接服务器**:SQL Server支持创建到其他数据库(包括Oracle)的链接服务器,可以直接在SQL Server中编写跨服务器查询,实现数据同步。同样,Oracle也有相应的DB Link功能,可以实现反向同步。 4. **第...

    Oracle 白皮书 ADG 同步复制技术

    - 配置备用重做日志,确保有足够的日志空间用于数据同步。 - 将SDU(System Data Unit)大小设置为65535,以允许更大的数据包传输,减少网络交互次数。 - 确保系统资源充足,包括CPU、内存和I/O,以支持高并发的...

    将SQLSERVER中的数据同步到ORACLE中

    3. **填写链接服务器名称**,选择“远程数据源类型”为“Oracle”。 4. **配置连接信息**,包括Oracle服务器地址、端口号、用户名和密码等。 5. **测试连接**并保存设置。 #### 4. 使用SQL Agent进行数据同步 一旦...

    oracle - 数据同步 实例

    ### Oracle 数据库的数据同步实例解析 #### 一、Oracle 数据同步概述 在现代企业级应用环境中,物理上可能有多个Oracle数据库分布在不同的地理位置上。这些数据库虽然物理上彼此独立,但在逻辑上却可以被视为一个...

    Oracle增量数据同步、强制结束正在运行SQL

    ### Oracle增量数据同步 在企业级数据库应用中,Oracle数据库因其强大的功能和高可靠性而被广泛应用。当涉及到数据同步特别是相同表结构之间的增量数据同步时,Oracle提供了多种实用的方法来确保数据的一致性和完整...

    Oracle CDC 数据同步9i/10G

    Oracle Change Data Capture (CDC) 是 Oracle 数据库提供的一项高级特性,用于捕捉数据库中的更改数据,以便在异步环境中实现高效的数据同步。Oracle CDC 特别适用于大数据集成、实时数据分析和企业级应用程序之间的...

    基于Oracle的数据同步技术在HIS中的应用与研究.pdf

    《基于Oracle的数据同步技术在HIS中的应用与研究》 在信息技术日新月异的今天,数据库作为数据管理和处理的核心工具,其重要性不言而喻。本文主要探讨了Oracle数据库在医院信息系统(HIS)中的应用,尤其是Oracle的...

    oracle 同步sybase

    在某些场景下,用户可能需要实现从Oracle到Sybase的数据同步,以保持数据的一致性和完整性。本篇文章将深入探讨如何实现Oracle与Sybase之间的数据同步。 一、Oracle透明网关简介 Oracle透明网关(Oracle ...

    通过Oracle的流复制实现数据库之间的同步

    通过Oracle的流复制实现数据库之间的同步,是一种高效的数据同步机制,尤其在企业级应用中,对于数据一致性和实时性有着极高的要求。Oracle Streams作为Oracle数据库的一项重要特性,自Oracle9i版本开始引入,取代了...

    基于Oracle物化视图日志的数据同步技术研究.pdf

    Oracle物化视图日志是一种强大的数据同步技术,尤其适用于分布式数据库和分布式应用系统之间的数据一致性维护。在当今信息化系统中,随着技术的快速发展,数据的分布性和实时性需求日益增强,数据同步成为了一个关键...

    oracle 远程计算机导出,导入数据

    以上介绍了Oracle远程计算机导出和导入数据的方法,包括使用`expdp`和`impdp`命令、创建数据库链接以及通过存储过程进行数据同步等。这些方法为跨远程计算机的数据迁移提供了灵活的选择。根据具体的需求和环境条件...

    青茂数据同步工具 同步数据库部分结构的工具

    DBSync 数据同步工具是一款异构数据库之间数据同步的工具,目前支持的数据库有:access、sqlserver、oracle、 db2、sybase ase 11-15,Mysql,同时,该软件提供的ODBC的同步功能,可以间接实现对FireBird,INTERBASE等...

    基于Oracle的数据同步技术在重庆不动产登记系统中的应用.pdf

    总结来说,基于Oracle的数据同步技术在重庆不动产登记系统中扮演了关键角色,通过Oracle DataGuard实现了数据灾备和读写分离,而Oracle GoldenGate则支持了数据的按需分发和共享,有效解决了数据安全、性能优化和...

    Oracle ADG远程数据保护方案.docx

    在本文档中,我们将深入探讨Oracle ADG如何实现远程数据保护,特别是其远程同步功能,以确保在任意距离下都能实现零数据丢失。 **Data Guard 零数据丢失保护** Oracle Data Guard通过多种方式确保数据安全性,其中...

Global site tag (gtag.js) - Google Analytics