異常終了@Wiki

使える?データディクショナリ集

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン

データディクショナリの基本


■ユーザが見れるデータディクショナリを検索する。

SELECT * FROM DICT;

■テーブル名の接頭辞

  • DBA_ --データベース全てのオブジェクトを見ることができるデータディクショナリ(DBA権限のみ)
  • ALL_ --ユーザがアクセス可能な(権限をもらっている)オブジェクトを見ることができるデータディクショナリ
  • USER_ --ユーザが所有しているオブジェクトを見ることができるデータディクショナリ

☆制約


■テーブルに定義されている制約を調べる方法

SELECT * FROM DBA_CONSTRAINTS
 WHERE OWNER = 所有者名
   AND TABLE_NAME = テーブル名;

CONSTRANT_TYPE列に制約の内容が表示されます。
P --> PKEY
C --> CHECK制約かNOT NULL制約(CHECK制約の場合、他の列にCHECK内容が入る。)
R --> FOREIGN KEY制約
U --> UNIQUE

■テーブルのどの列に制約が定義されているか調べる方法

SELECT * FROM DBA_CONS_COLUMNS
 WHERE OWNER = 所有者名
   AND CONSTRAINT_NAME = 調べたい制約名
   AND TABLE_NAME = テーブル名;

■テーブルの主キーが定義されている列を調べる方法

SELECT * FROM DBA_CONS_COLUMNS 
 WHERE OWNER = 所有者名
   AND TABLE_NAME = テーブル名
   AND CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME
                            FROM DBA_CONSTRAINTS
                           WHERE OWNER = 所有者名
                             AND TABLE_NAME = テーブル名
                             AND CONSTRAINT_TYPE = 'P')
 ORDER BY POSITION

■制約を無効にする。

ALTER TABLE 表名 DISABLE CONSTRAINT 制約名 

■制約を有効にする。

ALTER TABLE 表名 ENABLE CONSTRAINT 制約名 

※大量データのインポートなどの場合、制約を無効化しておきインポートすると、インポート時の制約チェックがなくなるためレスポンスが良くなる。
不正なデータを入れた場合には、制約を有効にした段階でエラーになる。

☆インデックス


■テーブルに定義されている索引を調べる方法

SELECT * FROM DBA_INDEXES 
 WHERE OWNER = 所有者名
   AND TABLE_NAME = テーブル名;

■テーブルのどの列に索引が定義されているか調べる方法

SELECT * FROM DBA_IND_COLUMNS 
 WHERE INDEX_OWNER = 所有者名
   AND INDEX_NAME = 索引名 ;

■索引の再構築

ALTER INDEX 索引名 REBUILD (ONLINE);

※データの削除・更新が行われる表では、索引の断片化が発生しレスポンスが悪化する。
そのため定期的に索引の再構築をすることによって、レスポンスが良い状態にする。
  • ONLINEオプションをつけると、索引再構築中でも表の検索・更新処理が可能になる。
  • ONLINEオプションをつけないと、表の検索・更新処理は再構築終了までWAITとなる。
DBA_INDEXESのSTATUS列がINVALIDになっている場合も、再構築することで利用可能になる。
人気記事ランキング
目安箱バナー