ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

# 付録H
情報表

# H.1 情報表の概要

情報表では、記憶域、アフター・イメージ・ジャーナル、行キャッシュ、データベース・ユーザー、データベース・ルートおよびデータベース・キャラクタ・セットに関する内部情報が表示されます。情報表が生成されると、SQLインタフェースでこれに対して問合せを実行できます。

情報表は、読取り専用の特殊な表であり、Oracle Rdbリリース7.1のデータベースで作成でき、既存のリレーショナル表に格納されていないデータベース属性の取得に使用できます。情報表により、現在、内部形式で格納されている目的のデータベース情報をリレーショナル表として表示できます。

スクリプトINFO_TABLES.SQLはOracle Rdbキットに含まれています。INFO_TABLES.SQLファイルはSQL$SAMPLEディレクトリにあります。表H-1は、Oracle Rdbリリース7.1でサポートされている情報表を示しています。

表H-1 サポートされている情報表
表名 | 説明
--- | ---
RDB$STORAGE_AREAS | データベース記憶域に関する情報を表示する。
RDB$DATABASE_JOURNAL | デフォルトのジャーナルに関する情報を表示する。
RDB$CACHES | データベース行キャッシュに関する情報を表示する。
RDB$DATABASE_ROOT | データベース・ルートに関する情報を表示する。
RDB$JOURNALS | データベース・ジャーナル・ファイルに関する情報を表示する。
RDB$DATABASE_USERS | データベース・ユーザーに関する情報を表示する。
RDB$LOGICAL_AREAS | 論理領域に関する情報を表示する。
RDB$CHARACTER_SETS | Oracle Rdbキャラクタ・セットに関する情報を表示する。
RDB$NLS_CHARACTER_SETS | Oracle NLSキャラクタ・セットとOracle Rdbキャラクタ・セット間のマッピングを表示する。

OpenVMSのこれらの情報表の詳細は、Oracle RdbのコマンドラインのヘルプでORACLE_RDBnnのトピックを参照し、Information_Tablesのサブトピックを選択してください（nnは複数バージョンを使用している場合のバージョン番号）。

例

例1: 情報表の問合せ

次の例は、INFO_TABLES.SQLスクリプトで作成した情報表の1つを問い合せる方法を示しています。

    SQL> SELECT * FROM RDB$LOGICAL_AREAS WHERE RDB$LOGICAL_AREA_NAME='JOBS';
     RDB$LOGICAL_AREA_ID   RDB$AREA_ID   RDB$RECORD_LENGTH   RDB$THRESHOLD1_PERCENT
       RDB$THRESHOLD2_PERCENT   RDB$THRESHOLD3_PERCENT   RDB$ORDERED_HASH_OFFSET
          RDB$RECORD_TYPE   RDB$LOGICAL_AREA_NAME
                      95             7                  41                        0
                            0                        0                         0
                        1   JOBS

    1 row selected

例2: 記憶域ファイルの拡張を検出する問合せ

データベース管理者は、領域の現在の割当てが初期割当てを超えた記憶域をリストできます。この情報は、混在する領域におけるパフォーマンスを管理する際に非常に有効です。領域が混在する場合は、記憶域が拡張されるたびに、ハッシュ索引アクセスで余分なI/Oが発生します。

    SQL> select RDB$AREA_NAME as NAME edit using 'T(15)',
    cont> RDB$INITIAL_ALLOCATION as INITIAL edit using 'Z(9)',
    cont> RDB$CURRENT_ALLOCATION as CURRENT edit using 'Z(9)',
    cont> RDB$EXTEND_COUNT as EXTENDS edit using 'Z(9)',
    cont> RDB$LAST_EXTEND as LAST_EXT_DATE
    cont> from RDB$STORAGE_AREAS
    cont> where (RDB$CURRENT_ALLOCATION > RDB$INITIAL_ALLOCATION + 1)
    cont>   and (RDB$AREA_NAME <> ' ');
     NAME                INITIAL     CURRENT     EXTENDS   LAST_EXT_DATE
     RDB$SYSTEM              102        3724          15   14-AUG-2003 13:53:36.81
     SALARY_HISTORY          270        1270           1    6-AUG-2003 11:47:11.00
    2 rows selected

この問合せは、データベースの作成後に、システム領域が約37パーセント拡張されたことを示しています。その理由を考えてみます。開発者が、ユーザー定義の記憶域にデータをマッピングせずに表を作成している可能性があります。領域SALARY_HISTORYは、拡張された混在領域です。この領域には、初期割当ては不適切になっています。8月のある期間に、大量のデータがこの領域に挿入された可能性があります。データベース管理者は、SALARY_HISTORY記憶域のサイズを変更するメンテナンス・スケジュールを設定できます。

