Oracle高級(jí)復(fù)制的同步相關(guān)復(fù)制8個(gè)步驟
以下的文章主要是介紹Oracle高級(jí)復(fù)制的同步相關(guān)復(fù)制,如果某個(gè)公司需要在全國(guó)幾個(gè)相關(guān)的地方來(lái)架設(shè)服務(wù)器(Oracle)的話,就要求各個(gè)相關(guān)的DB數(shù)據(jù)的一致性,以下是測(cè)試方案中的一種:同步復(fù)制。
Oracle 高級(jí)復(fù)制同步復(fù)制配置步驟詳細(xì)說(shuō)明
[Oracle] Oracle高級(jí)復(fù)制同步復(fù)制配置步驟
首先,數(shù)據(jù)庫(kù)要具備Oracle高級(jí)復(fù)制功能(用system身份登錄數(shù)據(jù)庫(kù),查看v$option視圖,如果其中Advanced replication為TRUE,則支持Oracle高級(jí)復(fù)制功能;否則不支持)
一.數(shù)據(jù)庫(kù)基本情況
數(shù)據(jù)庫(kù)A 版本Oracle 10.2.0.1 數(shù)據(jù)庫(kù)名sid:eread
數(shù)據(jù)庫(kù)B 版本Oracle 10.1.0.3 數(shù)據(jù)庫(kù)名sid:test
主體定義站點(diǎn):A eread
主體站點(diǎn):B test
注:主體定義站點(diǎn)指配置復(fù)制工作的站點(diǎn)
本例涉及的用戶.
復(fù)制管理員:repadmin
應(yīng)用用戶:cqm
本例Oracle高級(jí)復(fù)制的對(duì)象:reptest 數(shù)據(jù)表
本例的先決條件:你需要設(shè)置好相應(yīng)的參數(shù),job_queue_processes需要大于0,global_name=true,并且建立相應(yīng)的db link.
- alter system set global_names=true scope=both;
二.在兩個(gè)數(shù)據(jù)庫(kù)上分別創(chuàng)建應(yīng)用用戶CQM
- CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP;
- GRANT DBA TO CQM;
三.在兩個(gè)數(shù)據(jù)庫(kù)上分別創(chuàng)建復(fù)制管事員用戶REPADMIN
創(chuàng)建repadmin用戶管理Oracle高級(jí)復(fù)制環(huán)境
- CREATE USER REPADMIN IDENTIFIED BY REPADMIN;
- ALTER USER REPADMIN DEFAULT TABLESPACE USERS;
- ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;
- GRANT connect, resource TO REPADMIN;
授予repadmin用戶權(quán)限可以管理當(dāng)前站點(diǎn)中任何主體組
- EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');
授予repadmin用戶權(quán)限可以為任何表創(chuàng)建snapshot logs
- GRANT comment any table TO REPADMIN;
- GRANT lock any table TO REPADMIN;
指定repadmin用戶為propagator,并授予執(zhí)行任何procedure的權(quán)限
- EXECUTE dbms_defer_sys.register_propagator('REPADMIN');
- GRANT execute any procedure TO REPADMIN;
四.更改兩個(gè)數(shù)據(jù)庫(kù)的全局名稱
- 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
五.在兩個(gè)數(shù)據(jù)庫(kù)上建立數(shù)據(jù)庫(kù)鏈接
- 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';
六.在兩個(gè)數(shù)據(jù)庫(kù)的應(yīng)用用戶CQM下創(chuàng)建表
在數(shù)據(jù)庫(kù)EREAD上用戶CQM下:注意,要進(jìn)行Oracle高級(jí)復(fù)制的表必須有主鍵
- CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
- ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
在數(shù)據(jù)庫(kù)EREAD上用戶CQM下:
- CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);
- ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID));
七.在主體定義站點(diǎn)開始操作(數(shù)據(jù)庫(kù)A:eread)
以REPADMIN登錄數(shù)據(jù)庫(kù)eread
創(chuàng)建復(fù)制組:
- execute dbms_repcat.create_master_repgroup('rep_hh');
- execute dbms_repcat.create_master_repgroup('repg');
在復(fù)制組里加入復(fù)制對(duì)象:
- execute dbms_repcat.create_master_repobject(sname=>
'cqm',oname=>'test',type=>'table',
use_existing_object=>true,gname=>'repg');,copy_rows=>false);
對(duì)復(fù)制對(duì)象產(chǎn)生復(fù)制支持:
- execute dbms_repcat.generate_replication_support('cqm','test','table');
添加主體復(fù)制節(jié)點(diǎn):
- execute dbms_repcat.add_master_database
(gname=>'repg',master=>'test.im.com.cn',
use_existing_objects=>true,copy_rows=>false, propagation_mode => 'synchronous');
在主體定義站點(diǎn)啟動(dòng)Oracle高級(jí)復(fù)制:
- execute dbms_repcat.resume_master_activity('repg',true);
八.至此配置完成
測(cè)試:
1)模擬小數(shù)據(jù)量測(cè)試:OK
2)模擬大數(shù)據(jù)量測(cè)試:
- 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;
- /
上述的相關(guān)內(nèi)容就是對(duì)Oracle高級(jí)復(fù)制之同步復(fù)制的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
【編輯推薦】