>> はじめに

先月の手順で、ソース側のSharePlexインスタンスの二重化が完了ました。今月はターゲット側の二重化後に、実際に2つのインスタンスに対してレプリケーションの設定を行い、動作の確認を行ってみます。

>> ターゲット側の二重化

基本的には、ソース側と同じ作業を行います。そのため、以前のソース側の構築方法を参考に作業を進めてください。

ソースとターゲットで違う事

ソース側では、現在すでにactivateした設定ファイルがあった場合は、一旦設定を解除していましたが、ターゲット側では作成していませんので、解除の必要もありません。以前の作業でターゲット側もシャットダウンされているため、ポート番号やディレクトリ名等を確認したあとで、変数データディレクトリの作成以降の作業をソース側と同じように行っていきます。以下にて、詳細を割愛した状態で、実際の手順だけをご紹介します。

変数データ ディレクトリの作成

最初に既にインストールされたインスタンスの必要ファイルを、tarコマンドで退避しておきます。


[splex@rhel5spotrg1 ~]$ cd /home/splex/vardir/ [splex@rhel5spotrg1 vardir]$ tar cvf ../splex.tar . ./ ./dump/ ~ 中略 ~ ./state/0x0a1f112a+PP+test+sp_opst_mt+o.src1-o.trg1-scache_sp_opst_mt.5

次に、2つ目のインスタンス用に作成したディレクトリで、退避されたデータを展開します。


[splex@rhel5spotrg1 ~]$ mkdir /home/splex/vardir2200 [splex@rhel5spotrg1 ~]$ cd /home/splex/vardir2200 [splex@rhel5spotrg1 vardir2200]$ tar xvf /home/splex/splex.tar ./ ./dump/ ~ 中略 ~ ./state/0x0a1f112a+PP+test+sp_opst_mt+o.src1-o.trg1-scache_sp_opst_mt.5

paramdbの変更

paramdbファイルの編集により、port番号を2200に変更します。


SP_COP_TPORT 2200 SP_COP_UPORT 2200

古いキュー ファイル等の削除

スクリプト対応により、古いキュー等を削除します。


[splex@rhel5spotrg1 ~]$ cd $SP_BIN [splex@rhel5spotrg1 bin]$ ./clean_vardir.sh 11 Cleaning /home/splex/vardir subdirectories [splex@rhel5spotrg1 bin]$ export SP_SYS_VARDIR=$HOME/vardir2200 [splex@rhel5spotrg1 bin]$ ./clean_vardir.sh 11 Cleaning /home/splex/vardir2200 subdirectories

手動で削除が必要なファイルもあります。


[splex@rhel5spotrg1 ~]$ cd /home/splex/vardir/rim [splex@rhel5spotrg1 rim]$ ls shmaddr.loc shstinfo.ipc [splex@rhel5spotrg1 rim]$ rm ./shmaddr.loc [splex@rhel5spotrg1 rim]$ rm ./shstinfo.ipc [splex@rhel5spotrg1 rim]$ cd /home/splex/vardir2200/rim [splex@rhel5spotrg1 rim]$ ls shmaddr.loc shstinfo.ipc [splex@rhel5spotrg1 rim]$ rm ./shmaddr.loc [splex@rhel5spotrg1 rim]$ rm ./shstinfo.ipc

ora_setupの実行

複製したインスタンスで使用するSharePlex用Oracleユーザを作成します。


[splex@rhel5sposrc1 ~]$ cd $SP_BIN [splex@rhel5spotrg1 bin]$ ./ora_setup Welcome to the Oracle SharePlex setup process. This process creates tables and user accounts needed to run Oracle SharePlex replication. Please note the following: ** In response to prompts, a carriage return will choose the default given in brackets. If there is no default, a reply must be entered. ** To exit the program while the program is waiting for input, use the CTRL-C key sequence. This sequences can be entered by holding down the CONTROL key and pressing the C key. Enter the Oracle SID for which SharePlex should be installed [trg1] : In order to create the SharePlex tables and user account, we must connect to the database as a DBA user Enter a DBA user name : SYSTEM Enter password for the DBA account, which will not echo : connecting--This may take a few seconds. validating user name and password. . . This may take a few seconds. SharePlex objects will need to be created under a special account. You can pick an existing user or create a new one. Current SharePlex user is : SPLEX Warning: Changing SharePlex user requires reactivating the current configuration. Would you like to create a new SharePlex user ? Yes : y Enter username for new user [SPLEX/SPLEX] : SPLEX2200/SPLEX2200 Warning: This user is now being granted unlimited tablespace. This privilege will remain in effect until it is explicitly changed. SPLEX_ROLE_BOTH already exists; continuing setup . . . Setup will now install SharePlex objects. These are the existing tablespaces. SYSTEM SYSAUX UNDOTBS1 TEMP USERS EXAMPLE Enter the default tablespace for use by SharePlex [USERS] : Enter the temporary tablespace for use by SharePlex [TEMP] : Enter the index tablespace for use by SharePlex [ ] : USERS Creating SharePlex objects [Installation type: Fresh]. . . Creating SharePlex Oracle-timezone-region map . . . Done. Creating Conflict Resolution Package . . . Done. Setup of SharePlex objects successful . . . Creating SharePlex Dataequator Read Anydata Function . . . Done. Creating SharePlex Dataequator Write Anydata Function . . . Done. Changing SharePlex parameter database . . . Setup completed successfully

paramdbで、それぞれのインスタンス毎で使用するOracleアカウントが違うことを念のため確認しておきます。


[splex@rhel5spotrg1 ~]$ grep OWNER_O /home/splex/vardir/data/paramdb SP_ORD_OWNER_O.TRG1 "SPLEX" [splex@rhel5spotrg1 ~]$ grep OWNER_O /home/splex/vardir2200/data/paramdb SP_ORD_OWNER_O.TRG1 "SPLEX2200"

環境変数の編集

ポートや変数データ ディレクトリの特定を環境変数で行わないよう設定を変更します。


[splex@rhel5spotrg1 ~]$ cat ./.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=trg1 export NLS_LANG=Japanese_Japan.AL32UTF8 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export ORA_NLS10=$ORACLE_HOME/nls/data #export SP_COP_TPORT=2100 #export SP_COP_UPORT=2100 export SP_SYS_PRODDIR=$HOME/splex #export SP_SYS_VARDIR=$HOME/vardir export SP_SYS_HOST_NAME=rhel5spotrg1 export SP_BIN=$SP_SYS_PRODDIR/bin #export SP_LOG=$SP_SYS_VARDIR/log

 

>> 設定後のsp_copの起動確認

事前の設定がすべて完了したら、実際に2つのsp_copを起動してみます。

ポート番号2100のsp_copの起動


[splex@rhel5spotrg1 ~]$ export SP_SYS_VARDIR=/home/splex/vardir [splex@rhel5spotrg1 ~]$ $SP_BIN/sp_cop -u 2100 & [1] 24756 [splex@rhel5spotrg1 ~]$ ******************************************************* * SharePlex for Oracle Startup * ゥ 2010 Quest Software, Inc. * ALL RIGHTS RESERVED. * Protected by U.S. Patents: 7,461,103 and 7,065,538 * Version: 7.6.2.59-m64-oracle110 * VarDir : /home/splex/vardir * Port : 2100 *******************************************************

ポート番号2200のsp_copの起動


[splex@rhel5spotrg1 ~]$ export SP_SYS_VARDIR=/home/splex/vardir2200 [splex@rhel5spotrg1 ~]$ $SP_BIN/sp_cop -u 2200 & [1] 24813 [splex@rhel5spotrg1 ~]$ ******************************************************* * SharePlex for Oracle Startup * ゥ 2010 Quest Software, Inc. * ALL RIGHTS RESERVED. * Protected by U.S. Patents: 7,461,103 and 7,065,538 * Version: 7.6.2.59-m64-oracle110 * VarDir : /home/splex/vardir2200 * Port : 2200 *******************************************************

sp_cop起動状態の確認


[splex@rhel5spotrg1 ~]$ ps -ef|grep sp_cop splex 24756 1 0 12:31 pts/1 00:00:00
/home/splex/splex/.app-modules/sp_cop -u 2100 splex 24813 24776 0 12:33 pts/1 00:00:00
/home/splex/splex/.app-modules/sp_cop -u 2200 splex 24839 24776 0 12:35 pts/1 00:00:00 grep sp_cop

 

>> 2つのSharePlexインスタンスが準備完了後にテスト

今までのすべての作業で、ソースとターゲットの双方で、2つのSharePlexインスタンスが動作できる状態になりました。ここからは、実際の動作の確認を行っていきます。

テスト方法は、named post queueのテストを行った時のルールで実行してみたいと思います。

  • port 2100のSharePlexインスタンスを使用
    転送元: SYSTEM1上のsplex.demo_src
    転送先: SYSTEM2上のsplex.demo_dest
  • port 2200のSharePlexインスタンスを使用
    転送元: SYSTEM1上のsplex2200.demo_dest
    転送先: SYSTEM2上のsplex2200.demo_src

port2100のSharePlexインスタンスで設定ファイルを編集してactivate

2つ分のSharePlexインスタンスの設定ファイルの作成は、すべてソース側で行います。


[splex@rhel5sposrc1 ~]$ $SP_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)>

なお、接続先が2200の場合にはportコマンドで切り替えておきます。


sp_ctrl (rhel5sposrc1:2200)> port 2100 Default port is now set to 2100 sp_ctrl (rhel5sposrc1:2100)>

編集によって設定ファイルを確認してみます。


sp_ctrl (rhel5sposrc1:2100)> edit config ORA_config

そうすると、以前の定義の編集により希望通りになっているので、そのままにして、activateしてみます。


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


sp_ctrl (rhel5sposrc1:2100)> activate config ORA_config sp_ctrl (rhel5sposrc1:2100)> status Brief Status for rhel5sposrc1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 20780 29-Nov-12 12:51:54 Cmd & Ctrl Running 20219 13-Dec-12 12:44:10 Capture Running 20481 13-Dec-12 12:50:41 Read Running 20482 13-Dec-12 12:50:41 Export Running 20524 13-Dec-12 12:50:46 System is used as a source machine There is 1 active configuration file

port2200のSharePlexインスタンスで設定ファイルを編集してactivate

portコマンドで切り替えて、今度は設定ファイルのテーブルの定義を逆にします。


sp_ctrl (rhel5sposrc1:2100)> port 2200 Default port is now set to 2200 sp_ctrl (rhel5sposrc1:2200)> edit config ORA_config

datasource:o.src1

#source tables target tables routing map

splex2200.demo_dest splex2200.demo_src rhel5spotrg1@o.trg1



sp_ctrl (rhel5sposrc1:2200)> activate config ORA_config sp_ctrl (rhel5sposrc1:2200)> status Brief Status for rhel5sposrc1 Process State PID Running Since --------------- ------------------------------ -------- -------------------- Cop Running 20807 29-Nov-12 12:53:56 Cmd & Ctrl Running 20250 13-Dec-12 12:45:06 Capture Running 21184 13-Dec-12 13:02:29 Read Running 21185 13-Dec-12 13:02:29 Export Running 21230 13-Dec-12 13:02:33 System is used as a source machine There is 1 active configuration file

以上の設定で、2つのSharePlexインスタンスが完全に稼働した状態になります。

細かいテストについては、割愛させていただきますので、みなさん各自ソース側のテーブルを更新して、それが正しくターゲット側にレプリケーションされるか確認してみてください。

>> まとめ

5回に渡って、SharePlexが持つ高速化のソリューションを、ほんの一部にはなりますが、ご紹介してきました。豊富なパラメータによって、速度的な向上を行うことも可能ですが、大規模な環境でパフォーマンスを重視する場合には、アーキテクチャ的な変更の方が即効性があり、期待した効果が得られることが多いようです。

次回からは、データベースにとっても重要なトピックである、整合性についてをテーマにさせていただく予定です。