ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

付録I
システム表

この付録では、Oracle Rdbのシステム表について説明します。

Oracle Rdbでは、データベースに関する情報が一連の特殊なシステム表として格納されます。システム表は、Oracle Rdbメタデータの最も信頼のおけるソースです。メタデータによってデータベースの構造が定義されます。たとえば、特定の表を構成するフィールドやその表の索引付けを行うフィールドがメタデータによって定義されます。

大部分のシステム表の定義は標準仕様であり、Oracle Rdbの将来のバージョンでも保持される見込みです。

特定のシステム表の各記述において、BLRはバイナリ言語表現を意味します。これは、Oracle Rdbのデータ操作を表すために内部的に使用される低レベルの構文です。

以降の項では、Oracle Rdbの特定のバージョンにおけるシステム表の使用方法、または他のデータベースの構成メンバーや操作、製品に関連したシステム表の使用方法について説明します。

I.1 データ・ディクショナリの使用

データ・ディクショナリにデータ定義を格納できますが、データベース・システムは、データ定義に関してそのデータベース・ファイルのシステム表のみを参照します。システム表は、データベースにおける内部のデータ・ディクショナリとみなすこともできます。この方法によってパフォーマンスが向上します。実行時にOracle Rdbがデータ・ディクショナリにアクセスする必要がないからです。

I.2 システム表の変更

データベースの作成時、Oracle Rdbではシステム表の定義、移入および操作が行われます。ユーザーがデータベースでデータ定義操作を実行すると、Oracle Rdbはシステム表を読み取って変更し、ユーザーの操作を反映させます。Oracle Rdbのシステム表は、データ操作言語を使用して変更できません。システム表のフィールドに基づくドメインも定義できません。ただし、Oracle Rdbの正規のデータ操作文を使用してシステム表の内容を取得することは可能です。つまり、システム表のフィールドを取得し、プログラムによりデータベースの構造と特性を判断できます。

I.3 メタデータの更新

SQL SET TRANSACTION...RESERVING文を使用して一連の表をOracle Rdb操作のためにロックすると、通常、RESERVING句でリストされていない表はトランザクションからすべて除外されます。ただし、Oracle Rdbは必要に応じてシステム表にアクセスして更新します。その際、SQL SET TRANSACTION文で表がロックされているかどうかは問われません。

トランザクションでデータベースのメタデータを更新する際、Oracle Rdbは、更新に関連するシステム表をEXCLUSIVE共有モードで予約します。トランザクションが完了するまで、他のユーザーはこれらの表でデータ定義操作を実行できません。次に例を示します。

I.4 LIST OF BYTE VARYINGメタデータ

Oracle Rdbは、ユーザー定義データとして複数セグメントのLIST OF BYTE VARYINGデータ型をサポートしています。ただし、Oracle Rdbの以前のバージョンでは、LIST OF BYTE VARYINGメタデータ列が単一セグメントとして保持されていました。これにより、長さが約65530バイトに制限されていました。この制限が原因でSQL CREATE TRIGGER文やCREATE MODULE文が失敗する場合がありました。

Oracle Rdbの各メタデータの格納方法を変更することにより、この制限は解除されました。

(RMU Convertコマンド、RMU RestoreコマンドまたはSQL EXPORT/IMPORT文を使用して)データベースを以前のバージョンから変換する際、LIST OF BYTE VARYING列値は変更されません。

Oracle RdbシステムのLIST OF BYTE VARYING列値を読み取るアプリケーションは、複数セグメントを認識できるように変更する必要があります。これらのシステムの列値の読取りを実行しないアプリケーションでは、以前の動作への変更は認識されません。RMU ExtractコマンドやSQL SHOW文、EXPORT文などのツールでは、新旧の両方の形式によるシステム・メタデータが処理されます。

I.5 読取り専用アクセス

読取り専用アクセスに設定されている、様々なシステム表のフィールドのリストを次に示します。

I.6 すべてのシステム表

Oracle Rdbのシステム表は次のとおりです。

RDB$CATALOG_SCHEMA 各SQLカタログおよびスキーマの名前と定義を含む。この表は、SQLマルチスキーマ機能が有効化されているデータベースにのみ存在する。
RDB$COLLATIONS このデータベースで使用される照合順番。
RDB$CONSTRAINTS 各制約の名前と定義。
RDB$CONSTRAINT_RELATIONS 特定の制約に関与している各表の名前。
RDB$DATABASE データベース固有の情報。
RDB$FIELD_VERSIONS データベースの各列定義のバージョンごとに1行。
RDB$FIELDS データベースの各ドメインの特性。
RDB$GRANTED_PROFILES ユーザーに付与されているロールおよびプロファイルとその他のロールの記述。
RDB$INDEX_SEGMENTS 索引を構成する列。
RDB$INDICES 各表の索引の特性。
RDB$INTERRELATIONS データベースで使用されているエンティティの相互依存性。
RDB$MODULES ヘッダーや宣言部など、ユーザーによって定義されたモジュール定義。
RDB$OBJECT_SYNONYMS シノニムが有効な場合、このシステム表は、シノニム名、タイプおよびターゲットを記述するために作成される。
RDB$PARAMETERS RDB$ROUTINESに格納されている各ルーチンのインタフェース定義。ルーチン(プロシージャまたはファンクション)への各パラメータは、RDB$PARAMETERSの行で記述される。
RDB$PRIVILEGES データベース・オブジェクトの保護。
RDB$PROFILES データベースのプロファイル、ロールまたはユーザーの記述。
RDB$QUERY_OUTLINES 最適化の前に既知の問合せアウトラインを取得するためにオプティマイザで使用される問合せアウトラインの定義。
RDB$RELATION_CONSTRAINTS 表固有のすべての制約をリストする。
RDB$RELATION_CONSTRAINT_FLDS 表固有の制約の一意キー、主キーまたは外部キーの宣言に関与している列をリストする。
RDB$RELATION_FIELDS 各表に対して定義された列。
RDB$RELATIONS データベースの表およびビュー。
RDB$ROUTINES データベースの各ファンクションおよびプロシージャの記述。ルーチンは、スタンドアロンまたはモジュールに含まれる。
RDB$SEQUENCES データベースで定義されている順序の特性。
RDB$STORAGE_MAPS 各記憶域マップの特性。
RDB$STORAGE_MAP_AREAS 記憶域マップの各パーティションの特性。
RDB$SYNONYMS ユーザー指定のオブジェクト名がその内部データベース名に関連付けられる。この表は、SQLマルチスキーマ機能が有効化されているデータベースにのみ存在する。
RDB$TRIGGERS トリガーの定義。
RDB$VIEW_RELATIONS ビューで使用されている表の相互依存性。
RDB$WORKLOAD ワークロード情報を収集する。

I.6.1 RDB$CATALOG_SCHEMA

RDB$CATALOG_SCHEMAシステム表には、各SQLカタログおよびスキーマの名前と定義が含まれます。この表は、SQLマルチスキーマ機能が有効化されているデータベースにのみ存在します。次の表は、RDB$CATALOG_SCHEMAシステム表の列に関する情報を示しています。

列名 データ型 概要説明
RDB$PARENT_ID integer スキーマの場合、この列は、このスキーマが属するカタログのRDB$CATALOG_SCHEMA_IDである。カタログの場合、この列は常に0。
RDB$CATALOG_SCHEMA_NAME char(31) カタログまたはスキーマの名前。
RDB$CATALOG_SCHEMA_ID integer これがカタログまたはスキーマのいずれであるかを示す一意の識別子。

スキーマ・オブジェクトは、1から始まって増加していく正の識別子を備える。カタログ・オブジェクトは、-1から始まって減少していく負の識別子を備える。0は予約されている。

RDB$DESCRIPTION list of byte varying カタログまたはスキーマに関するユーザー指定の説明。
RDB$SCHEMA_AUTH_ID char(31) スキーマの作成者の認可識別子。
RDB$SECURITY_CLASS char(20) 今後の使用のため予約。
RDB$CREATED date vms スキーマまたはカタログの作成時に設定。
RDB$LAST_ALTERED date vms SQL ALTER CATALOG文またはALTER SCHEMA文の使用時(今後)に設定。
RDB$CATALOG_SCHEMA_CREATOR char(31) このスキーマまたはカタログの作成者。

I.6.2 RDB$COLLATIONS

RDB$COLLATIONSシステム表では、データベースで使用する照合順番が記述されます。次の表は、RDB$COLLATIONSシステム表の列に関する情報を示しています。

列名 データ型 概要説明
RDB$COLLATION_NAME char(31) データベースの照合順番をデータベース内で認識させるために使用する名前を指定。
RDB$COLLATION_SEQUENCE byte varying 照合順番の内部表現。
RDB$DESCRIPTION byte varying 照合順番に関するユーザー指定の説明。
RDB$FLAGS integer 次のビットが設定されているビット・マスク。

  • ビット0

    ASCII照合順番の場合。

  • ビット1

    DEC_MCS照合順番の場合。

RDB$SECURITY_CLASS char(20) 今後の使用のため予約。
RDB$CREATED date vms 照合順番の作成時に設定。
RDB$LAST_ALTERED date vms 今後の使用のため予約。
RDB$COLLATION_CREATOR char(31) この照合順番の作成者。

I.6.3 RDB$CONSTRAINTS

RDB$CONSTRAINTSシステム表には、各制約の名前と定義が含まれます。次の表は、RDB$CONSTRAINTSシステム表の列に関する情報を示しています。

列名 データ型 概要説明
RDB$CONSTRAINT_NAME char(31) システム全体における制約の一意の名前。
RDB$CONSTRAINT_BLR byte varying 制約を定義するBLR。
RDB$CONSTRAINT_SOURCE byte varying 制約のユーザーのソース。
RDB$DESCRIPTION byte varying この制約に関するユーザー指定の説明。
RDB$EVALUATION_TIME integer 制約をいつ評価するかを示す次のような値:

  • 0

    コミット時(初期遅延)。

  • 1

    動詞実行時(遅延可能な初期即時)。

  • 2

    動詞実行時(遅延不可)。

RDB$EXTENSION_PARAMETERS byte varying 今後の使用のため予約。
RDB$SECURITY_CLASS char(20) 今後の使用のため予約。
RDB$CREATED date vms 制約の作成時に設定。
RDB$LAST_ALTERED date vms 今後の使用のため予約。
RDB$CONSTRAINT_CREATOR char(31) この制約の作成者。
RDB$FLAGS integer フラグ。

RDB$FLAGSは、RDB$CONSTRAINTSシステム表のフラグを示します。

ビット位置 説明
0 現在無効。
1 現在有効(検証なし)。

I.6.4 RDB$CONSTRAINT_RELATIONS

RDB$CONSTRAINT_RELATIONSシステム表では、特定の制約に関与しているすべての表をリストします。次の表は、RDB$CONSTRAINT_RELATIONSシステム表の列に関する情報を示しています。

列名 データ型 概要説明
RDB$CONSTRAINT_NAME char(31) システム全体における制約の一意の名前。
RDB$RELATION_NAME char(31) 制約に関与している表の名前。
RDB$FLAGS integer フラグ。
RDB$CONSTRAINT_CONTEXT integer 制約に関与している表のコンテキスト変数。
RDB$SECURITY_CLASS char(20) 今後の使用のため予約。

RDB$FLAGSは、RDB$CONSTRAINT_RELATIONSシステム表のフラグを示します。

ビット位置 説明
0 今後の使用のため予約。
1 今後の使用のため予約。
2 指定された表に制約が存在する場合。
3 制約がdbkey検索による最適化で評価を行う場合。
4 制約で存在の有無をチェックする場合。
5 制約で一意性をチェックする場合。
6 指定された表の行の格納を制約で評価する必要がある場合。
7 指定された表の行の格納を制約で評価する必要がない場合。
8 指定された表の行の消去を制約で評価する必要がある場合。
9 指定された表の行の消去を制約で評価する必要がない場合。

I.6.5 RDB$DATABASE

RDB$DATABASEシステム表には、データベース全体に関する情報が格納されます。この表には、1つの行のみを含むことができます。次の表は、RDB$DATABASEシステム表の列に関する情報を示しています。

