TOP > データディクショナリビューと標準パッケージ

データディクショナリビューと標準パッケージ


データディクショナリ

データディクショナリとは、データベースの各種情報を提供する重要な表とビューのこと

データディクショナリに含まれるもの

データディクショナリの構造

データディクショナリは次の要素で構成される。

  要素 内容
所有者

SYS

表領域

SYSTEM
ベース表 対応するデータベースについての情報を格納する基盤になる表。
これらの表に読み書きできるのはOracleだけ。これらの表は標準化され、 データのほとんどは、暗号形式で格納されているため、ユーザーが直接アクセスすることはない。
(データベース作成時にsql.bsqによって自動作成される。)
ユーザーアクセス可能ビュー データディクショナリのベース表に格納されている情報を要約して表示するビュー。
これらのビューは、ベース表にあるデータを、ユーザー名や表の名前などの実用的な情報にデコードし、 結合とWHERE句を使用して情報を簡略化する。 ほとんどのユーザーには、ベース表ではなく、これらのビューへのアクセス権が与えられている。
(管理者がcatalog.sqlを実行して作成する。)

Oracleによるデータ・ディクショナリの使用方法

データディクショナリの分類

接頭辞 特徴
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とパッケージ

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から取得することができる。 ストアドオブジェクトは、依存しているオブジェクトの定義が変更されたり、ユーティリティを使用したりすると、 DBA_OBJECTSビューの列の値がINVALIDになることがある。この場合、オブジェクトのリコンパイルが必要になる。


管理スクリプトの種類

種類 内容
utl*.sql データベースユーティリティ用の追加や表を作成するスクリプト
cat*.sql データディクショナリビューを作成するためのスクリプト
dbms*.sql データベース・パッケージの仕様部
prvt*.pbl ラップされたデータベース・パッケージ・コード

*unixでは、$ORACLE_HOME/rdbms/admin
 WindowsNTでは、%ORACLE_HOME%\rdbms80\admin
 のそれぞれのディレクトリに管理者が実行するためのスクリプトが置かれている。

*データベース・イベント・トリガーのイベントについて

Oracle8iから従来のDML文に加えて、トリガーの起動タイミングが追加になった。

<追加された起動タイミング>

TOP > データディクショナリビューと標準パッケージ

2001/05/18 担当:Y.N