3.3.2 create rdarea文
create 〔shared〕 rdarea RDエリア名 for {masterdirectory|datadirectory|datadictionary 〔of routines〕|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エリアとして作成する場合に指定します。
- <規則>
-
-
sharedを指定する場合,システム定義のpd_shared_rdarea_useオペランドにYを指定する必要があります。指定していない場合はエラーになります。
-
HiRDB/シングルサーバの場合,sharedを指定するとエラーになります。
-
共用RDエリアとして作成できるのはユーザ用RDエリアだけです。
-
共用RDエリアは,使用目的がSDBのHiRDBファイルシステム領域に作成してください。
-
共用RDエリアとして作成したRDエリアは,server nameオペランドで指定したサーバ以外のサーバからも参照できます(すべてのバックエンドサーバから参照できます)。
-
(2) RDエリア名
〜<識別子>((1〜30))
HiRDBで使用するRDエリアの名称を指定します。
RDエリア名にALLは指定できません。RDエリア名を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字として扱われます。
- (例)
-
-
create rdarea "pdbuser01" for …
この場合,RDエリア名はpdbuser01で扱われます。
-
create rdarea pdbuser01 for …
この場合,RDエリア名はPDBUSER01で扱われます。
-
(3) for {masterdirectory|datadirectory|datadictionary 〔of routines〕|user used by {PUBLIC|認可識別子〔,認可識別子〕…}|LOB used by {HiRDB(ディクショナリ表の名称)|PUBLIC|認可識別子〔,認可識別子〕…}|list}
- masterdirectory
-
RDエリアがマスタディレクトリ用RDエリアの場合に指定します。
- datadirectory
-
RDエリアがデータディレクトリ用RDエリアの場合に指定します。
- datadictionary
-
RDエリアがデータディクショナリ用RDエリアの場合に指定します。
- of routines
-
ストアドプロシジャ,ストアドファンクション,及びトリガに関するディクショナリ表を,ほかのディクショナリ表と別のRDエリアに格納する場合に指定します。
このオペランドは,一つのデータディクショナリ用RDエリアにだけ指定できます。また,このオペランドを指定した場合,データディクショナリLOB用RDエリアを必ず指定してください。
- user used by {PUBLIC|認可識別子〔,認可識別子〕…}
-
RDエリアがユーザ用RDエリアの場合に指定します。
- PUBLIC
-
ユーザ用RDエリアを公用RDエリアとする場合に指定します。
- 認可識別子〔,認可識別子〕… 〜<識別子>((1〜30))
-
ユーザ用RDエリアを私用RDエリアにする場合,ユーザ用RDエリアを利用できるユーザの認可識別子を指定します。
<規則>
-
認可識別子を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字としてHiRDBシステムに登録されます。
-
認可識別子を指定すると,その私用RDエリアに対してRDエリア利用権限を持つことができます。
-
認可識別子は,最大255個指定できます。
-
認可識別子にPUBLIC,MASTER,HiRDB,及びALLは指定できません。
-
- LOB used by {HiRDB(ディクショナリ表の名称)|PUBLIC|認可識別子〔,認可識別子〕…}
-
RDエリアがデータディクショナリLOB用RDエリア又はユーザLOB用RDエリアの場合に指定します。
- HiRDB(ディクショナリ表の名称)
-
RDエリアがデータディクショナリLOB用RDエリアの場合に指定します。ディクショナリ表の名称には,SQL_ROUTINESを指定してください。
<規則>
-
ストアドプロシジャ,又はストアドファンクションを使用する場合には,必ずこのRDエリアを定義してください。
-
このRDエリアには,ストアドプロシジャ及びストアドファンクションの定義ソース文を格納するRDエリアと,ストアドプロシジャ及びストアドファンクションのオブジェクトを格納するRDエリアがあるため,指定する場合は二つする必要があります(このRDエリアを指定したcreate rdarea文を2個指定します)。一つ目のRDエリアにはストアドプロシジャ及びストアドファンクションの定義ソース文が格納され,二つ目のRDエリアにはストアドプロシジャ及びストアドファンクションのオブジェクトが格納されます。
-
データベース初期設定ユティリティ実行時にこのRDエリアを定義していない場合に,ストアドプロシジャ及びストアドファンクションを使用するときには,データベース構成変更ユティリティでこのRDエリアを追加してください。
-
- PUBLIC
-
ユーザLOB用RDエリアを公用RDエリアとする場合に指定します。
- 認可識別子〔,認可識別子〕… 〜<識別子>((1〜30))
-
ユーザLOB用RDエリアを私用RDエリアにする場合,ユーザLOB用RDエリアを利用できるユーザの認可識別子を指定します。
<規則>
-
認可識別子を引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字としてHiRDBシステムに登録されます。
-
認可識別子を指定すると,その私用RDエリアに対してRDエリア利用権限を持つことができます。
-
認可識別子は,最大255個指定できます。
-
認可識別子にPUBLIC,MASTER,HiRDB,及びALLは指定できません。
-
- list
-
RDエリアがリスト用RDエリアの場合に指定します。
(4) server name サーバ名
〜<識別子>((1〜8))
- 【HiRDB/シングルサーバの場合】
-
HiRDB/シングルサーバの場合はserver nameオペランドを指定しないでください。
- 【HiRDB/パラレルサーバの場合】
-
RDエリアを管理するサーバの名称を指定します。
マスタディレクトリ用RDエリア,データディレクトリ用RDエリア,データディクショナリ用RDエリア,及びデータディクショナリLOB用RDエリアの場合,ディクショナリサーバのサーバ名を指定してください。ディクショナリサーバ以外のサーバ名を指定した場合でも,ディクショナリサーバのサーバ名が仮定されます。
ユーザ用RDエリア,ユーザLOB用RDエリア,及びリスト用RDエリアの場合,バックエンドサーバのサーバ名を指定してください。バックエンドサーバ以外のサーバ名を指定した場合は,エラーとなります。
共用RDエリアを作成する場合,このオペランドで指定したサーバが更新可能バックエンドサーバとなります。
一つのサーバで複数のRDエリアを管理する場合,同一サーバ名のcreate rdarea文は続けて指定する必要があります。例を次に示します。
- <例1>
create rdarea A … server name BES1 …; create rdarea B … server name BES1 …; create rdarea C … server name BES2 …;
同一サーバ名(BES1)のcreate rdarea文を続けて指定しているので,エラーにはなりません。
- <例2>
create rdarea A … server name BES1 …; create rdarea B … server name BES2 …; create rdarea C … server name BES1 …;
同一サーバ名(BES1)のcreate rdarea文を続けて指定していないので,エラーになります。
(5) 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固定です)。
-
このオペランドを省略した場合,pd_rdarea_open_attributeオペランドの指定値が仮定されます。
-
該当する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エリアでもアクセスできます。
-
(6) page ページ長 characters
〜<符号なし整数>((4096〜30720))《4096又は8192》
RDエリアを構成するHiRDBファイルのページ長を,2,048の倍数のバイト単位で指定します。HiRDBファイルシステム領域作成時にセクタ長を指定した場合,2,048の倍数かつセクタ長の倍数を指定してください。
- <マスタディレクトリ用RDエリア,データディレクトリ用RDエリアの場合>
-
4,096を指定してください。4,096以外の値を指定した場合でも,4,096が仮定されます。
- <データディクショナリLOB用RDエリア,ユーザLOB用RDエリアの場合>
-
8,192を指定してください。8,192以外の値を指定した場合でも,8,192が仮定されます。
そのほかのRDエリアのページ長については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照して適切な値を指定してください。
ここで指定したページ長は,HiRDBがRDエリアに対して入出力する最小の単位となります。
(7) storage control segment セグメントサイズ pages
〜<符号なし整数>((1〜16000))《1又は50》
1セグメントの大きさを,ページ数で指定します。
- <マスタディレクトリ用RDエリア,データディレクトリ用RDエリアの場合>
-
50を指定してください。50以外の値を指定した場合でも,50が仮定されます。
- <データディクショナリLOB用RDエリア,ユーザLOB用RDエリアの場合>
-
1を指定してください。1以外の値を指定した場合でも,1が仮定されます。
そのほかのRDエリアのセグメントサイズについては,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照して適切な値を指定してください。
(8) max entries 最大リスト登録数
〜<符号なし整数>((500〜50000,かつ500の倍数))≪500≫
リスト用RDエリアに作成できるリストの最大数を,500の倍数で指定します。500の倍数でない値を指定した場合,500の倍数に切り上げた値が仮定されます。
このオペランドをリスト用RDエリア以外のRDエリアに指定した場合,エラーとなります。
(9) 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エリアの自動増分機能を適用しません。
- <注意事項>
-
-
新たに追加される未使用セグメントは,RDエリアを構成するHiRDBファイルの最終ファイルに追加されます。
-
HiRDBファイルシステム領域の容量不足によって,未使用セグメントを確保できない場合,RDエリアの拡張又は再初期化をするか,データベース再編成ユティリティで表の再編成をしてください。
-
エクステントの数が上限値を超えた場合は,RDエリアがあるHiRDBファイルシステム領域のエクステントを統合するか,又はRDエリアに別のHiRDBファイルシステム領域のHiRDBファイルを追加してください。エクステントを統合するには,pdfbkupでバックアップを取得し,pdfmkfsでHiRDBファイルシステム領域の初期設定をし,pdfrstrでバックアップから回復します。
-
RDエリア自動増分処理の開始から終了までの間,最終ファイルに対して排他が掛かります。
-
(10) 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文で属性を変更して再作成してください。
(11) file name "HiRDBファイルシステム領域名¥HiRDBファイル名"
〜((167文字以内))
RDエリアに対して割り当てる,HiRDBファイルシステム領域の名称とHiRDBファイルの名称を指定します。
HiRDBファイルシステム領域名\HiRDBファイル名は引用符(")で囲んで指定してください。
- <規則>
-
-
引用符内には改行文字を含まないようにしてください。
-
一つのRDエリアに対して,最大16個のHiRDBファイルを割り当てられます。
-
HiRDBファイルシステム領域名\HiRDBファイル名は,HiRDBシステム内で重複しないようにしてください。
-
リスト用RDエリアの場合は,使用目的がWORKのHiRDBファイルシステム領域を使用してください。
-
マスタディレクトリ用RDエリアを複数のHiRDBファイルで構成する場合,先頭のHiRDBファイル名はシステム定義のpd_master_file_nameオペランドに指定してある名称と同じにしてください。
-
"HiRDBファイルシステム領域名\HiRDBファイル名"のHiRDBファイルシステム領域名までは大文字,小文字を区別しませんが,HiRDBファイル名は大文字,小文字を区別します。
-
- HiRDBファイルシステム領域名 〜<パス名>
-
HiRDBファイルシステム領域の名称を指定します。
- HiRDBファイル名 〜<HiRDBファイル名>((1〜30文字))
-
HiRDBファイルの名称を指定します。plで始まる名称は指定できません。
(12) initial HiRDBファイル内セグメント数 segments
HiRDBファイルのセグメント数を指定します。
ただし,HiRDBファイルの大きさが64ギガバイトを超えるようなセグメント数は指定できません。各RDエリアを構成するHiRDBファイルの総セグメント数は次の計算式より大きい値を指定してください。
RDエリアの種別 |
最小セグメント数 |
---|---|
マスタディレクトリ用RDエリア |
4+↑すべてのRDエリア数÷800↑ |
データディレクトリ用RDエリア |
1 |
データディクショナリ用RDエリア※1 |
212※3 |
データディクショナリLOB用RDエリア※2 |
1 |
ユーザ用RDエリア |
1 |
ユーザLOB用RDエリア |
1 |
リスト用RDエリア |
1 |
- 注※1
-
データディクショナリ用RDエリアが複数ある場合,次に示す表の順に,セグメント数の多いRDエリアから1RDエリアに1ディクショナリ表ずつ格納されます。ディクショナリ表のインデクスは,対応するディクショナリ表と同じRDエリアに格納されます。したがって,データディクショナリ用RDエリアが複数ある場合は,格納されるディクショナリ表及びそのディクショナリ表のインデクスの数が最小セグメント数となります。
格納順序
ディクショナリ表の名称
インデクス数
1
SQL_PHYSICAL_FILES
2
2
SQL_RDAREAS
2
3
SQL_TABLES
2
4
SQL_COLUMNS
3
5
SQL_INDEXES
3
6
SQL_USERS
1
7
SQL_RDAREA_PRIVILEGES
2
8
SQL_TABLE_PRIVILEGES
2
9
SQL_DIV_TABLE
3
10
システムが使用する表
2
11
SQL_INDEX_COLINF
2
12
SQL_TABLE_STATISTICS
1
13
SQL_COLUMN_STATISTICS
1
14
SQL_INDEX_STATISTICS
2
15
SQL_VIEW_TABLE_USAGE
3
16
SQL_VIEWS
2
17
システムが使用する表
2
18
SQL_DIV_INDEX
2
19
SQL_DIV_COLUMN
2
20
SQL_REFERENTIAL_CONSTRAINTS
3
21
SQL_ALIASES
1
22
SQL_DATATYPES
3
23
SQL_DATATYPE_RESOURCES
2
24
SQL_TABLE_RESOURCES
3
25
SQL_PLUGINS
3
26
SQL_PLUGIN_ROUTINES
4
27
SQL_PLUGIN_ROUTINE_PARAMS
3
28
SQL_INDEX_TYPES
2
29
SQL_INDEX_RESOURCES
2
30
SQL_INDEX_DATATYPE
2
31
SQL_INDEX_FUNCTION
2
32
SQL_TYPE_RESOURCES
3
33
SQL_INDEX_TYPE_FUNCTION
1
34
SQL_EXCEPT
3
35
システムが使用する表
0
36
システムが使用する表
0
37
SQL_TRIGGERS
4
38
システムが使用する表
2
39
SQL_TRIGGER_COLUMNS
2
40
SQL_TRIGGER_DEF_SOURCE
2
41
SQL_TRIGGER_USAGE
4
42
SQL_PARTKEY
1
43
SQL_PARTKEY_DIVISION
1
44
SQL_AUDITS
3
45
システムが使用する表
2
46
SQL_KEYCOLUMN_USAGE
2
47
SQL_TABLE_CONSTRAINTS
2
48
SQL_CHECKS
2
49
SQL_CHECK_COLUMNS
2
50
SQL_DIV_TYPE
1
51
SQL_SYSPARAMS
1
52
システムが使用する表
1
53
SQL_INDEX_XMLINF
2
54
SQL_SEQUENCES
2
55
システムが使用する表
1
56
システムが使用する表
3
57
システムが使用する表
4
58
システムが使用する表
5
59
システムが使用する表
4
60
システムが使用する表
3
61
SQL_ACCESS_SECURITY
2
62
SQL_ROUTINES
4
63
SQL_ROUTINE_RESOURCES
4
64
SQL_ROUTINE_PARAMS
3
- 注※2
-
データディクショナリLOB用RDエリアを指定していない場合,SQL_ROUTINES,SQL_ROUTINE_RESOURCES,及びSQL_ROUTINE_PARAMSは作成されません。また,ストアドプロシジャ及びストアドファンクションに関するディクショナリ表を格納するデータディクショナリ用RDエリア(of routinesを指定したRDエリア)がある場合,SQL_ROUTINES,SQL_ROUTINE_RESOURCES,及びSQL_ROUTINE_PARAMSはそのデータディクショナリ用RDエリアに格納されます。
- 注※3
-
HiRDBが作成するディクショナリ表数及びディクショナリ表のインデクス数の合計を示します。
セグメント数は,データページ部分の総ページ数÷セグメントサイズで求めてください。データページ部分の総ページ数の見積もり式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。