SQL データディクショナリ・ビュー
目次
データディクショナリ・ビューとは?
ユーザー、権限、領域、制約などの 根幹的な情報を保持する読み取り専用の表とビュー
データディクショナリ表は、DDLなどが実行されスキーマ構造が変更されるなどの行為によって自動的に更新される。
静的ディクショナリともよばれる ⇔ 動的パフォーマンス・ビュー
ディクショナリ表へは、直接アクセスできない。以下のビューを経由してアクセスを行う。
ALL_~
ユーザーがアクセスできる情報(他のスキーマ含む)
USER_~
ユーザーのスキーマ(ユーザー)の情報
DBA_~
データベース全体に関連する情報(SELECT ANY TABLE、SELECT ANY DICTIONARY権限が必要:DBAロール)
SYSTEM表領域に格納されている。
一般ユーザーはSYSTEM表領域がOPENされるまでデータベースにアクセスできない。
管理ユーザー(SYSDBA、SYSOPER保持ユーザー)は○
一覧
select * from dictionary;
テーブル情報
USER_COL_COMMENTS
SELECT
TABLE_NAME テーブル名
COLUMN_NAME 列名
COMMENTS 列コメント
FROM
USER_COL_COMMENTS;
TABLE_NAME テーブル名
COLUMN_NAME 列名
COMMENTS 列コメント
FROM
USER_COL_COMMENTS;
USER_TAB_COLUMNS
SELECT
TABLE_NAME テーブル名
COLUMN_NAME 列名
DATA_TYPE 項目の型。VARCHAR2やNUMBERなど
DATA_LENGTH 項目長。文字項目の場合想定した値がそのまま。NUMBER型の22固定。
DATA_PRECISION 数値の精度(NUMBER(8,3)とかの8の部分)
DATA_SCALE 数値の小数部(NUMBER(8,3)とかの3の部分)
NULLABLE NULL値を許可するかどうか。NULLを許容する場合、Y
COLUMN_ID テーブル内での項目の位置
FROM
USER_TAB_COLUMNS
TABLE_NAME テーブル名
COLUMN_NAME 列名
DATA_TYPE 項目の型。VARCHAR2やNUMBERなど
DATA_LENGTH 項目長。文字項目の場合想定した値がそのまま。NUMBER型の22固定。
DATA_PRECISION 数値の精度(NUMBER(8,3)とかの8の部分)
DATA_SCALE 数値の小数部(NUMBER(8,3)とかの3の部分)
NULLABLE NULL値を許可するかどうか。NULLを許容する場合、Y
COLUMN_ID テーブル内での項目の位置
FROM
USER_TAB_COLUMNS
ビュー情報
SELECT
VIEW_NAME VIEW名
TEXT VIEWの定義に使用したSQL
FROM
USER_VIEWS
VIEW_NAME VIEW名
TEXT VIEWの定義に使用したSQL
FROM
USER_VIEWS
インデックス情報
SELECT * FROM USER_IND_COLUMNS WHERE TABLENAME LIKE = '%~%'
シーケンス情報
一覧
SELECT * FROM USER_SEQUENCES;
現在値
SELECT LAST_NUMBER FROM ALL_SEQUENCES WHERE SEQUENCE_NAME = 'シーケンス名';
SELECT * FROM USER_SEQUENCES;
現在値
SELECT LAST_NUMBER FROM ALL_SEQUENCES WHERE SEQUENCE_NAME = 'シーケンス名';
表領域情報
SELECT * FROM USER_TABLES ORDER BY TABLESPACE_NAME;
ユーザー情報
SELECT * FROM DBA_USERS;
所有者情報
ALL_COL_COMMENTS
USER_COL_COMMENTSの各列
所有者
OWNER
例
SELECT
OWNER
TABLE_NAME
COLUMN_NAME
COMMENTS
FROM
ALL_COL_COMMENTS;
所有者
OWNER
例
SELECT
OWNER
TABLE_NAME
COLUMN_NAME
COMMENTS
FROM
ALL_COL_COMMENTS;
ALL_DIRECTORIES
OWNER
DIRECTORY_NAME
DIRECTORY_PATH
ORIGIN_CON_ID
DIRECTORY_NAME
DIRECTORY_PATH
ORIGIN_CON_ID
インスタンス情報
インスタンス
インスタンスの状態
SELECT status FROM v$instance;
→
SELECT status FROM v$instance;
→
ステータス | コマンド |
---|---|
OPEN | STARTUP または ALTER DATABASE OPEN後 |
OPEN MIGRATE | ALTER DATABASE OPEN { UPGRADE | DOWNGRADE }後 |
MOUNTED | STARTUP MOUNT または ALTER DATABASE CLOSE後 |
STARTED | STARTUP NOMOUNT後 |
セッション情報
SELECT SID, SERIAL# FROM v$session WHERE USERNAME = ~;
※結果
100 200
101 201
セッションを削除
ALTER SYSTEM KILL SESSION '100, 200'
※結果
100 200
101 201
セッションを削除
ALTER SYSTEM KILL SESSION '100, 200'
キャッシュ
共有プールクリア
※ディクショナリのキャッシュ、SQL文、パッケージ、実行計画
ALTER SYSTEM FLUSH BUFFER_CACHE;
データベース・バッファ・キャッシュクリア
※データブロック
ALTER SYSTEM FLUSH BUFFER_CACHE;
※ディクショナリのキャッシュ、SQL文、パッケージ、実行計画
ALTER SYSTEM FLUSH BUFFER_CACHE;
データベース・バッファ・キャッシュクリア
※データブロック
ALTER SYSTEM FLUSH BUFFER_CACHE;
文字コード
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
SELECT character_set_name FROM information_schema.character_sets;
DUAL表
全ユーザが参照できるシステム表
1列(DUMMY列)、1行(値='X')で構成される
SELECT * FROM DUAL;
テストに便利
SELECT INITCAP('AAA') FROM DUAL;
→Aaa
※DUAL表に格納されている値と関係ない列を自分で指定して出力する
1列(DUMMY列)、1行(値='X')で構成される
SELECT * FROM DUAL;
テストに便利
SELECT INITCAP('AAA') FROM DUAL;
→Aaa
※DUAL表に格納されている値と関係ない列を自分で指定して出力する