トップ ページ > Oracle-DDL調査と取得

Oracle-DDL調査と取得

Oracle上のDDLの取得についてメモ。
長く運用してきたら、絶対に使うはず。

TABLESPACE

SET PAGESIZE 0
SELECT TO_CHAR(DBMS_METADATA.GET_DDL('TABLESPACE', TABLESPACE_NAME)) DDL FROM DBA_TABLESPACES;



TABLE

SET PAGESIZE 0
SELECT TO_CHAR(DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME, OWNER)) DDL FROM ALL_TABLES WHERE OWNER = 'オーナー名';

「ORA-64203: 宛先バッファは、キャラクタ・セット変換後のCLOBデータを保持するには小さすぎます。」が表示された場合はTO_CHARを外して

SELECT DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME, OWNER) DDL FROM ALL_TABLES WHERE OWNER = 'オーナー名';
とする。

テーブル一つ指定する場合
SELECT TO_CHAR(DBMS_METADATA.GET_DDL('TABLE', 'テーブル名')) AS SQL FROM DUAL;



USER

おまけ:
とりあえず…
COL USER_ID FOR A7
COL DEFAULT_TABLESPACE FOR A10
COL TEMPORARY_TABLESPACE FOR A10
COL INITIAL_RSRC_CONSUMER_GROUP FOR A25
COL EXTERNAL_NAME FOR A10


SELECT * FROM USER_USERS;

とりあえず…
COL USERNAME FOR A10
COL PRIVILEGE FOR A30


SELECT * FROM USER_SYS_PRIVS;
と、
SELECT * FROM SESSION_PRIVS;

とりあえず…
COL USERNAME FOR A10
COL GRANTED_ROLE FOR A20
SELECT * FROM USER_ROLE_PRIVS;

とりあえず…
COL GRANTEE FOR A10
COL OWNER FOR A10
COL TABLE_NAME FOR A20
COL GRANTOR FOR A10
COL PRIVILEGE FOR A20
COL GRANTABLE FOR A10
COL HIERARCHY FOR A10
COL COMMON FOR A10
COL TYPE FOR A10

SELECT * FROM USER_TAB_PRIVS;