データディクショナリとは、データベースの各種情報を提供する重要な表とビューのこと
データディクショナリは次の要素で構成される。
要素 | 内容 | |
---|---|---|
所有者 ↓ SYS 表領域 ↓ SYSTEM |
ベース表 | 対応するデータベースについての情報を格納する基盤になる表。 これらの表に読み書きできるのはOracleだけ。これらの表は標準化され、 データのほとんどは、暗号形式で格納されているため、ユーザーが直接アクセスすることはない。 (データベース作成時にsql.bsqによって自動作成される。) |
ユーザーアクセス可能ビュー | データディクショナリのベース表に格納されている情報を要約して表示するビュー。 これらのビューは、ベース表にあるデータを、ユーザー名や表の名前などの実用的な情報にデコードし、 結合とWHERE句を使用して情報を簡略化する。 ほとんどのユーザーには、ベース表ではなく、これらのビューへのアクセス権が与えられている。 (管理者がcatalog.sqlを実行して作成する。) |
接頭辞 | 特徴 |
---|---|
USER | ユーザーのビュー(ユーザーのスキーマにある) ・ ユーザーが作成したスキーマ・オブジェクトユーザーによる権限付与に関する情報など、 ユーザー独自のプライベートなデータベース環境を参照する。 ・ ユーザーに関係する行のみを表示する。 ・ 列OWNERが暗黙的に想定されることを除いて、他のビューと同一の列を持つ。 ・ ALLビューにある情報のサブセットを戻す。 ・ 使用しやすいように短縮したPULICシノニムを持つことができる。 ↓ ★すべてのユーザーがアクセスできる。ユーザーが所有するオブジェクトに関する情報を提供する。 |
ALL | 広義のユーザーのビュー(ユーザーがアクセスできる) ・ ユーザーのデータベース全体の概要を参照する。 ・ ユーザーが所有しているスキーマ・オブジェクトに加えて、権限とロールのPUBLICへの付与や明示的な付与によって そのユーザーがアクセスできるようになったスキーマ・オブジェクトに関する情報を戻す。 ↓ ★全てのユーザーがアクセスできる。各ビューにはOWNER列があり、 ユーザーがアクセスできるオブジェクトに関する情報を提供する。 |
DBA | データベース管理者のビュー(ユーザー全員のスキーマの内容) ・ データベース全体のグローバルビューが示される。 ・ これらのビューに問い合わせを発行できるのはデータベース管理者だけ。 ・ システム権限のSELECT ANY TABLE を付与されているユーザーは、このディクショナリに問い合わせを発行せきる。 ↓ ★DBA又はSELECT ANY TABLE権限を持つユーザーがアクセスできる。データベース内の全オブジェクトに関する情報を提供し、 OWNER列がある。 |
標準パッケージとは、データベースの制御、アプリケーション開発に利用するもの
パッケージ名 | 内容 |
---|---|
DBMS_LOB | BLOB型、CLOB型の操作に使用 |
DBMS_SESSION | ALTER SESSIONやSET ROLEなどのSQL文を実行 |
DBMS_UTILITY | ユーティリティルーチン |
DBMS_SPACE | セグメント領域に関する情報を提供 |
DBMS_ROWID | ROWID情報を提供 |
PL/SQLでは、関連のあるプロシージャやファンクションをまとめて、“パッケージ”としてデータベースに格納することができる。
Oracleでは、PL/SQLのアプリケーション構築を支援するために、いくつかのパッケージを提供している。 Oracleでは、以下のようなユーティリティ・パッケージを提供している。
パッケージの種類 | 用途 |
---|---|
STANDARDパッケージ | PL/SQLプログラム中のSQLの機能を補強するためのもの。 例えば、TO_DATEやTO_CHARなどの組込み関数がある。 |
製品固有のパッケージ | Oracle製品固有に用意されているもの。 例えば、Oracleサーバには、DBMS_STANDARD、DBMS_SQL、DBMS_ALERT、DBMSOUTPUTなどのパッケージがある。 |
STANDARDパッケージの作成スクリプト・・・standard.sql
DBMS_STANDARDパッケージの作成スクリプト・・・dbmsstdx.sql
標準パッケージを含め、ストアドオブジェクトに関する情報は、データディクショナリビュー DBA_OBJECTSから取得することができる。 ストアドオブジェクトは、依存しているオブジェクトの定義が変更されたり、ユーティリティを使用したりすると、 DBA_OBJECTSビューの列の値がINVALIDになることがある。この場合、オブジェクトのリコンパイルが必要になる。
種類 | 内容 |
---|---|
utl*.sql | データベースユーティリティ用の追加や表を作成するスクリプト |
cat*.sql | データディクショナリビューを作成するためのスクリプト |
dbms*.sql | データベース・パッケージの仕様部 |
prvt*.pbl | ラップされたデータベース・パッケージ・コード |
*unixでは、$ORACLE_HOME/rdbms/admin
WindowsNTでは、%ORACLE_HOME%\rdbms80\admin
のそれぞれのディレクトリに管理者が実行するためのスクリプトが置かれている。
Oracle8iから従来のDML文に加えて、トリガーの起動タイミングが追加になった。
2001/05/18 担当:Y.N