列名 データ型 概要説明
RDB$CDD_PATH char 256 データベースのディクショナリのパス名。
RDB$FILE_NAME char 255 Oracle Rdbにより、データベース・ルート・ファイルのファイル仕様が返される。1
RDB$MAJ_VER integer データベースのメジャー・バージョンから導出。
RDB$MIN_VER integer データベースのリリース番号から導出。
RDB$MAX_RELATION_ID integer 割り当てられている最大の表識別子。この次の表には、MAX_RELATION_IDに1を加えたIDが割り当てられる。
RDB$RELATION_ID integer RDB$RELATIONS表の一意の識別子。表を削除した場合、その識別子は他の表に割り当てられない。
RDB$RELATION_ID_ROOT_DBK char(8) RDB$RELATION_ID列のRDB$REL_REL_ID_NDX索引のベースへのポインタ(データベース・キーまたはdbkey)。
RDB$RELATION_NAME_ROOT_DBK char(8) RDB$RELATION_NAME列のRDB$REL_REL_NAME_NDX索引のベースへのポインタ(dbkey)。
RDB$FIELD_ID integer RDB$FIELD_VERSIONS表の識別子。
RDB$FIELD_REL_FLD_ROOT_DBK char(8) RDB$RELATION_ID列および
RDB$VERSION列のRDB$VER_REL_ID_VER_NDX索引のベースへのポインタ(dbkey)。
RDB$INDEX_ID integer RDB$INDICES表の識別子。
RDB$INDEX_NDX_ROOT_DBK char(8) RDB$INDEX_NAME列のRDB$NDX_NDX_NAME_NDX索引のベースへのポインタ(dbkey)。
RDB$INDEX_REL_ROOT_DBK char(8) RDB$RELATION_ID列のRDB$NDX_REL_NAM_NDX索引のベースへのポインタ(dbkey)。
RDB$INDEX_SEG_ID integer RDB$INDEX_SEGMENTS表の識別子。
RDB$INDEX_SEG_FLD_ROOT_DBK char(8) RDB$INDEX_NAME列およびRDB$FIELD_POSITION列のRDB$NDX_SEG_NAM_FLD_POS_NDX索引のベースへのポインタ(dbkey)。
RDB$SEGMENTED_STRING_ID integer セグメント化された文字列を含む論理領域ID。
RDB$ACCESS_CONTROL byte varying データベースのアクセス制御ポリシー。
RDB$DESCRIPTION byte varying データベースに関するユーザー指定の説明。
RDB$DATABASE_PARAMETERS byte varying 今後の使用のため予約。
RDB$EXTENSION_PARAMETERS byte varying 今後の使用のため予約。
RDB$FLAGS integer フラグ。
RDBVMS$MAX_VIEW_ID integer RDB$RELATIONSシステム表のRDB$RELATION_ID列に割り当てられた最大のビュー識別子。この次のビューには、MAX_VIEW_IDに1を加えたIDが割り当てられる。
RDBVMS$SECURITY_AUDIT integer RMU Set Auditコマンドで指定されている、データベースに対して監査される権限を示すビット・マスク。
RDBVMS$SECURITY_ALARM integer RMU Set Auditコマンドで指定されている、データベースに対して警告を生成する権限を示すビット・マスク。
RDBVMS$SECURITY_USERS byte varying 特定のデータベース・オブジェクトに対してDACCESS(任意アクセス)監査が有効な場合に、DAC(任意アクセス制御)イベントに対して監査されるユーザーまたは警告を生成するユーザーを識別するアクセス制御リスト。
RDB$SECURITY_CLASS char(20) 今後の使用のため予約。
RDBVMS$SECURITY_AUDIT2 integer 今後の使用のため予約。
RDBVMS$SECURITY_ALARM2 integer 今後の使用のため予約。
RDBVMS$CHARACTER_SET_ID integer 値は、識別子キャラクタ・セットに使用されるキャラクタ・セットID。
RDBVMS$CHARACTER_SET_NATIONAL integer 値は、すべてのNCHAR(NATIONAL CHARまたはNATIONAL CHARACTERとも呼ばれる)データ型およびリテラルに使用されるキャラクタ・セットID。
RDBVMS$CHARACTER_SET_DEFAULT integer 値は、デフォルト・キャラクタ・セットに使用されるキャラクタ・セットID。
RDB$MAX_ROUTINE_ID integer データベースに追加されたモジュールとルーチンの数を保持。データベースにルーチンやモジュールが追加されていない場合の値は0。
RDB$CREATED date vms データベースの作成時に設定。
RDB$LAST_ALTERED date vms SQL ALTER DATABASE文の使用時に設定。
RDB$DATABASE_CREATOR char(31) このデータベースの作成者。
RDB$DEFAULT_STORAGE_AREA_ID integer マップされていない永続的な表および索引に使用されるデフォルトの記憶領域。
RDB$DEFAULT_TEMPLATE_AREA_ID integer 今後の使用のため予約。


1ルート・ファイル仕様はディスクに格納されません(Area修飾子を指定したRMU Dumpコマンドは、このフィールドが空白であることを示します)。ルート・ファイル仕様は、実行時に問合せにのみ返されます。このため、ルート・ファイル仕様は、RMU Move_Area、RMU Copy_Database、RMU Backupの各コマンドやSQL EXPORT文およびIMPORT文を使用した後も正しいままです。