oracle Streams如何建立schema級複製環境

來源:互聯網
上載者:User

Schema 級的複製可以通過DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS建立,經過前面資料表空間級的試練,接著建立schema級的複製環境還是比較簡單的。

本章樣本繼續沿用前章中的環境(主要是oracle環境,之前的複製環境已被清除),並設定環境如下:

來源資料庫 sid : jssweb ,目標庫 : jssstr ;

複製schema:member,同步DML,DDL操作;

本地捕獲,雙向同步(又變了喲,又改為本地捕獲了);

DBMS_STREAMS_ADM.MAINTAIN_TTS 直接產生 配置 ;

STREAMS 管理員已經建立,源和目標端通訊用的資料庫鏈也已經建立。

由於前面剛剛使用MAINTAIN_TTS做完資料表空間級的同步,因此這裡準備工作可以都省掉了,如果你沒有按照三思本文的介紹的順序執行測試,務必先參考前章資料表空間級同步時的準備工作。

如果是完全按照三思介紹的步驟進行的測試,千萬別忘了在執行本步之前,先清除之前的複製環境,並刪除目標端member下所有對象。

1、 執行建立

除了清除之前的複製環境,刪除原目標端schema中對象外,就沒啥別的要做了,直接執行建立即可,建立非常簡單,基本就是一個過程的事情。

首先在源端以strmadmin登陸:

JSSWEB> conn strmadmin/strmadmin

Connected.

JSSWEB> BEGIN

2 DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

3 schema_names => ¨member¨,

4 source_directory_object => ¨mydt_source¨,

5 destination_directory_object => ¨mydt_dest¨,

6 source_database => ¨jssweb.jss.cn¨,

7 destination_database => ¨jssstr.jss.cn¨,

8 perform_actions => true,

9 dump_file_name => ¨export_member.dmp¨,

10 log_file => ¨export_member_expdp.log¨,

11 bi_directional => true,

12 include_ddl => true,

13 instantiation => DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA);

14 END;

15 /

PL/SQL procedure successfully completed.

本過程又帶來一個新的參數:instantiation ,該參數用來指定是否執行執行個體化,有如下幾種值:

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA :通過expdp/impdp初始化資料,並在目標端匯入資料時執行執行個體化,預設情況下即是該值。

DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORK :impdp直接通過網路傳輸資料而不產生dmp檔案。在匯入資料時執行執行個體化。

DBMS_STREAMS_ADM.INSTANTIATION_NONE :不執行執行個體化,該屬性值僅當perform_actions參數設定為false時有效。

注意:

由於我們此處選擇配置雙向複製,因此在執行該過程時,目標端不要對member中對象做任何DML/DDL操作,以免存在資料丟失。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

MAINTAIN_SCHEMAS 過程支援同時多個schema,比如有多個schema需要複製,則在begin之前聲明一個DBMS_UTILITY.UNCL_ARRAY陣列變數即可,例如:

DECLARE

tab_schema dbms_utility.uncl_array;

Begin

tab_schema(1):=¨scott¨;

tab_schema(2):=¨member¨;

................

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

schema_names => tab_schema,

.............

.............

2、 測試一下

源端執行:

JSSWEB> desc member.dt_tbl1;

Name Null? Type

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

ID NOT NULL NUMBER

NAME NOT NULL VARCHAR2(30)

VL VARCHAR2(20)

JSSWEB> select count(0) from member.dt_tbl1;

COUNT(0)

----------

10 2

JSSWEB> insert into member.dt_tbl1 values (103,¨c¨,null);

1 row created.

JSSWEB> alter table member.dt_tbl1 drop column vl;

Table altered.

JSSWEB> alter system switch logfile;

System altered.

切換到目標端查看:

JSSSTR> select count(0) from member.dt_tbl1;

COUNT(0)

----------

103

JSSSTR> desc member.dt_tbl1;

名稱 是否為空白? 類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.