『安装配置』Oracle 10g高级复制实例(多主体复制)

Oracle 10g高级复制实例(多主体复制)


现在主流的数据库产品都实现了数据库中数据的复制,有的产品还做到了数据库对象的复制(例如视图和索引)。今天主要是与大家分享在Oracle平台下的数据复制功能。

多主体复制,MultiMaster Replication。可以简单理解为多个数据库间相互复制。

1.环境介绍:

主体定义站点:MASTER.CHRIS.COM.CN
主体站点:REPSITE.CHRIS.COM.CN
操作系统:   linux As 4.0
数据库版本: ORACLE 10G -10.2.0.0
注:主体定义站点指配置复制工作的站点

2.环境准备:首先创建在系统中建立了两个数据库

SID: Master                     GLOBAL_NAME:MASTER.CHRIS.COM.CN
SID: REPSITE                    GLOBAL_NAME:REPSITE.CHRIS.COM.CN

在实施前先要察看一些参数的设置情况

SQL> select * from v$option where parameter ='Advanced replication';

PARAMETER                                                 VALUE
-----------------------------------                        ------------------------------
Advanced replication                                    TRUE

如果该参数为Flase,则需要重新安装Oracle的Advanced Replication组件。

SQL> select * from global_name;

GLOBAL_NAME
----------------------------------
MASTER.CHRIS.COM.CN

CHRIS.COM.CN表示该数据库实例的域名,即Domain Name。被复制的数据库实例必须具有相同的域名(show parameter db_domain)。如果域名不同,则需要使用命令修改数据库实例的域名。(alter database rename global_name to . )

SQL> show parameter job_queue_processes;

NAME                                     TYPE                      VALUE
------------------------------------ ---------------------- -------------------
job_queue_processes           integer                 10

job_queue_processes参数的值必须大于0,因为数据复制需要使用Oracle的作业系统。

SQL> show parameter open_links

NAME                                     TYPE                      VALUE
------------------------------------ ---------------------- -----------
open_links                             integer                     4

数据复制进程需要使用很多links,如果复制系统较多,建议尽量将该参数设置大些。

在开始实施复制之前,还要在复制站点上先创建好必要的数据环境。分别在两个数据库实例上创建好用户和对应的数据表。这里我省略了创建的过程。下面是关于数据表的部分信息。

SQL> select count(*) from SCOTT.DEPT;

  COUNT(*)
----------
     7

SQL> DESC SCOTT.DEPT
 名称                                      是否为空?  类型
 ----------------------------------------- --------   ---------------

 DEPTNO                                    NOT NULL    NUMBER(2)
 DNAME                                                 VARCHAR2(14)
 LOC                                                   VARCHAR2(13)

主键:DEPTNO

--必须为主键或者联合主键。

3.复制实施准备一:在所有复制站点建立复制用户。
---为了方便期间均使用REPADMIN用户,且用户名和密码相同。

SQL>create user repadmin identified by repadmin default tablespace users temporary tablespace temp;

User created.

SQL>execute dbms_defer_sys.register_propagator('repadmin');

PL/SQL procedure successfully completed.

SQL>grant execute any procedure to repadmin;

Grant succeeded.

SQL>execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');

PL/SQL procedure successfully completed.

SQL>execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');

PL/SQL procedure successfully completed.

SQL>grant comment any table to repadmin;

Grant succeeded.

SQL>grant lock any table to repadmin;

Grant succeeded.

SQL>grant select any dictionary to repadmin;

Grant succeeded.

4.复制实施准备二:创建数据库连接。

在复制用户创建并授权成功后,分别在数据库实例上创建指向对方实例的数据库连接。

在MASTER.CHRIS.COM.CN实例上:
CREATE  DATABASE LINK "REPSITE.CHRIS.COM.CN"  CONNECT TO
    "REPADMIN"
    IDENTIFIED BY "repadmin" 
    USING 'REPSITE.CHRIS.COM.CN'

在REPSITE.CHRIS.COM.CN实例上:
CREATE  DATABASE LINK "MASTER.CHRIS.COM.CN"  CONNECT TO
    "REPADMIN"
    IDENTIFIED BY "repadmin" 
    USING 'MASTER.CHRIS.COM.CN'


5.复制实施进程:

现在开始真正的数据复制工作。一般在实施复制的时候,数据源已经存在一定量的数据,因此考虑到数据复制实施的简单性和操作性,事先已经在双方站点上部署好了相应的数据表。

主体定义站点:MASTER.CHRIS.COM.CN
主体站点:REPSITE.CHRIS.COM.CN
复制对象:scott.dept

以下在MASTER.CHRIS.COM.CN机器上操作

使用复制管理用户REPADMIN登录主定义站点:

SQL> conn conn repadmin/repadmin

Connected.

SQL> select * from global_name;

GLOBAL_NAME
----------------------------------------
MASTER.CHRIS.COM.CN

创建复制主体组:REP_MYTEST
SQL> execute dbms_repcat.create_master_repgroup('REP_MYTEST');

PL/SQL procedure successfully completed.

察看复制主体组相关信息:
SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME                         MASTER                        STATUS
--------------------------- ----------------------------  ------------------------
REP_MYTEST                  Y                             QUIESCED

为主体组添加复制对象:
SQL> execute dbms_repcat.create_master_repobject -
> (sname=>'SCOTT',oname=>'DEPT', type=>'TABLE', -
> use_existing_object=>true,gname=>'REP_MYTEST',copy_rows=>false);

PL/SQL procedure successfully completed.

察看复制主体组中复制对象的相关信息:
SQL> select sname,oname,status,gname from dba_repobject where gname='REP_MYTEST';

SNAME                          ONAME                            STATUS     GNAME
----------------------------- ------------------------------ ------------- ------------------------------
SCOTT                         DEPT                           VALID         REP_MYTEST

为复制对象生成复制支持:
SQL> execute dbms_repcat.generate_replication_support('SCOTT','DEPT','TABLE');

PL/SQL procedure successfully completed.

再次察看复制主体组和对应的复制对象的相关信息:
SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME                         MASTER                        STATUS
--------------------------- ----------------------------  ------------------------
REP_MYTEST                  Y                             QUIESCED

SQL> select sname,oname,status,gname from dba_repobject where gname='REP_MYTEST';

SNAME                          ONAME                            STATUS     GNAME
----------------------------- ------------------------------ ------------- ------------------------------
SCOTT                            DEPT                        VALID         REP_MYTEST
SCOTT                            DEPT$RP                     VALID         REP_MYTEST
SCOTT                            DEPT$RP                     VALID         REP_MYTEST

为复制主体组添加数据库主站点:
SQL> execute dbms_repcat.add_master_database -
> (gname=>'REP_MYTEST',master=>'REPSITE.CHRIS.COM.CN', -
> use_existing_objects=>true,copy_rows=>false, -
> propagation_mode => 'synchronous');

PL/SQL procedure successfully completed.

以下在REPSITE.CHRIS.COM.CN机器上操作
察看复制站点信息:
SQL> select gname,dblink,masterdef,master from dba_repsites where gname='REP_MYTEST';

GNAME        DBLINK                            MASTERDEF     MASTER
------------ --------------------------------  ------------------ --------------
REP_MYTEST       ORCL9I.TAIKANG.COM     Y                     Y
REP_MYTEST       REPSITE.CHRIS.COM.CN    N                    Y

以下在REPSITE.CHRIS.COM.CN机器上操作
启动复制进程:
SQL> execute dbms_repcat.resume_master_activity('REP_MYTEST',true);

PL/SQL procedure successfully completed.

再次察看复制主体组相关信息:
SQL> select gname,master,status from dba_repgroup where gname='REP_MYTEST';

GNAME                         MASTER                        STATUS
--------------------------- ----------------------------  ------------------------
REP_MYTEST                       Y                                   NORMAL

注意:复制主体组的状态由QUIESCED变为NORMAL。

至此,这个复制过程实施完毕。可以进行相关的数据操作进行测试。


6. 测试

本文操作参考了eygle的文章《Oracle高级复制的创建配置步骤-Step by Step》原文链接:http://www.eygle.com/archives/2005/06/oraclessoeaeaeo.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值