• 検索結果がありません。

DB2 UDB For LinuxのCLUSTERPRO上での稼動確認

N/A
N/A
Protected

Academic year: 2021

シェア "DB2 UDB For LinuxのCLUSTERPRO上での稼動確認"

Copied!
39
0
0

読み込み中.... (全文を見る)

全文

(1)

DB2 UDB for Linux の CLUSTERPRO 上での稼動確認

2002/03/29 日本IBM NEC ソリューションズ ターボリナックス ジャパン 目的...2 テスト環境...2 環境構築...4 DB2_G1: 起動スクリプト(start.bat) ...6 DB2_G1: DB2 起動スクリプト(db2start.sh) ...7 DB2_G1: DB2 監視スクリプト(db2poling.sh)...9 DB2_G1: 停止スクリプト(stop.bat) ... 11 DB2_G1: DB2 停止スクリプト(db2stop.sh) ... 13 テスト項目... 15 テスト結果サマリー... 16 テスト内容の詳細... 17 1. DB2 UDB 導入 ... 17 2. 起動・停止オペレーション ... 18 3. クライアントからの接続 ... 18 4. データベースオブジェクトの作成... 19 5. 構成パラメータの変更... 23 6. 搬入オペレーション(Import コマンド) ... 23 7. 搬入オペレーション(Load コマンド)... 27 8. 搬出オペレーション(Export コマンド) ... 29 9. Backup,Restore オペレーション ... 30 10 その他 DB2 tool の実行... 31 11. SELECT の簡易並列負荷テスト... 32 12. DELETE と INSERT の簡易並列負荷テスト... 32 13. UPDATE の簡易並列負荷テスト ... 33 14. SELECT,DELETE,INSERT,UPDATE の並列負荷テスト... 34 15. クラスタ状態遷移... 37 16. HW 擬似障害によるフェイルオーバテスト ... 37 17. SW 擬似障害によるフェイルオーバテスト... 38

(2)

目的

DB2 UDB V7 EE for Linux の動作環境を Turbolinux 7 CLUSTERPRO SE によるクラ

スタ環境の上に作成し、DB2 および CLUSTERPRO の主な機能が問題なく稼動する事を検 証した。主な確認内容はTurbolinuxOS+CLUSTERPRO+DB2 の導入、DB2 の基本動作確 認、負荷テスト、擬似障害発生時のCLUSTERPRO によるフェイルオーバーテストなどで ある。 また、成果物として当レポートおよびCLUSTERPRO+DB2 システムを構築する際のスク リプト群を作成し、本組合せでのシステム構築を支援する。

テスト環境

今回は、2 台のノードにそれぞれ別の DB2 インスタンスを作成し、各ノードがお互いの Backup になるように構成した。つまり通常稼動時は2台のノードがそれぞれ個別システム として機能し、いづれかのノードやシステムに障害が発生した場合には、障害発生ノード 上で稼動しているシステムをもう一方のノード上にフェイルオーバーし、サービスを継続 するというシステム構成である。フェイルオーバーシステムでありながらファシリティを 有効活用できる構成と言える。

DB Server (Server1, Server2)

H/W : Fujitsu PRIMERGY P200 (2 機)

CPU : Pentium III 1.2GHz(2 機 - SMP 構成) Memory: 1GByte

Local hard disk: 8GB

Shared hard disk: Fujitsu ETERNUS GR710 (36GB x5) HBA : PG-FC102 (Fibre Channel カード)

OS: Turbolinux 7 Server

Cluster: Turbolinux 7 CLUSTERPRO SE (clusterpro-2.0-1.0.i386.rpm) DBMS: DB2 UDBV7.2 Enterprise Edition for Linux + Fixpak5

Client1

H/W: Fujitsu FMV-BIBRO MF5/600 OS: Turbolinux 7 Server

DB2 UDB 管理クライアント (V7.2) + Fixpak5

IBM JDK 1.1.8-5

IBM JDK 1.3.0 (cx130-20020124)

(3)

Client2 H/W: Fujitsu FMV-BIBRO MF5/600 OS: Windows ME クラスタ管理ソフト: CLUSTERPRO マネージャ Server1 (P200) DB2_G1 fIP: 192.168.1.101 10.0.0.1 Server1 (P200) DB2_G2 fIP: 192.168.1.102 Shared-DISK 10.0.0.2 Inter connect RS232C 192.168.1.2 Disk2(/dev/sdd3) db2inst2

Client2 (WinME) Client1 (Linux)

192.168.1/24 net (100Base-T) 192.168.1.1 192.168.1.11 192.168.1.12 Disk1(/dev/sdd2) db2inst1 図 1 システム構成図

Disk1 は、どちらのサーバからも/mnt/database1 として mount される Disk2 は、どちらのサーバからも/mnt/database2 として mount される Server1 の/mnt/database1 内に db2inst1 というインスタンスを作成 Server2 の/mnt/database2 内に db2inst2 というインスタンスを作成

以下のようにシンボリックリンクを作成し、DB のカタログ情報も共有ディスク内に作

成している

/home/db2inst1/sqllib → /mnt/database1/sqllib /home/db2inst2/sqllib → /mnt/database2/sqllib

(4)

環境構築

1. CLUSTERPRO Server1, Server2 および GR710 で 2 ノードの共有ディスク型クラスタを構築し、 DB2_G1, DB2_G2 というフェイルオーバグループを作成した。 その他クラスタ設定情報は次の通り。 設定値 スーパークラスタ スーパークラスタ名 SuperCluster サブクラスタ名 Cluster クラスタパーティション ###NEC_NP1 デバイス名 /dev/sdd1 COM デバイス名 /dev/ttyS0 サブクラスタ ハートビート時間 3[s] * 10 ホスト名 SERVER1 Public LAN の IP アドレス 192.168.1.1/24 1 台目のサーバ情報 Interconnect の IP アドレス 10.0.0.1/24 ホスト名 SERVER2 Public LAN の IP アドレス 192.168.1.2/24 2 台目のサーバ情報 Interconnect の IP アドレス 10.0.0.1/24 フェイルオーバグループ グループの数 2 グループ名 DB2_G1 フェイルオーバポリシ 1: SERVER1 2: SERVER2 Floating IP 192.168.1.101 切り替えパーティション Disk1 デバイス名 /dev/sdd2 マウントポイント /mnt/database1 ファイルシステム ext3 マウントオプション rw スクリプト 別紙 タイムアウト(起動) 1800 [s] フェイルオーバグループ1 の情報 タイムアウト(終了) 300 [s] 4

(5)

グループ名 DB2_G2 フェイルオーバポリシ 1: SERVER2 2: SERVER1 Floating IP 192.168.1.102 切り替えパーティション Disk2 デバイス名 /dev/sdd3 マウントポイント /mnt/database2 ファイルシステム ext3 マウントオプション rw スクリプト 別紙 タイムアウト(起動) 1800 [s] フェイルオーバグループ2 の情報 タイムアウト(終了) 300 [s] 2. DB2 後述の「テスト内容の詳細」「1. DB2 UDB 導入」参照 3. クラスタスクリプト 起動スクリプト(start.bat) DB2 起動スクリプト(db2start.sh) DB2 監視スクリプト(db2poling.sh) 停止スクリプト(stop.bat) DB2 停止スクリプト(db2stop.sh)

(6)

DB2_G1: 起動スクリプト(start.bat) #! /bin/sh #*************************************** #* START.BAT * #*************************************** if [ "$ARMS_EVENT" = "START" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "NORMAL1" #start db2 armlog "start db2 1"

if ! db2start.sh db2inst1 turbo; then armlog "start db2 error" -arm

exit 1

fi armlog "start db2 2"

#start db2 poling

armlog "start db2 poling 1"

armload DB2POLING1 -M -FOV db2poling.sh db2inst1 turbo armlog "start db2 poling 2"

if [ "$ARMS_SERVER" = "HOME" ] then armlog "NORMAL2" else armlog "ON_OTHER1" fi else

armlog "ERROR_DISK from START" fi

elif [ "$ARMS_EVENT" = "RECOVER" ] then

armlog "RECOVER" elif [ "$ARMS_EVENT" = "FAILOVER" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "FAILOVER1" #start db2 armlog "start db2 1"

if ! db2start.sh db2inst1 turbo; then armlog "start db2 error" -arm

exit 1

fi armlog "start db2 2"

#start db2 poling

armlog "start db2 poling 1"

armload DB2POLING1 -M -FOV db2poling.sh db2inst1 turbo armlog "start db2 poling 2"

if [ "$ARMS_SERVER" = "HOME" ] then armlog "FAILOVER2" else armlog "ON_OTHER2" fi else

armlog "ERROR_DISK from FAILOVER" fi else armlog "NO_ARM" fi armlog "EXIT" exit 0 6

(7)

DB2_G1: DB2 起動スクリプト(db2start.sh) #!/bin/bash

# db2start.sh - Start database instance and admin instance # for clusterPro + TurboLinux7 + DB2 UDB V7.2/Linux FP5 # 2002/03/15

#

# Usage: db2start.sh YourInstanceName YourDBName DB2INSTANCE=$1

DBNAME=$2

# DB2 install directory DB2DIR=/usr/IBMdb2/V7.1

# Times to run db2start, specify more than 1 RETRY=1 # db2start,db2admin start retry #sleep time

SLEEPTIME=5 # period to sleep (sec) #Specify writable file name for logging

LOGFILE="/usr/clusterpro/armmontr/log/db2start_${DBNAME}.log" # DO Activate DB / YES or NO

do_activate=NO

# START DB ADMIN INSTANCE / YES or NO START_ADMIN_INSTANCE=NO

# full path to db2poling program #DB2_POLING=/db2scripts/db2poling.sh # LANG if necessary

LANG=ja_JP.ujis # Exit program function exit_prog {

echo "$2" `/bin/date` >> $LOGFILE exit $1

} # START

if [ $# != 2 ] ; then

echo "This script needs 2 args. (Instancename,dbname)" │ tee -a $LOGFILE

exit 1

fi

echo "DB2 UDB START for DB2INSTANCE=$DB2INSTANCE , DB=$DBNAME" >> $LOGFILE # Start DB2 admin instance

function start_admin_instance {

DASINST=`"${DB2DIR}"/instance/dasilist` if [ -n $DASINST ]; then

echo "Starting Administration Server "${DASINST}"..." >> $LOGFILE DB2ASHOME=`${DB2DIR}/bin/db2usrinf -d ${DASINST}`

su - ${DASINST} -c ¥

". ${DB2ASHOME}/sqllib/db2profile;db2admin start" >>$LOGFILE 2>&1 fi

}

###### Main program ###### # check logfile

if ! /bin/touch $LOGFILE > /dev/null 2>&1 ; then echo "Cannot create logfile : $LOGFILE" exit 1

fi

(8)

echo "### Starting DB - " `/bin/date` >> ${LOGFILE} #######

# Start DB2 admin instance #######

if [ $START_ADMIN_INSTANCE == "YES" ]; then start_admin_instance

fi

################# # Start DB2 Instance #################

echo "Starting DB2 Instance $DB2INSTANCE ..." >> $LOGFILE # get instance owner's home directory

if ! INSTHOME=`${DB2DIR}/bin/db2usrinf -d $DB2INSTANCE `; then exit_prog 1 "DBI1131E The user ID $DB2INSTANCE is invalid." fi

if ! su - $DB2INSTANCE -c /bin/true ; then exit_prog 1 "su - $DB2INSTANCE failed" fi

# instance start count=1

while [ $count -le $RETRY ] do

RET=`su - $DB2INSTANCE -c ¥

". ${INSTHOME}/sqllib/db2profile;db2 -ec +o start db manager" ` echo "SQLCODE=${RET}" >> $LOGFILE

# DB20000I - DB2 START DB MANAGER processiong was succesful # SQL1026N - db2instance is already active

if [ "$RET" == "0" ] ││ [ "$RET" == "-1026" ] ; then echo "INSTANCE $DB2INSTANCE was started." >> $LOGFILE break

fi

count=`expr $count + 1`

echo "sleep $SLEEPTIME" >> $LOGFILE sleep ${SLEEPTIME}

done

if [ ${count} -eq `expr $RETRY + 1` ]; then # Unable to start instance

echo "db2 start db manager failed" >> $LOGFILE 2>&1 exit_prog 1 "### Starting DB FAILED ### " >>$LOGFILE fi # # restart DB # for dbn in ${DBNAME} do

echo "restart DB - $dbn" >> $LOGFILE

su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile; db2 restart database ${dbn}; db2 terminate ; " >> $LOGFILE

if [ $do_activate == "YES" ]; then

su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile; db2 activate db $dbn; " >> $LOGFILE fi

done #

# Start db2poling process #

#$DB2_POLING & #POLINGPID=$!

#echo "$POLINGPID" > /var/run/db2poling.pid

#echo "db2poing was started. [pid = $POLINGPID ]" >> $LOGFILE exit_prog 0 "### Starting DB SUCCEEDED -"

(9)

DB2_G1: DB2 監視スクリプト(db2poling.sh) #!/bin/bash

# db2poling.sh - DB2 Poling Shell Script

# for CLUSTERPRO + Turbolinux7 + DB2 UDB V7.2/Linux FP5 # 2002/03/18

# Usage: db2poling.sh YourInstanceName YourDBName DB2INSTANCE=$1

DBNAME=$2

SLEEPTIME=60 # Poling interval (sec) # DB2 install directory DB2DIR=/usr/IBMdb2/V7.1 # log filename LOGFILE="/usr/clusterpro/armmontr/log/db2poling_${DBNAME}.log" LANG=ja_JP.ujis # START if [ $# != 2 ] ; then

echo "This script needs 2 args. (Instancename,dbname)" │ tee -a $LOGFILE

exit 1

fi

# get instance owner's home directory

if ! DB2INSTHOME=`${DB2DIR}/bin/db2usrinf -d $DB2INSTANCE `; then exit_prog 1 "DBI1131E The user ID $DB2INSTANCE is invalid." fi

export DB2INSTHOME # Exit program function exit_prog {

echo "$2" "exitcode=$1" `/bin/date` >> $LOGFILE exit $1 } function db2_call { echo "db2 $1" >> $LOGFILE RET=`su - $DB2INSTANCE -c ¥ ". ${DB2INSTHOME}/sqllib/db2profile; db2 -ec +o $1 " ` echo "SQLCODE=$RET" >> $LOGFILE

if [ $RET != 0 ] ; then exit_prog 1 "$1 failed" fi

}

function db2_ping {

echo "### db2ping.sh START" `date` >> $LOGFILE # Is db2sysc alive?

if ! /bin/ps -C db2sysc > /dev/null 2>&1 ; then exit_prog 1 "db2sysc was not found." fi

echo "db2sysc is alive" >> $LOGFILE # Can connect to db?

echo "Try to Connect to $DBNAME , select ibmreqd from sysibm.sysdummy1" ¥

>> $LOGFILE

RET=`su - $DB2INSTANCE -c ¥

". ${DB2INSTHOME}/sqllib/db2profile; ¥ db2 connect to $DBNAME > /dev/null 2>&1 ; ¥ db2 -ec +o select ibmreqd from sysibm.sysdummy1 " ` echo "SQLCODE=$RET" >> $LOGFILE

if [ $RET != 0 ] ; then exit_prog 1 "$1 failed" fi

(10)

echo "### db2ping.sh END" `date` >> $LOGFILE return 0

}

### Main Loop ###

echo "### db2poling START" `date` >> $LOGFILE while db2_ping ; do

sleep $SLEEPTIME done

exit_prog 1 "db2ploing failed"

(11)

DB2_G1: 停止スクリプト(stop.bat) #! /bin/sh #*************************************** #* STOP.BAT * #*************************************** arm_rel_path() { while [ "$1" != "" ] do

armrelpath $1 > /dev/null 2>&1 relret=$?

if [ "$relret" = "0" ] then

armlog "KILL NO PROCESS"

elif [ "$relret" = "1" ] then

armlog "KILL SOME PROCESS"

else

armlog "ARMRELPATH ERROR"

fi shift done

}

arm_rel_mntpoint() {

mntpoint=`armlsmnt -l $ARMS_RESOURCELIST 2>&-` mntret=$? if [ "$mntret" = "0" ] then if [ "$mntpoint" != "" ] then arm_rel_path $mntpoint else

armlog "NO MOUNT POINT"

fi else

armlog "ARMLSMNT ERROR" fi } if [ "$ARMS_EVENT" = "START" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "NORMAL1" #stop db2 poling

armlog "stop db2 poling 1"

armkill DB2POLING1

armlog "stop db2 poling 2"

#stop db2

armlog "stop db2 1"

db2stop.sh db2inst1 turbo

armlog "stop db2 2" if [ "$ARMS_SERVER" = "HOME" ] then armlog "NORMAL2" else armlog "ON_OTHER1" fi arm_rel_mntpoint else

armlog "ERROR_DISK from START" fi

(12)

then

if [ "$ARMS_DISK" = "SUCCESS" ] then

armlog "FAILOVER1"

#stop db2 poling

armlog "stop db2 poling 1"

armkill DB2POLING1

armlog "stop db2 poling 2"

#stop db2

armlog "stop db2 1"

db2stop.sh db2inst1 turbo

armlog "stop db2 2" if [ "$ARMS_SERVER" = "HOME" ] then armlog "FAILOVER2" else armlog "ON_OTHER2" fi arm_rel_mntpoint else

armlog "ERROR_DISK from FAILOVER" fi else armlog "NO_ARM" fi armlog "EXIT" exit 0 12

(13)

DB2_G1: DB2 停止スクリプト(db2stop.sh) #!/bin/bash

# db2stop.sh - Stop Databae instance and Admin instance # for CLUSTERPRO + Trubolinux 7 + DB2 UDB V7.2/Linux FP5 # 2002/03/15

# Usage: db2stop.sh YourInstanceName YourDBName DB2INSTANCE=$1 DBNAME=$2 DB2DIR=/usr/IBMdb2/V7.1 LANG=ja_JP.ujis LOGFILE="/usr/clusterpro/armmontr/log/db2stop_${DBNAME}.log" # Exit program function exit_prog {

echo "$2" `/bin/date` >> $LOGFILE exit $1

}

function stop_admin_instance {

DASINST=`"${DB2DIR}"/instance/dasilist` if [ -n $DASINST ]; then

echo "Stopping Administration Server "${DASINST}"..." >> $LOGFILE DB2ASHOME=`${DB2DIR}/bin/db2usrinf -d ${DASINST}`

su - ${DASINST} -c ¥

". ${DB2ASHOME}/sqllib/db2profile;db2admin stop;ipclean" >>$LOGFILE 2>&1 fi

}

function do_ipclean {

su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile;ipclean" >> $LOGFILE }

### Main program ### # check logfile

if ! /bin/touch $LOGFILE > /dev/null 2>&1 ; then echo "Cannot create logfile : $LOGFILE" exit 1

fi

chmod 777 $LOGFILE # START

if [ $# != 2 ] ; then

echo "This script needs 2 args. (Instancename,dbname)" │ tee -a $LOGFILE

exit 1

fi

echo "DB2 UDB STOP for DB2INSTANCE=$DB2INSTANCE , DB=$DBNAME" >> $LOGFILE #echo "### STOP DB2 POLONG-" `/bin/date` >> $LOGFILE

#kill -9 `cat /var/run/db2poling.pid ` echo "### STOP DB -" `/bin/date` >> $LOGFILE echo "Stopping DB admin Instance" >> $LOGFILE stop_admin_instance

# get instance owner's home directory

if ! INSTHOME=`${DB2DIR}/bin/db2usrinf -d $DB2INSTANCE `; then exit_prog 1 "DBI1131E The user ID $DB2INSTANCE is invalid." fi

if ! su - $DB2INSTANCE -c /bin/true ; then exit_prog 1 "su - $DB2INSTANCE failed" fi

(14)

# Stop DB instance

echo "Stopping DB2 Instance $DB2INSTANCE ..." >> $LOGFILE RET=`su - $DB2INSTANCE -c ¥

". ${INSTHOME}/sqllib/db2profile;db2 -ec +o stop db manager" ` >> $LOGFILE # DB20000I - DB2 STOP DB MANAGER processiong was succesful.

# SQL1032N - No start database manager command was issued. if [ "$RET" == "0" ] ││ [ "$RET" == "-1032" ]; then do_ipclean

exit_prog 0 "### Stopping DB SUCCEEDED -" fi

# Stop force DB2 instance

echo "Foece Stopping DB2 Instance $DB2INSTANCE ..." >> $LOGFILE

su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile;db2 force application all" >> $LOGFILE RET=`su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile;db2 -ec +o stop db manager force" ` if [ "$RET" == "0" ] ││ [ "$RET" == "-1032" ]; then

do_ipclean

exit_prog 0 "### Stopping DB (FORCE) SUCCEEDED -" fi

echo "db2stop force command was failed" >> $LOGFILE 2>&1 # db2stop -kill

echo "db2stop -kill " >> $LOGFILE

su - ${DB2INSTANCE} -c ". ${INSTHOME}/sqllib/db2profile;db2stop -kill" >>${LOGFILE} 2>&1 echo "killall -9 db2sysc" >> $LOGFILE

/usr/bin/killall -9 db2sysc >> $LOGFILE do_ipclean

exit_prog 0 "### Stopping DB SUCCEEDED (by killall command) -"

(15)

テスト項目

以下のテスト項目をクラスタサーバー上で稼動するDB2 に対して検証を行った。詳細は、

各テスト内容の詳細を参照。

Part1: DB2 UDB for Linux のテスト 1. DB2 導入 2. 起動・停止オペレーション 3. クライアントからの接続 4. データベースオブジェクトの作成 5. 構成パラメータの変更 6. 搬入オペレーション(Import コマンド) 7. 搬入オペレーション(Load コマンド) 8. 搬出オペレーション(Export コマンド) 9. Backup, Restore オペレーション 10. その他 DB2 tool の実行 11. SELECT の簡易並列負荷テスト 12. DELETE と INSERT の簡易並列負荷テスト 13. UPDATE の簡易並列負荷テスト 14. SELECT,DELETE,INSERT,UPDATE の並列負荷テスト

Part2: CLUSTERPRO クラスタ上での DB2 UDB for Linux のフェイルオーバテスト 15. クラスタ状態遷移

16. HW 擬似障害によるフェイルオーバテスト 17. SW 擬似障害によるフェイルオーバテスト

(16)

テスト結果サマリー

すべてのテスト項目をパスし、問題は発見されなかった。 今回の評価によって、CLUSTERPRO によるクラスタシステム上で DB2 を稼動させること で、可用性の高いシステム構築ができることが検証された。 テスト結果:Part1 No. 内容 結果 (OK/NG) 1 DB2 導入 OK 2 起動・停止オペレーション OK 3 クライアントからの接続 OK 4 データベースオブジェクトの作成 OK 5 構成パラメータの変更 OK 6 搬入オペレーション(Import コマンド) OK 7 搬入オペレーション(Load コマンド) OK 8 搬出オペレーション(Export コマンド) OK 9 Backup, Restore オペレーション OK 10 その他DB2 tool の実行 OK 11 SELECT の簡易並列負荷テスト OK 12 DELETE と INSERT の簡易並列負荷テスト OK 13 UPDATE の簡易並列負荷テスト OK 14 SELECT,DELETE,INSERT,UPDATE の並列負荷テスト OK テスト結果:Part2 No. 内容 結果 (OK/NG) 15 クラスタ状態遷移 OK 16 HW 擬似障害によるフェイルオーバテスト OK 17 SW 擬似障害によるフェイルオーバテスト OK 16

(17)

テスト内容の詳細

DB2 UDB 導入開始前に、DISK Group1 をノード1に、DISK Group2 をノード 2 に移動 し、それぞれ/mnt/database1 , /mnt/database2 として mount しておく。

1. DB2 UDB 導入

a) 2 台の P200 のローカルディスクにそれぞれ DB2 UDB EE V7.2 for Linux を導入 ・ 導入ディレクトリ: /usr/IBMdb2/

b) Fixpak5 の導入

c) Instance を以下の内容で、両ノードに作成

User (UDI) Group (GID)

インスタンス1 (Port 50000) db2inst1 (500) db2iadm1 (500)

Fence ユーザ 1 db2fadm1 (501) db2fadm1 (501)

インスタンス2 (Port 50002) db2inst2 (503) db2iadm2 (503)

Fence ユーザ 2 db2fadm2 (504) db2fadm2 (504)

d) 各インスタンスの~/sqllib を共有ディスク内に移動し、そこに sym-link を作成する ・ ノード1で、 # cd /home/db2inst1 # cp -a sqllib /mnt/database1/ # mv sqllib sqllib.org # ln -s /mnt/database1/sqllib . # ln -s /mnt/database2/sqllib /home/db2inst2/ ・ ノード 2 で、 # cd /home/db2inst2 # cp -a sqllib /mnt/database2/ # mv sqllib sqllib.org # ln -s /mnt/database2/sqllib . # ln -s /mnt/database1sqllib /home/db2inst1/ e) 両ノードでインスタンスが DB を作成できるようにディレクトリのオーナーを変更する # chown db2inst1:db2iadm1 /mnt/database1

# chwon db2inst2:db2iadm2 /mnt/database2 f) それぞれのインスタンスの.bashrc に以下の内容を追加

(18)

export LANG=ja_JP.ujis export LC_ALL=ja_JP

export LD_ASSUME_KERNEL=2.2.5

g) インスタンスをそれぞれのノードで作成

・ ノード 1 に db2inst1 でログインし、

$ db2 create database TURBO on /mnt/database1/

・ ノード 2 に db2inst2 でログインし、

$ db2sampl on /mnt/database2/ h) DB2 の環境を設定する

db2set DB2_PARALLEL_IO="*"

db2set DB2_STRIPED_CONTAINERS=ON

db2 update db config for TURBO using dft_degree -1 maxappls 100 maxlocks 50 locklist 2000 sortheap 1024

db2 update dbm config using intra_parallel YES JAVA_HEAP_SZ 4096 2. 起動・停止オペレーション a) DB2 インスタンスの起動・停止 DB2 インスタンスの停止 $ db2 db2stop DB2 インスタンスの起動 $ db2 db2start b) DB の存在を確認 $ db2 list db directory 3. クライアントからの接続 カタログして、接続できる事を確認 a) カタログ

$ db2 catalog tcpip node node1 remote 192.168.1.101 server 50000 $ db2 catalog tcpip node node2 remote 192.168.1.102 server 50002

(19)

$ db2 catalog database turbo at node node1 $ db2 catalog database sample at node node2 b) 接続

$ db2 connect to turbo user db2inst1 $ db2 connect to sample user db2inst2 4. データベースオブジェクトの作成

a) Bufferpool を拡張する

db2 "alter bufferpool ibmdefaultbp size 40960" b) テーブルスペースの作成

・ データベース管理記憶域(DMS)テーブルスペースの作成 db2 create tablespace dmstest managed by database using (file '/mnt/database1/dms/dms_acc1' 100000,

file ‘/mnt/database1/dms/dms_acc2' 100000) extentsize 256" ・ システム管理記憶域(SMS)テーブルスペースの作成

db2 create tablespace smstest managed by system using ('/mnt/database1/sms_acc1','$DB_HOME/sms_acc2') c) テーブル作成(DMS) DMS テーブルスペースに以下の4テーブルを作成 sample.dmstalbea sample.dmstalbeb sample.dmstalbec200109 sample.dmstalbed

db2 create table sample.dmstablea (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥

(20)

nenrei smallint, ¥ ztnhk smallint, ¥ zttel smallint, ¥ ztdenki smallint, ¥ ztsuidou smallint, ¥ ztgasu smallint, ¥ cust_name varchar(50), ¥ seibetsu char(1)) in dmstest

db2 create table sample.dmstableb (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥

keiyakubi date, ¥ teiki int, ¥

ztcredit smallint) in dmstest

db2create table sample.dmstablec200109(SeqNo int not null primary key, kokyaku_no char(10), ¥

kingaku int) in dmstest

db2 create table sample.dmstabled (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥ nenrei smallint, ¥ ztnhk smallint, ¥ zttel smallint, ¥ ztdenki smallint, ¥ ztsuidou smallint, ¥ ztgasu smallint, ¥ cust_name varchar(50), ¥ seibetsu char(1)) in dmstest d) テーブル作成(SMS) SMS テーブルスペースに以下の4テーブルを作成 sample.smstablea sample.smstableb sample.smstablec200109 20

(21)

sample.smstabled

db2 create table sample.smstablea (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥ nenrei smallint, ¥ ztnhk smallint, ¥ zttel smallint, ¥ ztdenki smallint, ¥ ztsuidou smallint, ¥ ztgasu smallint, ¥ cust_name varchar(50), ¥ seibetsu char(1)) in smstest

db2 create table sample.smstableb (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥

keiyakubi date, ¥ teiki int, ¥

ztcredit smallint) in smstest

db2create table sample.smstablec200109(SeqNo int not null primary key, kokyaku_no char(10), ¥

kingaku int) in smstest

db2 create table sample.smstabled (SeqNo int not null primary key, ¥ kokyaku_no char(10), ¥ nenrei smallint, ¥ ztnhk smallint, ¥ zttel smallint, ¥ ztdenki smallint, ¥ ztsuidou smallint, ¥ ztgasu smallint, ¥ cust_name varchar(50), ¥ seibetsu char(1)) in smstest e) テーブルスペースの確認

(22)

syscat.tablespaces より確認

select tbspace,tbspacetype from syscat.tablespaces where tbspace='SMSTEST' or tbspace='DMSTEST' TBSPACE TBSPACETYPE --- --- DMSTEST D SMSTEST S D は DMS を、S は SMS をあらわしている 2 レコードが選択されました。 f) テーブル確認 list tables より確認

list tables for schema sample

表/視点 スキーマ タイプ 作成時刻 --- --- --- --- DMSTABLEA SAMPLE T 2002-03-18-11.47.19.094454 DMSTABLEB SAMPLE T 2002-03-18-11.47.19.837328 DMSTABLEC200109 SAMPLE T 2002-03-18-11.47.20.424612 DMSTABLED SAMPLE T 2002-03-18-11.47.21.170895 SMSTABLEA SAMPLE T 2002-03-18-11.47.21.955021 SMSTABLEB SAMPLE T 2002-03-18-11.47.22.029028 SMSTABLEC200109 SAMPLE T 2002-03-18-11.47.22.114862 SMSTABLED SAMPLE T 2002-03-18-11.47.22.192400 8 レコードが選択されました。

select cast(name as char(20)) as name ,tbspace from sysibm.systables where creator = 'SAMPLE'

NAME TBSPACE --- ---

(23)

DMSTABLEC200109 DMSTEST SMSTABLEB SMSTEST SMSTABLED SMSTEST DMSTABLEA DMSTEST DMSTABLEB DMSTEST DMSTABLED DMSTEST SMSTABLEA SMSTEST SMSTABLEC200109 SMSTEST 8 レコードが選択されました。 5. 構成パラメータの変更 a) データベースのログファイルサイズの変更 LOG の構成サイズと、個数を変更

db2 "update db config for turbo using LOGBUFSZ 32 LOGFILSIZ 10000 LOGPRIMARY 5"

b) db2 get db cfg for turbo で確認 ………… (省略) ………… ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 10000 1 次ログ・ファイル数 (LOGPRIMARY) = 5 2 次ログ・ファイル数 (LOGSECOND) = 2 ログ・ファイル用に変更されたパス (NEWLOGPATH) = ログ・ファイルのパス = /mnt/database1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ ………… (省略) ……… 6. 搬入オペレーション(Import コマンド) a) DMS 上のテーブルにデータを搬入 以下の3テーブルにImport コマンドで 100 万レコードの DEL 形式のファイルからデー

(24)

タを搬入

sample.dmstablea sample.dmstableb

sample.dmstablec200109

import from kokyaku1 of del replace into sample.dmstablea (seqno,kokyaku_no,nenrei, ztnhk,zttel,ztdenki,ztsuidou,ztgasu,cust_name,seibetsu)

import from teiki1 of del replace into sample.dmstableb (seqno,kokyaku_no,keiyakubi, teiki,ztcredit)

import from kyu200109 of del replace into sample.dmstablec200109 (seqno,kokyaku_no, kingaku) b) SMS 上のテーブルにデータを搬入 以下の3テーブルにimport コマンドで 100 万レコードの DEL 形式のファイルからデー タを搬入 sample.smstablea sample.smstableb sample.smstablec200109

import from kokyaku1 of del replace into sample.smstablea (seqno,kokyaku_no,nenrei, ztnhk,zttel,ztdenki,ztsuidou,ztgasu,cust_name,seibetsu)

import from teiki1 of del replace into sample.smstableb (seqno,kokyaku_no,keiyakubi, teiki,ztcredit)

import from kyu200109 of del replace into sample.smstablec200109 (seqno,kokyaku_no, kingaku)

c) 搬入の確認

Table を SELECT し、想定どおりの結果が返ってくるかどうか確認する。

(25)

select cust_name,nenrei from sample.smstablea where seqno=8888 CUST_NAME NENREI --- ---

釜本 広子 59

1 レコードが選択されました。

select a.cust_name,a.nenrei,b.keiyakubi,c.kingaku from sample.smstablea a,sample.smstableb b, sample.smstablec200109 c where a.seqno=b.seqno and b.seqno=c.seqno and (a.seqno=800 or a.seqno=888888)

CUST_NAME NENREI KEIYAKUBI KINGAKU --- --- --- ---

釜本 広子 59 1994-05-03 169562 海津 武彦 32 1997-04-18 375447

2 レコードが選択されました。

select cust_name,nenrei from sample.dmstablea where seqno=9999 CUST_NAME NENREI --- ---

神山 徹子 49

1 レコードが選択されました。

select a.cust_name,a.nenrei,b.keiyakubi,c.kingaku from sample.dmstablea a,sample.dmstableb b, sample.dmstablec200109 c where a.seqno=b.seqno and b.seqno=c.seqno and (a.seqno=800 or a.seqno=999999)

CUST_NAME NENREI KEIYAKUBI KINGAKU --- --- --- ---

(26)

海津 武彦 32 1997-04-18 375447 神山 徹子 49 1992-02-12 868000

2 レコードが選択されました。 select count(1) from sample.smstablea 1

--- 1000000

1 レコードが選択されました。 select count(1) from sample.smstableb 1

--- 1000000

1 レコードが選択されました。

select count(1) from sample.smstablec200109 1

--- 1000000

1 レコードが選択されました。

select count(1) from sample.smstablec200109 1

--- 1000000

1 レコードが選択されました。

(27)

select count(1) from sample.dmstablea 1

--- 1000000

1 レコードが選択されました。 select count(1) from sample.dmstableb 1

--- 1000000

1 レコードが選択されました。

select count(1) from sample.dmstablec200109 1 --- 1000000 1 レコードが選択されました。 表示、レコード数ともに正しい事を確認。 7. 搬入オペレーション(Load コマンド) a) DMS 上のテーブルにデータを搬入 sample.dmstabled に以下のコマンドを使用して、100 万レコードの DEL 形式のファイ ルからデータを搬入

(28)

ztnhk,zttel,ztdenki,ztsuidou, ztgasu,cust_name,seibetsu) copy no b) SMS 上のテーブル

sample.smstabled に以下のコマンドを使用して、100 万レコードの DEL 形式のファイ ルからデータを搬入

load from kokyaku1 of del replace into sample.smstabled (seqno,kokyaku_no,nenrei, ztnhk,zttel,ztdenki,ztsuidou, ztgasu,cust_name,seibetsu) copy no

c) 搬入の確認

Table を SELECT 表示し、内容を確認

select cust_name,nenrei from sample.dmstabled where seqno=7777 CUST_NAME NENREI --- ---

鍵山 健志 48 1 レコードが選択されました。

select cust_name,nenrei from sample.smstabled where seqno=6666 CUST_NAME NENREI --- ---

和泉沢 陽士 63 1 レコードが選択されました。

select count(1) from sample.smstabled 1

--- 1000000

(29)

1 レコードが選択されました。 select count(1) from sample.dmstabled 1 --- 1000000 表示、レコード数ともに正しい。 8. 搬出オペレーション(Export コマンド) a) DMS 上のテーブルからデータを搬出 以下の3テーブルからexport コマンドでデータを搬出 sample.dmstablea sample.dmstableb sample.dmstablec200109

export to dms_kokyaku.out of del modified by chardel"" coldel, ¥ select seqno,kokyaku_no,nenrei, ztnhk,zttel,ztdenki,ztsuidou,ztgasu, ¥ cust_name,seibetsu from sample.dmstablea

export to dms_eiki.out of del modified by chardel"" coldel, ¥

select seqno,kokyaku_no,keiyakubi, teiki,ztcredit from sample.dmstableb export to dms_kyu200109.out of del modified by chardel"" coldel, ¥ select seqno,kokyaku_no,kingaku from sample.dmstablec200109 b) SMS 上のテーブルからデータを搬出

(30)

sample.smstablea sample.smstableb

sample.smstablec200109

export to sms_kokyaku.out of del modified by chardel"" coldel, ¥ select seqno,kokyaku_no,nenrei,ztnhk,zttel,ztdenki,ztsuidou, ¥ ztgasu, cust_name,seibetsu from sample.smstablea

export to sms_teiki.out of del modified by chardel"" coldel ¥

select seqno,kokyaku_no,keiyakubi, teiki,ztcredit from sample.smstableb export to sms_kyu200109.out of del modified by chardel"" coldel, ¥ select seqno,kokyaku_no,kingaku from sample.smstablec200109 c) 搬出の確認

搬出先のディレクトリで、ファイルと大きさの確認

-rw-r--- 1 db2inst1 db2iadm1 48744898 3 月 18 13:42 dms_kokyaku.out -rw-r--- 1 db2inst1 db2iadm1 26847896 3 月 18 13:43 dms_kyu200109.out -rw-r--- 1 db2inst1 db2iadm1 38780896 3 月 18 13:42 dms_teiki.out -rw-r--- 1 db2inst1 db2iadm1 48744898 3 月 18 13:43 sms_kokyaku.out -rw-r--- 1 db2inst1 db2iadm1 26847896 3 月 18 13:44 sms_kyu200109.out -rw-r--- 1 db2inst1 db2iadm1 38780896 3 月 18 13:44 sms_teiki.out 正しく搬出されている。

9. Backup, Restore オペレーション a) backup を実行

backup database turbo to /mnt/database1/db2backup b) テーブルをドロップ

drop table sample.smstablea

(31)

c) restore を実行

restore database turbo from /mnt/database1/db2backup replace existing d) テーブルが復元されている事の確認

select seqno,cust_name from sample.smstablea where seqno=99999 SEQNO CUST_NAME --- --- 99999 神山 徹子 10 その他 DB2 tool の実行 a) db2look db2look はテーブル定義から、SQL 文を作成する DB2 のユーティリティー。正しく実行 できるかどうか、以下のコマンドを実行する。

db2look -d turbo -a -e -m -l -x -f -o lookdb.sql

正しくlookdb.sql ファイルが作成された。

b) reorg table

作成した全テーブルに対してreorg が実行できるかどうか、以下のコマンドを実行して確

認する。

db2 "reorg table sample.smstablea" db2 “reorg table sample.smstableb" db2 “reorg table sample.smstablec" db2 “reorg table sample.smstabled“ db2 “reorg table sample.dmstablea" db2 “reorg table sample.dmstableb" db2 “reorg table sample.dmstablec"

(32)

db2 “reorg table sample.dmstabled" 正しくreorg が終了する事を確認。 11. SELECT の簡易並列負荷テスト a) 以下の仕様の Java クライアントプログラムを作成 (1) 10 個のスレッドを生成し、各スレッドが同一のテーブルに対して 1 秒おきに SELECT を100 回実行する (2) 上記 10 個のスレッドは並列動作する (3) SELECT 実行結果より、レコード数を取得しファイルに出力する (4) SQL 文実行時エラーは標準出力に表示する 使用するテーブルはDB2 に付属する SAMPLE データベース、EMP_ACT テーブルを使用。 EMP_ACT テーブルには 75 レコードある。実行する SELECT 文は以下のとおり。 SELECT * FROM EMP_ACT

b) テストプログラム実行 テストプログラムをクライアントより実行する c) 実行結果の確認 実行時エラーが発生せず、プログラムが正常終了したことを確認 実行結果ファイルより、正常にSELECT 文が実行されたことを確認 12. DELETE と INSERT の簡易並列負荷テスト a) 以下の仕様の Java クライアントプログラムを作成 (1) 1 回の DELETE と 100 回の INSERT 実行を 1 ループとする (2) 10 個のスレッドを生成し、各スレッドが異なるテーブルに対して 1 秒おきに 1 ループ の操作を実行し、計100 ループ実行する (3) 上記 10 個のスレッドは並列動作する 32

(33)

(4) DELETE,INSERT に成功すると、成功メッセージをファイルに出力する (5) SQL 文実行時エラーは標準出力に表示する 使用するテーブルはDB2 に付属する Sample データベースに以下の列を持つテーブルを 10 個作成した。 列名 データ属性 COL1 SMALLINT 実行するDELETE 文と INSERT 文は以下のとおり。 DELETE FROM テーブル名

INSERT INTO テーブル名 VALUES(n) [n は乱数生成した整数] b) テストプログラム実行 テストプログラムをクライアントより実行する c) 実行結果の確認 実行時エラーが発生せず、プログラムが正常終了したことを確認 実行結果ファイルより、正常にDELETE 文、INSERT 文が実行されたことを確認 13. UPDATE の簡易並列負荷テスト a) 以下の仕様の Java クライアントプログラムを作成 (1) 10 個のスレッドを生成し、そのうち2スレッドずつが同一テーブルに対して 1 秒おき に100 回の UPDATE を実行する (2) 上記 10 個のスレッドは並列動作する (3) UPDATE に成功すると、成功メッセージをファイルに出力する (4) SQL 文実行時エラーは標準出力に表示する 使用するテーブルはTURBO データベースに以下の列を持つテーブルを 5 個作成した。 列名 データ属性

(34)

COLSMALLINT SMALLINT COLCHAR CHAR(1)

実行するUPDATE 文は以下のとおり。

UPDATE テーブル名 SET COLCHAR = ‘N’ ¥

WHERE COLSMALLINT = n AND COLCHAR = ‘Y’ [n は乱数生成した整数] b) テストプログラム実行 テストプログラムをクライアントより実行する d) 実行結果の確認 実行時エラーが発生せず、プログラムが正常終了したことを確認 実行結果ファイルより、正常にUPDATE 文が実行されたことを確認 14. SELECT,DELETE,INSERT,UPDATE の並列負荷テスト a) 以下の仕様の Java クライアントプログラムを作成 (1) 13 個のスレッドを生成し、各スレッドが同一のテーブルに対して SQL 文を実行す る (2) 上記 13 個のスレッドは並列動作する (3) 実行結果の成否をファイルに出力する (4) SQL 文実行時エラーは標準出力に表示する 使 用 す る テ ー ブ ル は 今 回 の テ ス ト で 作 成 し た TURBO デ ー タ ベ ー ス 、 SAMPLE.SMSTABLEA テーブルを使用。このテーブルには 100 万レコードある。実行す るSQL 文とスレッド数、実行回数の対応は以下のとおり。 SELECT1:

SELECT KOKYAKU_NO, CUST_NAME FROM SAMPLE.SMSTABLEA ¥ WHERE SEIBETSU = '0'

SELECT2:

(35)

SELECT KOKYAKU_NO, CUST_NAME FROM SAMPLE.SMSTABLEA ¥ WHERE SEIBETSU = '1'

SELECT3:

SELECT KOKYAKU_NO, CUST_NAME FROM SAMPLE.SMSTABLEA ¥ WHERE NENREI BETWEEN 20 AND 40

SELECT4:

SELECT KOKYAKU_NO, CUST_NAME FROM SAMPLE.SMSTABLEA ¥ (WHERE NENREI BETWEEN 20 AND 40) AND SEIBETSU = '0'

SELECT5:

SELECT KOKYAKU_NO, CUST_NAME FROM SAMPLE.SMSTABLEA ¥ (WHERE NENREI BETWEEN 20 AND 40) AND WHERE SEIBETSU = '1' UPDATE:

UPDATE SAMPLE.SMSTABLEA SET ZTTEL = 1 WHERE KOKYAKU_NO ¥ = n [n は乱数生成した整数]

INSERT:

INSERT INTO SAMPLE.SMSTABLEA ¥

VALUES(1000001,'10000',26,1,1,1,1,1,'komedani','1') DELETE:

DELETE FROM SAMPLE.SMSTABLEA WHERE SEQNO = 1000001

SQL 文タイプ スレッド数 実行回数(各スレッドあたり) SELECT1 2 5000 SELECT2 2 5000 SELECT3 2 5000 SELECT4 2 5000 SELECT5 2 5000 UPDATE 2 500 INSERT と DELETE 1 2500 b) テストプログラム実行

(36)

テストプログラムをクライアントより実行する c) 実行結果の確認 サーバのCPU 使用率が、各 CPU で約 30-80%で推移していることを確認 実行時エラーが発生せず、プログラムが正常終了したことを確認 実行結果ファイルより、正常にSQL 文が実行されたことを確認 36

(37)

15. クラスタ状態遷移 a) 評価内容 クラスタのライフサイクルの中でDB2 が正しく起動・終了することを確認した。 フェイルオーバの前後で、クライアントからの Floating IP による接続テストを実行し、 DB2 の稼動サーバの切り替えを意識することなく接続できることを確認した。 b) 状態遷移 1. SERVER1, SERVER2 起動 13. クラスタシャットダウン 2. クラスタシャットダウン 14. SERVER1, SERVER2 起動

3. SERVER1, SERVER2 起動 15. SERVER1 クラスタ復帰

4. SERVER1 停止 16. SERVER2 停止

5. SERVER1 クラスタ復帰 17. SERVER2 クラスタ復帰

6. DB2_G1 を SERVER1 へ移動 18. クラスタシャットダウン

7. DB2_G1 を SERVER2 へ移動 19. SERVER1, SERVER2 起動

8. DB2_G1 を SERVER1 へ移動 20. SERVER1 停止

9. DB2_G1 を SERVER2 へ移動 21. SERVER2 停止

10. クラスタシャットダウン 22. SERVER1, SERVER2 クラスタ復帰

11. SERVER1, SERVER2 起動 23. DB2_G1 を SERVER1 で起動

12. SERVER1 停止 24. DB2_G2 を SERVER2 で起動 c) 評価結果 すべてのパスにおいてDB2 の起動・終了が正常に行われ、クライアントからのアクセスも DB2 稼動サーバが SERVER1, SERVER2 のどちらであるかを意識することなく正常に行え た。 16. HW 擬似障害によるフェイルオーバテスト a) 評価内容 HW 擬似障害を発生させ DB2 を正常にフェイルオーバできることを確認した。 フェイルオーバの前後で、クライアントからの Floating IP による接続テストを実行し、 DB2 の稼動サーバの切り替えを意識することなく接続できることを確認した。 b) 評価項目および結果 評価項目および結果は以下のとおり。OK は仕様どおりに動作したことを意味する。

(38)

評価項目 評価内容 結果

Public LAN ケーブル切断(SERVER1) OK

Public LAN ケーブル切断(SERVER2) OK

Interconnect LAN ケーブル切断 OK

NIC/LAN 障害

Public LAN および Interconnect LAN ケーブル切断 OK

RS232C ケーブル切断 OK RS232C ケーブル切断後の SERVER1 停止 OK RS232C ケーブル切断後の SERVER2 停止 OK RS232C ケーブル切断中のクラスタ起動 OK COM 障害 RS232C ケーブル切断中のクラスタ停止 OK SERVER1 のみでのクラスタ起動 OK SERVER1 のみでのクラスタ停止 OK SERVER2 のみでのクラスタ起動 OK SERVER 本体障害 SERVER2 のみでのクラスタ停止 OK SERVER1 と GR710 との接続ケーブルを切断 OK(*1) SERVER2 と GR710 との接続ケーブルを切断 OK(*1) SERVER1 と GR710 との接続ケーブル切断状態での クラスタ起動 OK SERVER1 と GR710 との接続ケーブル切断状態での クラスタ停止 OK SERVER2 と GR710 との接続ケーブル切断状態での クラスタ起動 OK 共有ディスク障害 SERVER2 と GR710 との接続ケーブル切断状態での クラスタ停止 OK *1 – 共有ディスクアクセス不能状態となると、DB2 の停止を行えないため、クラスタの停 止スクリプト(db2stop.sh)がストールするが、スクリプトタイムアウトにより強制的 にフェイルオーバが発生する。 今回の評価では、停止スクリプトのタイムアウト値は300[s]とした。 17. SW 擬似障害によるフェイルオーバテスト a) 評価内容 SW 擬似障害を発生させ DB2 を正常にフェイルオーバできることを確認した。 フェイルオーバの前後で、クライアントからの Floating IP による接続テストを実行し、 38

(39)

DB2 の稼動サーバの切り替えを意識することなく接続できることを確認した。 b) 評価項目

DB2 UDB for Linux に

a. クライアントが接続していない

b. クライアントが接続しているが、トランザクションは発生していない

c. クライアントが接続しており、トランザクションが発生している(トランザクションは、 import コマンドで 100 万行のデータを import し、1000 行ごとに COMMIT を発生さ せている) という3 つの動作状況を発生させ、その間に以下の 5 つのアクションを起こした場合、正 常にフェイルオーバを行えるかどうかを確認する。 1. db2stop コマンドを実行 2. db2stop force コマンドを実行 3. kill -9 で db2sysc プロセスを削除

4. killall -9 armmon で armmon プロセスを削除 5. killall -9 armmonp で armmonp プロセスを削除 c) 評価結果 各項目の結果は以下のとおり。OK は正常にフェイルオーバできた事を意味している。 a. 接 続 し て い ない b. トランザクション 無し c. トランザクション 有り 1. db2stop OK 未テスト(*1) 未テスト (*1) 2. db2stop force OK OK OK 3. kill -9 db2sysc OK OK OK 4. killall -9 armmon OK OK OK 5. killall -9 armmonp OK OK OK *1 - DB2 は、一つでも接続があると、db2stop できない仕様になっているため

参照

関連したドキュメント

熱源機器、空調機器の運転スケジュールから、熱源機器の起動・停止時刻

※定期検査 開始のた めのプラ ント停止 操作にお ける原子 炉スクラ ム(自動 停止)事 象の隠ぺ い . 福 島 第

※定期検査 開始のた めのプラ ント停止 操作にお ける原子 炉スクラ ム(自動 停止)事 象の隠ぺ い . 福 島 第

マニピュレータで、プール 内のがれきの撤去や燃料取 り出しをサポートする テンシルトラスには,2本 のマニピュレータが設置さ

マニピュレータで、プール 内のがれきの撤去や燃料取 り出しをサポートする テンシルトラスには,2本 のマニピュレータが設置さ

0..

作業項⽬ 2⽉ 2020年度 3⽉ 4⽉ 5⽉ 2021年度 6⽉以降. ⼲渉物切

2019年6⽉4⽇にX-2ペネ内扉に,AWJ ※1 にて孔(孔径約0.21m)を開ける作業中,PCV内 のダスト濃度上昇を早期検知するためのダストモニタ(下記図の作業監視⽤DM①)の値が作 業管理値(1.7×10