# CHAPTER 2: データ辞書

## 2.1 はじめに

Empressデータベースはオペレーティングシステムのディレクトリとして存在します。 このディレクトリにはデータを格納するためのいくつかのオペレーティングシステム システムファイルが含まれます。 Empress は ユーザーとこれらのファイルの間のインターフェイスです。 たとえば、テーブルを作成したときにEmpressはそのテーブルのデータを格納するため のオペレーティングシステムファイルを作成します。 また、テーブルにクエリを実行するときは、Empressは対応したオペレーティングシステム ファイルから情報を検索します。

Empress データベースはオペレーティングシステムのプロンプトから 以下のコマンドを使って作成します。

       empmkdb database_name

データベースのディレクトリは empmkdb で与えられたデータベース名`database_name`に対応し、 以下のファイルとサブディレクトリが作成されます。

    00010001.ix   0003.rel      00070004.dtf  00100001.ix   00130005.dtf
    00010005.dtf  00040001.ix   00070007.dtf  00100001.ixl  00130006.dtf
    0001.rel      00040001.ixl  0007.rel      00100013.dtf  00130007.dtf
    00020001.ix   00040002.ix   00080001.ix   0010.rel      00130011.dtf
    00020008.dtf  00040002.ixl  00080001.ixl  00110001.ix   00130016.dtf
    00020009.dtf  0004.rel      00080003.dtf  00110003.dtf  0013.rel
    00020010.dtf  00050001.ix   0008.rel      00110008.dtf  00140001.ix
    00020011.dtf  00050001.ixl  00090001.ix   00110013.dtf  00140001.ixl
    00020012.dtf  0005.rel      00090001.ixl  0011.rel      00140002.ix
    00020013.dtf  00060001.ix   00090011.dtf  00120001.ix   00140002.ixl
    00020016.dtf  00060008.dtf  00090012.dtf  00120003.dtf  0014.rel
    00020017.dtf  00060009.dtf  00090013.dtf  00120009.dtf  cdinator
    0002.rel      00060011.dtf  00090014.dtf  00120012.dtf  dd_cache
    00030001.ix   00060012.dtf  00090015.dtf  0012.rel      _lock
    00030001.ixl  00060016.dtf  00090016.dtf  00130001.ix   _module
    00030013.dtf  0006.rel      00090017.dtf  00130001.ixl  tabzero
    00030014.dtf  00070001.ix   0009.rel      00130003.dtf  _trn

これらのすべてのオペレーティングシステムファイルとディレクトリは Empress データベースデータ辞書です。

- データ辞書テーブル:
  - メインデータファイル - `.rel` ファイル,
  - 可変長データオーバーフローファイル - `.dtf` ファイル,
  - インデックスとインデックスオーバーフローファイル - `.ix` と `.ixl` ファイル.
- データ辞書テーブルのための管理変数を含んだテキストファイル - `tabzero`.
- データベース(例えば動的なキーワード)によって最も頻繁に(読み取り)要求される情報を含んだファイル - `dd_cache`.
- データベース・コーディネイター・ファイル - `cdinator`.
- トランザクション情報のためのディレクトリ - `_trn`.
- パーシステント・ストアード・モジュールのためのディレクトリ - `_module`
- ロック情報のためのディレクトリ - `_lock`.

## 2.2 データ辞書テーブル

それぞれのEmpressデータベースはシステムテーブルのデータ辞書を持ちます。 システムテーブルはデータベースのテーブルやアトリビュートの情報を保持しています。

表 2-1: データ辞書テーブル

データ辞書テーブル | 詳細
`sys_dictionary` | すべての情報をコンパイルした形で保持します。
`sys_tables` | テーブルに関するの情報を格納します。
`sys_attrs` | アトリビュートに関する情報を格納します。
`sys_privs` | テーブルアクセス権限に関する情報を格納します。
`sys_attr_privs` | アトリビュートアクセス権限に関する情報を格納します。
`sys_triggers` | トリガー定義の情報を格納します。
`sys_modules` | パーシステント・ストアード・モジュールの情報を格納します。
`sys_mod_file` | `UPDATE MODULE`コマンドの`USING`句に指定された DLL ファイルの場所情報を格納します。
`sys_routines` | パーシステント・ストアード・モジュールのルーチン情報を格納します。
`sys_params` | パーシステント・ストアード・モジュールのパラメータ情報を格納します。
`sys_rep_tables` | マスターテーブルとリプリケーションテーブルの一般的な情報を格納します。
`sys_rep_masters` | リプリケーションマスターエントリを格納します。
`sys_rep_replicates` | リプリケーションリプリケイトエントリを格納します。
`sys_roles` | ロールに関する情報を格納します。

これらのデータ辞書テーブルは以下のテーブル構造を持ちます。

    ***  System Table: sys_dictionary  ***

      Attributes:
        dict_creator                      nlscharacter(31,1,0)
        dict_tabname                      nlscharacter(32,1,0)  Not Null
        dict_tabtype                      character(32,1)  Not Null
        dict_comptime                     time(1)
        dict_comp                         bulk(20,0,1024,1)

      Indices:     UNIQUE BTREE sysdidx ON (dict_tabname)

    ***  System Table: sys_tables  ***

      Attributes:
        tab_name                          nlscharacter(32,1,0)  Not Null
        tab_number                        integer  Not Null
        tab_type                          character(32,1)
        tab_numattrs                      integer  Not Null
        tab_lock                          character(1,1)  Not Null
        tab_lkgranty                      integer  Not Null
        tab_perms                         character(16,1)  Not Null
        tab_index                         nlstext(20,0,50,1)
        tab_refer                         nlstext(20,0,50,1)
        tab_view                          nlstext(20,0,50,1)
        tab_vwcomp                        bulk(20,0,1024,1)
        tab_location                      nlstext(20,0,50,1)
        tab_property                      nlstext(20,0,50,1)
        tab_creator                       nlscharacter(31,1,0)  Not Null
        tab_crtime                        time(1)  Not Null
        tab_comment                       nlstext(20,0,50,1)
        tab_param                         nlstext(20,0,512,1)

      Indices:     UNIQUE BTREE tabidx ON (tab_name)

    ***  System Table: sys_attrs  ***

      Attributes:
        attr_name                         nlscharacter(32,1,0)  Not Null
        attr_number                       integer  Not Null
        attr_tabnum                       integer  Not Null
        attr_type                         character(32,1)
        attr_dtname                       character(32,1)  Not Null
        attr_dtpar1                       longinteger  Not Null
        attr_dtpar2                       longinteger  Not Null
        attr_dtpar3                       longinteger  Not Null
        attr_dtpar4                       longinteger  Not Null
        attr_dtpar5                       longinteger  Not Null
        attr_dtpar6                       longinteger  Not Null
        attr_notnull                      character(1,1)  Not Null
        attr_range                        nlstext(20,0,50,1)
        attr_comment                      nlstext(20,0,50,1)

      Indices:     NORMAL (10, 5) BTREE attridx ON (attr_tabnum)

    ***  System Table: sys_privs  ***

      Attributes:
        priv_grantor                      nlscharacter(31,1,0)  Not Null
        priv_grantee                      nlscharacter(31,1,0)  Not Null
        priv_tabnum                       integer  Not Null
        priv_updattr                      character(1,1)  Not Null
        priv_delete                       character(1,1)  Not Null
        priv_insert                       character(1,1)  Not Null
        priv_select                       character(1,1)  Not Null
        priv_update                       character(1,1)  Not Null
        priv_display                      character(1,1)  Not Null
        priv_alter                        character(1,1)  Not Null
        priv_drop                         character(1,1)  Not Null
        priv_empty                        character(1,1)  Not Null
        priv_index                        character(1,1)  Not Null
        priv_sort                         character(1,1)  Not Null

      Indices:     NORMAL (10, 5) BTREE privsidx ON (priv_tabnum)
                   NORMAL (10, 5) BTREE privsidx2 ON (priv_grantee)

    ***  System Table: sys_attr_privs  ***

      Attributes:
        apriv_grantor                     nlscharacter(31,1,0)  Not Null
        apriv_grantee                     nlscharacter(31,1,0)  Not Null
        apriv_tabnum                      integer  Not Null
        apriv_attrnum                     integer  Not Null
        apriv_update                      character(1,1)  Not Null

      Indices:     NORMAL (10, 5) BTREE aprivsidx ON (apriv_tabnum)

    ***  System Table: sys_triggers  ***

      Attributes:
        trig_name                         nlscharacter(32,1,0)  Not Null
        trig_tabnum                       integer  Not Null
        trig_occur                        character(1,1)  Not Null
        trig_event_insert                 character(1,1)  Not Null
        trig_event_update                 character(1,1)  Not Null
        trig_event_delete                 character(1,1)  Not Null
        trig_event_select                 character(1,1)  Not Null
        trig_event_upd_list               nlstext(32,0,64,1)
        trig_event_sel_list               nlstext(32,0,64,1)
        trig_event_for_each               character(1,1)  Not Null
        trig_event_condition              nlstext(32,0,64,1)
        trig_event_cond_comp              bulk(20,512,512,1)
        trig_proc_name                    nlscharacter(32,1,0)  Not Null
        trig_priority                     double precision
        trig_enabled                      character(1,1)  Not Null
        trig_comment                      nlstext(20,0,50,1)

      Indices:     UNIQUE BTREE systridx ON (trig_name)

    ***  System Table: sys_modules  ***

      Attributes:
        mod_name                          nlscharacter(32,1,0)  Not Null
        mod_number                        integer  Not Null
        mod_language                      nlscharacter(16,1,0)  Not Null
        mod_lang_params                   nlstext(20,0,50,1)
        mod_creator                       nlscharacter(32,1,0)  Not Null
        mod_crtime                        time(1)  Not Null
        mod_comment                       nlstext(20,0,50,1)

      Indices:     UNIQUE BTREE sysmodidx ON (mod_name)

    ***  System Table: sys_mod_file  ***

      Attributes:
        modf_mod_num                      integer  Not Null
        modf_system_tag                   nlscharacter(32,1,0)
        modf_using_filename               nlstext(32,32,64,1)  Not Null

      Indices:     NORMAL (10, 5) BTREE sysmfidx ON (modf_mod_num)

    ***  System Table: sys_routines  ***

      Attributes:
        routine_name                      nlscharacter(32,1,0)  Not Null
        routine_number                    integer  Not Null
        routine_mod_num                   integer  Not Null
        routine_class                     nlscharacter(64,1,0)  Not Null
        routine_language                  nlscharacter(16,1,0)
        routine_deterministic             character(1,1)
        routine_SQL_data_access           character(1,1)
        routine_specific_name             nlscharacter(32,1,0)
        routine_param_style               character(1,1)  Not Null
        routine_num_params                integer  Not Null
        routine_external_name             nlstext(32,32,32,1)  Not Null
        routine_workspace                 nlstext(32,32,32,1)
        routine_begin_expression          nlstext(32,32,32,1)
        routine_begin_group               nlstext(32,32,32,1)
        routine_end_group                 nlstext(32,32,32,1)
        routine_end_expression            nlstext(32,32,32,1)
        routine_comment                   nlstext(20,0,50,1)

      Indices:     NORMAL (10, 5) BTREE sysrtidx ON (routine_mod_num)

    ***  System Table: sys_params  ***

      Attributes:
        param_name                        nlscharacter(32,1,0)
        param_number                      integer  Not Null
        param_mod_num                     integer  Not Null
        param_routine_num                 integer  Not Null
        param_mode                        character(1,1)  Not Null
        param_dtname                      character(32,1)  Not Null
        param_dtpar1                      longinteger  Not Null
        param_dtpar2                      longinteger  Not Null
        param_dtpar3                      longinteger  Not Null
        param_dtpar4                      longinteger  Not Null
        param_dtpar5                      longinteger  Not Null
        param_dtpar6                      longinteger  Not Null
        param_comment                     nlstext(20,0,50,1)

      Indices:     NORMAL (10, 5) BTREE sysparaidx ON (param_mod_num,
                   param_routine_num)

    ***  System Table: sys_rep_tables  ***

      Attributes:
        rep_tabnum                        integer  Not Null
        rep_tabtype                       integer  Not Null
        rep_tab_condition                 nlstext(32,0,64,1)
        rep_tab_timestamp                 microtimestamp(0)
        rep_recov_timestamp               microtimestamp(0)
        rep_purge_timestamp               microtimestamp(0)
        rep_orig_mashost                  character(32,1)  Not Null
        rep_orig_masdb                    nlstext(32,32,32,1)  Not Null
        rep_orig_mastab                   nlscharacter(32,1,0)  Not Null
        rep_orig_mas_start_timestamp      microtimestamp(0)  Not Null
        rep_orig_mas_hash_value           longinteger  Not Null
        rep_cur_mas_start_timestamp       microtimestamp(0)  Not Null
        rep_world                         bulk(20,0,1024,1)

      Indices:     UNIQUE BTREE sysreptabidx ON (rep_tabnum)

    ***  System Table: sys_rep_masters  ***

      Attributes:
        repm_tabnum                       integer  Not Null
        repm_massv                        nlscharacter(32,1,0)  Not Null
        repm_masdb                        nlstext(32,32,32,1)  Not Null
        repm_mastab                       nlscharacter(32,1,0)  Not Null
        repm_order                        double precision  Not Null
        repm_enabled                      character(1,1)  Not Null
        repm_pulled_success_timestamp     microtimestamp(0)
        repm_pulled_timestamp             microtimestamp(0)
        repm_pulled_status                nlstext(32,64,64,1)
        repm_pushed_success_timestamp     microtimestamp(0)
        repm_pushed_timestamp             microtimestamp(0)
        repm_pushed_status                nlstext(32,64,64,1)

      Indices:     UNIQUE BTREE sysrepmasidx ON (repm_tabnum, repm_order)

    ***  System Table: sys_rep_replicates  ***

      Attributes:
        repr_tabnum                       integer  Not Null
        repr_rephost                      character(32,1)  Not Null
        repr_repdb                        nlstext(32,32,32,1)  Not Null
        repr_reptab                       nlscharacter(32,1,0)  Not Null
        repr_condition                    nlstext(32,0,64,1)
        repr_cond_comp                    bulk(20,512,512,1)
        repr_repptab                      nlstext(32,32,32,1)
        repr_rephval                      longinteger  Not Null
        repr_pulled_success_timestamp     microtimestamp(0)
        repr_pulled_timestamp             microtimestamp(0)
        repr_pulled_status                nlstext(32,64,64,1)
        repr_repsv                        nlscharacter(32,1,0)
        repr_repsv_enabled                character(1,1)
        repr_pushed_success_timestamp     microtimestamp(0)
        repr_pushed_timestamp             microtimestamp(0)
        repr_pushed_status                nlstext(32,64,64,1)

      Indices:     NORMAL (10, 5) BTREE sysreprepidx ON (repr_tabnum)

    ***  System Table: sys_roles  ***

      Attributes:
        role_grantor                      nlscharacter(31,1,0)  Not Null
        role_grantee                      nlscharacter(31,1,0)  Not Null
        role_grantee_type                 character(1,1)  Not Null
        role_name                         nlscharacter(32,1,0)  Not Null
        role_admin                        character(1,1)  Not Null

      Indices:     NORMAL (10, 5) BTREE sysroleidx ON (role_name)
                   NORMAL (10, 5) BTREE sysroleidx2 ON (role_grantee)

データ辞書テーブル内の `BULK` と `TEXT` のアトリビュートのパラメータは Empressのバージョンに非常に依存しているので注意が必要です。

データベースに更新が行われた場合や データベース管理者によって直接更新（この操作は正常な操作ではなく、 このような操作は行ってはいけません。） された場合、 Empress によって自動的に更新され、 詳細に検査されます。

どのような状態においても これらのシステムテーブル対して、直接、更新、挿入、削除、および `ALTER` 、`SORT`コマンドを 実行しないでください。 Empressデータベース内部に問題が生じる可能性があります。

データベース辞書テーブルは必要な権限を持っているのであれば誰もが参照できます。 たとえば`personnel`テーブルの現在のロックレベルを調べる場合

       SELECT tab_lock FROM sys_tables
            WHERE tab_name = 'personnel';

ログインID `mosca`が`personnel`テーブルに対し、 与えられている select 権限 と update 権限を調べる場合

       SELECT priv_select, priv_update, priv_grantor
            FROM sys_privs, sys_tables
            WHERE sys_privs.priv_tabnum = sys_tables.tab_number
            AND tab_name = 'personnel' AND priv_grantee = 'mosca';

### 2.2.1 テーブルのデータ辞書: sys_tables

`sys_tables`テーブルはこのテーブルを含むすべての データベース中のテーブルおよびビューテーブルに関する情報を それぞれ１レコードとして持っています。

表 2-2: テーブルのデータ辞書 - sys_tables

アトリビュート | 説明
`tab_name` | テーブル名
`tab_number` | テーブル番号 この番号はテーブルに対応するオペレーティングシステムのファイルを識別するために 内部的に使用されます。たとえばテーブル番号１は、データベース辞書内では `0001.rel`になります。
`tab_type` | テーブルのタイプを表します。 `normal`, `master`, `replicate`, `view`, `master for subset`, `replicate for subset`など
`tab_numattrs` | テーブル中のアトリビュート数
`tab_lock` | テーブルに設定されたロックレベル。 `none`は`n`, `record`は `r`, `group`は `g`, `table`は `t`として設定されます
`tab_perms` | テーブルに対応するファイルに設定されたオペレーティングシステムの アクセス許可および保護
`tab_index` | テーブルに作成されたすべてのインデックスに関する情報
`tab_refer` | テーブル上のすべての参照制約の定義
`tab_view` | ビューで場合、そのビューを定義する `SELECT`文
`tab_vwcomp` | ビューを定義するコンパイルデータ
`tab_location` | リモートの場合、テーブルの位置
`tab_property` | リモートの場合、テーブルのプロパティ
`tab_creator` | テーブルを作成したユーザー名
`tab_crtime` | テーブルが作成された日付および時間
`tab_comment` | `CREATE` `COMMENT`コマンドによってテーブルに付けられたすべてのコメント
`tab_param` | 今後の使用のため（予約）

### 2.2.2 アトリビュートのデータ辞書: sys_attrs

`sys_attrs`テーブルはこのテーブルを含む データベース中のテーブルおよびビューのアトリビュートに関する情報を それぞれ１レコードとして持っています。

表 2-3: アトリビュートのデータ辞書: - sys_attrs

アトリビュート | 説明
`attr_name` | アトリビュート名
`attr_number` | テーブル内のアトリビュート番号。これはアトリビュートを識別するために内部的に利用されます。
`attr_tabnum` | アトリビュートが含まれるテーブル番号。 この番号は`sys_tables`テーブルの`tab_number`に対応します。
`attr_type` | アトリビュートのタイプ
`attr_dtname` | アトリビュートのデータタイプ `CHAR`, `INTEGER`, `DATE`などの１つが設定されます。
`attr_dtpar1` | アトリビュート・データタイプの第１パラメータの値。 値が適切ではない場合は"0"が設定されます。
`attr_dtpar2` | アトリビュート・データタイプの第２パラメータの値。 値が適切ではない場合は"0"が設定されます。
`attr_dtpar3` | アトリビュート・データタイプの第３パラメータの値。 値が適切ではない場合は"0"が設定されます。
`attr_dtpar4` | アトリビュート・データタイプの第４パラメータの値。 値が適切ではない場合は"0"が設定されます。
`attr_dtpar5` | アトリビュート・データタイプの第５パラメータの値。 bulk、text および nlstext データの可変チェックサムを 表します。 値が適切ではない場合は"0"が設定されます。
`attr_dtpar6` | アトリビュート・データタイプの第６パラメータの値。 予約。
`attr_notnull` | null 値を許可するかにより、"y" または "n"が設定されます。
`attr_range` | アトリビュートに付けられた適切な範囲チェックのすべての明細
`attr_comment` | `CREATE COMMENT`コマンドによってアトリビュートに付けられたすべてのコメント

### 2.2.3 特権のデータ辞書: sys_privs

`sys_privs`テーブルはこのテーブルを含む、 データベース内のテーブルおよびビューそれぞれに対する特権のセットの 定義と特権を付与する者と付与される者の情報をそれぞれ１レコードとして持っています。

表 2-4: 特権のデータ辞書 - sys_privs

