Oracle 10g高階複製例項

luckyfriends發表於2013-04-24

Oracle 10g高階複製例項(多主體複製)

 

前言:

配置了三次,兩次都是單向。最後一次終於是雙向的了。也算一點有點成功的喜悅。喜悅?喜悅確實談不上。這麼簡單的東西弄了這麼久覺得慚愧。網路上的資料一大堆。不過他們寫的好象都有些隨意。有的時候一點點錯誤可以使你只有重來。我現在重新寫一次。只提供給初學者。配置的高手的就不要開腔了。因為實在不好意思拿出來見人。

 

資訊:

主體定義資料庫:testdb.geong.com(弄清楚別弄錯了。)

主體資料庫:backdb.geong.com

作業系統:  xp

資料庫版本: ORACLE 10G -10.2.0.1.0

:主體定義資料庫指配置複製工作的資料庫。

 

高階複製過程:(以下沒有特別說明都要在兩臺資料庫上操作)。

1處理資料庫引數:(兩臺資料庫都要配置)

11設定global_nametrue。(global_name 由兩部分組成。 +.

SQL> show parameter global_name

NAME                                 TYPE        VALUE

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

global_names                         boolean     TRUE   

 

如果為false 請更改

alter system set global_name=true scope=spfile; (寫在spfile檔案中。需要重起才能起作用)

 

1.2 重新命名global_name

 alter database rename global_name to ..

如:

alter database global_name to testdb.geong.com;

更該完畢。

重起兩臺資料庫。

引數修改完畢。

 

2開始使用者配置:(兩臺資料庫都要相同的配置)

 

2.1 先配置複製資料測試使用者。

system使用者操作:

create user test identified by test default tablespace users;

grant connect,resource to test;

 

 

 

 

22切換到test使用者

 

conn  test/test

create table test(id number,name varchar2(20),constraint test_id_pk primary key(id));(主鍵一定是要的)

 

23 插入一些測試資料

insert into test values(1,’tanfufa1’);

insert into test values(1,’tanfufa1’);

insert into test values(1,’tanfufa1’);

commit;

 

24system使用者建立public link;

testdb上建立

create public database link “backdb.geong.com” using ‘backdb’;

測試連通性:

select * from global_name@ backdb.geong.com

GLOBAL_NAME

---------

BACKDB.GEONG.COM

 

如果不通請檢查tnsname.一定要通.不然後面就不用做了.

backdb上建立

create public database link “backdb.geong.com” using ‘backdb’;

測試連通性:

select * from global_name@ testdb.geong.com

GLOBAL_NAME

---------

TESTDB.GEONG.COM

如果不通請檢查tnsname.一定要通.不然後面就不用做了.

 

3.配置複製管理使用者. (兩臺資料庫都要相同的配置)

3.1

conn system/tanfufa

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.  repadmin使用者建立database link. (兩臺資料庫都要相同的配置)

testdb上建立:

create database link “backdb.geong.com” connect to repadmin identified by repadmin.

測試連通性:

select * from global_name@ backdb.geong.com

GLOBAL_NAME

---------

BACKDB.GEONG.COM

 

如果不通請檢查tnsname.一定要通.不然後面就不用做了.

 

backdb上建立:

create database link “backdb.geong.com” connect to repadmin identified by repadmin.

測試連通性:

select * from global_name@ testdb.geong.com

GLOBAL_NAME

---------

TESTDB.GEONG.COM

 

如果不通請檢查tnsname.一定要通.不然後面就不用做了.

 

5.準備工作全部做完了.現在去喝咖啡.

 

6. .複製實施程式:(特別注意以下在testdb資料庫上操作)

6.1  conn repadmin/repadmin

 

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=>'test',oname=>'test', type=>'TABLE', use_existing_object=>true,gname=>'REP_MYTEST',copy_rows=>true);

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('test','test','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=>'backdb.geong.com',use_existing_objects=>true,copy_rows=>true,  propagation_mode => 'synchronous');

PL/SQL procedure successfully completed.

 

察看複製站點資訊:

SQL> select gname,dblink,masterdef,master from dba_repsites where gname='REP_MYTEST';

 

GNAME        DBLINK                            MASTERDEF     MASTER

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

REP_MYTEST         testdb.geong.com  Y                     Y

REP_MYTEST         backdb.geong.com  N                    Y

啟動複製程式:

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

 

至此,這個複製過程實施完畢。可以進行相關的資料操作進行測試。

 

7.測試:

1.testdb上刪除修改插入資料,檢視backdb變化.

 

2.backdb上刪除修改插入資料,檢視testdb變化.

 

8.如果你需要新增表到組裡面來請按照入下操作.

 

 

配置好後。如果需要新增表。

執行下命令:

8.1.exec dbms_repcat.suspend_master_activity('rep_mytest');

 取消抑制。

 

8.2.SQL> execute dbms_repcat.create_master_repobject(sname=>'reptest',oname=>'test1'

,type=>'TABLE',use_existing_object=>true,gname=>'REP_MYTEST',copy_rows=>true);

為組增加新表。

 

8.3.execute dbms_repcat.generate_replication_support('reptest','test1','TABLE')

增加支援。

8.4. execute dbms_repcat.resume_master_activity('REP_MYTEST',true);

啟動程式

好了。你可以去測試你新加的表了.
http://blog.chinaunix.net/uid-7540710-id-135066.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-759216/,如需轉載,請註明出處,否則將追究法律責任。

相關文章