建立dblink :
create database link db117 --例項
connect to test_u identified by test_u
using '(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.1.117)(port = 1521))
)(connect_data =
(service_name = plmlk)
))';
--drop database link db117;
commit;
建立儲存過程
create or replace procedure sync_data_from_dblink_db as
begin
declare
cursor c_tabnames is
select table_name from user_tables;
v_tabname c_tabnames%rowtype;
v_sql varchar2(4000);
v_rowcount number;
v_rc number:=0;
v_tab number :=0;
begin
--禁用指令碼
begin
for c in (select 'alter table '||table_name||' disable constraint '||constraint_name||' ' as v_sql from user_constraints where constraint_type='r') loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
for v_tabname in c_tabnames loop
v_sql := 'delete '||v_tabname.table_name;
dbms_output.put_line(v_sql);
execute immediate v_sql;
v_sql := 'insert into '|| v_tabname.table_name||' select * from '|| v_tabname.table_name||'@db117';
dbms_output.put_line(v_sql);
execute immediate v_sql;
commit;
v_sql :='select count(*) from '|| v_tabname.table_name;
dbms_output.put_line(v_sql);
execute immediate v_sql into v_rowcount;
v_tab := v_tab +1;
v_rc := v_rc + v_rowcount;
end loop;
dbms_output.put_line(to_char(sysdate,'yy-mm-dd hh24:mi:ss')||' 匯入完成,共匯入表'||to_char(v_tab)||'張,總記錄數'||to_char(v_rc)||'條記錄。');
end;
--啟用指令碼
--set serveroutput on size 10000 --sqlplus用的
begin
for c in (select 'alter table '||table_name||' enable constraint '||constraint_name||' ' as v_sql from user_constraints where constraint_type='r') loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
end sync_data_from_dblink_db;
建立任務:
declare
jobupdate number;
begin
dbms_job.submit(jobupdate,'sync_data_from_dblink_db;',sysdate,'sysdate+3/1440');
end;
select * from user_jobs;
--步驟三:執行剛才建立的job
begin
dbms_job.run(44);
end;
--步驟四:查詢該job下次執行的時間
select job,next_date,what from dba_jobs where job=44;
--步驟五:刪除該job
begin
dbms_job.remove(44);
end;
ORACLE 資料同步
這是我之前做過的資料庫同步的問題,最近老是看到有人在csdn裡問資料庫同步的問題,所以我就想把我的實現方案共享一下。多多交流。用到的表是我臨時建立的表。有不妥之處請見諒,畢竟是免費的東西。在本地建立兩張表 t1,t2 這兩張表和遠端的表結構一樣,通過觸發器實現資料的同步,然後對本地的兩張表進行物化,...
oracle資料同步
首先建立乙個 dblink database link sql create database link kings dblink 的名字,同步的時候要用到這個名字,可以隨便取 connect tokings 連線到那個資料庫的使用者名稱 identified by kings123 連線那個資料庫...
Oracle 自動同步資料指令碼
前段時間在處理乙個生產異常的時候發現,我們的測試資料庫和 資料庫已經很久都沒有同步生產上的資料了。我們開發人員在處理異常的時候往往要模擬一條資料來進行除錯,若遇到需要大量接近生產的基礎資料進行除錯的時候就比較痛苦了。而目前遇到這種情況則需要實施人員到生產資料庫備份資料,通過oracle匯出將資料導成...