利用dblink实现oracle对oracle数据库的同步

利用dblink 做oracle到oracle的定时同步,以刚为卡中心做的一个同步为例

1、创建需要的dblink连接的数据库(若已经有,则不需要)

例:
查看 dblink :  select * from dba_db_links; 

创建 dblink :

create database link ECARDRYXX
  connect to WPENG
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 202.120.85.118)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORA92)
    )
  )';

2. 创建需要同步到对方数据的视图:

例:
create or replace view ryxx as
select ryjbxx.userid outid, xyzzjg.bmmc college, xszzjg.bmmc departname, ryjbxx.major,
       ryjbxx.typeof, ryjbxx.sfsf, ryjbxx.cn, ryjbxx.email, decode(sys_user.STATUS, '2', 'Yes', '4', 'No', 'No') inetUserStatus
       from
(
select t1.xh userid, t1.xym , t1.xsm , t2.zymc major,
       'student' typeof, t1.sfsf sfsf, t1.xm cn, t1.dzxx email
       from idc_u_xs.xs_xsjbxx t1, idc_u_jwmis.jw_zyxx t2
       where  t1.zyh = t2.zydh(+)                                     -- 本科生
union all
select t1.xh userid, t1.xym, t1.xsm, t2.zymc, 'student' typeof, '' sfsf, t1.xm cn, t1.email email
       from idc_u_yjs.yjs_yjsjbxx t1, idc_u_yjs.yjs_dict_bsxkzydm t2
       where t1.zydm = t2.zydm(+)                                     -- 研究生
union all
select t1.zgh userid, '' xym, '' xsm, '' major, 'teacher' typeof, '' sfsf,  t1.xm cn, t1.dzxx email
       from idc_u_rs.rs_zzryjbxx t1                                   --  在职人员
union all
select t1.zgh userid, '' xym, '' xsm, '' major, 'teacher' typeof, '' sfsf,  t1.xm cn, t1.dzxx email
       from idc_u_rs.rs_xjrylsb t1                                    -- 新增人员
) ryjbxx, idc_u_pub.sys_user, idc_u_rs.rs_zzjg xyzzjg, idc_u_rs.rs_zzjg xszzjg
where
      ryjbxx.userid = sys_user.userid
      and ryjbxx.xym = xyzzjg.bmbh(+)    --  学院组织机构
      and ryjbxx.xym = xszzjg.bmbh(+)    --   院系组织机构

3. 创建需要执行同步的pl/sql :

例如:
   为了使用更模块化,更集中,建议同面向同一个库的pl/sql,写在同一个包下。

CREATE OR REPLACE PACKAGE ECARD IS
       PROCEDURE RYXXSYNC;
END;

CREATE OR REPLACE PACKAGE BODY ECARD IS
       PROCEDURE RYXXSYNC IS
       BEGIN
            delete from wpeng.ryxx@ecardryxx; --删除数据
            insert into wpeng.ryxx@ecardryxx(outid, college, departname, major, typeof, sfsf, cn, email, inetuserstatus)
                   select outid, college, departname, major, typeof, sfsf, cn, email, inetuserstatus from ryxx;  --插入最新数据
       END;
END;

4. 创建job,定时执行同步:

例:
打开 sql命令窗口:

variable ryxxsyncjob number; 

begin
     dbms_job.submit(:ryxxsyncjob, 'ECARD.RYXXSYNC;',
                                   SYSDATE, 'TRUNC(SYSDATE) + 1 + 2/24');  --每天凌晨两点执行。
     commit;
end;
时间: 2024-11-02 02:48:10

利用dblink实现oracle对oracle数据库的同步的相关文章

利用MSSQL复制功能实现与Oracle数据库同步

  1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient才可以使用. 2.使用同义词操作Oracle数据库. 这种方法的具体操作我在以前的文章中已经写清楚了,这样做一来可以进行表的联合查询二来不需要每台机器都安

c#利用webservice和wcf对oracle数据库增删改查,并判断两种方法的效率

问题描述 c#利用webservice和wcf对oracle数据库增删改查,并判断两种方法的效率 初学者,以前没有接触过webservice和wcf.现在遇到一个这样的项目,请大家给予帮助,提供源码,思路都行.当然,最好是代码了,亲,帮一个忙呗~ 解决方案 ws相对简单,WCF就是一把大牛刀,虽然很好,但是你要是杀鸡就得不偿失了.你是了解MVC的话,通信可以试试WebAPI.例子网上到处都是的

如何利用Oracle虚拟私有数据库进行整合

Oracle虚拟私有数据库(Virtual http://www.aliyun.com/zixun/aggregation/33969.html">Private Database,下文简称VPD)是Oracle数据库产品中提供的一个安全功能,它能够保证Oracle数据库的多租户特性,与此同时,可以帮助用户进行数据库的整合. Oracle VPD能够针对数据库表和视图,在行与列级别对数据访问进行控制.从名称来看,Oracle VPD表达的意思多少有些误导的嫌疑,毕竟Oracle数据库已经是

ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现

一.概述 对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要.为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生.分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批. 本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法. 二.ORACLE数据库中的处理 首先,建立tb_employeeinfo表,其定义如下: be

Oracle Restart启动数据库实例故障一例

  Oracle Restart是11gR2中推出的重要高可用(High Availability)特性.在Single Instance情况下,Clusterware形成一个可用性维护框架,Oracle组件服务都是在这个维护管理框架上进行管理.   Oracle Restart从职责上负责两方面的功能,一个是Oracle各个服务组件的自动启动.鉴于组件间复杂的依赖关系,使用Restart自动的进行启动顺序调节是比较好的一种策略.另一个功能是高可用支持,如果某一个组件意外被终止运行,比如异常中断

在ORACLE中移动数据库文件

在ORACLE中移动数据库文件 ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成.由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,数据库管理员可能会考虑移动数据库文件.下面以UNIX平台为例,分别讨论三种数据库文件的移动方法. ---- 一.移动数据文件: ---- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件. ---- 1. ALTER DATABASE方法: ---- 用此方法,可以移动任何表空间的数据文件.

优化Oracle停机时间及数据库恢复

oracle|恢复|数据|数据库|优化 这里会讨论令Oracle停机时间最小化的步骤.各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复. 以下是假定的备份策略和数据库的运作条件 控制文件是镜像的 数据库运行在archivelog模式 每个星期都进行冷备份 每日都进行热备份 每日都进行一次全数据库导出 事件1:完整的数据库重构 在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构数据库.要注意的是无论你选择

oracle触发器及数据库触发简介

触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 1 触发器类型 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行.即触发器是当某个事件发生时自动地隐式运行.并且,触发器不能接收参数.所以运行触发器就叫触发或点火(firing).ORACLE事件指的是对数据库的表进行的INSERT.UPDATE及DELETE操作或对视图进行类似的

命令行中使用oracle命令创建数据库和表空间

本文详细介绍命令行中使用oracle命令创建数据库和表空间 1.使用超级用户登录sqlplus. 2.创建表空间: SQL> create tablespace test 2 datafile 'D:\oracle\oradata\test\test.dbf' 3 size 100M autoextend on next 10M maxsize unlimited extent management local; 3.创建用户和密码: SQL> create user Username ide