Oracle如何实现两个数据库的同步(用实体化视图实现)(oracle快照实例)

本文详细介绍了如何使用Oracle的实体化视图(快照)实现两个数据库之间的同步。通过创建数据库链接、表空间、用户、快照及定时刷新任务,实现数据的一致性。同时,文章提供了处理网络问题、监视快照状态以及避免同步死锁的策略。
摘要由CSDN通过智能技术生成


一、技术实现细节
除非特别说明,下面的SQL命令都是在数据库ora_db2的SYSETM用户下运行的。
假设要复制(或同步)另一服务器上数据库ora_db1中用户db1的所有表。


1. 创建一个用于连接数据库1(ora_db1)的数据库连接(dblink)

     1.1 只有先建立用户db1指定表的快照日志,才能在快照中执行快速刷新。

      SQL> select  'create snapshot log on '||table_name||';'  from user_tables;  --获取用户表的create snapshot语句,如下:

  create snapshot log on 表1;

      附 删除表快照日志 :

      SQL> select 'drop snapshot log on '||substr(table_name,INSTR(table_name,'$_')+2,length(table_name))||';' from user_tables where table_name like '%MLOG$_%';  

        --通过上面获取用户表快照日志的删除语句,如下:

        drop snapshot log on 表1;

     1.2

      SQL> CREATE PUBLIC DATABASE LINK testLK CONNECT TO db1 identified by db1
      using
      '(DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
      )
      (CONNECT_DATA =
      (service_name=ora_db1)
      )
      )'; 

**出于安全考虑,可以采用一个私有数据连接。

2. 创建一个名为Snapshot_ts的表空间来存放快照,并创建一个和该表空间有关的名为db2的用户。

SQL > CREATE TABLESPACE snapshot_ts DATAFILE
'd:\db\snapshot_ts.dbf' SIZE 30M
DEFAULT STORAGE (INITIAL 30 K
NEXT 15 K
MINEXTENTS 1
MAXEXTENTS 100
PCTINCREASE 0)
ONLINE
PERMANENT; 

 


SQL > CREATE USER db2
IDENTIFIED BY db2
DEFAULT TABLESPACE snapshot_ts; 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值