RDBは、内部情報もテーブルで保持している(ことが多いと思う)。
Oracleの場合、user_*、all_*、v$*といったビュー(ごく一部はテーブル)で参照できる。
user_*はそのユーザー専用の情報で、all_*は全ユーザーの情報。大抵はuserとallはペアで、同じ内容のものがある。
dba_*はsysユーザー用(as sysdba付きで接続)。
参照: OTNの静的データ・ディクショナリ・ビュー … Oracle10.2 (2008-01-27)
ビュー名 | 内容 | 接頭辞 | 更新日 | ||
---|---|---|---|---|---|
user_objects | オブジェクト全般(というか全オブジェクト) | user | all | dba | |
user_tables user_all_tables |
テーブル | user | all | dba | |
user_indexes user_ind_columns user_ind_expressions |
インデックス(索引) | user | all | dba | 2010-07-29 |
user_constraints user_cons_columns |
整合性制約 | user | all | dba | 2008-02-16 |
user_views | ビュー | user | all | dba | |
user_mviews user_mview_logs |
マテリアライズド・ビュー | user | all | dba | |
user_sequences | シーケンス | user | all | dba | |
user_synonyms | シノニム | user | all | dba | |
user_types | ユーザー定義型 | user | all | dba | |
user_db_links | DBリンク | user | all | dba | |
user_dimensions | ディメンジョン | user | all | dba | |
user_tab_partitions user_part_key_columns user_part_tables user_ind_partitions user_part_indexes |
パーティション定義 | user | all | dba | 2009-01-06 |
user_jobs | ジョブ(一定時間毎にPL/SQLを実行する) | user | all | dba | 2007-12-08 |
user_recyclebin | リサイクルビン | user | 2007-12-13 | ||
user_procedures | FUNCTION、PROCEDUREで定義されているルーチン | user | all | dba | 2007-09-22 |
user_argruments | FUNCTION、PROCEDUREの引数 | user | all | - | 2008-01-27 |
user_source | FUNCTION、PROCEDURE、JAVA SOURCE、ユーザー定義型等のソース | user | all | dba | |
user_dependencies | オブジェクト(関数・プロシージャ・ビュー等)の依存関係 | user | 2008-01-08 | ||
user_triggers | トリガー | user | all | dba | |
user_users | ユーザー | user | all | dba | |
dba_data_files | 表領域(テーブルスペース)のファイル名 | - | - | dba | 2006-07-08 |
user_free_space | 表領域(テーブルスペース)毎の空き容量 | user | - | dba | |
nls_session_parameters | セッションパラメータ (→v$nls_parameters) | - | - | - | 2006-11-21 |
v$なんちゃら。
オブジェクト名 | 内容 | 項目 | 関連 | 更新日 | |
---|---|---|---|---|---|
v$version | バージョン情報(→例) | define | 2007-12-11 | ||
v$option | 使用可能なオプション | PARAMETER | オプション名 | パーティション ビットマップ索引 索引の結合 |
2009-12-24 |
VALUE | 使用可否 | ||||
v$parameter | パラメーター | show parameters | 2009-01-06 | ||
v$nls_parameters | セッションパラメータ | nls_session_parameters | 2006-12-26 | ||
v$session | セッション情報 | USERNAME | ユーザー名 | セッション削除方法 | 2008-11-15 |
LOGON_TIME | ログオン時刻 | ||||
LAST_CALL_ET | 最後に処理を行ってからの経過時間 | ||||
SQL_ADDRESS | 実行中のSQLを表す値 | ||||
SQL_ID | 実行中のSQLを表す値(Oracle10以降) | ||||
v$transaction | トランザクション情報 | 2006-12-27 | |||
v$lock v$locked_object |
ロック情報 | 2009-03-02 | |||
v$sql | 実行されたSQL | SQL_TEXT | SQL文の先頭1000文字 | 2008-11-15 | |
ADDRESS | SQLを表す値 | ||||
SQL_ID | SQLを表す値(Oracle10以降) | ||||
v$object_usage | 索引の使用状況 | USED | インデックスが使用されたかどうか | 2010-02-04 |
SQL> desc 名称
SQL> select object_name,owner,object_type 2 from all_objects 3 where object_name='EMP'; OBJECT_NAME OWNER OBJECT_TYPE ------------------------------ ------------------------------ ------------------ EMP SCOTT TABLE
テーブルやインデックス等の定義をDDLの形で見る事が出来る。[2008-10-04]
SQL> set long 9999 SQL> set pages 9999 SQL> select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual; DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') -------------------------------------------------------------------------------- CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), ~ "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ~ PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM"
テーブル | DBMS_METADATA.GET_DDL('TABLE','テーブル名','オーナー名') |
インデックス | DBMS_METADATA.GET_DDL('INDEX','インデックス名','オーナー名') |
ビュー | →user_views |
マテビュー | →user_mviews |
シーケンス | DBMS_METADATA.GET_DDL('SEQUENCE','シーケンス名','オーナー名') |
ファンクション | DBMS_METADATA.GET_DDL('FUNCTION','関数名','オーナー名') |
プロシージャ | DBMS_METADATA.GET_DDL('PROCEDURE','プロシージャ名','オーナー名') |
Java | DBMS_METADATA.GET_DDL('JAVA_SOURCE','Javaソース名','オーナー名') |
パッケージ | DBMS_METADATA.GET_DDL('PACKAGE','パッケージ名','オーナー名') |
シノニム | DBMS_METADATA.GET_DDL('SYNONYM','関数名','オーナー名') |
他のOBJECT_TYPE(select distinct object_type from all_objects;
)でも使えそう。
ビューの定義内容を確認する方法。[2007-12-28]
SQL> set long 1000 SQL> select text from user_views where view_name='VW_EMP'; TEXT -------------------------------------------------------------------------------- select "EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO" from emp
「create view」で作ったときの「AS」以降の内容が出る(改行もそのまま)。
「select *」で作ったものは項目がそれぞれ指定されているようだ。
(ビューの内容が入っている)text項目はlong型(長い可変文字列)なので、ビュー定義が大きいときはSQL*Plusで表示すると途切れる可能性がある。
そういうときは、「set long」によってlong型のSQL*Plusでの表示桁数を大きく指定すればよい。
→マテリアライズド・ビューの定義内容を確認する方法
SQL> show user ユーザーは"HISHIDAMA"です。
SQL> select user from dual; USER ------------------------------ HISHIDAMA
SQL> select username,account_status from user_users; USERNAME ACCOUNT_STATUS ------------------------------ -------------------------------- HISHIDAMA OPEN
SQL> select * from all_users; USERNAME USER_ID CREATED ------------------------------ ---------- -------- SYS 0 02-05-12 ~ SCOTT 59 02-05-12 HISHIDAMA 61 05-05-15 31行が選択されました。
ユーザーに付与されているロール [/2007-09-25]
SQL> select * from USER_ROLE_PRIVS; USERNAME GRANTED_ROLE ADM DEF OS_ ------------------------------ ------------------------------ --- --- --- HISHIDAMA CONNECT NO YES NO HISHIDAMA EMP_ACCESS NO YES NO HISHIDAMA RESOURCE NO YES NO
SQL> select * from dba_role_privs where grantee='HISHIDAMA'; GRANTEE GRANTED_ROLE ADM DEF ------------------------------ ------------------------------ --- --- HISHIDAMA CONNECT NO YES HISHIDAMA RESOURCE NO YES HISHIDAMA EMP_ACCESS NO YES
ユーザーに付与されているロールと、その具体的な権限(システム権限のみ) [/2007-09-25]
SQL> select * from ROLE_SYS_PRIVS; ROLE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- CONNECT CREATE VIEW NO CONNECT CREATE TABLE NO CONNECT ALTER SESSION NO CONNECT CREATE CLUSTER NO CONNECT CREATE SESSION NO CONNECT CREATE SYNONYM NO CONNECT CREATE SEQUENCE NO CONNECT CREATE DATABASE LINK NO RESOURCE CREATE TYPE NO RESOURCE CREATE TABLE NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE PROCEDURE NO 16行が選択されました。
ユーザーに付与されているシステム権限 [2007-09-25]
SQL> select * from SESSION_PRIVS; PRIVILEGE ---------------------------------------- CREATE SESSION ALTER SESSION UNLIMITED TABLESPACE CREATE TABLE CREATE CLUSTER CREATE SYNONYM CREATE VIEW CREATE SEQUENCE CREATE DATABASE LINK CREATE PROCEDURE EXECUTE ANY PROCEDURE CREATE TRIGGER CREATE TYPE CREATE OPERATOR CREATE INDEXTYPE 15行が選択されました。
個別に設定されているオブジェクト権限(テーブルアクセスやプロシージャ実行等)[2007-09-25]
SQL> select table_name,privilege,owner from USER_TAB_PRIVS_RECD; TABLE_NAME PRIVILEGE OWNER ------------------------------ ---------------------------------------- ---------------------------- DEPT SELECT SCOTT
ロールによって個別に設定されているオブジェクト権限 [2007-09-22/2007-09-25]
プロシージャの実行権限でも、プロシージャ名がTABLE_NAMEの項に表示される。
SQL> select table_name,privilege,role from ROLE_TAB_PRIVS; TABLE_NAME PRIVILEGE ROLE ------------------------------ ---------------------------------------- ---------------------------- EMP DELETE EMP_ACCESS EMP INSERT EMP_ACCESS EMP SELECT EMP_ACCESS EMP UPDATE EMP_ACCESS TEST_F EXECUTE EMP_ACCESS
自分のオブジェクトに誰がアクセスできるか(オブジェクト権限)[2007-09-25]
SQL> select table_name,privilege,grantee from USER_TAB_PRIVS_MADE; TABLE_NAME PRIVILEGE GRANTEE ------------------------------ ---------------------------------------- ---------------------------- DEPT SELECT HISHIDAMA EMP DELETE EMP_ACCESS EMP INSERT EMP_ACCESS EMP SELECT EMP_ACCESS EMP UPDATE EMP_ACCESS TEST_F EXECUTE EMP_ACCESS TEST_P EXECUTE HISHIDAMA 7行が選択されました。
sysdba(例えばsysユーザー)で参照する。
SQL> select * from dba_roles; ROLE PASSWORD ------------------------------ -------- CONNECT NO RESOURCE NO DBA NO ~ SALES_HISTORY_ROLE NO 30行が選択されました。