9.2.2 データベースを再編成する場合
データベースを再編成する方法について説明します。
(1) ajsembdbrorgコマンドでデータベースを再編成する
データベースを手動で再編成する手順を次に示します。
なお,次に示す手順で記載するコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 3. 通常の運用で使用するコマンド」およびマニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 2. セットアップコマンド」を参照してください。
-
JP1/AJS3のスケジューラーサービスを終了する。
jajs_spmd_stopコマンドまたはajsstopコマンドを使って,該当するJP1/AJS3のスケジューラーサービスを終了します。再編成対象の組み込みDBで情報が管理されているスケジューラーサービスをすべて終了してください。スケジューラーサービスと組み込みDBの関連づけについては,ajsembdbidlistコマンドで確認できます。
- コマンドの形式(jajs_spmd_stopコマンドの場合)
-
jajs_spmd_stop [-h 論理ホスト名] -n jajs_schd -F スケジューラーサービス名
- コマンドの使用例
-
jajs_spmd_stop -n jajs_schd -F AJSROOT2
- コマンドの形式(ajsstopコマンドの場合)
-
ajsstop -F スケジューラーサービス名
- コマンドの使用例
-
ajsstop -F AJSROOT2
-
JP1/AJS3のエージェント管理を終了する。
jajs_hstd_stopコマンドを使って,エージェント管理を終了します。
- コマンドの形式
-
・Windowsの場合
jajs_hstd_stop [-h 論理ホスト名] -n agentm
・UNIXの場合
jajs_hstd_stop [-h 論理ホスト名] -n ajsagtmd
- コマンドの使用例
-
・Windowsの場合
jajs_hstd_stop -n agentm
・UNIXの場合
jajs_hstd_stop -n ajsagtmd
-
接続しているJP1/AJS3 - Viewおよびコマンドをすべて停止する。
JP1/AJS3 - Viewおよびスケジューラーのコマンドが動作していないことを確認してください。
-
ajsembdbreclaimコマンドを使用して,空きセグメントの回収を行う。
空きセグメントが少ない状態で再編成を実施すると,作業領域が不足して,再編成に失敗する場合があります。これを避けるため,事前に空きセグメントを回収することを推奨します。
コマンドの使用例
-
Windowsの場合
JP1/AJS3 - Managerのインストール先フォルダ\tools\ajsembdbreclaim -m manager
-
UNIXの場合
/opt/jp1ajs2/tools/ajsembdbreclaim -m manager
-
-
ajsembdbrorgコマンドを使ってデータベースを再編成する。
コマンドの使用例
-
Windowsの場合
ajsembdbrorg -k unld -F AJSROOT2 -d C:\tmp
ajsembdbrorg -k reld -F AJSROOT2 -d C:\tmp
-
UNIXの場合
ajsembdbrorg -k unld -F AJSROOT2 -d /tmp
ajsembdbrorg -k reld -F AJSROOT2 -d /tmp
エージェント管理データベースを再編成する場合
-
Windowsの場合
ajsembdbrorg -k unld -agent -d C:\tmp
ajsembdbrorg -k reld -agent -d C:\tmp
-
UNIXの場合
ajsembdbrorg -k unld -agent -d /tmp
ajsembdbrorg -k reld -agent -d /tmp
- 注
-
-dオプションに指定するディレクトリに必要な容量を確保してください。
-k unldで取得したデータを使用して,-k reldを実行するため,-dで指定するディレクトリは,-k unld,reldで同じディレクトリを指定してください。
-k unldでエラーが発生した場合,作成されたファイルを使用して-k reldを実行しないでください。データベースの内容が不正になるおそれがあります。
-k reldでエラーが発生した場合,データベースの内容が不正になっています。エラーの要因を取り除いて-k reldを再実行し,正常終了したことを確認するまでは,JP1/AJS3サービスを起動しないでください。
-k reldでメッセージKFPA11756-Eが出力された場合は,ユニット数や保存世代数などに対して,組み込みDBのデータベース領域が不足しています。データベース領域を見積もって,不足している領域を拡張してください。見積もりについての詳細は,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 23.2 データベース領域の見積もり」を参照してください。不足している領域を拡張したあと,-k reldを実行してください。
-
-
JP1/AJS3のエージェント管理を起動する。
jajs_hstdコマンドを使って,エージェント管理を起動します。
- コマンドの形式
-
・Windowsの場合
jajs_hstd [-h 論理ホスト名] -n agentm
・UNIXの場合
jajs_hstd [-h 論理ホスト名] -n ajsagtmd
- コマンドの使用例
-
・Windowsの場合
jajs_hstd -n agentm
・UNIXの場合
jajs_hstd -n ajsagtmd
-
JP1/AJS3のスケジューラーサービスを起動する。
jajs_spmdコマンドまたはajsstartコマンドを使って,該当するJP1/AJS3のスケジューラーサービスを起動します。また,関連するサービスも起動してください。
- コマンドの形式(jajs_spmdコマンドの場合)
-
jajs_spmd [-h 論理ホスト名] -n jajs_schd -F スケジューラーサービス名
- コマンドの使用例
-
jajs_spmd -n jajs_schd -F AJSROOT2
- コマンドの形式(ajsstartコマンドの場合)
-
ajsstart -F スケジューラーサービス名
- コマンドの使用例
-
ajsstart -F AJSROOT2
(2) スクリプトを使用してデータベースを再編成する
組み込みDBをスクリプトで一括してデータベースを再編成する手順を次に示します。ここでは手順の説明に続いて,使用例を示します。
なお,次に示す手順で記載するコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 3. 通常の運用で使用するコマンド」およびマニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 2. セットアップコマンド」を参照してください。
- 補足事項
-
処理内容としては,「(1) ajsembdbrorgコマンドでデータベースを再編成する」で説明している再編成と同等であるため,(1)の方法で作業をすることを推奨します。
(a) 再編成の手順
再編成の手順は,次のとおりです。
-
組み込みDBのコマンドを実行するために必要な環境変数を設定する。
設定する環境変数を次の表に示します。
表9‒1 設定が必要な環境変数 設定する環境変数
説明
PDDIR
組み込みDB運用ディレクトリ名を指定します。
PDCONFPATH
Windowsの場合,組み込みDB運用ディレクトリ\confを,UNIXの場合,組み込みDB運用ディレクトリ/confを指定します。組み込みDBの定義ファイルを格納するディレクトリです。
PDUXPLDIR
Windowsの場合だけ,組み込みDB作業ディレクトリ名を指定します。
PDUSER
組み込みDB管理者(スケジューラーデータベースのテーブルの所有者)のユーザーおよびパスワード(ユーザー/パスワード)を指定します。
- (例)
-
PDUSER="root"/"root"
PDLANG
ANYを指定します。
JP1_HOSTNAME
クラスタで運用している場合に,論理ホスト名を指定します。
PATH
Windowsの場合,組み込みDB運用ディレクトリ\binを,UNIXの場合,組み込みDB運用ディレクトリ/binを指定します。組み込みDBのコマンドを格納するディレクトリです。
SHLIB_PATH※
UNIXの場合だけ,組み込みDB運用ディレクトリ/libを指定します。
- 注※
-
Solaris,Linuxの場合は,LD_LIBRARY_PATHに,AIXの場合は,LIBPATHになります。
Windowsの場合の環境変数設定例
x:\> set PDDIR=c:\Program Files\HITACHI\JP1AJS2\embdb\_JF0 x:\> set PDCONFPATH=%PDDIR%\conf x:\> set PDUXPLDIR=%PDDIR%\uxpldir x:\> set PDUSER="root"/"root" x:\> set PDLANG=ANY x:\> set JP1_HOSTNAME=lhost1 x:\> set PATH=%PATH%;%PDDIR%\bin
UNIX(HP-UX)の場合の環境変数設定例
# PDDIR=/opt/jp1ajs2/embdb/_JF0 # PDCONFPATH=$PDDIR/conf # PDUSER='"root"/"root"' # PDLANG=ANY # SHLIB_PATH=$PDDIR/lib # PATH=$PATH:$PDDIR/bin # export PDDIR PDCONFPATH PDUSER PDLANG SHLIB_PATH PATH
-
JP1/AJS3のスケジューラーサービスを終了する。
jajs_spmd_stopコマンドまたはajsstopコマンドを使って,該当するJP1/AJS3のスケジューラーサービスを終了します。再編成するRDエリアを使用しているすべてのスケジューラーサービスを終了してください。
- コマンドの形式(jajs_spmd_stopコマンドの場合)
-
jajs_spmd_stop [-h 論理ホスト名] -n jajs_schd -F スケジューラーサービス名
- コマンドの使用例
-
jajs_spmd_stop -n jajs_schd -F AJSROOT2
- コマンドの形式(ajsstopコマンドの場合)
-
ajsstop -F スケジューラーサービス名
- コマンドの使用例
-
ajsstop -F AJSROOT2
-
JP1/AJS3のエージェント管理を終了する。
jajs_hstd_stopコマンドを使って,エージェント管理を終了します。
- コマンドの形式
-
・Windowsの場合
jajs_hstd_stop [-h 論理ホスト名] -n agentm
・UNIXの場合
jajs_hstd_stop [-h 論理ホスト名] -n ajsagtmd
- コマンドの使用例
-
・Windowsの場合
jajs_hstd_stop -n agentm
・UNIXの場合
jajs_hstd_stop -n ajsagtmd
-
接続しているJP1/AJS3 - Viewおよびコマンドをすべて停止する。
JP1/AJS3 - Viewおよびスケジューラーのコマンドが動作していないことを確認してください。
-
ajsembdbreclaimコマンドを使用して,空きセグメントの回収を行う。
空きセグメントが少ない状態で再編成を実施すると,作業領域が不足して,再編成に失敗する場合があります。これを避けるため,事前に空きセグメントを回収することを推奨します。
コマンドの使用例
-
Windowsの場合
JP1/AJS3 - Managerのインストール先フォルダ\tools\ajsembdbreclaim -m manager
-
UNIXの場合
/opt/jp1ajs2/tools/ajsembdbreclaim -m manager
-
-
次に示すスクリプトを実行する。
再編成スクリプトはサンプルが提供されています。作業ディレクトリにコピーして使用してください。
-
Windowsの場合
JP1/AJS3のインストール先フォルダ\tools\ajsembdbcond-sample.bat
-
UNIXの場合
/opt/jp1ajs2/tools/ajsembdbcond-sample
ajsembdbcondスクリプトについては,「(b) 再編成スクリプトの形式」を参照してください。
- スクリプトの使用例
-
ajsembdbcond
(サンプルスクリプトを,ajsembdbcondに名称変更した場合)
-
-
JP1/AJS3のエージェント管理を起動する。
jajs_hstdコマンドを使って,エージェント管理を起動します。
- コマンドの形式
-
・Windowsの場合
jajs_hstd [-h 論理ホスト名] -n agentm
・UNIXの場合
jajs_hstd [-h 論理ホスト名] -n ajsagtmd
- コマンドの使用例
-
・Windowsの場合
jajs_hstd -n agentm
・UNIXの場合
jajs_hstd -n ajsagtmd
-
JP1/AJS3のスケジューラーサービスを起動する。
jajs_spmdコマンドまたはajsstartコマンドを使って,該当するJP1/AJS3のスケジューラーサービスを起動します。
- コマンドの形式(jajs_spmdコマンドの場合)
-
jajs_spmd [-h 論理ホスト名] -n jajs_schd -F スケジューラーサービス名
- コマンドの使用例
-
jajs_spmd -n jajs_schd -F AJSROOT2
- コマンドの形式(ajsstartコマンドの場合)
-
ajsstart -F スケジューラーサービス名
- コマンドの使用例
-
ajsstart -F AJSROOT2
(b) 再編成スクリプトの形式
再編成スクリプトを使うと,組み込みDBのテーブルおよびインデクスを再編成できます。
- 形式
-
ajsembdbcond-sample[-u ユーザー名 -p パスワード]
- 引数
-
- -u ユーザー名
-
テーブルの再編成を実行するユーザー名(テーブル所有ユーザー)を指定します。ユーザー名を省略した場合,スクリプト内部で指定されているユーザー名で再編成されます。
- -p パスワード
-
テーブルの再編成を実行するユーザーのパスワードを指定します。パスワードを省略した場合,スクリプト内部で指定されているユーザーのパスワードで再編成されます。
- 補足事項
-
ユーザー名やパスワードを指定する場合は,次のように指定してください。
Windowsの場合:"root"
UNIXの場合:\"root\"
" "で囲むことで,大文字,小文字が区別されます。
(c) 再編成スクリプトのカスタマイズ
再編成スクリプトのカスタマイズについて説明します。スクリプトファイルは,元のスクリプトファイルを作業ディレクトリにコピーしたあと,編集してから使用してください。構築された組み込みDB環境ごとに,スクリプトファイルを用意してください。カスタマイズできる項目を次に示します。
- CUSTOM_PDDIR=組み込みDB運用ディレクトリ
-
組み込みDB運用ディレクトリ名を指定します。
環境変数PDDIRが設定済みの場合は,環境変数PDDIRでの設定を優先します。
また,環境変数PDDIRが設定されていない場合で,スクリプトファイル内でCUSTOM_PDDIRを指定しないときは,テーブルの再編成が実行されません。
- CUSTOM_PDCONFPATH=組み込みDBシステム定義ファイル格納ディレクトリ
-
組み込みDBシステム定義ファイル格納ディレクトリ名を指定します。
環境変数PDCONFPATHが設定済みの場合は,環境変数PDCONFPATHの設定を優先します。
環境変数PDCONFPATHが設定されていない場合で,スクリプトファイル内でCUSTOM_PDCONFPATHを指定しないときは,テーブルの再編成が実行されません。
- CUSTOM_PDUXPLDIR=組み込みDB作業ディレクトリ
-
Windowsの場合だけ指定が必要です。組み込みDB作業ディレクトリ名を指定します。
環境変数PDUXPLDIRが設定済みの場合は,環境変数PDUXPLDIRの設定が優先されます。
また,環境変数PDUXPLDIRが設定されていない場合で,スクリプトファイル内でCUSTOM_PDUXPLDIRを指定しないときは,テーブルの再編成が実行されません。
- CUSTOM_EMBDB_USER=テーブル所有者名
-
再編成コマンドを実行するユーザー名を指定します。
テーブルの所有者ユーザーを指定してください。
CUSTOM_EMBDB_USERにユーザー名を指定していても,スクリプトの引数でユーザー名を指定した場合は,スクリプトの引数の値が優先されます。
- CUSTOM_EMBDB_PASS=テーブル所有者名のパスワード
-
再編成コマンドを実行するユーザーのパスワードを指定します。
- CUSTOM_TABLE_LIST=テーブル名
-
再編成するテーブルのリストをスペースの区切りで指定します。
指定しない場合は,テーブルの再編成が実行されません。
- CUSTOM_TABLE_RDAREA=テーブル格納RDエリア
-
再編成するテーブルを格納しているRDエリアを指定します。
指定しない場合は,テーブルの再編成が実行されません。
- CUSTOM_INDEX_RDAREA=インデクス格納RDエリア
-
再編成するテーブルのインデクスを格納しているRDエリアを指定します。
指定しない場合は,テーブルの再編成が実行されません。
- CUSTOM_TEMP_DIR=一時ファイル格納ディレクトリ
-
再編成コマンドの制御ファイルやデータベースからアンロードしたデータファイルなどを格納するフォルダ名をフルパスで指定します。
指定しない場合,Windowsは「C:\TEMP」が,UNIXは「/tmp」が仮定されます。
複数の組み込みDB環境を構築している場合や,複数のスケジューラーサービスを構築している場合は,スクリプトの同時実行などによるデータ消失を避けるために,これらの間で使用する一時ファイル格納ディレクトリが重複しないように指定してください。
- CUSTOM_LOG_FILE=ログ出力ファイル
-
スクリプトの実行結果のログを出力するファイルをフルパスで指定します。ログの出力先ファイル名を指定した場合,ログファイルは無限に増えるファイルとなるので,必要に応じて削除してください。
指定しない場合は,標準出力にログが出力されます。
- 補足事項
-
-
スクリプトを実行できるユーザー
スクリプト内で使用するコマンドは,組み込みDBシステム管理者だけが実行できます。OS上の組み込みDBシステム管理者ユーザーでスクリプトを実行してください。
-
ユーザー名やパスワードを指定する場合は,次のように指定してください。
Windowsの場合:"root"
UNIXの場合:\"root\"
" "で囲むことで,大文字,小文字が区別されます。
-
エラー発生時の対処方法
テーブルの再編成中,アンロードしたデータのリロード処理に失敗すると,データベース上のテーブルやインデクスが空になっている場合があります。その場合には,アンロードデータから手動でリロード処理を実行する必要があります。
また,再編成中にエラーが発生すると,RDエリアは閉塞されたままになるので,回復処理を実行したあと,閉塞を解除してください。
リロード中にエラーが発生した場合のテーブルを次の表に示します。
表9‒2 エラー発生時(リロード中)のテーブルの状態と回復方法 エラー発生直前のメッセージ
RDエリア内のテーブルの状態
回復方法
なし
再編成実行前の状態
該当テーブルの再編成を再実行
KFPL00721-I
テーブル削除済み
該当テーブルのリロードを再実行
KFPL00712-I
KFPL00732-I
テーブル作成未完
該当テーブルのリロードを再実行
KFPL00714-I
KFPL00734-I
テーブル作成終了
該当テーブルのリロードを再実行
KFPL00715-I
インデクス作成未完
該当テーブルのリロードを再実行
KFPL00716-I
インデクス作成終了
不要
(例)リロードを再実行する場合
データのリロードに失敗した場合,スクリプトの次のパラメーターに指定したフォルダにアンロードしたデータファイルが格納されています。
CUSTOM_TEMP_DIR
指定していない場合,Windowsは「C:\TEMP」が,UNIXは「/tmp」が仮定されます。
このフォルダには次のファイルが作成されます。
rorg_ctrl:再編成に必要なコントロールファイル
08-10-01以前のバージョンの場合
unldfile:表データ
08-10-02以降のバージョンの場合
unldfile_テーブル名:表データ
このフォルダに作成されたファイルを使用してリロードを実行してください。
UNITテーブルのリロード時に失敗した場合,再編成の再実行コマンドは次のとおりになります。
コマンドの実行例
Windowsの場合:pdrorg -k reld -t AJSUNIT C:\tmp\rorg_ctrl
UNIXの場合:pdrorg -k reld -t AJSUNIT /tmp/rorg_ctrl
表9-2を参考にして,どの表でのリロードが失敗しているかを特定してください。
-