您的位置:首页 > 数据库 > Oracle

oracle 创建dblink,传送数据

2017-07-13 11:23 387 查看
最近遇到个需求,需要将某个库的短信数据传送到短信中心的库中

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

 create public database link pms_dblink connect to msgp_itwg identified by msgp_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;

插入:

 CREATE OR REPLACE PROCEDURE send_sms (t_guid varchar2, sms_phone varchar2,sms_note varchar2) is

BEGIN

  insert into intf.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,0,'101200074',sms_phone,sms_note,sysdate,sysdate,1 );

  commit;

END send_sms; 

3、设置job

 begin

  sys.dbms_job.submit(job => :job,

                      what => 'init_sms_to_msgp;',

                      next_date => to_date('30-06-2017 14:57:57', 'dd-mm-yyyy hh24:mi:ss'),

                      interval => 'sysdate+1/1440');//一分钟执行一次

  commit;

end;



完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: