oracle資料同步例項

2021-07-26 12:35:44 字數 2676 閱讀 8889

建立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匯出將資料導成...