Oracle Database 概要 11gリリース1(11.1) E05765-03 |
|
この章では、データ・ディクショナリと呼ばれる、各Oracleデータベースの読取り専用の参照表とビューの中核的なセットについて説明します。
この章の内容は、次のとおりです。
データ・ディクショナリはOracleデータベースで最も重要な部分の1つであり、データベースに関する情報を提供する読取り専用の表の集合です。データ・ディクショナリには次のものが含まれます。
データ・ディクショナリは、他のデータベース・データと同様に、表とビューによって構成されています。特定のデータベースのデータ・ディクショナリ表とビューは、すべてそのデータベースのSYSTEM
表領域に格納されます。
データ・ディクショナリは、あらゆるOracleデータベースにとって中核的な存在であるだけでなく、エンド・ユーザーからアプリケーション設計者やデータベース管理者まで、すべてのユーザーにとって重要なツールです。データ・ディクショナリにアクセスするには、SQL文を使用します。データ・ディクショナリは読取り専用のため、ユーザーはデータ・ディクショナリの表とビューに対して問合せ(SELECT
文)のみを発行できます。
この項の内容は、次のとおりです。
データ・ディクショナリは、次の要素で構成されています。
実表: 対応するデータベースについての情報を格納する基礎になる表。これらの表に読取り/書込みできるのはOracle Databaseのみです。これらの表は正規化され、データのほとんどは、暗号形式で格納されているため、ユーザーが直接アクセスすることはほとんどありません。
ユーザー・アクセス可能ビュー: データ・ディクショナリの実表に格納されている情報を要約して表示するビュー。これらのビューは、実表にあるデータを、ユーザー名や表の名前などの実用的な情報にデコードし、結合とWHERE
句を使用して情報を簡略化します。ほとんどのユーザーには、実表ではなく、これらのビューへのアクセス権が与えられています。
データ・ディクショナリのすべての実表とユーザー・アクセス可能ビューは、Oracle DatabaseユーザーSYS
が所有しています。したがって、Oracle Databaseユーザーは、SYS
スキーマに含まれている行またはスキーマ・オブジェクトを決して変更(UPDATE
、DELETE
またはINSERT
)しないでください。そのような操作により、データ整合性が損われることがあります。セキュリティ管理者は、このアカウントを厳しく管理する必要があります。
データ・ディクショナリの主な使用方法は次の3つです。
この項の内容は、次のとおりです。
データ・ディクショナリの実表内のデータは、Oracle Databaseを機能させるために必要です。したがって、Oracle Databaseのみがデータ・ディクショナリ情報の書込みや変更を行います。データベースをアップグレードまたはダウングレードしたとき、Oracle Databaseは、データ・ディクショナリ表を変更するスクリプトを提供します。
データベースの操作時に、Oracle Databaseはデータ・ディクショナリを読み取って、スキーマ・オブジェクトが存在すること、およびユーザーのアクセス権が適切に付与されていることを確認します。また、Oracle Databaseは、データベース構造、監査、権限付与およびデータの変更を反映するために、継続的にデータ・ディクショナリを更新します。
たとえば、ユーザーKathyがparts
という表を作成すると、新しい表、列、セグメント、エクステントおよびKathyがその表に対して持っている権限を反映するために、新しい行がデータ・ディクショナリに追加されます。この新しい情報は、次回ディクショナリ・ビューを問い合せるときに表示されます。
この項の内容は、次のとおりです。
多くのデータ・ディクショナリ・ビューにユーザーが簡単にアクセスできるようにするため、Oracle Databaseはパブリック・シノニムを作成します。セキュリティ管理者は、システム全体で使用するスキーマ・オブジェクトのパブリック・シノニムを作成して追加することもできます。ユーザーは、パブリック・シノニムに使用されているのと同じ名前を、自分のスキーマ・オブジェクトに付けないようにする必要があります。
Oracle Databaseは、データベース操作中に絶えずデータ・ディクショナリにアクセスして、ユーザー・アクセスの妥当性チェックやスキーマ・オブジェクトの状態を検証します。そのため、データ・ディクショナリ情報の大部分はSGAのディクショナリ・キャッシュに格納されます。すべての情報は、最低使用頻度(LRU)アルゴリズムを使用してメモリーに格納されます。
通常、キャッシュに保持されるのは、解析情報です。表とそれらの列について記述しているCOMMENTS
列は、頻繁にアクセスされないかぎりキャッシュには保持されません。
他のOracle Database製品は、既存のビューを参照したり、独自のデータ・ディクショナリ表またはビューを追加できます。データ・ディクショナリを参照するプログラムを記述するアプリケーション開発者は、基礎となる表ではなくパブリック・シノニムを参照する必要があります。これは、シノニムのほうがソフトウェア・リリース間での変更が少ないためです。
データ・ディクショナリのビューは、すべてのデータベース・ユーザーのためのリファレンスとしての役目を果します。データ・ディクショナリ・ビューには、SQL文を介してアクセスします。すべてのOracle Databaseユーザーがアクセスできるビューもいくつかありますが、その他のビューはデータベース管理者のみが使用するように設計されています。
データ・ディクショナリは、データベースがオープンしていれば常に使用可能です。データ・ディクショナリは、常にオンライン状態にあるSYSTEM
表領域にあります。
データ・ディクショナリは、ビューのセットによって構成されています。多くの場合、表7-1で示すように、そのセットは、類似した情報が格納されている3つのビューで構成され、それぞれが接頭辞によって区別されます。
接頭辞 | 有効範囲 |
---|---|
|
ユーザーのビュー(ユーザーのスキーマにある) |
|
広義のユーザーのビュー(ユーザーがアクセスできる) |
|
データベース管理者のビュー(ユーザー全員のスキーマの内容) |
列の集合は、次の例外を除き、ビュー全体で同一です。
USER
のビューには、通常、列OWNER
は含まれません。USER
ビューでは、この列には、問合せを発行するユーザーが暗黙的に想定されます。
DBA
ビューには、管理者にとって有用な情報を含む列が追加されています。 この項の内容は、次のとおりです。
通常のデータベース・ユーザーが最も頻繁に使用するのは、接頭辞がUSER
のビューです。これらのビューには、次のような特長があります。
OWNER
が暗黙的に想定されることを除いて、他のビューと同一の列を持っています。
ALL
ビューにある情報のサブセットを戻します。
パブリック・
シノニムを持つことができます。
たとえば、次の問合せは、自分のスキーマに入っているすべてのオブジェクトを戻します。
SELECT object_name, object_type FROM USER_OBJECTS;
接頭辞がALL
のビューは、ユーザーのデータベース全体の概要を参照します。これらのビューは、ユーザーが所有しているスキーマ・オブジェクトに加えて、権限とロールのPUBLICへの付与や明示的な付与によってそのユーザーがアクセスできるようになったスキーマ・オブジェクトに関する情報を戻します。たとえば次の問合せは、アクセス権を持っているすべてのオブジェクトに関する情報を戻します。
SELECT owner, object_name, object_type FROM ALL_OBJECTS;
接頭辞がDBA
のビューには、データベース全体のグローバル・ビューが示されます。DBA
ビューへの問合せを発行するのは管理者のみであるため、これらのビューのシノニムは作成されません。このため、DBA
ビューに問合せを発行するには、管理者は、次のようにして所有者SYS
をビューの名前の接頭辞として指定する必要があります。
SELECT owner, object_name, object_type FROM SYS.DBA_OBJECTS;
ANY
システム権限を持つユーザーがその権限をデータ・ディクショナリに対して使用しないように、データ・ディクショナリ保護を実装することをお薦めします。データ保護を使用可能に(O7_DICTIONARY_ACCESSIBILITY
をfalse
に設定)すると、SYS
スキーマ内のオブジェクト(ディクショナリ・オブジェクト)へのアクセスは、SYS
スキーマを持つユーザーに限定されます。これらのユーザーはSYS
であり、SYSDBA
として接続するユーザーです。
DUAL
表は、既知の結果を保証するために、Oracle Databaseとユーザー作成のプログラムによって参照されるデータ・ディクショナリ内の小さな表です。この表にはDUMMY
という1つの列と、値X
を格納する1つの行があります。
Oracle Databaseは、操作中ずっと、カレント・データベース・アクティビティを記録する一連の仮想表を保持しています。これらの表のことを動的パフォーマンス表と呼びます。
動的パフォーマンス表は実際の表ではないため、ほとんどのユーザーはこれにアクセスすることはありません。しかし、データベース管理者は、これらの表のビューに問合せを発行したり、ビューを作成したり、それらのビューにアクセスする権限を他のユーザーに付与できます。これらのビューは、データベース管理者が変更または削除できないため、固定ビューと呼ばれることもあります。
動的パフォーマンス表はSYS
が所有しており、その名前はすべてV_$
で始まります。これらの表のビューが作成され、そのビューのパブリック・シノニムが作成されます。これらのシノニム名は、V$
で始まります。たとえば、V$DATAFILE
ビューにはデータベースのデータファイルに関する情報が格納され、V$FIXED_TABLE
ビューにはデータベース内のすべての動的パフォーマンス表とビューに関する情報が格納されます。
DBMS_METADATA
パッケージには、データベース・オブジェクトの完全な定義を抽出するためのインタフェースが用意されています。これらの定義は、XMLまたはDDL文のいずれかで表現されます。2つのインタフェース・スタイルには次の特長があります。
|
![]() Copyright © 1993, 2008 Oracle Corporation. All Rights Reserved. |
|