高级同步复制手记

1. 在两台PC SERVER上安装ORACLE9I企业版,分别创建数据库WANG和ORASVR

2. 检查安装好的数据库是否支持高级复制:

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

VALUE

----------------------------------------------------------------

TRUE

确保返回的结果是TRUE,如果是FALSE 则表示需要重新安装oracle 的高级复制部件。

如果安装的是企业版,安装没有问题的话,值为TRUE.

[@more@]

3. 确保数据库的初始化参数中global_name=true,同时因为高级复制依靠于JOB 来实现,

所以必须保证job_queue_processes 参数大于0,我们可以设置为10

设置下列参数为下面的值

global_name=true

open_links = 4

job_queue_processes = 10

4. 在两台数据库的TNSNAMES.ORA文件里都加上对方数据库的服务名称,保证双方可以互相连通.

ORA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.98)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ora.metal.net.cn)

)

)

WL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.143)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = wl.metal.net.cn)

)

)

5. sysdba 权限分别登录wlora数据库,检查双方的global_name,必须保证

两边的域名相同才可以建立正确的dblink。在这里我们选择METAL.NET.CN为域名,在安装数据库的时候全局数据库名也选择了域名.

select * from global_name;

GLOBAL_NAME

WL.METAL.NET.CN

Orasvr数据库的GLOBAL_NAME也改为ORA.METAL.NET.CN

6. 创建公有数据库链接,从WL连接到ORA,同时,从ORA链接到WL;

注意:数据库链接名字要与全局数据库名相同.

CREATE PUBLIC DATABASE LINK "wl.metal.net.cn" USING 'wl';

CREATE PUBLIC DATABASE LINK "ora.metal.net.cn" USING 'ora';

ora数据库上,运行以下SQL 检查dblink创建是否成功,如果结果返回wlglobal_name 则表示成功

SQL> select * from global_name@ora.metal.net.cn;

7. 在两台数据库服务器上创建repadmin 用户,用于管理高级复制

create user repadmin identified by repadmin default tablespace users temporary

tablespace temp;

execute dbms_defer_sys.register_propagator('repadmin');

grant execute any procedure to repadmin;

execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');

execute dbms_repcat_admin.grant_admin_any_schema(username => '"REPADMIN"');

grant comment any table to repadmin;

grant lock any table to repadmin;

grant select any dictionary to repadmin;

8. repadmin 用户登录orasvr数据库,创建私有数据库连接

create database link "wang.metal.net.cn" connect to repadmin identified by repadmin;

9. 在ORA数据库上创建测试用户WANG,并创建表TEST

CREATE USER wang IDENTIFIED BY wang;

GRANT CONNECT,RESOURCE TO WANG;

CREATE TABLE "WANG"."TEST" ("ID" NUMBER(10) NOT NULL, "NAME"

VARCHAR2(10) NOT NULL,

CONSTRAINT "PK_ID" PRIMARY KEY("ID"))

TABLESPACE "USERS"

CREATE TABLE TEST (ID NUMBER,NAME VARCHAR2(10));

输入测试数据2行.

Insert into test values (1,’one’);

Insert into test values (2,’two’);

10. 在WL数据库上创建测试用户WANG,并创建表TEST,步骤同上.

11. 在WL数据库上添加复制组和复制对象

SQL>CONN REPADMIN/REPADMIN

SQL> execute dbms_repcat.create_master_repgroup('rep_hh');

SQL> select gname,master,status from dba_repgroup where gname='REP_HH';

GNAME                          M STATUS

------------------------------ - ---------

REP_HH                         Y QUIESCED

在复制组里加入复制对象

SQL> execute dbms_repcat.create_master_repobject(sname=>'wang',oname=>'test',type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false);

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

SNAME                          ONAME                          STATUS     GNAME

------------------------------ ------------------------------ ---------- ------------------------------

WANG                           TEST                        VALID      REP_HH

对复制对象产生复制支持

SQL> execute dbms_repcat.generate_replication_support('wang','test','table');

PL/SQL 过程已成功完成。

SQL> select gname, master, status from dba_repgroup where gname='REP_HH';

GNAME M STATUS

------------------------------ - ---------

REP_HH Y QUIESCED

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

SNAME ONAME STATUS

------------------------------ ------------------------------ ----------

GNAME

------------------------------

WANG TEST VALID

REP_HH

WANG TEST$RP VALID

REP_HH

WANG TEST$RP VALID

REP_HH

12.添加主体复制节点

SQL>execute dbms_repcat.add_master_database(gname=>'rep_hh',master=>'ORA.METAL.NET.CN',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous');

SQL> column masterdef format a10

SQL> column master format a10

SQL> column dblink format a25

SQL> column gname format a12

SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_HH';

GNAME DBLINK MASTERDEF MASTER

------------ ------------------------- ---------- ----------

REP_HH WL.METAL.NET.CN Y Y

REP_HH OR.METAL.NET.CN N Y

13.在ORA数据库上检查复制对象情况:

SQL> select * from global_name;

GLOBAL_NAME

---------------------------------------------------------------------

AUTHAA.COOLYOUNG.COM.CN

SQL> set linesize 120

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

SNAME                          ONAME                          STATUS     GNAME

------------------------------ ------------------------------ ---------- ------------------------------

WANG                               TEST                        VALID      REP_HH

WANG                               TEST$RP                     VALID      REP_HH

WANG                               TEST$RP                     VALID      REP_HH

14.在WL数据库上启动复制

SQL> select * from global_name;

GLOBAL_NAME

-------------------------------------------------------------------

WL.METAL.NET.CN

SQL> execute dbms_repcat.resume_master_activity('rep_hh',true);

PL/SQL 过程已成功完成。

15.进行数据测试,在WL上删除数据,观察ORA的数据变化.

SQL> select * from global_name;

GLOBAL_NAME

-------------------------------------------------------------------

WL.METAL.NET.CN

SQL> execute dbms_repcat.resume_master_activity('rep_hh',true);

PL/SQL 过程已成功完成。

SQL> select * from wang.test;

        ID NAME

---------- ----------

         1 one

         2 two

SQL> delete wang.test;

已删除2行。

SQL> select * from wang.test;

未选定行

SQL> commit;

提交完成。

此时 ORA数据库服务器的变化是:

SQL> conn repadmin/repadmin@ora

已连接。

SQL> select * from wang.test;

        ID NAME

---------- ----------

         1 one

         2 two

SQL> select * from wang.test;

        ID NAME

---------- ----------

         1 one

         2 two

SQL> select * from wang.test;

未选定行

下面测试在WL上插入一条数据,则在ORA数据库上同时也写入数据:

WL数据库上

SQL> select * from global_name;

GLOBAL_NAME

-------------------------------------------------

WL.METAL.NET.CN

SQL> select * from wang.test;

未选定行

SQL> insert into wang.test values (3,'three');

已创建 1 行。

SQL> commit;

提交完成。

ORA数据库上

SQL> select * from global_name;

GLOBAL_NAME

-----------------------------------------

ORA.METAL.NET.CN

SQL> select * from wang.test;

未选定行

SQL> select * from wang.test;

        ID NAME

---------- ----------

         3 three

总结:以上配置是在无压力无数据流量的情况下配置成功的数据库同步复制,实现两个数据库的实时同步.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/72495/viewspace-916702/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/72495/viewspace-916702/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值