H.1 情報表の概要
情報表では、記憶域、アフター・イメージ・ジャーナル、行キャッシュ、データベース・ユーザー、データベース・ルートおよびデータベース・キャラクタ・セットに関する内部情報が表示されます。情報表が生成されると、SQLインタフェースでこれに対して問合せを実行できます。
情報表は、読取り専用の特殊な表であり、Oracle Rdbリリース7.1のデータベースで作成でき、既存のリレーショナル表に格納されていないデータベース属性の取得に使用できます。情報表により、現在、内部形式で格納されている目的のデータベース情報をリレーショナル表として表示できます。
スクリプトINFO_TABLES.SQLはOracle Rdbキットに含まれています。INFO_TABLES.SQLファイルはSQL$SAMPLEディレクトリにあります。表H-1は、Oracle Rdbリリース7.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 |
情報表には次の制限が適用されます。