Home  >  Article  >  Database  >  Oracle高级复制的同步复制的配置步骤说明

Oracle高级复制的同步复制的配置步骤说明

WBOY
WBOYOriginal
2016-06-07 15:31:28899browse

以下的文章主要讲述的是Oracle高级复制的同步复制,如果你需要在全国的几个相关地方来架设相关服务器(Oracle),其要求是各个相关的DB数据的一致,以下就是具体方案的描述,希望在你今后的学习中会有所帮助。 以下是测试方案中的一种:同步复制 Oracle 高级复制

以下的文章主要讲述的是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.

<ol><li><span><span>alter system set </span><span>global_names</span><span>=</span><span>true</span><span> </span><span>scope</span><span>=</span><span>both</span><span>; </span></span></li></ol>

二.在两个数据库上分别创建应用用户CQM

<ol>
<li><span>CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP;  </span></li>
<li><span>GRANT DBA TO CQM;  </span></li>
</ol>

三.在两个数据库上分别创建复制管事员用户REPADMIN

创建repadmin用户管理复制环境

<ol>
<li><span>CREATE USER REPADMIN IDENTIFIED BY REPADMIN;   </span></li>
<li><span>ALTER USER REPADMIN DEFAULT TABLESPACE USERS;   </span></li>
<li><span>ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;   </span></li>
<li><span>GRANT connect, resource TO REPADMIN;   </span></li>
</ol>

授予repadmin用户权限可以管理当前站点中任何主体组

<ol><li><span>EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');  </span></li></ol>

授予repadmin用户权限可以为任何表创建snapshot logs

<ol>
<li><span>GRANT comment any table TO REPADMIN;   </span></li>
<li><span>GRANT lock any table TO REPADMIN;   </span></li>
</ol>

指定repadmin用户为propagator,并授予执行任何procedure的权限

<ol>
<li><span>EXECUTE dbms_defer_sys.register_propagator('REPADMIN');   </span></li>
<li><span>GRANT execute any procedure TO REPADMIN;   </span></li>
</ol><br>

四.更改两个数据库的全局名称

<ol>
<li><span>alter database rename global_name to A.TEST.COM.CN;  </span></li>
<li><span>alter database rename global_name to B.TEST.COM.CN;  </span></li>
</ol>

A:eread.im.com.cn

B:test.im.com.cn

五.在两个数据库上建立数据库链接

<ol>
<li><span>create public database link test.im.com.cn connect to REPADMIN identified by REPADMIN using 'test';  </span></li>
<li><span>create public database link eread.im.com.cn connect to REPADMIN identified by REPADMIN using 'eread';  </span></li>
</ol>

六.在两个数据库的应用用户CQM下创建表

在数据库EREAD上用户CQM下:注意,要进行Oracle高级复制的表必须有主键

<ol>
<li><span>CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);  </span></li>
<li><span>ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); </span></li>
</ol>

在数据库EREAD上用户CQM下:

<ol>
<li><span>CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate);  </span></li>
<li><span>ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); </span></li>
</ol>

七.在主体定义站点开始操作(数据库A:eread)

以REPADMIN登录数据库eread

创建复制组:

<ol>
<li><span>execute dbms_repcat.create_master_repgroup('rep_hh');   </span></li>
<li><span>execute dbms_repcat.create_master_repgroup('repg');  </span></li>
</ol>

在复制组里加入复制对象:

<ol><li><span><span>execute dbms_repcat.create_master_repobject<br>(</span><span>sname</span><span>=</span><span>></span><span>'cqm',</span><span>oname</span><span>=</span><span>></span><span>'test',</span><span>type</span><span>=</span><span>></span><span>'table',<br></span><span>use_existing_object</span><span>=</span><span>></span><span>true,</span><span>gname</span><span>=</span><span>></span><span>'repg');,</span><span>copy_rows</span><span>=</span><span>></span><span>false); </span></span></li></ol>

对复制对象产生复制支持:

<ol><li><span>execute dbms_repcat.generate_replication_support('cqm','test','table'); </span></li></ol>

添加主体复制节点:

<ol><li><span><span>execute dbms_repcat.add_master_database(</span><span>gname</span><span>=</span><span>></span><span>'repg',</span><span>master</span><span>=</span><span>></span><span>'<br>test.im.com.cn',</span><span>use_existing_objects</span><span>=</span><span>></span><span>true,<br></span><span>copy_rows</span><span>=</span><span>></span><span>false, </span><span>propagation_mode</span><span> =</span><span>></span><span> 'synchronous');  </span></span></li></ol>

在主体定义站点启动Oracle高级复制:

<ol><li><span>execute dbms_repcat.resume_master_activity('repg',true); </span></li></ol>

八.至此配置完成

测试:

1)模拟小数据量测试:OK

2)模拟大数据量测试:

<ol>
<li><span>CREATE OR REPLACE procedure insert_into_test  </span></li>
<li><span>as  </span></li>
<li><span>i number;  </span></li>
<li><span>m NUMBER;  </span></li>
<li><span>n NUMBER;  </span></li>
<li><span>BEGIN  </span></li>
<li>
<span>n:</span><span>=</span><span>0</span><span>;  </span>
</li>
<li><span>FOR i IN 1..10000 LOOP  </span></li>
<li>
<span>m:</span><span>=</span><span>i</span><span>;  </span>
</li>
<li><span>INSERT INTO test(id)VALUES (m);  </span></li>
<li>
<span>n</span><span>n:</span><span>=n+1;  </span>
</li>
<li>
<span>IF </span><span>n</span><span>=</span><span>1000</span><span> THEN  </span>
</li>
<li><span>COMMIT;  </span></li>
<li>
<span>n:</span><span>=</span><span>0</span><span>;  </span>
</li>
<li><span>END IF;  </span></li>
<li><span>END LOOP;  </span></li>
<li><span>COMMIT;  </span></li>
<li><span>END;  </span></li>
<li><span>/  </span></li>
</ol>

以上的相关内容就是对Oracle高级复制之同步复制的介绍,望你能有所收获。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn