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 データベースデータ辞書です。



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)

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

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

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

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

   SELECT tab_lock FROM sys_tables
        WHERE tab_name = 'personnel';

ログインID moscapersonnelテーブルに対し、 与えられている 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テーブルはこのテーブルを含むすべての データベース中のテーブルおよびビューテーブルに関する情報を それぞれ1レコードとして持っています。

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

アトリビュート 説明
tab_name テーブル名
tab_number テーブル番号 この番号はテーブルに対応するオペレーティングシステムのファイルを識別するために 内部的に使用されます。たとえばテーブル番号1は、データベース辞書内では 0001.relになります。
tab_type テーブルのタイプを表します。 normal, master, replicate, view, master for subset, replicate for subsetなど
tab_numattrs テーブル中のアトリビュート数
tab_lock テーブルに設定されたロックレベル。 nonen, recordr, groupg, tabletとして設定されます
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テーブルはこのテーブルを含む データベース中のテーブルおよびビューのアトリビュートに関する情報を それぞれ1レコードとして持っています。

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

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

2.2.3 特権のデータ辞書: sys_privs

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

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

アトリビュート 説明
priv_grantor 特権を付与する者
priv_grantee 特権を付与される者
priv_tabnum 特権が適用されるテーブルの識別番号
priv_updattr アトリビュートUPDATE特権によって、作成されたレコードが sys_attr_privs内にあるかどうかを示します。("y" または "n") grantor がテーブル内の少なくとも1つのアトリビュート(ただしすべてではない)に 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特権) が設定されることでアトリビュート更新特権の情報をそれぞれ1レコードとして持っています。

表 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 テーブルは 上記の4つのシステムテーブル のすべての情報をコンパイルしたフォーマットで持っています。 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 第1パラメータ・データ・タイプ
param_dtpar2 第2パラメータ・データ・タイプ
param_dtpar3 第3パラメータ・データ・タイプ
param_dtpar4 第4パラメータ・データ・タイプ
param_dtpar5 第5パラメータ・データ・タイプ
param_dtpar6 第6パラメータ・データ・タイプ(予約)
param_comment コメント

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

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

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

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

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

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

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

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 データベース管理変数の詳細

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

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

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

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

名前 機能
MSCOORDDISABLE データベース・コーディネイターの無効
MSDBADMINISTRATOR データベース管理者を設定します。
MSDBAUDITTERSE オーディット・トレイルにデータ値を出力するかしないかを指定します。
MSDBAUDITTRAIL1 オーディット・トレイルのログを保管する最初のファイルを指定します。
MSDBAUDITTRAIL2 オーディット・トレイルのログを保管する2番目のファイルを指定します。
MSDBBLOCKSIZE データベースによって利用されるシステムブロックサイズを指定します。
MSDBDBAPRIVS データ辞書テーブルに付与される特権を制御します。
MSDBDFC データフォーマットコードを指定します。
MSDBDICTINDEX 内部的なテーブルの検索おいて sys_dictionaryでのインデックスの利用を指定します。
MSDBDICTLOCK コンパイル辞書テーブルsys_dictionaryのロックの設定をします。
MSDBDICTTABLENUMBER sys_dictionary テーブル番号
MSDBINDEXOVERFLOW インデックスのデフォルトのオーバフロー領域(2次記憶領域)の長さを指定します。
MSDBINDEXPRIMARY インデックスのデフォルトのプライマリ領域(主記憶領域)の長さを指定します。
MSDBLOCKLEVEL 新しくテーブルを作成した場合のデフォルトのロックレベルを設定します。
MSDBLOCKSTATS アクティブロックの統計情報を収集。
MSDBMAXPROCS データベースにアクセスが許可されている最大プロセス数を指定します。
MSDBPERMS データベーステーブルのデフォルトのアクセス許可の設定をします。
MSDBPRIVS テーブル作成時に与えられる特権を制御します。
MSDBRECOVERYLOG1 リカバリ・ログを保管するで最初のファイルを指定します。
MSDBRECOVERYLOG2 リカバリ・ログを保管する2番目のファイルを指定します。
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番目のファイルパスを指定します。 2番目のファイルの指定は、追加保護であり、 通常、これらの指定において、オペレーティングシステムやハードウェアの 障害の場合を考慮して、異なったファイルシステムやなるべく異なったディスク上の ファイルを指定します。

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

2.3.1.5 MSDBBLOCKSIZE

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

2.3.1.6 MSDBDBAPRIVS

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

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

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

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

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

2.3.1.7 MSDBDFC

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

このMSDBDFC変数は、3つのアスキー数字が含まれ、 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)に 対してロックモードを設定します。 値として、1単語を指定しますが、その単語の最初の1文字目に意味があります。 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に対応するデフォルトは1になります。

2.3.1.11 MSDBINDEXPRIMARY and MSDBINDEXOVERFLOW

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

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

   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は、新規に作成されたテーブルのロックモードを設定します。 値として、1単語を指定しますが、その単語の最初の1文字目に意味があります。 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の記述の注意
エントリは1行内に収めることが必要です。 1行以上になる場合は、行が続くことを意味する文字 (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の記述の注意
エントリは1行内に収めることが必要です。 1行以上になる場合は、行が続くことを意味する文字 ("MSLINECONT"に設定された文字でデフォルトでは"\") を上記の例のように最終行以外の行の末尾に記述します。

2.3.1.17 MSDBRECOVERYLOG1 と MSDBRECOVERYLOG2

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

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倍ぐらい悪くなることに留意してください。

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は、ロック・マネージャーの2つの物理的な実装方法として ファイル・ロック・マネージャーとシェアード・ロック・マネージャーを 実装しています。

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

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



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

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



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

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

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