程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle高級復制的同步相關復制8個步驟

Oracle高級復制的同步相關復制8個步驟

編輯:Oracle數據庫基礎

以下的文章主要是介紹Oracle高級復制的同步相關復制,如果某個公司需要在全國幾個相關的地方來架設服務器(Oracle)的話,就要求各個相關的DB數據的一致性,以下是測試方案中的一種:同步復制。

Oracle 高級復制同步復制配置步驟詳細說明

[Oracle] Oracle高級復制同步復制配置步驟

首先,數據庫要具備Oracle高級復制功能(用system身份登錄數據庫,查看v$option視圖,如果其中Advanced replication為TRUE,則支持Oracle高級復制功能;否則不支持)

一.數據庫基本情況

數據庫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.

  1. alter system set global_names=true scope=both

二.在兩個數據庫上分別創建應用用戶CQM

  1. CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP;  
  2. GRANT DBA TO CQM;  

 三.在兩個數據庫上分別創建復制管事員用戶REPADMIN

創建repadmin用戶管理Oracle高級復制環境

  1. CREATE USER REPADMIN IDENTIFIED BY REPADMIN;   
  2. ALTER USER REPADMIN DEFAULT TABLESPACE USERS;   
  3. ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;   
  4. GRANT connect, resource TO REPADMIN;   

授予repadmin用戶權限可以管理當前站點中任何主體組

  1. EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');  

授予repadmin用戶權限可以為任何表創建snapshot logs

  1. GRANT comment any table TO REPADMIN;   
  2. GRANT lock any table TO REPADMIN;   

指定repadmin用戶為propagator,並授予執行任何procedure的權限

  1. EXECUTE dbms_defer_sys.register_propagator('REPADMIN');   
  2. GRANT execute any procedure TO REPADMIN;   

四.更改兩個數據庫的全局名稱

  1. alter database rename global_name to A.TEST.COM.CN;  
  2. alter database rename global_name to B.TEST.COM.CN;  

A:eread.im.com.cn

B:test.im.com.cn

五.在兩個數據庫上建立數據庫鏈接

  1. create public database link test.im.com.cn connect to REPADMIN identifIEd by REPADMIN using 'test';  
  2. create public database link eread.im.com.cn connect to REPADMIN identifIEd by REPADMIN using 'eread';  

六.在兩個數據庫的應用用戶CQM下創建表

在數據庫EREAD上用戶CQM下:注意,要進行Oracle高級復制的表必須有主鍵

  1. CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);  
  2. ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); 

在數據庫EREAD上用戶CQM下:

  1. CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);  
  2. ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); 

七.在主體定義站點開始操作(數據庫A:eread)

以REPADMIN登錄數據庫eread

創建復制組:

  1. execute dbms_repcat.create_master_repgroup('rep_hh');   
  2. execute dbms_repcat.create_master_repgroup('repg');  

在復制組裡加入復制對象:

  1. execute dbms_repcat.create_master_repobject(sname=>

    'cqm',oname=>'test',type=>'table',

    use_existing_object=>true,gname=>'repg');,copy_rows=>false); 

對復制對象產生復制支持:

  1. execute dbms_repcat.generate_replication_support('cqm','test','table'); 

添加主體復制節點:

  1. execute dbms_repcat.add_master_database

    (gname=>'repg',master=>'test.im.com.cn',

    use_existing_objects=>true,copy_rows=>false, propagation_mode => 'synchronous');  

在主體定義站點啟動Oracle高級復制:

  1. execute dbms_repcat.resume_master_activity('repg',true); 

八.至此配置完成

測試:

1)模擬小數據量測試:OK

2)模擬大數據量測試:

  1. CREATE OR REPLACE procedure insert_into_test  
  2. as  
  3. i number;  
  4. m NUMBER;  
  5. n NUMBER;  
  6. BEGIN  
  7. n:=0;  
  8. FOR i IN 1..10000 LOOP  
  9. m:=i;  
  10. INSERT INTO test(id)VALUES (m);  
  11. nn:=n+1;  
  12. IF n=1000 THEN  
  13. COMMIT;  
  14. n:=0;  
  15. END IF;  
  16. END LOOP;  
  17. COMMIT;  
  18. END;  
  19. /  

上述的相關內容就是對Oracle高級復制之同步復制的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved