Hitachi

ノンストップデータベース HiRDB Version 9 コマンドリファレンス(Windows(R)用)


7.3.3 制御文(create rdarea文)

create 〔shared〕
       rdarea RDエリア名
       〔globalbuffer グローバルバッファ名〕
       for {datadictionary of {routines|dbmanagement}|user used by {PUBLIC|認可識別子〔,認可識別子〕…}|LOB used by {HiRDB(ディクショナリ表の名称)|PUBLIC|認可識別子〔,認可識別子〕…}|list}
       〔server name サーバ名〕
       〔open attribute {INITIAL|DEFER|SCHEDULE}〕
       〔page ページ長 characters〕
       〔storage control segment セグメントサイズ pages〕
       〔max entries 最大リスト登録数〕
       〔extension {use 増分セグメント数 segments|nouse〕
       〔temporary table {use {shared|occupied}|nouse〕
       file name "HiRDBファイルシステム領域名\HiRDBファイル名"
        initial HiRDBファイル内セグメント数 segments
       〔file name "HiRDBファイルシステム領域名\HiRDBファイル名"
         initial HiRDBファイル内セグメント数 segments〕…
 ;

file nameオペランド,initialオペランドは,必ずcreate rdarea文の最後に指定してください。

〈この項の構成〉

(1) shared

このオペランドは,HiRDB/パラレルサーバの場合に指定できます。

RDエリアを共用RDエリアとして追加する場合に指定します。

<規則>
  1. sharedを指定する場合,システム定義のpd_shared_rdarea_useオペランドにYを指定する必要があります。指定していない場合はエラーになります。

  2. HiRDB/シングルサーバの場合,sharedを指定するとエラーになります。

  3. 共用RDエリアとして作成したRDエリアは,server nameオペランドで指定したサーバ以外のサーバからも参照できます(すべてのバックエンドサーバから参照できます)。

(2) RDエリア名

   〜<識別子>((1〜30))

追加するRDエリアの名称を指定します。

RDエリア名にALLは指定できません。RDエリア名を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字として扱われます。また,RDエリア名に空白を含む場合は,引用符で囲んでください。

(3) globalbuffer グローバルバッファ名

   〜<識別子>((1〜16))

追加したRDエリアに,一時的にグローバルバッファを割り当てたい場合,HiRDBシステムにある(HiRDB/パラレルサーバの場合は,追加するサーバにある)グローバルバッファの名称を指定します。

グローバルバッファについては,pdbuflsコマンドで確認できます。

<規則>
  1. インデクス用,又はLOB用のグローバルバッファは指定できません。また,インメモリデータバッファも指定できません。

  2. データディクショナリ用RDエリアの場合は,必ずこのオペランドを指定してください。

  3. 面数指定のグローバルバッファの場合,指定するグローバルバッファのグローバルバッファ長は,追加するRDエリアのページ長以上でなければなりません。グローバルバッファ長は,pdbuflsコマンドで確認できます。

  4. グローバルバッファ長は,HiRDB開始時にそのグローバルバッファに割り当てているRDエリアの最大ページ長となっています。

  5. ここで指定したグローバルバッファの割り当ては,次回のHiRDBの正常開始時,又は計画停止後の再開始時には無効となります。そのため,次回のHiRDBの正常開始時,又は計画停止後の再開始時には,システム共通定義のグローバルバッファの割り当てを変更する必要があります。

  6. HiRDBがグローバルバッファの割り当てに失敗した場合,RDエリアは追加されません。

(4) for {datadictionary of {routines|dbmanagement}|user used by {PUBLIC|認可識別子〔,認可識別子〕…}|LOB used by {HiRDB(ディクショナリ表の名称)|PUBLIC|認可識別子〔,認可識別子〕…}|list}

追加するRDエリアの種類を指定します。

datadictionary of routines

RDエリアがデータディクショナリ用RDエリアの場合に指定します。

このデータディクショナリ用RDエリアは,ストアドプロシジャ,ストアドファンクション,及びトリガに関するディクショナリ表(SQL_ROUTINES,SQL_ROUTINE_RESOURCES,及びSQL_ROUTINE_PARAMS)を格納するRDエリアとなります。

データディクショナリ用RDエリアを追加する場合には,必ずデータディクショナリLOB用RDエリアも同時に指定してください。

datadictionary of dbmanagement

解析情報表及び運用履歴表を格納するデータディクショナリ用RDエリアの場合に指定します。

このデータディクショナリ用RDエリアは,再編成時期予測機能を使用する場合に必要となります。

user used by {PUBLIC|認可識別子〔,認可識別子〕…}

RDエリアがユーザ用RDエリアの場合に指定します。

PUBLIC

ユーザ用RDエリアを公用RDエリアとする場合に指定します。

認可識別子〔,認可識別子〕… 〜<識別子>((1〜30))

ユーザ用RDエリアを私用RDエリアにする場合,ユーザ用RDエリアを利用できるユーザの認可識別子を指定します。

<規則>

  1. 認可識別子を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字としてHiRDBシステムに登録されます。

  2. 認可識別子を指定すると,その私用RDエリアに対してRDエリア利用権限を持つことができます。

  3. 認可識別子は,最大255個指定できます。

  4. 認可識別子にPUBLIC,MASTER,HiRDB,及びALLは指定できません。

LOB used by {HiRDB(ディクショナリ表の名称)|PUBLIC|認可識別子〔,認可識別子〕…}

RDエリアがデータディクショナリLOB用RDエリア,又はユーザLOB用RDエリアの場合に指定します。

HiRDB(ディクショナリ表の名称)

RDエリアがデータディクショナリLOB用RDエリアの場合に指定します。ディクショナリ表の名称には,SQL_ROUTINESを指定してください。

このRDエリアにはストアドプロシジャの定義ソース文とオブジェクトが格納されます。指定する場合は二つ指定する必要があります(このRDエリアを指定したcreate rdarea文を2個指定します)。一つ目のRDエリアにはストアドプロシジャの定義ソース文が格納され,二つ目のRDエリアにはストアドプロシジャのオブジェクトが格納されます。

<注意事項>

  1. データディクショナリLOB用RDエリアを追加する場合,ストアドプロシジャに関するディクショナリ表が作成されます。ストアドプロシジャに関するディクショナリ表を,そのほかのディクショナリ表と別のデータディクショナリ用RDエリアに格納したい場合は,同時にデータディクショナリ用RDエリアも追加できます。

  2. データディクショナリLOB用RDエリアを追加すると,抽象データ型定義,ストアドファンクション,及びストアドプロシジャを使用できるようになります。

  3. 既にデータディクショナリLOB用RDエリアがある場合に,このオペランドを指定したときにはエラーとなります。

  4. データディクショナリLOB用RDエリアを追加する場合,制御文ファイル中に同時に指定できるRDエリアはデータディクショナリ用RDエリアだけです。

PUBLIC

ユーザLOB用RDエリアを公用RDエリアとする場合に指定します。

認可識別子〔,認可識別子〕… 〜<識別子>((1〜30))

ユーザLOB用RDエリアを私用RDエリアにする場合,ユーザLOB用RDエリアを利用できるユーザの認可識別子を指定します。

<規則>

  1. 認可識別子を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字としてHiRDBシステムに登録されます。

  2. 認可識別子を指定すると,その私用RDエリアに対してRDエリア利用権限を持つことができます。

  3. 認可識別子は,最大255個指定できます。

  4. 認可識別子にPUBLIC,MASTER,HiRDB,及びALLは指定できません。

list

RDエリアがリスト用RDエリアの場合に指定します。

(5) server name サーバ名

   〜<識別子>((1〜8))

【HiRDB/シングルサーバの場合】

HiRDB/シングルサーバの場合はserver nameオペランドを指定しないでください。

【HiRDB/パラレルサーバの場合】

RDエリアを管理するサーバの名称を指定します。

データディクショナリ用RDエリア及びデータディクショナリLOB用RDエリアの場合,ディクショナリサーバのサーバ名を指定してください。ディクショナリサーバ以外のサーバ名を指定した場合でも,ディクショナリサーバのサーバ名が仮定されます。

ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリアの場合,バックエンドサーバのサーバ名を指定してください。バックエンドサーバ以外のサーバ名を指定した場合は,エラーとなります。

共用RDエリアを追加する場合,このオペランドで指定したサーバが更新可能バックエンドサーバとなります。

(6) open attribute {INITIAL|DEFER|SCHEDULE}

RDエリアのオープン契機を指定します。

<適用基準>

特殊な運用形態でない場合は,通常INITIALを指定してください。

RDエリア数が多いためにHiRDBの開始に時間が掛かるなどの不都合を回避したい場合は,DEFERを指定してください。

<規則>
  1. このオペランドは,システム共通定義のpd_rdarea_open_attribute_useオペランドにYを指定しているときだけ有効となります。

  2. このオペランドはユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリアの場合に指定できます。ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリア以外のRDエリアに対してこのオペランドを指定しても,無視されます(ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリア以外のRDエリアは,INITIAL固定です)。

  3. このオペランドを省略した場合,システム共通定義のpd_rdarea_open_attributeオペランドの指定値が仮定されます。

  4. このオペランドの指定値は,HiRDBの開始モードに関係なく次回起動後から有効となります。

  5. 該当するRDエリアに割り当てたHiRDBファイルシステム領域が,ほかのRDエリアに共有される場合,共有するRDエリアのオープン契機はすべて同じにする必要があります。同じでない場合,HiRDBファイルシステム領域を共有するRDエリアは,期待通りの効果が得られないことがあります。

INITIAL:

HiRDB開始時にHiRDBファイルシステム領域をオープンして,RDエリア情報をメモリ上に常駐させるので,最初のSQLから高速な運用ができます。

<注意事項>
  1. HiRDB開始時のRDエリアの初期状態はオープンで,それ以降は障害閉塞への遷移を除いて,運用コマンドを実行しないかぎりRDエリアの状態は遷移しません。

  2. INITIALの場合,クローズ状態のRDエリアはアクセスできません。

DEFER:

HiRDB開始時にHiRDBファイルシステム領域をオープンしないで,RDエリアを最初にアクセスするときにHiRDBファイルシステム領域をオープンします。そのときにRDエリア情報をメモリ上に常駐させるので,2回目以降のアクセスから高速な運用ができます。

<注意事項>
  1. HiRDB開始時のRDエリアの初期状態はクローズで,各RDエリアに対して最初にアクセスするときに,該当するRDエリアをオープンします。以降は障害閉塞への遷移を除いて,運用コマンドを実行しないかぎりRDエリアの状態は遷移しません。

  2. DEFERの場合,クローズ状態のRDエリアでもアクセスできます。

SCHEDULE:

HiRDB開始時にHiRDBファイルシステム領域をオープンしないで,HiRDB開始後,各トランザクション内でRDエリアに対して最初にアクセスするときに,HiRDBファイルシステム領域をオープンします。そのときにRDエリア情報をメモリ上に常駐させます。ただし,トランザクション終了時にそのトランザクション内でオープンしたHiRDBファイルシステム領域をクローズするため,2回目以降のアクセス時でもオープン以降の処理をして,トランザクションに掛かる負荷は増加します。

<注意事項>
  1. HiRDB開始時のRDエリアの初期状態はクローズで,アクセスしたRDエリアをトランザクション内でだけオープンし,トランザクション終了時にトランザクション内でオープンしたすべてのRDエリアをクローズします。

    また,pdopenコマンドを実行することで,閉塞クローズ状態になるまでの間はオープン状態にできます。そのほかの運用コマンドを使用すれば,RDエリアの状態を任意に遷移させることもできます。なお,障害事象を検知した場合には,障害閉塞となります。

  2. SCHEDULEの場合,クローズ状態のRDエリアでもアクセスできます。

(7) page ページ長 characters

   〜<符号なし整数>((4096〜30720))《4096又は8192》

RDエリアを構成するHiRDBファイルのページ長を,2,048の倍数のバイト単位で指定します。HiRDBファイルシステム領域作成時にセクタ長を指定した場合,2,048の倍数かつセクタ長の倍数を指定してください。

次のRDエリアは,ページ長が固定となります。

そのほかのRDエリアのページ長については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照して適切な値を指定してください。

ここで指定したページ長は,HiRDBがRDエリアに対して入出力する最小の単位となります。

(8) storage control segment セグメントサイズ pages

   〜<符号なし整数>((1〜16000))《1又は50》

1セグメントの大きさを,ページ数で指定します。

データディクショナリLOB用RDエリア,及びユーザLOB用RDエリアの場合は,1を指定してください。1以外の値を指定した場合でも,1が仮定されます。そのほかのRDエリアのセグメントサイズについては,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照して適切な値を指定してください。

(9) max entries 最大リスト登録数

   〜<符号なし整数>((500〜50000,かつ500の倍数))≪500≫

リスト用RDエリアに作成できるリストの最大数を,500の倍数で指定します。

500の倍数でない値を指定した場合,500の倍数に切り上げた値が仮定されます。

このオペランドをリスト用RDエリア以外のRDエリアに指定した場合,エラーとなります。

(10) extension {use 増分セグメント数 segments|nouse

追加するRDエリアに自動増分を適用するかどうかを指定します。

RDエリアの自動増分については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。

<前提条件>

RDエリアがあるHiRDBファイルシステム領域に-eオプション又は-aオプションが指定されている必要があります。

use 増分セグメント数 segments:

RDエリアの自動増分を適用します。

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エリアの自動増分機能を適用しません。

<注意事項>
  1. 新たに追加される未使用セグメントは,RDエリアを構成するHiRDBファイルの最終ファイルに追加されます。

  2. HiRDBファイルシステム領域の容量不足によって,未使用セグメントを確保できない場合,RDエリアの拡張又は再初期化をするか,データベース再編成ユティリティで表の再編成をしてください。

  3. エクステントの数が上限値を超えた場合は,RDエリアがあるHiRDBファイルシステム領域のエクステントを統合するか,又はRDエリアに別のHiRDBファイルシステム領域のHiRDBファイルを追加してください。

    エクステントを統合するには,pdfbkupでバックアップを取得し,pdfmkfsでHiRDBファイルシステム領域の初期設定をし,pdfrstrでバックアップから回復します。

  4. RDエリア自動増分処理の開始から終了までの間,最終ファイルに対して排他が掛かります。

(11) temporary table {use {shared|occupied}|nouse

ユーザ用RDエリアを一時表用RDエリアとして使用するかどうかを指定します。一時表用RDエリアについては,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

<前提条件>

追加するRDエリアが公用RDエリア(user used by PUBLIC指定)である必要があります。それ以外の場合にtemporary tableオペランドを指定すると,エラーになります。また,sharedオペランドと同時に指定したときも,エラーになります。なお,この前提条件は,nouseを指定したときには該当しません。

use shared:

ユーザ用RDエリアを,SQLセッション間共有属性の一時表用RDエリアとして使用します。

use occupied:

ユーザ用RDエリアを,特定SQLセッション占有属性の一時表用RDエリアとして使用します。

nouse:

ユーザ用RDエリアを一時表用RDエリアとして使用しません。

<注意事項>

RDエリア作成後に一時表用RDエリアの使用有無,及び一時表用RDエリアの属性(SQLセッション間共有属性又は特定SQLセッション占有属性)を変更する場合,データベース構成変更ユティリティのremove rdarea文で該当するRDエリアを削除し,create rdarea文で属性を変更して再作成してください。

(12) file name "HiRDBファイルシステム領域名¥HiRDBファイル名"

   〜((167文字以内))

RDエリアに対して割り当てる,HiRDBファイルシステム領域の名称とHiRDBファイルの名称を指定します。

<規則>
  1. HiRDBファイルシステム領域名\HiRDBファイル名は引用符(")で囲んで指定してください。

  2. 引用符内に改行文字を含まないようにしてください。

  3. 一つのRDエリアに対して,最大16個のHiRDBファイルを割り当てられます。

  4. 指定したHiRDBファイルシステム領域に,pdmodがHiRDBファイルを作成します。

  5. HiRDBファイルシステム領域名\HiRDBファイル名は,HiRDBシステム内で重複しないようにしてください。

  6. リスト用RDエリアの場合は,使用目的がWORKのHiRDBファイルシステム領域を使用してください。

  7. HiRDBファイルシステム領域名までは大文字,小文字を区別しませんが,HiRDBファイル名は大文字,小文字を区別します。

HiRDBファイルシステム領域名 〜<パス名>

HiRDBファイルシステム領域の名称を指定します。

HiRDBファイル名 〜<HiRDBファイル名>((1〜30文字))

HiRDBファイルの名称を指定します。plで始まる名称は指定できません。

(13) initial HiRDBファイル内セグメント数 segments

   〜<符号なし整数>

HiRDBファイルのセグメント数を指定します。

セグメント数は,データページ部分の総ページ数÷セグメントサイズで求めてください。データページ部分の総ページ数の見積もり式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。また,HiRDBファイルの大きさが64ギガバイトを超えるようなセグメント数は指定できません。