注意 この問合せでは、初期割当てに1を追加しています。これは、スパム・ページが追加され、現在の割当てが初期割当てより1ブロック大きい領域を削除するためです。RDB$AREA_NAMEと空白との比較により、スナップショット領域が問合せから削除されます。

同様に、初期割当てを超えたスナップショット・ファイルを示す問合せは、次のとおりです。

    SQL> select RDB$AREA_FILE as SNAP_NAME edit using 'T(50)',
    cont> RDB$INITIAL_ALLOCATION as INITIAL edit using 'Z(9)',
    cont> RDB$CURRENT_ALLOCATION as CURRENT edit using 'Z(9)'
    cont> from RDB$STORAGE_AREAS
    cont> where (RDB$CURRENT_ALLOCATION > RDB$INITIAL_ALLOCATION)
    cont>   and (RDB$AREA_NAME = ' ');
     SNAP_NAME                                              INITIAL     CURRENT
     DKD300:[SQLUSER71]MF_PERS_DEFAULT.SNP;1                     50        1623
     DKD300:[SQLUSER71]DEPARTMENTS.SNP;1                         10        5000
    2 rows selected

スナップショット・ファイルが大きくなる主な原因としては、古いトランザクションがアクティブであるか、初期割当てのサイズが小さすぎることが考えられます。この問合せにより、データベース管理者は、調査が必要な領域を認識できます。このような問合せを定期的に実行すると、拡張傾向を検出できます。

例3: 表のカーディナリティとキャッシュ・サイズの比較

問合せを定期的に実行すると、割り当てられたキャッシュ・サイズが現在の表サイズに対して適切かどうかをチェックできます。キャッシュが表に対して小さすぎることを認識し、是正処置を実施すると、キャッシュの衝突を削減できます。

    SQL> select A.RDB$CACHE_NAME, A.RDB$CACHE_SIZE, B.RDB$CARDINALITY
    cont> from RDB$CACHES A, RDB$RELATIONS B
    cont> where A.RDB$CACHE_NAME = B.RDB$RELATION_NAME;
     A.RDB$CACHE_NAME                  A.RDB$CACHE_SIZE      B.RDB$CARDINALITY
     EMPLOYEES                                      100                    103
     DEPARTMENTS                                     26                     26
     DEGREES                                         20                    165
     TOO_BIG                                        500                  10000
     TOO_SMALL                                     1000                    100
    5 rows selected

この例では、表TOO_BIGおよびDEGREESは、合計表のそれぞれ5パーセントと12パーセントしかキャッシュできません。キャッシュ・サイズの増加が必要であると考えられます。逆に、表TOO_SMALLのキャッシュは大きすぎると判断できます。このキャッシュの構成が正しくないか、表が小さくなった可能性があります。現在のキャッシュ・サイズは、メモリーを浪費していると考えられます。

例4: 論理領域DBKEYから名前への変換

RMU VerifyやRMU Show Statisticsなどのツールでは、通常、論理領域DBKEYが表示されます。例として、RMU Show Staticticsのストール・メッセージ画面からの次の出力について考慮します。

    202003A5:5  16:25:18.51  waiting for record 79:155:6

データベース管理者は、RMU /DUMP/LAREA=RDB$AIPを使用して、すべての論理領域とその領域番号のリストを取得できます。また、かわりにRDB$LOGICAL_AREAS情報表に対して次の簡単な問合せを実行することも可能です。

    SQL> select rdb$logical_area_id, rdb$area_id, rdb$logical_area_name
    cont> from rdb$logical_areas
    cont> where rdb$logical_area_id=79;
     RDB$LOGICAL_AREA_ID   RDB$AREA_ID   RDB$LOGICAL_AREA_NAME
                      79             3   EMPLOYEES
    1 row selected

この問合せは、このストールが表EMPLOYEESにあり、それが物理領域番号3に格納されていることを示しています。データベース管理者は、この情報を使用して、データベース・ページをダンプできます。

    $ RMU/DUMP/AREA=3/START=155/END=155/OUTPUT=t.t mf_personnel

# H.2 情報表に対する制限

情報表には次の制限が適用されます。

- 情報表は変更できません。表名と列名は変更しないでください。

- フラグ・フィールド内の各ビットが何を表すかを説明したドキュメントは、OpenVMSにあります。Oracle RdbのコマンドラインのヘルプでORACLE_RDBnnのトピックを参照し、Information_Tablesのサブトピックを選択してください（nnは複数バージョンを使用している場合のバージョン番号）。