13.21.1 リストの管理方法
実行者 HiRDB管理者及び表の所有者(又はDBA権限保持者)
ここでは,絞込み検索をするときに使用するリストの管理方法について説明します。リストを使用している場合,次に示すことに注意してください。
- 〈この項の構成〉
(1) HiRDBを終了するとすべてのリストが削除されます
HiRDBを終了(異常終了を含む)するとすべてのリストが削除されるため,リストを使用した検索ができなくなります。リストが必要な場合は,ASSIGN LIST文で再度リストを作成してください。
- HiRDB/パラレルサーバの場合
-
-
ユニット単位の終了をすると,そのユニットにあるすべてのリストが削除されます。
-
サーバ単位の終了をすると,そのサーバにあるすべてのリストが削除されます。
-
(2) リストの基表をデータベース回復ユティリティで回復した場合
リストの基表を最新の同期点の状態まで回復した場合,リストはそのまま使用できます。しかし,最新の同期点の状態まで回復しなかった場合(例えば,バックアップ取得時点に回復した場合),基表とリストの整合性が合わなくなる可能性があるため,ASSIGN LIST文でリストを再作成してください。
(3) リストの基表を格納しているRDエリアを再初期化した場合
リストの基表を格納しているRDエリアを再初期化した場合,そのリストに対して次に示すどちらかの処置をしてください。
-
ASSIGN LIST文でリストを再作成します。
-
DROP LIST文でリストを削除します。
(4) リストが無効になる操作
リストの基表に対して次に示す操作をした場合,リストの検索結果が不正になります。この場合,ASSIGN LIST文でリストを再作成してください。
-
表の再編成
-
作成モードでの表へのデータロード
-
PURGE TABLE文の実行
(5) リスト及びリスト用RDエリアに対して使用できないコマンドがあります
リスト及びリスト用RDエリアに対して,次に示すコマンドが使用できません。
-
データベース作成ユティリティ
-
データベース再編成ユティリティ
-
データベース複写ユティリティ
-
データベース回復ユティリティ
-
データベース状態解析ユティリティ(RDエリア単位の物理的解析だけはできます)
(6) ディクショナリサーバが終了したときの留意事項
リストの作成及び削除のオーバヘッド低減のため,HiRDBではリストの管理情報をディクショナリサーバのメモリに保持しています。このため,ディクショナリサーバ又はディクショナリサーバがあるユニットを終了すると,リストの管理情報が失われます。その結果,これまで作成した全リストが無効になります。この場合,ASSIGN LIST文で再度リストを作成してください。
なお,ディクショナリサーバの再開始後,終了以前に実行していた他ユーザのリストを使用したトランザクションの回復が完了するまでの間,リストを使用した処理がKFPA11998-Eエラー(トランザクション未決着状態でのリスト操作)となることがあります。
(7) リストの情報を調べるコマンド(pdlistlsコマンド)
pdlistlsコマンドでリストの情報を調べられます。表示される情報は次のとおりです。
-
リスト名
-
リストの所有者
-
リストの基表名
-
リストの基表の所有者
-
pd_max_list_usersの値(リスト所有者数の最大値)
-
pd_max_list_countの値(1ユーザ当たりの最大リスト作成数)
(8) リストの初期化(削除)時期の変更
(1)で説明したように,HiRDBを終了するとリストが削除されます。このリストの削除処理(初期化処理)はHiRDBの開始処理時に行われるため,作成したリスト数が多いとHiRDBの開始処理に時間が掛かります。次に示すような場合に,リストの初期化時期の変更を検討してください。
-
HiRDBの開始時間を短縮したい
-
系の切り替え時間を短縮したい(ユーザサーバホットスタンバイ又は高速系切り替え機能を使用している)
リストの初期化時期はpd_list_initialize_timingオペランドで次のように変更できます。
(a) ASSIGN LIST文の実行時にリストを初期化する場合
HiRDBを開始するときにリストを初期化しないで,ASSIGN LIST文を実行するときにリストを初期化します。そのため,ASSIGN LIST文を実行するときに初期化する分のオーバヘッドが掛かります。この初期化処理のオーバヘッドを小さくするには,リスト用RDエリアの容量及び最大リスト数をなるべく小さく設定してください。リスト作成数が多い場合は,リスト用RDエリアの数を増やして対応してください。これで,ASSIGN LIST文実行時の初期化処理のオーバヘッドを分散できます。
(b) 待機系のHiRDBを開始するときにリストを初期化する場合(高速系切り替え機能限定)
待機系のHiRDBを開始するときにリストを初期化します。系の切り替え時にはリストを初期化しません。また,系切り替え後のASSIGN LIST文の実行時にもリストを初期化しません。そのため,リスト用RDエリアの容量及び最大リスト数を大きく設定し,作成するリスト用RDエリア数を少なくできます。ただし,次に説明する準備作業をする必要があります。
- 準備作業
-
実行系と待機系の両方にリストが必要になります。それぞれのローカルディスクに作成してください。次の二つの方法があります。
- 実行系のHiRDBで作成したリストを待機系のHiRDBにコピーする方法
-
-
実行系のHiRDBのリスト用RDエリアを格納している全HiRDBファイルシステム領域を待機系のローカルディスクにコピーします。
-
リスト用RDエリアに定義されているすべてのHiRDBファイル名が,1で作成したHiRDBファイルシステム領域を指すようにリンクを設定します。
-
- データベース構成変更ユティリティ(pdmodコマンド)の再初期化を使用する方法
-
-
pdstopコマンドで実行系のHiRDBを正常終了します。
-
pdfmkfsコマンドで,リスト用RDエリアを作成するHiRDBファイルシステム領域を作成します。実行系と同じ設定,同じ数だけ作成してください。
-
リスト用RDエリアに定義されているすべてのHiRDBファイル名が,2で作成したHiRDBファイルシステム領域を指すようにリンクを設定します。
-
pdstartコマンドで待機系のHiRDBを正常開始します。このとき,待機系のHiRDBにはHiRDBファイルシステム領域内にHiRDBファイルがないため,リスト用RDエリアがオープン,障害閉塞状態になります。
-
pdmodコマンドですべてのリスト用RDエリアを再初期化します。このとき,再初期化するRDエリア名だけを指定してください。
-
pdrelsコマンドですべてのリスト用RDエリアの閉塞を解除します。
-
pdstopコマンドで待機系のHiRDBを正常終了します。
-
(9) リスト用RDエリアの構成変更
(8)(b)に示した実行系と待機系のローカルディスクに別々にリスト用RDエリアを作成している場合,(8)の再初期化以外のRDエリアの構成変更は,次の手順で行います。
-
実行系でリスト用RDエリアの構成を変更します。
-
pdstopコマンドで実行系のHiRDBを正常終了します。
-
実行系のHiRDBのリスト用RDエリアを格納しているすべてのHiRDBファイルシステム領域を待機系のローカルディスクにコピーします。
-
リスト用RDエリアに定義されているすべてのHiRDBファイル名が,3で作成したHiRDBファイルシステム領域を指すようにリンクを設定します。