以下的文章主要講述的是Oracle進階複製的同步複製,如果你需要在全國的幾個相關地方來架設相關伺服器(Oracle),其要求是各個相關的DB資料的一致,以下就是具體方案的描述,希望在你今後的學習中會有所協助。
以下是測試方案中的一種:同步複製
Oracle 進階複製同步複製配置步驟詳細說明
[Oracle] Oracle進階複製同步複製配置步驟
首先,資料庫要具備Oracle進階複製功能(用system身份登入資料庫,查看v$option視圖,如果其中Advanced replication為TRUE,則支援進階複製功能;否則不支援)
一.資料庫基本情況
資料庫A 版本Oracle 10.2.0.1 資料庫名sid:eread
資料庫B 版本Oracle 10.1.0.3 資料庫名sid:test
主體定義網站:A eread
主體網站:B test
注:主體定義網站指配置複製工作的網站
本例涉及的使用者.
複製管理員:repadmin
應用使用者:cqm
本例Oracle進階複製的對象:reptest 資料表
本例的先決條件:你需要設定好相應的參數,job_queue_processes需要大於0,global_name=true,並且建立相應的db link.
- alter system set global_names=true scope=both;
二.在兩個資料庫上分別建立應用使用者CQM
- CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP;
- GRANT DBA TO CQM;
三.在兩個資料庫上分別建立複製管事員使用者REPADMIN
建立repadmin使用者管理複製環境
- CREATE USER REPADMIN IDENTIFIED BY REPADMIN;
- ALTER USER REPADMIN DEFAULT TABLESPACE USERS;
- ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;
- GRANT connect, resource TO REPADMIN;
授予repadmin使用者權限可以管理當前網站中任何主體組
- EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');
授予repadmin使用者權限可以為任何錶建立snapshot logs
- GRANT comment any table TO REPADMIN;
- GRANT lock any table TO REPADMIN;
指定repadmin使用者為propagator,並授予執行任何procedure的許可權
- EXECUTE dbms_defer_sys.register_propagator('REPADMIN');
- GRANT execute any procedure TO REPADMIN;
四.更改兩個資料庫的全域名稱
- alter database rename global_name to A.TEST.COM.CN;
- alter database rename global_name to B.TEST.COM.CN;
A:eread.im.com.cn
B:test.im.com.cn
五.在兩個資料庫上建立資料庫連結
- create public database link test.im.com.cn connect to REPADMIN identified by REPADMIN using 'test';
- create public database link eread.im.com.cn connect to REPADMIN identified by REPADMIN using 'eread';
六.在兩個資料庫的應用使用者CQM下建立表
在資料庫EREAD上使用者CQM下:注意,要進行Oracle進階複製的表必須有主鍵
- CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
- ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
在資料庫EREAD上使用者CQM下:
- CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
- ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
七.在主體定義網站開始操作(資料庫A:eread)
以REPADMIN登入資料庫eread
建立複製組:
- execute dbms_repcat.create_master_repgroup('rep_hh');
- execute dbms_repcat.create_master_repgroup('repg');
在複製組裡加入複製對象:
- execute dbms_repcat.create_master_repobject
(sname=>'cqm',oname=>'test',type=>'table',
use_existing_object=>true,gname=>'repg');,copy_rows=>false);
對複製對象產生複製支援:
- execute dbms_repcat.generate_replication_support('cqm','test','table');
添加主體複製節點:
- execute dbms_repcat.add_master_database(gname=>'repg',master=>'
test.im.com.cn',use_existing_objects=>true,
copy_rows=>false, propagation_mode => 'synchronous');
在主體定義網站啟動Oracle進階複製:
- execute dbms_repcat.resume_master_activity('repg',true);
八.至此配置完成
測試:
1)類比小資料量測試:OK
2)類比大資料量測試:
- CREATE OR REPLACE procedure insert_into_test
- as
- i number;
- m NUMBER;
- n NUMBER;
- BEGIN
- n:=0;
- FOR i IN 1..10000 LOOP
- m:=i;
- INSERT INTO test(id)VALUES (m);
- nn:=n+1;
- IF n=1000 THEN
- COMMIT;
- n:=0;
- END IF;
- END LOOP;
- COMMIT;
- END;
- /
以上的相關內容就是對Oracle進階複製之同步複製的介紹,望你能有所收穫。