全部博文(126)
分类: Oracle
2008-01-26 00:06:25
1.环境说明:
数据库平台和版本:Oracle9i for Windows
主体定义数据库:OCP.WORLD
主体数据库:ALU.WORLD
复制管理员:repadmin
应用用户:repuser
本例复制的对象:rep_test数据表
SQL> conn
已连接。
SQL> show parameter
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 9.2.0.1.0
job_queue_processes integer 1
global_names boolean TRUE
db_domain string CONS
SQL> select * from global_name;
GLOBAL_NAME
-------------------------------
OCP.WORLD
SQL> conn
已连接。
SQL> show parameter
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 9.2.0.1.0
job_queue_processes integer 1
global_names boolean TRUE
db_domain string CONS
SQL> select * from global_name;
GLOBAL_NAME
-------------------------------
ALU.WORLD
2.在主体定义数据库和主体数据库分别创建repadmin用户并授权
SQL> create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
用户已创建
SQL> execute dbms_defer_sys.register_propagator('repadmin');
PL/SQL 过程已成功完成。
SQL> grant execute any procedure to repadmin;
授权成功。
SQL> execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
PL/SQL 过程已成功完成。
SQL> execute dbms_repcat_admin.grant_admin_any_schema('repadmin');
PL/SQL 过程已成功完成。
SQL> grant comment any table to repadmin;
授权成功。
SQL> grant lock any table to repadmin;
授权成功。
SQL> grant select any dictionary to repadmin;
授权成功。
3.以repadmin用户登陆,在主体定义数据库和主体数据库分别创建db link
SQL> conn
已连接。
SQL> create database link ALU.WORLD connect to repadmin identified by repadmin using 'ALU';
数据库链接已创建。
SQL> select * from ;
GLOBAL_NAME
---------------------------------------
OCP.WORLD
SQL> conn
已连接。
SQL> create database link OCP.WORLD connect to repadmin identified by repadmin using 'OCP';
数据库链接已创建。
SQL> select * from ;
GLOBAL_NAME
-----------------------------------
ALU.WORLD
4.以repuser用户登陆主体定义数据库,创建测试数据表rep_test
SQL> conn
已连接。
SQL> create table rep_test (id number, name varchar2(10));
表已创建。
SQL> alter table rep_test add (constraint pk_rep_test primary key (id));
表已更改。
SQL> insert into rep_test values (1,'a');
已创建 1 行。
SQL> insert into rep_test values (2,'b');
已创建 1 行。
SQL> insert into rep_test values (3,'c');
已创建 1 行。
SQL> insert into rep_test values (4,'d');
已创建 1 行。
SQL> insert into rep_test values (5,'e');
已创建 1 行。
SQL> commit;
提交完成。
5.以repuser用户登陆主体数据库,创建测试数据表rep_test(建立的表结构和数据同4)
SQL> conn
已连接。
SQL> create table rep_test (id number, name varchar2(10));
表已创建。
SQL> alter table rep_test add (constraint pk_rep_test primary key (id));
表已更改。
SQL> insert into rep_test values (1,'a');
已创建 1 行。
SQL> insert into rep_test values (2,'b');
已创建 1 行。
SQL> insert into rep_test values (3,'c');
已创建 1 行。
SQL> insert into rep_test values (4,'d');
已创建 1 行。
SQL> insert into rep_test values (5,'e');
已创建 1 行。
SQL> commit;
提交完成。
6.登陆主体定义数据库,创建复制组
SQL> conn
已连接。
SQL> execute dbms_repcat.create_master_repgroup('rep_hh');
PL/SQL 过程已成功完成。
SQL> select gname,master,status from dba_repgroup where gname='REP_HH';
GNAME M STATUS
------------------------------ - ---------
REP_HH Y QUIESCED
7.在复制组中加入复制对象
SQL> execute dbms_repcat.create_master_repobject(sname=>'repuser',oname=>'rep_test', type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false);
PL/SQL 过程已成功完成。
SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH';
SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
REPUSER REP_TEST VALID REP_HH
8.对复制对象产生复制支持
SQL> execute dbms_repcat.generate_replication_support('repuser','rep_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
------------------------------ ------------------------------ ---------- ------------------------------
REPUSER REP_TEST VALID REP_HH
REPUSER REP_TEST$RP VALID REP_HH
REPUSER REP_TEST$RP VALID REP_HH
9.添加主体复制节点
SQL> execute dbms_repcat.add_master_database(gname=>'rep_hh',master=>'ALU.WORLD',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'synchronous');
PL/SQL 过程已成功完成。
SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_HH';
GNAME DBLINK M M
------------------------------ -------------------------------------------------
REP_HH ALU.WORLD N Y
REP_HH OCP.WORLD Y Y
10.登陆主体站点,检查复制对象情况
SQL> conn
已连接。
SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH';
SNAME ONAME STATUS GNAME
------------------------------ ------------------------------ ---------- ------------------------------
REPUSER REP_TEST VALID REP_HH
REPUSER REP_TEST$RP VALID REP_HH
REPUSER REP_TEST$RP VALID REP_HH
11.在主体定义站点启动复制
SQL> conn
已连接。
SQL> execute dbms_repcat.resume_master_activity('rep_hh',true);
PL/SQL 过程已成功完成。
SQL> select gname, master, status from dba_repgroup where gname='REP_HH';
GNAME M STATUS
------------------------------ - ---------
REP_HH Y NORMAL
12.在主体定义站点添加数据测试
SQL> conn
已连接。
SQL> select * from rep_test;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
5 e
SQL> insert into rep_test values (0,'x');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from rep_test;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
5 e
0 x
13.在主体数据库验证
SQL> conn
已连接。
SQL> select * from rep_test;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
5 e
0 x
14.完成