LoginSignup
0
0

【Oracleデータベース】メタデータ

Last updated at Posted at 2024-04-30

アプリ開発者は「顧客テーブル」「注文テーブル」「商品テーブル」のような業務データ、いわゆるメタではないデータにアクセスすることがほとんどで、メタデータは未知の領域となっていた。

そこでOracleのメタデータの確認方法についてライトにまとめた。

1. メタデータを保持するテーブル・ビュー

DICTIONARYビューでメタデータを保持するテーブル・ビューの一覧を確認できる。
(…という記事を見たが、ここに載っていないビューもあるようだ。。。
全てが載っているビューはどれだろう。。。)

SELECT * FROM DICTIONARY;

1-1. 静的データ・ディクショナリ

データベースに関する管理メタデータ。

データ・ディクショナリが変更された場合(たとえば、新しく表が作成されたり、ユーザーに新しい権限が付与された場合など)のみ変更される。

所有者はSYSユーザー。
実表とビューがある。

  • 実表(静的データ・ディクショナリ表)
    Oracleだけが読み書き可。ほとんどが暗号化されておりユーザーが直接アクセスすることを目的としていない。

  • ビュー(静的データ・ディクショナリ・ビュー)
    実表をユーザーが見ることを目的として加工したビュー。読み取り専用。

静的データ・ディクショナリ・ビュー

表示される情報の範囲に応じて以下3種類のビューに分類される。
また、SELECT文を実行したユーザーの権限によって閲覧できるビューやその内容が異なる。

  • USER_ビュー
    "USER_"から始まる名前のビュー。
    自己が所有するオブジェクトの情報。

  • ALL_ビュー
    "ALL_"から始まる名前のビュー。
    権限が付与されている範囲で閲覧可能な全ての情報。

  • DBA_ビュー
    "DBA_"から始まる名前のビュー。
    データベース全体の情報。
    SELECT ANY TABLE権限を持つユーザーのみが閲覧可能。

CDBアーキテクチャの場合

CDBRootとPDBのそれぞれがデータ・ディクショナリを持つ。

  • CDBのデータ・ディクショナリ
    CDB全体に関わるメタデータを保持している。
    "CDB_"から始まる名前のビュー。

  • PDBのデータ・ディクショナリ
    親であるCDBRootのデータディクショナリと、自分自身(各PDB固有)のデータディクショナリから成る。CDBRootのデータディクショナリについては、実データではなくポインタを保持している。

1-2. 動的パフォーマンス・ビュー(V$ビュー)

進行中のデータベース・アクティビティを監視するビュー。

データベースがオープンしている間、セッションやメモリ、ロックの獲得状況といった内部的な情報が継続的に更新される、参照専用の特別なビュー。

データファイルではなく内部ディスク構造およびメモリー構造のデータが表示されるので、一部のV\$ビューはオープン状態でなくても参照できる。(仮想ビュー)

実ビューの接頭辞は"V_\$"で、閲覧用のシノニムが接頭辞"V\$"。

所有者はSYSユーザー。

SYSユーザーまたはSYSDBA権限が付与されているユーザーのみがアクセス可能。

V$ビュー

"V$"から始まる動的パフォーマンス・ビュー。
動的パフォーマンス・ビューの別称でもある。

GV$ビュー

グローバルV\$ビュー。
"GV\$"から始まる名前の動的パフォーマンス・ビュー。
ほとんどすべてのV\$ビューに対応するGV\$ビューが存在する。
V\$ビューにはない、INST_ID列が存在する。

使いどころはRAC環境。
RAC環境でGV\$ビューを参照すると、INST_ID列からインスタンスを特定できる。

2. メタデータを返すOracleパッケージ関数

Oracleが提供するパッケージ関数にメタデータを取得できるものがある。

たとえばDBMS_ROWIDパッケージ

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0