「使える?データディクショナリ集」の編集履歴(バックアップ)一覧はこちら
使える?データディクショナリ集 - (2005/11/18 (金) 21:05:54) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
**データディクショナリの基本
■ユーザが見れるデータディクショナリを検索する。
SELECT * FROM DICT;
■テーブル名の接頭辞
-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 = テーブル名;
■制約を無効にする。
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になっている場合も、再構築することで利用可能になる。
**データディクショナリの基本
■ユーザが見れるデータディクショナリを検索する。
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になっている場合も、再構築することで利用可能になる。
表示オプション
横に並べて表示:
変化行の前後のみ表示: