今日は早起きしたので頭が冴えているうちにデータディクショナリについてさらっと流した。
データディクショナリとは、オブジェクトや各種情報を格納するための表、ビューの集合とのこと。
とりあえずsystemでログインして、データディクショナリを確認。

データディクショナリの一覧はDICTIONARYに格納されており、制約関連はこれら3つのデータディクショナリで用途別に管理しているらしい。
これらディクショナリの構成はDICT_COLUMNSデータディクショナリで求められるらしいので、とりあえず定義を確認。

テーブル名にディクショナリを指定してやれば構成を展開できそう。
せっかくなのでユーザー制約を確認してみる。
SQL> select * from dict_columns where table_name = 'user_constraints';
レコードが選択されませんでした。
あれ、何もない。
とりあえず他の2つも確認してみたけど該当なし。 はて?
そういえば、表の長さは30バイトまでが上限だけど、それってディクショナリ内のサイズが30バイトだからなんだろうか。カラムも同様なのかな。
データベースリンク(128バイト)に関する情報はここでは管理できなさそうだ。
よくよく考えてみると、検索条件が小文字だったので大文字に変更して再度チャレンジ。
結構件数多そうなので念のため5件だけピックアップ。
SQL> select * from dict_columns where table_name = 'USER_CONSTRAINTS' and rownum
<= 5;
TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------
USER_CONSTRAINTS OWNER
Owner of the table
USER_CONSTRAINTS CONSTRAINT_NAME
Name associated with constraint definition
USER_CONSTRAINTS CONSTRAINT_TYPE
Type of constraint definition
TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------
USER_CONSTRAINTS TABLE_NAME
Name associated with table with constraint definition
USER_CONSTRAINTS SEARCH_CONDITION
Text of search condition for table check
こんな感じで格納されているらしい。
スポンサーサイト