>> はじめに

前回までにインストールと、SharePlexの動作に必要なOracleへのアカウント等の設定を行いました。

レプリケーションの実際の動作まで、OracleとSharePlexの設定があと少し必要になりますので、それらを順にご紹介したいと思います。

>> アーカイブログモードの設定を有効にする

SharePlexの動作に、アーカイブログモードの設定は必須ではありませんが、オンラインREDOだけで運用すると、キャプチャーすべき内容が循環して既に上書きされてしまっているような事態が発生し、動作を継続することができなくなります。そのため、アーカイブログモードの設定は、ほぼ必須要件と考えてください。

ここでは、アーカイブログモードに関する詳しい設定方法はご紹介しませんが、必要な方はバックアップの講座を参考にしてみてください。

念のため現在のログ・モードがアーカイブ・モードであることを確認しておきます。


SQL> ARCHIVE LOG LIST データベース・ログ・モード アーカイブ・モード 自動アーカイブ 有効 アーカイブ先 USE_DB_RECOVERY_FILE_DEST 最も古いオンライン・ログ順序 129 アーカイブする次のログ順序 131 現行のログ順序 131

 

>> Oracleのサプリメンタル・ロギングの設定を有効にする

第2回の講座で、SharePlexの簡単な動作の仕組みをご紹介しましたが、SharePlexはOracleが生成するオンラインREDO等のログから、レプリケーションに必要な内容を読み取ります。

しかしながら、デフォルトではレプリケーションするのに必要なすべての情報が、ログ内に記録されていません。レプリケーションを行う際には、SQL文として他のデータベースに適用すべき内容をログから取得しますが、他のデータベースでは意味を持たないROWID等で記録されているためです。それを最低限、最少サプリメンタル・ロギングという設定を行い、SharePlexで動作できる状態にする必要があります。

なお、この設定を行っていない場合は、SharePlexの設定を有効化しようとしても、メッセージが表示され中断されます。


sp_ctrl (rhel5sposrc1:2100)> activate config ORA_config Minimal supplemental logging is not enabled. Exit

また、サプリメンタル・ロギングにはいくつかのレベルがあり、レプリケーションの対象に応じた設定が必要となります。今回はまず必須要件である最少サプリメンタル・ロギングの設定のみを行ってみます。

まず、この最少サプリメンタル・ロギングの設定の状態を確認するために、v$databaseのSUPPLEMENTAL_LOG_DATA_MIN列を確認します。


SQL> select supplemental_log_data_min as MIN from v$database; MIN -------- NO

このようにデフォルトは、NOに設定されています。以下のコマンドにより、最少サプリメンタル・ロギングの設定を行い、設定値を確認します。


SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; データベースが変更されました。 SQL> select supplemental_log_data_min as MIN from v$database; MIN -------- YES

本来は、オプションの設定でPRIMARY KEY, UNIQUE KEY, FOREIGN KEY, ALLなど様々なレベルを設定ができ、レプリケーションの要件に合わせて設定を行います。詳細についてはマニュアル等でご確認ください。

>> 設定の前に、ソース側とターゲット側のプロセスの確認

レプリケーションの設定は、ソース側とターゲット側でそれぞれ、メインのsp_copが起動している必要があるので、念のため確認しておきます。

まず、ソース側でsp_ctrlのコンソールよりstatusにて確認します。


[splex@rhel5sposrc1 bin]$ ./sp_ctrl ******************************************************* * SharePlex for Oracle Command Utility * ゥ 2010 Quest Software, Inc. * ALL RIGHTS RESERVED. * Protected by U.S. Patents: 7,461,103 and 7,065,538 ******************************************************* sp_ctrl (rhel5sposrc1:2100)> status Brief Status for rhel5sposrc1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 15206 01-May-12 13:26:42 Cmd & Ctrl Running 15218 01-May-12 13:27:45 There are no active configuration files sp_ctrl (rhel5sposrc1:2100)>

次に、ターゲット側でsp_ctrlのコンソールよりstatusにて確認します。


[splex@rhel5spotrg1 bin]$ ./sp_ctrl ******************************************************* * SharePlex for Oracle Command Utility * ゥ 2010 Quest Software, Inc. * ALL RIGHTS RESERVED. * Protected by U.S. Patents: 7,461,103 and 7,065,538 ******************************************************* sp_ctrl (rhel5spotrg1:2100)> status Brief Status for rhel5spotrg1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 15098 01-May-12 13:27:02 Cmd & Ctrl Running 15119 01-May-12 13:28:14 There are no active configuration files

両側でプロセス (Cop) が正常に稼働していれば問題ありません。

>> 設定ファイルの編集はsp_ctrlから簡単に

SharePlexの設定ファイルは、1つのファイルに集約されており、とても簡単に設定することが可能です。また、デフォルトでサンプル・ファイルが用意されているため、それを活用することで、初期の動作テストに使用することも可能です。

すべての設定ファイルは、vardir/config以下に格納されている必要があります。これらのファイルは、OS上のコマンド等で編集することもできますが、sp_ctrlの管理ツールから抜けずに行うこともできますので、その方法をご紹介しましょう。

まず、list configコマンドにより、vardir/config以下の設定ファイルとその概要を確認することができます。以下の例では、デフォルトで用意されているORA_configという設定ファイルが表示されています。


sp_ctrl (rhel5sposrc1:2100)> list config File Name State Datasource -------------------------------------------------- ---------- --------------- ORA_config Inactive o.SOURCE_SID Last Modified At: 01-Mar-12 16:12 Size: 151

この設定ファイルをedit configコマンドで指定して編集します。


sp_ctrl (rhel5sposrc1:2100)> edit config ORA_config

これで、viエディタにより中身を編集することが可能です。ソース側とターゲット側のOracleのSIDおよびターゲット側のホスト名を除いて、デフォルトの設定ファイルは、既にSharePlexがデフォルトで用意したSPLEXユーザのdemo_srcテーブルからdemo_destテーブルへのレプリケーションが設定された状態になっています。


datasource:o.SOURCE_SID #source tables target tables routing map splex.demo_src splex.demo_dest target_system@o.target_sid

そのため、まず1行目の"SOURCE_SID"の部分をソース側のSIDに置き換え、次に最終行に記載されている"target_sid"をターゲット側のSIDに置き換えます。また、"target_system"にはターゲット側のホスト名(ソース側から名前解決されている場合)もしくはIPアドレスの指定を行います。ソース側のSIDを"src1"とし、ターゲット側ホスト名を"rhel5spotrg1"およびSIDを"trg1"とした場合の設定例は以下の通りです。


datasource:o.src1 #source tables target tables routing map splex.demo_src splex.demo_dest rhel5spotrg1@o.trg1

 

>> 設定を有効にするには

すべての条件が整って、正しく設定が行われている場合には、最後に設定の有効化 (アクティベイト) を行います。activateコマンドにより有効化して少し時間た立つと、statusコマンドによりレプリケーションに必要なプロセスが起動されていることが確認できます。


sp_ctrl (rhel5sposrc1:2100)> activate config ORA_config sp_ctrl (rhel5sposrc1:2100)> status Brief Status for rhel5sposrc1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 15206 01-May-12 13:26:42 Cmd & Ctrl Running 15218 01-May-12 13:27:45 Capture Running 15857 01-May-12 14:08:46 Read Running 15858 01-May-12 14:08:46 Export Running 15900 01-May-12 14:08:50 System is used as a source machine There is 1 active configuration file

また、ターゲット側でも同様に今度はキューの内容をImportにより受け取り、それをSQLとして処理するPostがプロセスとして起動しているのがstatusコマンドにより確認できます。


sp_ctrl (rhel5spotrg1:2100)> status Brief Status for rhel5spotrg1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 15098 01-May-12 13:27:02 Cmd & Ctrl Running 15119 01-May-12 13:28:14 Import Running 15612 01-May-12 14:08:52 MTPost Running 15613 01-May-12 14:08:53 There are no active configuration files

 

>> データの複製を確認しよう

設定の有効化により、レプリケーションが実行できるようになっています。なお、SharePlexは本来、変更データのみを複製するソリューションであるため、初期同期が必要なのですが、テストのテーブルは空の状態でテーブル構造が作成されただけであるため、初期同期は必要ありません。

念のため、ソース側(demo_src)とターゲット側(demo_dest)のそれぞれのテーブルの内容を確認しておきます。

※本来SPLEXユーザのパスワードはセキュリティが高いものを設定しておく必要があります。ここでは、便宜上SharePlexのデフォルトで表示しています。


[root@rhel5sposrc1 ~]# su - oracle [oracle@rhel5sposrc1 ~]$ sqlplus SPLEX/SPLEX SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 1 14:13:45 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL> select * from demo_src; レコードが選択されませんでした。

 


root@rhel5spotrg1 ~]# su - oracle [oracle@rhel5spotrg1 ~]$ sqlplus SPLEX/SPLEX SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 1 14:13:54 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved. Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL> select * from demo_dest; レコードが選択されませんでした。

次に、ソース側のdemo_srcテーブルにデータを追加し、コミットします。


SQL> desc demo_src 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- NAME VARCHAR2(30) ADDRESS VARCHAR2(60) PHONE# VARCHAR2(12) SQL> insert into demo_src values('ABC','TOKYO','03-1234-5678'); 1行が作成されました。 SQL> commit; コミットが完了しました。

このトランザクションの内容がターゲット側にレプリケーションされているはずですので、内容を確認します。これにより、テーブル名を変更してのレプリケーションが正常に行われていることが確認できました。


SQL> select * from demo_dest; NAME ------------------------------ ADDRESS PHONE# ------------------------------------------------------------ ------------ ABC TOKYO 03-1234-5678

 

>> まとめ

以上、最低限のレプリケーションが行えるまでのインストールから実際の複製までの流れについて、ひと通りご覧いただきました。動作させるだけなら、思ったより簡単!と思っていただけたと思います。

なお、上記手順は、あくまで評価用に動作させるための流れになっており、詳細については触れられていません。実際の運用の場合は必ずマニュアル等をご確認ください。

次回からは、SharePlexを使用した動作について、さらに詳細をご説明していきます。