oracle 建立dblink,傳送資料
最近遇到個需求,需要將某個庫的簡訊資料傳送到簡訊中心的庫中
1、給本資料庫建立dblink連線
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) isBEGIN
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
beginsys.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;
/
完成了。