>> はじめに

今月は、先月ご紹介したsp_copを親プロセスとしたSharePlexの処理全体を多重化する手順について、続きの作業内容をご紹介いたします。

>> 複数のSharePlexインスタンスをコピーして構築する (続き)

前回作成した、コピーした変数データ ディレクトリを使用し、2つ目のSharePlexインスタンス用の準備を行っていきます。

2つ目のインスタンス用のOracleユーザーを作成する

ora_setupを使用して一意なユーザを作成します。注意点は、ユーザー名の入力時に変数データ ディレクトリを分けたことが分かるような名前を指定することです。名前の選択は任意ですが、ポート番号の指定が重要なポイントになっていますので、ポート番号を名前に使うと、分かりやすいのでお勧めです。


[splex@rhel5sposrc1 ~]$ cd $SP_BIN [splex@rhel5sposrc1 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 [src1] : 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

また、この設定によって、それぞれの変数データ ディレクトリごとに、SharePlex用のOracleユーザがマッピングされていることを念のため確認するようにしてください。


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

2つのSharePlexインスタンスを切り替えてsp_copを起動するには

正しく変数データ ディレクトリの作成が行われ、SharePlexの動作に必要なOracleユーザと関連するSharePlex用のテーブル等がora_setupアップによって作成されていれば、あとはsp_copを起動が可能です。

環境の切り替えは、環境変数SP_SYS_VARDIRの変更によって行われます。そのため、OS上に作成されたsplexユーザの設定から、関連する項目をコメントアウトしておきます。また、ポート番号についても、前回設定したようにparamdb内の値によって決定されるため、コメントアウトしています。


[splex@rhel5sposrc1 ~]$ 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 PATH export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=src1 export PATH=$ORACLE_HOME/bin:$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=rhel5sposrc1 export SP_BIN=$SP_SYS_PRODDIR/bin #export SP_LOG=$SP_SYS_VARDIR/log

 

>> 構築完了後に、2つのsp_copを起動してみよう

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

ポート番号2100のsp_copの起動

SP_SYS_VARDIRの環境変数に、ポート番号2100用のディレクトリを設定し、sp_copを-uオプションを付けて起動します。この-uオプションの後の名前は特に動作上の意味はありません。psコマンド等でプロセスを確認した際に、どちらのインスタンスのプロセスなのかをわかりやすくするために設定します。こうすることで、すべての子プロセスに対しても、-uで設定した名前が付加されます。


[splex@rhel5sposrc1 ~]$ export SP_SYS_VARDIR=/home/splex/vardir [splex@rhel5sposrc1 ~]$ $SP_BIN/sp_cop -u 2100 & [1] 18540 [splex@rhel5sposrc1 ~]$ ******************************************************* * 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の起動

もう1つのSharePlexインスタンスも、環境変数を設定後にsp_copを起動します。


[splex@rhel5sposrc1 ~]$ export SP_SYS_VARDIR=/home/splex/vardir2200 [splex@rhel5sposrc1 ~]$ $SP_BIN/sp_cop -u 2200 & [2] 18541 [splex@rhel5sposrc1 ~]$ ******************************************************* * 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の起動状態の確認

念のためpsコマンドで確認してみると、2つのsp_copが起動しており、それぞれの-uオプションが異なっていることが確認できます。


[splex@rhel5sposrc1 ~]$ ps -ef|grep sp_cop splex 20780 20630 0 12:51 pts/1 00:00:00
/home/splex/splex/.app-modules/sp_cop -u 2100 splex 20807 20630 1 12:53 pts/1 00:00:00
/home/splex/splex/.app-modules/sp_cop -u 2200 splex 20814 20630 0 12:54 pts/1 00:00:00 grep sp_cop

sp_ctrlを使用してみる

sp_ctrlを起動すると、デフォルトでは現在設定されているポート番号のインスタンスの管理が可能ですが、portコマンドを使用してポート番号を指定することで、異なるインスタンスの管理もそのままできるようになっています。


[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:2200)> port 2100 Default port is now set to 2100 sp_ctrl (rhel5sposrc1:2100)> port 2200 Default port is now set to 2200 sp_ctrl (rhel5sposrc1:2200)>

 

>> まとめ

今回で、1つのサーバ上に2つのSharePlexインスタンスを設定する作業が完了しました。しかし、これらを実際に動作させるには、ターゲット側にも複数のSharePlexインスタンスが必要になります。

次回は、ターゲット側の作業を実施した後に、実際にソースとターゲット間での動作確認方法についてご紹介します。