1. 程式人生 > >oracle 建立dblink,傳送資料

oracle 建立dblink,傳送資料

最近遇到個需求,需要將某個庫的簡訊資料傳送到簡訊中心的庫中

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 [email protected]_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 [email protected]_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;


完成了。