7.5.3 制御文(initialize rdarea文)
initialize rdarea RDエリア名 〔with reconstruction〕 〔open attribute {INITIAL|DEFER|SCHEDULE}〕 〔page ページ長 characters〕 〔storage control segment セグメントサイズ pages〕 〔max entries 最大リスト登録数〕 〔extension {use 増分セグメント数 segments|nouse}〕 〔without lock table〕 〔file name "HiRDBファイルシステム領域名\HiRDBファイル名" initial HiRDBファイル内セグメント数 segments 〔file name "HiRDBファイルシステム領域名\HiRDBファイル名" initial HiRDBファイル内セグメント数 segments〕…〕 ;
- 注
-
file name オペランド,initialオペランドを指定する場合は,必ずinitialize rdarea文の最後に指定してください。
- 〈この項の構成〉
-
(1) RDエリア名
〜<識別子>((1〜30))
再初期化するRDエリアの名称を指定します。
RDエリア名にALLは指定できません。RDエリア名を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字として扱われます。また,RDエリア名に空白が含まれる場合は,引用符で囲んでください。
(2) with reconstruction
RDエリアを構成するすべてのHiRDBファイルを変更する場合に指定します。
このオペランドを指定した場合は,file nameオペランドに,変更するRDエリアを構成するすべてのHiRDBファイルを指定する必要があります。この場合,指定しなかった既存のHiRDBファイルの定義(file nameオペランドの定義)は無効となるため,使用しないHiRDBファイルはすべて削除されます。
このオペランドを省略した場合は,RDエリアの再初期化実行前の指定値を引き継ぎます。
このオペランドを省略してHiRDBファイルの定義を変更したい場合は,file nameオペランドで既存のHiRDBファイル名を指定し,変更したいオペランドに変更後の値を指定します。
(3) open attribute {INITIAL|DEFER|SCHEDULE}
- <適用基準>
-
特殊な運用形態でない場合は,通常INITIALを指定してください。
RDエリア数が多いためにHiRDBの開始に時間が掛かるなどの不都合を回避したい場合は,DEFERを指定してください。
- <規則>
-
-
このオペランドは,システム共通定義のpd_rdarea_open_attribute_useオペランドにYを指定しているときだけ有効となります。
-
このオペランドはユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリアの場合に指定できます。ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリア以外のRDエリアに対してこのオペランドを指定しても,無視されます(ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリア以外のRDエリアは,INITIAL固定です)。
-
このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
-
このオペランドの指定値は,HiRDBの開始モードに関係なく次回起動後から有効となります。
-
該当するRDエリアに割り当てたHiRDBファイルシステム領域が,ほかのRDエリアに共有される場合,共有するRDエリアのオープン契機はすべて同じにする必要があります。同じでない場合,HiRDBファイルシステム領域を共有するRDエリアは,期待通りの効果が得られないことがあります。
-
- INITIAL:
-
HiRDB開始時にHiRDBファイルシステム領域をオープンして,RDエリア情報をメモリ上に常駐させるので,最初のSQLから高速な運用ができます。
- <注意事項>
-
-
HiRDB開始時のRDエリアの初期状態はオープンで,それ以降は障害閉塞への遷移を除いて,運用コマンドを実行しないかぎりRDエリアの状態は遷移しません。
-
INITIALの場合,クローズ状態のRDエリアはアクセスできません。
-
- DEFER:
-
HiRDB開始時にHiRDBファイルシステム領域をオープンしないで,RDエリアを最初にアクセスするときにHiRDBファイルシステム領域をオープンします。そのときにRDエリア情報をメモリ上に常駐させるので,2回目以降のアクセスから高速な運用ができます。
- <注意事項>
-
-
HiRDB開始時のRDエリアの初期状態はクローズで,各RDエリアに対して最初にアクセスするときに,該当するRDエリアをオープンします。以降は障害閉塞への遷移を除いて,運用コマンドを実行しないかぎりRDエリアの状態は遷移しません。
-
DEFERの場合,クローズ状態のRDエリアでもアクセスできます。
-
- SCHEDULE:
-
HiRDB開始時にHiRDBファイルシステム領域をオープンしないで,HiRDB開始後,各トランザクション内でRDエリアに対して最初にアクセスするときに,HiRDBファイルシステム領域をオープンします。そのときにRDエリア情報をメモリ上に常駐させます。ただし,トランザクション終了時にそのトランザクション内でオープンしたHiRDBファイルシステム領域をクローズするため,2回目以降のアクセス時でもオープン以降の処理をして,トランザクションに掛かる負荷は増加します。
- <注意事項>
-
-
HiRDB開始時のRDエリアの初期状態はクローズで,アクセスしたRDエリアをトランザクション内でだけオープンし,トランザクション終了時にトランザクション内でオープンしたすべてのRDエリアをクローズします。
また,pdopenコマンドを実行することで,閉塞クローズ状態になるまでの間はオープン状態にできます。そのほかの運用コマンドを使用すれば,RDエリアの状態を任意に遷移させることもできます。なお,障害事象を検知した場合には,障害閉塞となります。
-
SCHEDULEの場合,クローズ状態のRDエリアでもアクセスできます。
-
(4) page ページ長 characters
〜<符号なし整数>((4096〜30720))
RDエリアを構成するHiRDBファイルのページ長を変更する場合に,2,048の倍数のバイト単位で指定します。HiRDBファイルシステム領域作成時にセクタ長を指定した場合,セクタ長の倍数を指定してください。
このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
データディクショナリLOB用RDエリア,及びユーザLOB用RDエリアの場合は,8,192を指定してください。8,192以外の値を指定した場合でも,8,192が仮定されます。そのほかのRDエリアのページ長については,マニュアル「HiRDB システム導入・設計ガイド」を参照して適切な値を指定してください。
ここで指定したページ長は,HiRDBがRDエリアに対して入出力する最小の単位となります。
- <規則>
-
-
再初期化するRDエリアに表がある場合,ページ長を小さくすると行が格納できなくなるときがあります(データ格納時にエラーになります)。
-
FIX表がある場合,次に示す値が行長より小さくなるときにはエラーとなります。行長は,ディクショナリ表のSQL_TABLESのROW_LENGTHカラムを検索すれば確認できます。
(↓変更後ページ長÷1000↓)×1000
-
ページ長を,グローバルバッファに割り当てられているRDエリアのページ長の最大値よりも大きくした場合はエラーとなります。
-
再初期化対象のRDエリアにインデクスがある場合,インデクスのキー長が次の計算式より大きくなるようなページサイズを指定するとエラーになります。
MIN(RDエリアのページサイズ÷2−1242,4036)
(単位:バイト)
-
(5) storage control segment セグメントサイズ pages
〜<符号なし整数>((1〜16000))
セグメントサイズを変更する場合に指定します。1セグメントの大きさを,ページ数で指定してください。
このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
データディクショナリLOB用RDエリア,及びユーザLOB用RDエリアの場合は,1を指定してください。1以外の値を指定した場合でも,1が仮定されます。そのほかのRDエリアのセグメントサイズについては,マニュアル「HiRDB システム導入・設計ガイド」を参照して適切な値を指定してください。
(6) max entries 最大リスト登録数
〜<符号なし整数>((500〜50000,かつ500の倍数))
リスト用RDエリアに作成できるリストの最大数を,500の倍数で指定します。500の倍数でない値を指定した場合,500の倍数に切り上げた値が仮定されます。
このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
このオペランドをリスト用RDエリア以外のRDエリアに指定した場合,エラーとなります。
(7) extension {use 増分セグメント数 segments|nouse}
再初期化するRDエリアに自動増分を適用するかどうかを指定します。このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
RDエリアの自動増分については,マニュアル「HiRDB システム運用ガイド」を参照してください。
- <前提条件>
-
RDエリアがあるHiRDBファイルシステム領域に-eオプション又は-aオプションが指定されている必要があります。
- use 増分セグメント数 segments:
-
RDエリアの自動増分を適用します。
RDエリアの自動増分は,データディクショナリ用RDエリア,データディクショナリLOB用RDエリア,ユーザ用RDエリア,ユーザLOB用RDエリア,レジストリ用RDエリア,及びレジストリLOB用RDエリアの場合に有効となります。ほかのRDエリアにuseを指定しても,nouseが仮定されます。
自動増分の契機は,RDエリア内の空きセグメント数が自動増分契機に達したときです。pd_rdarea_extension_timingオペランドで指定できます。
- 増分セグメント数 〜<符号なし整数>((1〜64000))
-
増分セグメント数を指定します。
-
pdfmkfs -eを指定したHiRDBファイルシステム領域の場合
HiRDBファイルのエクステント数は最大24で,これを超えるとエラーとなります。また,HiRDBファイルシステム領域の空きが不足したり,使用する領域がHiRDBファイルサイズの上限を超えたりすると,エラーとなります。
HiRDBファイルシステム領域当たりの最大増分回数は,HiRDBファイルシステム領域作成時の指定値で決まるため,HiRDBファイルシステム領域内のファイル数,増分頻度を考慮し最大増分回数を定義しておく必要があります。
-
pdfmkfs -aを指定したHiRDBファイルシステム領域の場合
HiRDBファイルを格納しているディスクに,必要なHiRDBファイルシステム領域を確保する容量が不足していたり,使用する領域がHiRDBファイルサイズの上限を超えたりすると,エラーとなります。
-
- nouse:
-
RDエリアの自動増分機能を適用しません。
- <注意事項>
-
-
新たに追加される未使用セグメントは,RDエリアを構成するHiRDBファイルの最終ファイルに追加されます。
-
HiRDBファイルシステム領域の容量不足によって,未使用セグメントを確保できない場合,RDエリアの拡張又は再初期化をするか,データベース再編成ユティリティで表の再編成をしてください。
-
エクステントの数が上限値を超えた場合は,RDエリアがあるHiRDBファイルシステム領域のエクステントを統合するか,又はRDエリアに別のHiRDBファイルシステム領域のHiRDBファイルを追加してください。
エクステントを統合するには,pdfbkupでバックアップを取得し,pdfmkfsでHiRDBファイルシステム領域の初期設定をし,pdfrstrでバックアップから回復します。
-
RDエリア自動増分処理の開始から終了までの間,最終ファイルに対して排他が掛かります。
-
(8) without lock table
再初期化するRDエリア内の表に対して,データベース構成変更ユティリティ(pdmod)が排他を掛けることを抑止したい場合に指定します。
この指定によって,再初期化するRDエリア内に複数のRDエリアに分割格納した表がある場合,再初期化対象外のRDエリアに格納された表に対してSQLが実行できるようになります。
without lock tableオペランドの指定有無による再初期化中のSQL実行可否を次の図,および表に示します。
操作対象の表 |
格納先RDエリア |
without lock table指定によるSQL実行可否 |
|
---|---|---|---|
指定なし |
指定あり |
||
T1 |
RDAREA2 |
× (閉塞中エラー(KFPA11920-E)又は排他待ち) |
同左 |
T2 |
RDAREA2 |
× (閉塞中エラー(KFPA11920-E)又は排他待ち) |
同左 |
RDAREA1 |
× (排他待ち) |
○ |
|
T3 |
RDAREA2 |
× (閉塞中エラー(KFPA11920-E)又は排他待ち) |
同左 |
RDAREA3 |
○ |
同左 |
- (凡例)
-
○:指定できます。
×:指定できません。
(a) RDエリア種別によるwithout lock tableオペランドの指定可否
再初期化対象RDエリアのRDエリア種別によるwithout lock tableオペランドの指定可否を次の表に示します。
RDエリア種別 |
without lock tableオペランドの指定可否 |
|
---|---|---|
ユーザ用 |
共用RDエリア |
× |
上記以外 |
○ |
|
データディクショナリLOB用 ユーザLOB用 リスト用 レジストリ用 レジストリLOB用 |
× |
- (凡例)
-
○:指定できます。
×:指定できません(KFPX24281-Eエラーとなります)。
(b) インデクス定義の条件によるwithout lock tableオペランドの指定可否
再初期化対象RDエリアに格納している横分割表に対する,インデクス定義の条件によるwithout lock tableオペランドの指定可否を次の表に示します。
インデクス定義の条件 |
without lock table オペランドの 指定可否 |
||||
---|---|---|---|---|---|
インデクスの定義 |
インデクスの横分割 |
インデクスの種別 |
表の分割方法 |
インデクスの分割方法 |
|
なし |
− |
− |
− |
− |
○ |
あり |
なし |
− |
− |
− |
× |
あり |
分割キー インデクス |
− |
− |
○※ |
|
非分割キー インデクス |
サーバ内分割 |
− |
○※ |
||
サーバ間分割 (サーバ内 分割なし) |
− |
× |
|||
サーバ間分割 (サーバ内 分割あり) |
表の分割数と 一致する |
○※ |
|||
表の分割数と 一致しない |
× |
- (凡例)
-
○:指定できます。
×:指定できません(KFPX24281-Eエラーとなります)。
−:該当しません。
- 注※
-
横分割表とインデクスをどちらも再初期化対象RDエリアに格納していて,インデクス定義時に指定したインデクス格納先RDエリアの指定順序と,表定義時に指定した表格納先RDエリアの指定順序が異なる場合は,without lock tableオペランドは指定できません(KFPX24281-Eエラーとなります)。without lock tableオペランドを指定できないインデクスの定義例を次の図に示します。
図7‒5 without lock tableオペランドを指定できないインデクス定義例
再初期化対象RDエリアに複数の表を格納している場合,指定できないインデクスを定義した表が1つでもあれば,without lock tableオペランドは指定できません。
(9) file name "HiRDBファイルシステム領域名¥HiRDBファイル名"
〜((167文字以内))
再初期化するRDエリアを構成する,HiRDBファイルシステム領域の名称とHiRDBファイルの名称を指定します。
HiRDBファイルシステム領域名\HiRDBファイル名は引用符(")で囲んで指定してください。
- <規則>
-
-
このオペランドを省略した場合,RDエリアの再初期化実行前の指定値を引き継ぎます。
-
引用符内に改行文字を含まないようにしてください。
-
一つのRDエリアに対して,最大16個のHiRDBファイルを割り当てられます。
-
指定したHiRDBファイルシステム領域に,pdmodがHiRDBファイルを作成します。既にHiRDBファイルがある場合は,pdmodがHiRDBファイルをいったん削除し,新たに作成するため,HiRDBファイルに対して権限がないときはエラーとなります。
-
HiRDBファイルシステム領域名\HiRDBファイル名は,HiRDBシステム内で重複しないようにしてください。
-
リスト用RDエリアの場合は,使用目的がWORKのHiRDBファイルシステム領域を使用してください。
-
HiRDBファイルシステム領域名までは大文字,小文字を区別しませんが,HiRDBファイル名は大文字,小文字を区別します。
-
- HiRDBファイルシステム領域名 〜<パス名>
-
HiRDBファイルシステム領域の名称を指定します。
- HiRDBファイル名 〜<HiRDBファイル名>((1〜30文字))
-
HiRDBファイルの名称を指定します。plで始まる名称は指定できません。