レック・テクノロジー・コンサルティング株式会社TECH BLOG

今Oracleどうなってるの? 情報源その2:データ・ディクショナリ

初めましての方もそうでない方も宜しくお願い致します。
レック・テクノロジー・コンサルティングのエンジニア「佐々木」にございます。

前回は、Oracleデータベース(以下、Oracle)が稼動中に随時出力されるアラート・ログについて、概要や出力内容を説明致しました。

今回は、Oracleの構成情報確認の際に参照するデータ・ディクショナリ・ビューについて、以下の通り説明させて頂きます。

・データ・ディクショナリ・ビューとは?
・データ・ディクショナリ・ビューの種類について
・覚えておきたいデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビューとは?

 
Oracleの構成やユーザ、そして権限等の設定情報は、
直接アクセスすることができないデータ・ディクショナリ表に格納されます。

直接のアクセスは禁じられていますが、Oracleの構成やユーザ情報など、格納されている情報を確認しなければならない状況には確実に遭遇します。そのような時は、データ・ディクショナリ・ビュー※を参照します。
ビューとは、あらかじめ定義された行と列の集合のみにアクセスを限定させたものです。

データ・ディクショナリ表に格納されている情報は自動的に更新されます。
しかしながら、そのタイミングが「明示的に管理コマンドを実行した」場合のみであるため、
静的データ・ディクショナリと呼ばれます。

データ・ディクショナリ・ビューの種類について

 
データ・ディクショナリ・ビューには、ほぼ同様の列について参照できる3種類のビューが基本的に存在します。
異なる点は、参照できる範囲となります。

以下、より強い権限が必要な順に説明致します。
なお、「○○」にはビュー名の一部が入ります。

・DBA_○○ビュー

データベース管理者の使用を想定した、Oracle全体の情報を表示するビューです。
参照に必要なSELECT ANY TABLE権限は、Oracle作成時にDBAロールに付与されます。
ロールとは、権限(およびロール)のグループに名前をつけたものです。
 
DBA_TABLESビューの検索例(一部抜粋)
 
SQL> show user
ユーザーは"SYS"です。
 
SQL> select owner,table_name from dba_tables order by owner,table_name;
OWNER                          TABLE_NAME
------------------------------ ------------------------------
CTXSYS                         DR$NUMBER_SEQUENCE
CTXSYS                         DR$OBJECT_ATTRIBUTE
MDSYS                          SDO_COORD_AXES
OLAPSYS                        CWM2$AWDIMCREATEACCESS
SYS                            OLAPTABLEVELTUPLES
SYSTEM                         MVIEW$_ADV_PARTITION
TESTUSER1                      TEST1
TESTUSER1                      TEST3
TESTUSER1                      TEST5
TESTUSER2                      TEST2
TESTUSER2                      TEST4
TESTUSER2                      TEST6
・・・

・ALL_○○ビュー

SELECTを実行したユーザがアクセスできる情報を全て表示します。
実行ユーザが所有者であるオブジェクトの情報に加えて、権限やロールの付与により参照が許可された別ユーザのオブジェクトについての情報も含まれます。
 
ALL_TABLESビューの検索例(一部抜粋)
 
あらかじめ、TESTUSER2のTEST2/4/6表のSELECT権限をTESTUSER1に付与しています。
 
SQL> show user
ユーザーは"TESTUSER1"です。

SQL> select owner, table_name from all_tables order by owner, table_name;

OWNER                          TABLE_NAME
------------------------------ ------------------------------
TESTUSER1                      TEST1
TESTUSER1                      TEST3
TESTUSER1                      TEST5
TESTUSER2                      TEST2
TESTUSER2                      TEST4
TESTUSER2                      TEST6

・USER_○○ビュー

実行ユーザが所有者であるオブジェクトの情報のみを表示します。
特に権限は必要ありません。
所有者が本人でしかないために、DBAやALLと異なりowner列が存在しません。
 
USER_TABLESビューの検索例(一部抜粋)
 
SQL> show user
ユーザーは"TESTUSER1"です。
 
SQL> select table_name from user_tables order by table_name;

TABLE_NAME
------------------------------
TEST1
TEST3
TEST5

※「基本的に」と書きました通り、DBA/ALL/USERの接頭辞のいずれもつかないもの、
いずれかがつかないもの、DBAのみのビューが存在します。

以下、一例を記述致します。

・接頭辞がいずれもつかないビュー
 DICTIONARY、DICT_COLUMNS 等
 
・接頭辞のいずれかがつかないビュー
 ○○_TABLESPACES 等 
 ※○○_TABLESPACESは、ALLがありません。
 
・DBAのみしかないビュー
 DBA_DATA_FILES 等

覚えておきたいデータ・ディクショナリ・ビュー

 
本項では、基本的な情報収集の際に参照すると想定されるデータ・ディクショナリ・ビューを紹介致します。

なお、DBA/ALL/USERの箇所は「○○」とします。

・○○_CONS_COLUMNS
 制約の指定された列の情報を表示します。

・○○_CONSTRAINTS
 制約の情報を表示します。

・DBA_DATA_FILES
 データファイルの情報を表示します。

・○○_DB_LINKS
 データベース・リンクの情報を表示します。

・DICTIONARY
 使用可能なデータ・ディクショナリ(・ビュー)を表示します。

・DICT_COLUMNS
 データ・ディクショナリ(・ビュー)の列の情報を表示します。

・○○_DIRECTORIES
 ディレクトリの情報を表示します。

・○○_INDEXES
 索引の情報を表示します。

・○○_IND_COLUMNS
 索引の設定された列の情報を表示します。

・○○_JOBS
 ジョブの情報を表示します。

・○○_OBJECTS
 オブジェクトの情報を表示します。

・DBA_PROFILES
 プロファイル及び制限の設定情報を表示します。

・○○_RECYCLEBIN
 ごみ箱に関する情報を表示します。

・DBA_ROLES
 存在するロールを表示します。

・○○_ROLE_PRIVS
 ユーザ及びロールに付与されたロールの情報を表示します。

・○○_ROLLBACK_SEGS
 ロールバック・セグメントの情報を表示します。

・○○_SYS_PRIVS
 ユーザ及びロールに付与されたシステム権限の情報を表示します。

・○○_TABLES
 表の情報を表示します。

・○○_TABLESPACES
 表領域の情報を表示します。

・○○_TAB_PRIVS
 付与されたオブジェクト権限の情報を表示します。

・DBA_TEMP_FILES
 一時表領域に属するTempファイルの情報を表示します。

・○○_USERS
 データベース内のユーザ情報を表示します。

・○○_VIEWS
 ビューの情報を表示します。

※データ・ディクショナリ・ビューの列等、詳細については「リファレンス」マニュアルに記載があります。

まとめ

 
・データ・ディクショナリとはOracleの構成情報を格納する表であり、
 そこから情報を取得するためにデータ・ディクショナリ・ビュー経由で参照します。

・多くのデータ・ディクショナリ・ビューは、閲覧できる範囲によって「DBA/ALL/USER」
 の3種類に分けられています。

最後に

 
Oracleの構成を確認するであろうデータ・ディクショナリ・ビューについて概要を書かせて頂きました。
最後のビュー一覧につきましては一旦眺める程度で、いざ必要になった際にマニュアルと併せて詳細を確認頂くのが楽かも知れません。

次回は動的パフォーマンス・ビューについて、です。

以上、宜しくお願い致します。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る