アトリビュート | 説明
`priv_grantor` | 特権を付与する者
`priv_grantee` | 特権を付与される者
`priv_tabnum` | 特権が適用されるテーブルの識別番号
`priv_updattr` | `アトリビュート`UPDATE`特権によって、作成されたレコードが sys_attr_privs`内にあるかどうかを示します。("y" または "n") grantor がテーブル内の少なくとも１つのアトリビュート（ただしすべてではない）に `UPDATE`特権を granntee に与えた場合、`sys_attr_privs`にレコードは存在する ことになります。
`priv_delete` | テーブルからレコードを削除するための特権。 `DELETE`特権がない場合は"n"、 `DELETE`特権があり、この特権を他に与えることができない場合は"y"、 `DELETE`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_insert` | テーブルからレコードを登録するための特権。 `INSERT`特権がない場合は"n"、 `INSERT`特権があり、この特権を他に与えることができない場合は"y"、 `INSERT`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_select` | テーブルからレコードを検索するための特権。 `SELECT`特権がない場合は"n"、 `SELECT`特権があり、この特権を他に与えることができない場合は"y"、 `SELECT`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_update` | テーブルのすべてのアトリビュートを更新するための特権。 `UPDATE`特権がないか、部分的な`UPDATE`特権である場合は"n" すべての`UPDATE`特権があり、この特権を他に与えることができない場合は"y"、 すべての`UPDATE`特権があり、この特権を他に与えることができる場合は"g"、 が設定されます。 部分的な`UPDATE`特権とは、権限を与えられたいくつかのアトリビュートだけを 更新することはでき、この特権がある場合、`priv_updattr`アトリビュートの値が、 "y"になり、`sys_attr_privs`テーブルにレコードは存在することになります。
`priv_display` | テーブル内容を表示するための特権。 `DISPLAY`特権がない場合は"n"、 `DISPLAY`特権があり、この特権を他に与えることができない場合は"y"、 `DISPLAY`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_alter` | テーブルを変更するための特権。 `ALTER`特権がない場合は"n"、 `ALTER`特権があり、この特権を他に与えることができない場合は"y"、 `ALTER`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_drop` | テーブルを削除するための特権。 `DROP`特権がない場合は"n"、 `DROP`特権があり、この特権を他に与えることができない場合は"y"、 `DROP`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_empty` | テーブルを空にするための特権。 `EMPTY`特権がない場合は"n"、 `EMPTY`特権があり、この特権を他に与えることができない場合は"y"、 `EMPTY`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_index` | インデックスを作成するための特権。 `INDEX`特権がない場合は"n"、 `INDEX`特権があり、この特権を他に与えることができない場合は"y"、 `INDEX`特権があり、この特権を他に与えることができる場合は"g" が設定されます。
`priv_sort` | テーブルをソートするための特権。 `SORT`特権がない場合は"n"、 `SORT`特権があり、この特権を他に与えることができない場合は"y"、 `SORT`特権があり、この特権を他に与えることができる場合は"g" が設定されます。

### 2.2.4 アトリビュート特権のデータ辞書: sys_attr_privs

データベース内のテーブルおよびビューに部分的な更新特権（アトリビュート単位のUPDATE特権) が設定されることでアトリビュート更新特権の情報をそれぞれ１レコードとして持っています。

表 2-5: アトリビュート特権のデータ辞書 - sys_attr_privs

アトリビュート | 説明
`apriv_grantor` | 特権を付与する者
`apriv_grantee` | 特権を付与される者
`apriv_tabnum` | 特権が適用されるテーブル番号
`apriv_attrnum` | 特権が適用されるアトリビュート番号
`apriv_update` | この`UPDATE` 特権を他に与えるオプション (grant option) がない場合は"y"、 この`UPDATE` 特権を他に与えるオプション (grant option) がある場合は"g" が設定されます。

### 2.2.5 コンパイル済みデータ辞書: sys_dictionary

この`sys_dictionary` テーブルは 上記の４つのシステムテーブル のすべての情報をコンパイルしたフォーマットで持っています。 Empressは、内部においてデータへのアクセススピード向上のために このテーブルを利用しています。

表 2-6: コンパイル済みデータ辞書 - sys_dictionary

アトリビュート | 説明
`dict_creator` | テーブルを作成したユーザー名: `sys_tables`テーブルの`tab_creator`と同じ。
`dict_tabname` | テーブル名: `sys_tables`テーブルの`tab_name`と同じ。
`dict_tabtype` | テーブルのタイプ
`dict_comptime` | テーブルが作成された時の日付・時間 `sys_tables`テーブルの`tab_crtime`と同じ。
`dict_comp` | コンパイルされた Empressのシステムテーブルのすべての情報が bulk型に記録されています。

### 2.2.6 トリガーのデータ辞書: sys_triggers

この `sys_triggers` テーブルにはテーブルのトリガー定義が記録されます。

表 2-7: トリガーのデータ辞書 - sys_triggers

アトリビュート | 説明
`trig_name` | トリガー名
`trig_tabnum` | トリガー定義が適用されたテーブル番号
`trig_occur` | トリガーが発生が操作の前か後かを示します。 前の場合は値は"b"、後の場合は値は"a"になります。
`trig_event_insert` | トリガーイベントが挿入操作時に有効かを示します。 値は"y"か"n"になります。
`trig_event_update` | トリガーイベントが更新操作時に有効かを示します。 値は"y"か"n"になります。
`trig_event_delete` | トリガーイベントが削除操作時に有効かを示します。 値は"y"か"n"になります。
`trig_event_select` | トリガーイベントが検索操作時に有効かを示します。 値は"y"か"n"になります。
`trig_event_upd_list` | 更新操作時のトリガーイベントでアトリビュートが指定されている場合の アトリビュートリスト
`trig_event_sel_list` | 検索操作時のトリガーイベントでアトリビュートが指定されている場合の アトリビュートリスト
`trig_event_for_each` | `FOR EACH ROW`指定されてるどうかを示します。
`trig_event_condition` | トリガーイベントのコンディション・ステートメント
`trig_event_cond_comp` | トリガーイベントのコンディション・ステートメントを bulkフォーマットにコンパイルし、格納します。
`trig_proc_name` | トリガー関数名
`trig_priority` | トリガーの優先度
`trig_enabled` | トリガーが現在、有効かどうかを示します。
`trig_comment` | トリガーへのコメント

### 2.2.7 パーシステント・ストアード・モジュールのデータ辞書: sys_modules

この `sys_modules` テーブルには、パーシステント・ストアード・モジュール定義が 記録されます。

表 2-8: パーシステント・ストアード・モジュールのデータ辞書: sys_modules

アトリビュート | 説明
`mod_name` | モジュール名
`mod_number` | モジュール番号
`mod_language` | プログラム言語：現在は C 言語のみサポート。
`mod_lang_params` | 言語のためのパラメータ。
`mod_creator` | モジュールを作成したユーザ名
`mod_crtime` | モジュールが作成れた日時
`mod_comment` | コメント

### 2.2.8 モジュール・ファイルのデータ辞書: sys_mod_file

この`sys_mod_file`テーブルには システムのタグ および モジュールの dll ファイル名が記録されます。

表 2-9: モジュール・ファイルのデータ辞書 - sys_mod_file

アトリビュート | 説明
`modf_mod_num` | モジュール番号
`modf_system_tag` | システムの名前
`modf_using_filename` | モジュールの dll ファイル名

### 2.2.9 PSM ルーチンのデータ辞書: sys_routines

この `sys_routines` テーブルは、パーシステント・ストアード・モジュール の情報が記録されています。

表 2-10: PSM ルーチンのデータ辞書 - sys_routines

アトリビュート | 説明
`routine_name` | ルーチン名
`routine_number` | ルーチン番号
`routine_mod_num` | このルーチンに関連したモジュール番号
`routine_class` | ルーチンのクラス たとえば　procedure, aggregrate function, boolean function, prefix operator ... など。
`routine_language` | このルーチンが記述されたプログラム言語。現在はC言語のみをサポート。
`routine_deterministic` | このアトリビュートは将来、利用されるために予約されています。
`routine_SQL_data_access` | このアトリビュートは将来、利用されるために予約されています。
`routine_specific_name` | このアトリビュートは将来、利用されるために予約されています。
`routine_param_style` | パラメータのスタイルを示します。 `PARAMETER STYLE GENERAL`の場合は "g"、 `PARAMETER STYLE SQL`の場合は "s" が設定されます。
`routine_num_params` | パラメータ番号
`routine_external_name` | 外部ルーチン名
`routine_workspace` | ワークスペース・サイズ
`routine_begin_expression` | BEGIN EXPRESSION 外部ルーチン名
`routine_begin_group` | BEGIN GROUP 外部ルーチン名
`routine_end_group` | END GROUP 外部ルーチン名
`routine_end_expression` | END EXPRESSION 外部ルーチン名
`routine_comment` | コメント

### 2.2.10 UDF パラメータのデータ辞書: sys_params

この`sys_params` テーブルは ユーザー定義関数のパラメータ情報が記録されます。

表 2-11: UDF パラメータのデータ辞書: sys_params

アトリビュートAttributes | 説明
`param_name` | パラメータ名
`param_number` | パラメータ番号
`param_mod_num` | モジュール番号
`param_routine_num` | ルーチン番号
`param_mode` | パラメータモード。 IN の場合、"i"、 OUT の場合、 "o"、 INOUTの場合は、"x"が設定されます。
`param_dtname` | パラメータ・データ・タイプ
`param_dtpar1` | 第１パラメータ・データ・タイプ
`param_dtpar2` | 第２パラメータ・データ・タイプ
`param_dtpar3` | 第３パラメータ・データ・タイプ
`param_dtpar4` | 第４パラメータ・データ・タイプ
`param_dtpar5` | 第５パラメータ・データ・タイプ
`param_dtpar6` | 第６パラメータ・データ・タイプ（予約）
`param_comment` | コメント

### 2.2.11 マスターとリプリケートテーブルのデータ辞書: sys_rep_tables

この `sys_rep_tables` テーブルは マスターテーブルとリプリケートテーブルの全体的な情報が記録されます。 １つのレコードはデータベース内のそれぞれのリプリケーションテーブルに 対応するテーブルの情報を管理します。 `sys_rep_tables`の詳細は [ Empress リプリケーション・ユーザーズ・ガイド：リファレンス ] を参照してください。

### 2.2.12 リプリケーションマスターエントリのデータ辞書: sys_rep_masters

この `sys_rep_masters` テーブルは データベース内のリプリケーションテーブルのリプリケーション・マスター・エントリ 情報が記録されます。 １つのレコードには、リプリケーション・マスター・エントリのための情報が このテーブルに管理されます。

`sys_rep_masters`の詳細は [ Empress リプリケーション・ユーザーズ・ガイド：リファレンス ] を参照してください。

### 2.2.13 リプリケーションリプリケートエントリのデータ辞書: sys_rep_replicates

この `sys_rep_replicates` テーブルは データベース内のリプリケーションテーブルのリプリケーションリプリケートエントリ情報が 記録されます。 １つのレコードには、リプリケーションリプリケートエントリのための情報が このテーブルに管理されます。

`sys_rep_replicates`の詳細は [ Empress リプリケーション・ユーザーズ・ガイド：リファレンス ] を参照してください。

### 2.2.14 ロールのデータ辞書: sys_roles

この `sys_roles` テーブルは、データベースロールについての情報が記録されます。

表 2-12: ロールのデータ辞書 - sys_roles

アトリビュート | 説明
`role_grantor` | ロールを付与する者
`role_grantee` | ロールを付与される者およびロール
`role_grantee_type` | grantee のタイプ; ユーザーまたはロール
`role_name` | ロール名
`role_admin` | ロールが[ WITH ADMIN OPTION ]付きで付与されたかどうかを示します。

## 2.3 管理変数ファイルのデータ辞書

すべての Empress データベースには 数多くのEmpress データベース管理変数のデフォルト値が記述された `tabzero`と呼ばれるファイルが存在します。 このファイルは、Empressがデータベースにアクセスしたときに最初に読み込まれ、 この中の値は、これらの変数のどのようなデフォルト環境、またユーザーの設定より優先されます。

このことはデータベースの安全性を意味します。 たとえば、単に環境変数によって設定するだけで すべての権限を持つ、データベース管理者と自ら宣言することを できないようにするためです。

`tabzero`は、データベースを作成したときに自動的に作成され、 このファイル中の値はシステムのエディタで変更することが可能です。 （それを変更することができるようにするために`tabzero`ファイルに 対するオペレーティングシステムファイルのアクセス許可が必要になります。) このファイル中のデフォルト値はEmpressインストールされたところの `custom`ディレクトリの下($EMPRESSPATH/rdbms/custom)の `tabzero`から取得されています。

データベース管理者はデータベースを作成したユーザー名が設定されます。

データベースの作成者以外の他のユーザーアカウントでデータベースをコピーした場合、 `tabzero`の編集し、データベース管理者の名前の変更するが必要あります。 これは新しい所有者はデータベースにアクセスすることができないためです。

例として、以下に `joe`により作成されたデータベースの 標準的なデフォルト値が記述された Empressバージョン8.62 の `tabzero`を示します。

       :       '(c) Copyright  Empress Software Inc.   1983, 2003'

       MSDBADMINISTRATOR=joe

       MSNFSSHARE=

       MSDBPERMS=
       MSDBDBAPRIVS=dba dba dba; dba dba user grant
       MSDBPRIVS=creator creator dba; creator user user grant
       MSDBLOCKLEVEL=record
       MSDBLOCKGRANULARITY=1
       MSDBLOCKSTATS=
       MSDBTHRESCHAINLEN=1.5
       MSDBVALIDATESIZE=

       MSDBINDEXPRIMARY=2
       MSDBINDEXOVERFLOW=15

       MSDBAUDITTRAIL1=
       MSDBAUDITTRAIL2=
       MSDBRECOVERYLOG1=
       MSDBRECOVERYLOG2=
       MSDBLOGFILE=

       MSDBDICTTABLENUMBER=1

       MSDBDICTLOCK=record
       MSDBDICTINDEX=1 0

       MSDBVERSION=8.62
       MSDBVERSION_FEATURES=8.62

       MSDBSERVERPORTID=
       MSDBAUDITTERSE=
       MSCOORDDISABLE=
       MSDBMAXPROCS=256
       MSDBBLOCKSIZE=2
       MSDBPUBLICPRIVILEGES=\
         [SYS_OS_WIN32]        X
         [ALL]

       MSDBDFC=421

       MSSHMKEY=21105037
       MSSHMPROTECTION=

           MSPARTNAME=DEF_LOCK_PART
           MSPARTTYPE=LOCK
               MSPARTLOCKNLOCKS=2000
           MSPARTEND
       MSSHMEND

       MSDBDICTPARAMS
               MSPARAMLOCK
                       MSPARTLOCKNAME=DEF_LOCK_PART
               MSPARAMLOCKEND
       MSDBDICTPARAMSEND

       MSPARAMLOCK
               MSPARTLOCKNAME=DEF_LOCK_PART
       MSPARAMLOCKEND

### 2.3.1 データベース管理変数の詳細

Empress は `tabzero` ファイルから取得された 数多くの管理変数を持っています。 これらの値は`tabzero`ファイルの編集によってのみ変更できます。 また、これらの値はオペレーティングシステムやSQLセッションのすべての 設定より優先されます。

`tabzero`ファイルは、 新しいEmpressのデータベースが作成された時に Empressがインストールされたところの`custom` ディレクトリ($EMPRESSPATH/rdbms/custom)の下にある テンプレートの`tabzero`からコピーされます。 システム全体のデフォルト値を変更したい場合は、 `custom`ディレクトリの下の`tabzero`を 編集することになりますが、 このファイルを編集をする前にオリジナルの`tabzero`ファイルを `tabzero.orig`のような名前でコピーすることを 強く推奨します。 これはEmpressシステムのテストルーチンを実行する場合、 値をオリジナルに戻さなければならないために必要で、 システム変数がオリジナルの値とは異なる場合、エラーを発生することがあります。 （テストを実行しない場合でも、オリジナルの保存をしてください。）

以下はデータベース管理変数のリストとこれらの機能の簡単な説明です。

表 2-12: Empress データベース管理変数

名前 | 機能
`MSCOORDDISABLE` | データベース・コーディネイターの無効
`MSDBADMINISTRATOR` | データベース管理者を設定します。
`MSDBAUDITTERSE` | オーディット・トレイルにデータ値を出力するかしないかを指定します。
`MSDBAUDITTRAIL1` | オーディット・トレイルのログを保管する最初のファイルを指定します。
`MSDBAUDITTRAIL2` | オーディット・トレイルのログを保管する２番目のファイルを指定します。
`MSDBBLOCKSIZE` | データベースによって利用されるシステムブロックサイズを指定します。
`MSDBDBAPRIVS` | データ辞書テーブルに付与される特権を制御します。
`MSDBDFC` | データフォーマットコードを指定します。
`MSDBDICTINDEX` | 内部的なテーブルの検索おいて `sys_dictionary`でのインデックスの利用を指定します。
`MSDBDICTLOCK` | コンパイル辞書テーブル`sys_dictionary`のロックの設定をします。
`MSDBDICTTABLENUMBER` | `sys_dictionary` テーブル番号
`MSDBINDEXOVERFLOW` | インデックスのデフォルトのオーバフロー領域（２次記憶領域）の長さを指定します。
`MSDBINDEXPRIMARY` | インデックスのデフォルトのプライマリ領域（主記憶領域）の長さを指定します。
`MSDBLOCKLEVEL` | 新しくテーブルを作成した場合のデフォルトのロックレベルを設定します。
`MSDBLOCKSTATS` | アクティブロックの統計情報を収集。
`MSDBMAXPROCS` | データベースにアクセスが許可されている最大プロセス数を指定します。
`MSDBPERMS` | データベーステーブルのデフォルトのアクセス許可の設定をします。
`MSDBPRIVS` | テーブル作成時に与えられる特権を制御します。
`MSDBRECOVERYLOG1` | リカバリ・ログを保管するで最初のファイルを指定します。
`MSDBRECOVERYLOG2` | リカバリ・ログを保管する２番目のファイルを指定します。
`MSDBSERVERPORTID` | Cray のコンピューターだけに適用され、 この変数は Empress 内部で利用されます。 |
`MSDBTHRESCHAINLEN` | ロックの分配において受けることができる変動量を決定する。 |
`MSDBVALIDATESIZE` | レコードのチェックサム値のサイズを制御します。
`MSDBVERSION` | Empress バージョン番号
`MSNFSSHARE` | NFS上でデータベースの同時アクセスする場合に指定します。
`MSDBLOGFILE` | データベースログを保管するファイルを指定します。
`MSDBLOCKGRANULARITY` | テーブルのユーザー定義のロックの粒度を設定します。
`MSDBPUBLICPRIVILEGES` | Empress データベース特権のバイパス
`MSDBVERSION_FEATURES` | Empress 内部変数

#### 2.3.1.1 MSCOORDDISABLE

この変数がセットされた場合、 データベースアクセスはコーディネイターを無視します。 これは速度向上の理由かリード・オンリー・データベースの構築の際に設定します。

#### 2.3.1.2 MSDBADMINISTRATOR

`MSDBADMINISTRATOR`は、データベースの データベース管理者(DBA)のログイン名を設定します。 データベースのDBAを`joe`と設定するには `tabzero`ファイルを編集し、 `MSDBADMINISTRATOR`の値を次のように変更します。

       MSDBADMINISTRATOR=joe

注意として、他のユーザーがデータベースをコピーした場合、 DBAの名前を変更することが必要です。 これにより、新しいユーザーがDBAとして認識され、 データベースにアクセスすることができます。

#### 2.3.1.3 MSDBAUDITTERSE

オーディット・トレイルはデータベースへのすべてのアクセスの情報を 記録するために利用されます。 データベースのすべての操作の記録であり、データを修正しない操作でさえも記録されます。 `MSDBAUDITTERSE`が設定された場合、オーディット・トレイルは、データ値なしに すべての操作を記録します。

#### 2.3.1.4 MSDBAUDITTRAIL1 および MSDBAUDITTRAIL2

`MSDBAUDITTRAIL1`は、オーディット・トレイルの情報を保管するための ファイルパスを指定します。また、`MSDBAUDITTRAIL2`は、 同じ情報を保管するための２番目のファイルパスを指定します。 ２番目のファイルの指定は、追加保護であり、 通常、これらの指定において、オペレーティングシステムやハードウェアの 障害の場合を考慮して、異なったファイルシステムやなるべく異なったディスク上の ファイルを指定します。

これらの変数を設定するかしないかにより、簡単にオーディット・トレイルの ログ出力を有効にしたり、無効にしたりすることができます。

#### 2.3.1.5 MSDBBLOCKSIZE

512バイトの倍数によるマシンのブロック・サイズを指定します。 デフォルト値はシステムにより異なりますが、 ほとんどのシステムは２が設定されます。 データベースのアクセスにおいて、扱うデータセットのほとんどが 大きい場合、この変数の値を上げることで効果があります。

#### 2.3.1.6 MSDBDBAPRIVS

`MSDBDBAPRIVS`は、データベース作成時にシステムテーブル に与えられる特権を指定します。パラメータの設定のフォーマットは 以下になります。

       MSDBDBAPRIVS = grantor grantee {, grantee} privilege {, privilege} [GRANT]
            {; grantor grantee {, grantee} privilege {, privilege} [GRANT]}

`grantor` | 特権を付与するユーザー名
`grantee` | 特権を付与されるユーザー名、 または`dba`, `creator`および`public`の 特別に定義された名前のいずれか１つを指定します。
`privilege` | `ALTER`, `DELETE`, `DISPLAY`, `DROP`, `EMPTY`, `INDEX`, `INSERT`, `SELECT`, `SORT` or `UPDATE` `[(attr{, attr})]` のうちのいずれか１つを指定します。

簡略に指定するために `dba`, `all`および `user` の３つの特別な特権のタイプがあります。 `dba`は、 `ALTER`, `DROP`, `EMPTY`, `INDEX`, と `SORT`を含んでいます。 `all`は、すべての特権を含んでいます。 `user`は、`DELETE`, `DISPLAY`, `INSERT`, `SELECT` と`UPDATE` を含んでいます。

`MSDBDBAPRIVS`のデフォルトの設定"dba dba user grant" は、 データ辞書テーブルに対し、すべての"user" 特権を"grant" オプション付きで DBAに与え、そして、"grantor" をDBAとして指定しています。

例として、DBAによって "Joe"にすべての特権を"GRANT" オプション付きで与え、 "Joe"よって、"Mosca" と "Jones"に select と display 特権を "GRANT"オプションなしで与える場合、以下の設定になります。

       MSDBDBAPRIVS=dba joe all grant; joe mosca display, select;\
                    joe jones display, select

データ辞書テーブルにこれらの特権の設定をするためには Empressがインストールされた `custom`ディレクトリの下の `tabzero`の編集し、適切な行を変更後にデータベースを作成します。

`tabzero`の記述の注意
エントリは１行内に収めることが必要です。 １行以上になる場合は、行が続くことを意味する文字 ("MSLINECONT"に設定された文字でデフォルトでは"\") を上記の例のように最終行以外の行の末尾に記述します。

#### 2.3.1.7 MSDBDFC

この変数は、データベースのデータ・フォーマット・コード(Data Format Code:DFC) を指定します。 デフォルトでは、システム固有のDFCでデータベースは作成されますが、 `MSDBDFC`をシステム固有ではない異なったDFCをセットすることで データベース作成時、`empmkdb`コマンドを通じて、異なったDFCの データベースを作成することができます。 たとえば、データベースがリモートホストによってアクセスされるように設計され、 そのリモートホストが異なったアーキテクチャである場合、 リモートホストのDFCがデータベースの作成に使われることで データ変換のオーバーヘッドはなくなることになります。

この`MSDBDFC`変数は、３つのアスキー数字が含まれ、 `lse`は、以下の3つの特性について記述しています:

`l` | long integer のバイトサイズ
`s` | short integer のバイトサイズ
`e` | バイトオーダー。 ビックエンディアンは 0 、リトルエンディアンは 1

例として Sun Sparc Station の DFC は "420" になります。 この意味は、 long integer が 4 バイト、short integer が 2 バイトで バイトオーダーはビックエンディアンになります。

#### 2.3.1.8 MSDBDICTINDEX

`MSDBDICTINDEX`は、 暗黙的なシステム検索（内部的にEmpressがテーブル名での検索をする) のためにインデックスが作成された場合の `sys_dictionary`テーブル(コンパイル済み辞書テーブル)の `dict_tabname`アトリビュートのインデックスタイプの 指示を与えます。

この変数が設定された場合、 Empressは、テーブルの名前を探すために `sys_dictionary`の検索時に `dict_tabname`アトリビュートのインデックスを期待します。 変数が設定されない場合は、Empressはインデックスが有効ではないことを 仮定します。

この変数はデータベースを作成される間にEmpressによって設定されます。 ユーザーは、この変数の値を変更しないでください。 以下のエラーメッセージが出力される場合があります。

       *** Database Problem ***  no file 'database_directory_path/00010001.ix'
       *** Data Dictionary creation fails *** 'database_name'

この変数の値は

       MSDBDICTINDEX=1 0

これは`dict_tabname`アトリビュートのインデックスをユニークインデックスと して指定しています。

#### 2.3.1.9 MSDBDICTLOCK

`MSDBLOCKDICT`は、コンパイル済み辞書テーブル(`sys_dictionary`)に 対してロックモードを設定します。 値として、１単語を指定しますが、その単語の最初の１文字目に意味があります。 `none`, `record`, `group`, `table` のそれぞれの ロックレベルの最初の文字`n`, `r`, `g`, `t`に 意味があります。 この`sys_dictionary`テーブルに対するロックレベルをレコードに設定するためには、 Empressをインストールした`custom`の下の`tabzero`ファイルに 以下のようにセットします。 （データベースを作成してから設定しても定義は有効ではありません。）

       MSDBLOCKDICT=record

#### 2.3.1.10 MSDBDICTTABLENUMBER

`MSDBDICTTABLENUMBER`は、コンパイル済み辞書テーブル(`sys_dictionary`)に 対応するテーブル番号を指定します。`0001.rel`に対応するデフォルトは１になります。

#### 2.3.1.11 MSDBINDEXPRIMARY and MSDBINDEXOVERFLOW

`MSDBINDEXPRIMARY`と`MSDBINDEXOVERFLOW`変数は、 ユニークインデックス以外のインデックスが作成される場合に プライマリとオーバーフローのデフォルトの記憶領域長を指定します。 デフォルトでは、`MSDBINDEXPRIMARY`が 2、 `MSDBINDEXOVERFLOW`に 15 が設定されています。

たとえば、デフォルトとしてユニークインデックスとして指定した場合、 (`PRIMARY=1, OVERFLOW=0`), `tabzero`中のこれら２つの変数を以下のように編集します。

       MSDBINDEXPRIMARY=1
       MSDBINDEXOVERFLOW=0

設定後、CREATE INDEX コマンドは

       CREATE INDEX ON table_name (attr_name);

以下のコマンドと同意になります。

       CREATE UNIQUE INDEX ON table_name (attr_name);

#### 2.3.1.12 MSDBLOCKLEVEL

`MSDBLOCKLEVEL`は、新規に作成されたテーブルのロックモードを設定します。 値として、１単語を指定しますが、その単語の最初の１文字目に意味があります。 `none`, `record`, `group`, `table` のそれぞれの ロックレベルの最初の文字`n`, `r`, `g`, `t`に 意味があります。 新しいテーブルに対するロックレベルをレコードに設定するためには、 `tabzero`ファイルに以下のようにセットします。

       MSDBLOCKLEVEL=record

#### 2.3.1.13 MSDBLOCKSTATS

この変数は、ロック・マネージャーの統計のための集計処理を有効にします。 この情報は ロック・マネージャーの詳細な統計レポートを作成するための `empadm lockstats`コマンドによって利用されます。

統計のための集計処理はデフォルトでは設定されていません。 統計を有効にするためには、`MSDBLOCKSTATS`変数に 何か値を設定します。

       MSDBLOCKSTATS=X

#### 2.3.1.14 MSDBMAXPROCS

この変数はデータベースにアクセスすることを許可する最大プロセス数を指定します。 この値はライセンス・キー、あるいは`initfile`中の`MSMAXPROCS`変数に よって最小値が設定されています。 （ライセンス数以上のプロセス数を設定しても有効ではありません。）

#### 2.3.1.15 MSDBPERMS

`MSDBPERMS`は、新規に作成されたデータベーステーブルにデフォルトのアクセス許可を 設定します。 このアクセス許可は"R ("read"), "W" ("write"), "X" ("execute") のいずれかの結合からなり、 "owner", "group" , "other" の順になります。 "owner"を"read-write"、"group"を"read"、"other"を "read"として設定する場合、 データベースを作成する前にEmpress をインストールした "custom"ディレクトリ の下の`tabzero`ファイルを以下のように修正します。

       MSDBPERMS=RW,R,R

`MSDBPERMS`は、デフォルトの値を持っていません。 それはオペレーティングシステムのデフォルトのパーミッションが適用されるためです。

#### 2.3.1.16 MSDBPRIVS

`MSDBPRIVS`

`tabzero`の記述の注意
エントリは１行内に収めることが必要です。 １行以上になる場合は、行が続くことを意味する文字 (`MSLINECONT`に設定された文字でデフォルトでは`\`) を上記の例のように最終行以外の行の末尾に記述します。

ユーザーテーブル（データ辞書テーブル以外）が作成されたときにそれらのテーブルに 与えられる特権を制御します。 このパラメーターを設定するためのフォーマットは以下になります。

       MSDBPRIVS=grantor grantee {, grantee} privilege {, privilege} [GRANT]
                 {; grantor grantee {, grantee} privilege {, privilege} [GRANT]}

`MSDBPRIVS`のデフォルト値は "creator creator dba; creator user user grant" です。 テーブルの作成者に"GRANT"オプションなしのすべての"dba"特権を与え、 "creator"として "grantor"を定義しています。 また、"creator"によってカレントユーザーに"GRANT"オプションなしの すべての"user"特権を与えています。

例として、データベース管理者によって"Joe"に"GRANT"オプション付きの すべての特権と"Joe"によって"Mosca"と"Jones"に"GRANT"オプションなしの "SELECT"と"DISPLAY"特権を与え、通常のテーブルを作成する場合は以下のように 設定します。

       MSDBPRIVS=dba joe ALL grant; joe mosca DISPLAY, SELECT;\
                 joe jones DISPLAY, SELECT

`tabzero`の記述の注意
エントリは１行内に収めることが必要です。 １行以上になる場合は、行が続くことを意味する文字 ("MSLINECONT"に設定された文字でデフォルトでは"\") を上記の例のように最終行以外の行の末尾に記述します。

#### 2.3.1.17 MSDBRECOVERYLOG1 と MSDBRECOVERYLOG2

`MSDBRECOVERYLOG1`はリカバリー・ログを保管するファイルを指定します。 オペレーティングシステムの障害の発生時、 データベースへの変更はこのファイルから復元することが可能です。 この変数を設定し、空のファイルを作成することでリカバリー・ログへの 記録が有効になります。設定しない場合は記録は行われません。 リカバリー・ログの複製は`MSDBRECOVERYLOG2`によって指定されたファイルに 保存されます。 通常は、オペレーティングシステムあるいはディスク障害の対策として、 ２番目のログは、異なったファイルシステム上に保存し、できれば、 １番目のディスクドライブとは異なったドライブ上に保存します。

#### 2.3.1.18 MSDBSERVERPORTID

この変数はクレイ・スーパー・コンピュータ・システムの場合のみに Empressの内部変数として使われます。

#### 2.3.1.19 MSDBTHRESCHAINLEN

この変数は現在のロック数に基づいたチェーンの長さのしきい値を計算するために利用されます。

#### 2.3.1.20 MSDBVALIDATESIZE

この変数はデータ辞書テーブルのレコードのチェックサム値のサイズを制御します。 デフォルトでは、データ辞書テーブルにチェックサムは設定されていません。

#### 2.3.1.21 MSDBVERSION

`MSDBVERSION`は、製品のバージョン番号で、たとえばバージョン 8.62の場合、 8.62が設定されています。

#### 2.3.1.22 MSNFSSHARE

`MSNFSSHARE`が設定された場合、Sun NFS ネットワーク中のそれぞれのノードの メモリバッファをクリアします。 これは数人のユーザーによって同時にアクセスされた場合、 データの不整合をおこならいようにすることを保証します。

`tabzero`中の`MSNFSSHARE`の設定は以下のように設定します。

       MSNFSSHARE='y'

この`MSNFSSHARE`変数を利用することでパフォーマンスが およそ２倍ぐらい悪くなることに留意してください。

#### 2.3.1.23 MSDBLOGFILE

データベースログを出力するファイルを指定します。 データベースログはデータベースアクセスの経緯を 監視するために使われ、Empress データベースログ アナライザユーティリティの入力ファイルにもなります。 指定されない場合は、データベースログファイルは作成されません。

#### 2.3.1.24 MSDBLOCKGRANULARITY

この変数はテーブル上のユーザー定義のロックの粒度を設定します。

`MSDBLOCKGRANULARITY`=n と指定された場合、 周囲のレコードのコマンド プラス　(n-1)　で遭遇した テーブル中のそれぞれのレコードをロックします。 この場合ロックされた n レコードは "PAGE" ロックを構成しています。

この変数は以下のコマンドと 同じ機能性を提供します。

         LOCK LEVEL [ON] table [IS] RECORD (n) ;

パフォーマンスと同時性の相互を考慮し、 ロックの粒度の右の値を選んでください。 （つまり"PAGE"中の多くのロック)

デフォルトの設定は MSDBLOCKGRANULARITY=1 です。

#### 2.3.1.25 MSDBPUBLICPRIVILEGES

この変数はデフォルトで Win32 プラットフォーム上(`MSDBPUBLICPRIVILEGES`=X)で 設定され、Empressデータベース特権を無視します。 したがって、データベースの与えられた特権は MSDBPUBLICPRIVILEGES 変数に何も設定されていない状態で 効果があります。

#### 2.3.1.26 MSDBVERSION_FEATURES

この変数はEmpress内部変数として利用されています。 この値を変更しないでください。.

## 2.4 データベース・コーディネーター

データベースの整合性を維持するために データベースにアクセスするプログラムはコーディネーターと 呼ばれるファイルにそれらの情報を登録することを要求されます。 コーディネーターはオンラインバックアップのプロセスの状態を含む、 すべてのクライアントの状態の記録を保持します。

クライアントが開始したとき、 コーディネーターにそれ自身の情報を登録します。 プロセスが終了するまで登録された情報は残り、 コーディネーターからそれ自身の情報を削除した時が、 プロセスの終了になります。 このアクティブなクライアントの記録は、 たとえばクライアントが オンラインバックアップが実行されていることを知ること を保証します

コーディネーターを伴った Empress プロセスのコミュニケーションは ユーザーに対し、完全に透明です。 データベースが最初に作成されたときにコーディネイターは 自動的にデータベースディレクトリ中に作成されます。 コーディネイターの情報はデータベースディレクトリ中の `cdinator`と呼ばれるファイルに管理されています。 コーディネーターはデータベースをアクセスするすべてのプロセスの記録を このファイルを通して見えるために利用します。

`cdinator`の情報は、`empadm`ユーティリティを利用することで 参照することができます。 詳細な情報はこのマニュアルの データベース管理 の章を参照してください。

## 2.5 データ辞書キャッシュファイル

`dd_cache`ファイルはデータ辞書のユニバーサルフォーマットキャッシュを 含みます。 現在、このファイルはパーシステント・ストアード・モジュールの情報のみを格納しています。 将来、より多くの情報をサポートするために拡張予定です。

## 2.6 データベース・ロック・ディレクトリ

Empressは、ロック・マネージャーの２つの物理的な実装方法として ファイル・ロック・マネージャーとシェアード・ロック・マネージャーを 実装しています。

ファイル・ロック・マネージャーはデフォルトのロックの実装です。 `xxxx.lck`ように名前付けされた多くのファイルを含む ロック・ディレクトリ`_lock`は、データベースディレクトリ中に 存在します。 `xxxx`の番号は`.rel`ファイルに対応づけされたテーブルの テーブル番号になります。 たとえば、`t`テーブルが`0092.rel`ファイルと対応されている場合、 そのロックファイルは`_lock/0092.lck`になります。 このファイルが削除された場合、ロック・マネージャーはロックを保持する必要 があるため、次回のアクセスにおいて自動的に作成されます。

また、データベースのロック情報を表示するための`empadm`ユーティリティを 使うことができます。 `empadm`の詳細な情報をこのマニュアルの データベース管理 の章で参照してください。

## 2.7 パーシステント・ストアード・モジュール・ディレクトリ

ユーザー定義のパーシステント・ストアード・モジュール・ライブラリは このディレクトリに格納されます。

## 2.8 データベース・トランザクション・ログ・ディレクトリ

トランザクションは、処理を1単位として扱うためのデータベース操作のセットです。 トランザクション処理が開始された時に データベース・トランザクション・ログ・ディレクトリ`_trn`の下に 自動的にトランザクション・ログファイルが作成されます。 このログファイルは`xxxxxx.trn`のように名前付けられ、 この`xxxxxx`の番号はトランザクションのプロセス番号に対応しています。 １つのトランザクションが完了した場合、このトランザクションに対応付けられている ログファイルは自動的に削除されます。

`DISPLAY WORK` SQL コマンドや ウォーム・リスタート(`empwarm`)ユーティリティ、 オンラインバックアップおよびリカバリー(`empolbak` and `emprecov`) ユーティリティはトランザクションプロセス情報取得のためにトランザクションログファイルに アクセスします。