oracle 创建dblink,传送数据

前端之家收集整理的这篇文章主要介绍了oracle 创建dblink,传送数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近遇到个需求,需要将某个库的短信数据传送到短信中心的库中

1、给本数据库创建dblink连接


createpublicdatabaselinkpms_dblinkconnecttomsgp_itwgidentifiedbymsgp_itwg_2014
  using'(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST= 136.160.41.198)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=msgp)
)
)';

136.160.41.198----目标数据库地址
msgp--------目标数据库实例
msgp_itwg -----目标数据库用户
msgp_itwg_2014------目标数据库用户密码


创建完成验证下:SELECT * FROM intf.PUBLIC_INTF_DATA@pms_dblink;
能执行成功就表示创建成功,创建语句的含义是,利用msgp_itwg用户创建一个dblink,然后通过这个dblink访问inf用户下的表数据


2、写存储过程

有两个存储过程,一个是查本地数据,一个是插目标数据库


查询

CREATE OR REPLACE PROCEDURE init_sms_to_msgp is
t_guid varchar2(32);
t_staffName varchar2(20);
t_objID number(16);
t_smsCnt number(9);
is_send number(9);
t_start_time varchar(100);
t_end_time varchar(100);


cursor c_itsm is select note_id,note,obj_nbr,staff_id,create_date from issu_note_listing where deal_flag=0;


BEGIN


For itsm In c_itsm Loop
select sys_guid() into t_guid from dual;
send_sms(t_guid,itsm.obj_nbr,itsm.note);
update issu_note_listing set deal_flag=1 where note_id=itsm.note_id;
end loop;


END init_sms_to_msgp;


插入:

CREATEORREPLACEPROCEDUREsend_sms(t_guidvarchar2,sms_phonevarchar2,sms_notevarchar2)is
BEGIN
insertintointf.PUBLIC_INTF_DATA@db_msgp(system_id,other_sys_order_id,acc_nbr,acc_nbr_type_cd,serv_spec_id,contact_info,msg_content,send_date,insert_date,deal_flag)values
('129',t_guid,sms_phone,'101200074',sms_note,sysdate,1);
commit;
ENDsend_sms;

3、设置job

begin
sys.dbms_job.submit(job=>:job,
what=>'init_sms_to_msgp;',
next_date=>to_date('30-06-201714:57:57','dd-mm-yyyyhh24:mi:ss'),
interval=>'sysdate+1/1440');//一分钟执行一次
commit;
end;
/


完成了。

猜你在找的Oracle相关文章