初めましての方もそうでない方も宜しくお願い致します。
レック・テクノロジー・コンサルティングのエンジニア「佐々木」にございます。
前回は、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の構成を確認するであろうデータ・ディクショナリ・ビューについて概要を書かせて頂きました。
最後のビュー一覧につきましては一旦眺める程度で、いざ必要になった際にマニュアルと併せて詳細を確認頂くのが楽かも知れません。
次回は動的パフォーマンス・ビューについて、です。
以上、宜しくお願い致します。