Oracle两个数据库间的数据同步 (DBLink 、计划任务)



--配置本地数据库服务器的tnsnames.ora文件
infosys_192.168.0.100 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = infosys)
)
)

--创建db_link(这里的infosys和infosys是目标数据库的用户名和密码)
--'infosys_192.168.0.100'是目标数据库的实例
--mydblink是我们创建的dblink名称,可自定义
create database link mydblink
connect to infosys identified by infosys
using 'infosys_192.168.0.100';

--测试使用链接的数据库(表名@dblink名称)
select * from P_GROUP@mydblink;


/*************************************************************/
/* 上面建立DBLink ,下面我们通过DBlink创建Oracle存储过程和任务 */
/*************************************************************/


--创建一个存储过程
create procedure proc_sjtb
as
begin

delete from swdx_gzryxx where is_tb='1';
insert into swdx_gzryxx(gzrybh,mc,jgdm,phone,is_tb)select distinct(t.zgswry_dm),t.zgswry_mc,t.nsr_swjg_dm,t.tel_zgy,'1' from dxpt_sjtb@mydblink t;

delete from gdzc_jg where is_tb='1';
insert into gdzc_jg(jg_dm,jg_mc,is_tb)select distinct(t.nsr_swjg_dm),t.nsr_swjg_mc,'1' from dxpt_sjtb@mydblink t;

delete from swdx_nsrxx where is_tb='1';
insert into swdx_nsrxx(nsrsbh,nsrmc,jgdm,zgydm,is_tb)select t.nsrsbh,t.nsrmc,t.nsr_swjg_dm,t.zgswry_dm,'1' from dxpt_sjtb@mydblink t;

insert into swdx_nsrphone(nsrsbh,lbbh,tel) select t.nsrsbh,'001',t.TEL_NSR_CW from dxpt_sjtb@mydblink t;
insert into swdx_nsrphone(nsrsbh,lbbh,tel) select t.nsrsbh,'002',t.TEL_NSR_FR from dxpt_sjtb@mydblink t;
insert into swdx_nsrphone(nsrsbh,lbbh,tel) select t.nsrsbh,'003',t.TEL_NSR_QT from dxpt_sjtb@mydblink t;

delete from xt_czy where is_tb='1';
insert into xt_czy(czy_id, czy_mc, jg_code, czy_lxdh, is_zgy,is_tb,is_jgczy,CZY_YXBZ) select distinct (t.zgswry_dm), t.zgswry_mc, t.nsr_swjg_dm, t.tel_zgy,'1','1','0','Y' from dxpt_sjtb@mydblink t;
insert into xt_czy(czy_id, czy_mc, jg_code, is_zgy,is_tb,is_jgczy,CZY_YXBZ) select distinct(t.nsr_swjg_dm),t.nsr_swjg_mc,t.nsr_swjg_dm,'0','1','1','Y' from dxpt_sjtb@mydblink t;

end;


--创建任务(每分钟执行一次)
DECLARE X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
(
job => X
,what => 'proc_sjtb;'
,next_date => to_date('09-12-2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'TRUNC(sysdate) + 1 +2 / (24)'
);
END;


--执行任务
--RUN(参数)是我们建立任务的时候自动生成的,指定任务号方可启动任务和删除任务

begin
SYS.DBMS_JOB.RUN(25);
end;

--删除任务
begin
sys.DBMS_JOB.REMOVE(23);
end;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值