행위

"DBMS METADATA DDL"의 두 판 사이의 차이

DB CAFE

(새 문서: =테이블,인덱스,프로시저의 생성 스크립트 추출= '''DBMS_METADATA 패키지의 GET_DDL 함수 사용''' ==테이블 생성 스크립트== <source lang=sql> SELEC...)
 
(인덱스 생성 스크립트)
14번째 줄: 14번째 줄:
 
SELECT DBMS_METADATA.GET_DDL('INDEX','IX_BOARD') FROM DUAL;
 
SELECT DBMS_METADATA.GET_DDL('INDEX','IX_BOARD') FROM DUAL;
 
</source>
 
</source>
 +
=== PK 확인 스크립트 ===
 +
SELECT A.OWNER
 +
    , A.TABLE_NAME
 +
    , B.CONSTRAINT_NAME
 +
--    , C.COLUMN_NAME
 +
--    , COUNT(*) OVER (PARTITION BY A.OWNER,B.CONSTRAINT_NAME) AS DUP
 +
  FROM DBA_TABLES      A
 +
    , DBA_CONSTRAINTS  B
 +
    , DBA_CONS_COLUMNS C
 +
--    , MIG_TABLES      D 
 +
WHERE A.TABLE_NAME = B.TABLE_NAME
 +
  AND A.OWNER      = B.OWNER
 +
--  AND D.TABLE_NAME = B.TABLE_NAME
 +
--  AND D.OWNER      = B.OWNER
 +
  AND B.CONSTRAINT_NAME = C.CONSTRAINT_NAME
 +
  AND B.CONSTRAINT_TYPE = 'P'
 +
GROUP BY A.OWNER
 +
    , A.TABLE_NAME
 +
    , B.CONSTRAINT_NAME           
 +
ORDER BY 1,2,3
  
 
==프로시져 생성 스크립트==  
 
==프로시져 생성 스크립트==  

2018년 8월 28일 (화) 16:40 판

thumb_up 추천메뉴 바로가기



1 테이블,인덱스,프로시저의 생성 스크립트 추출[편집]

DBMS_METADATA 패키지의  GET_DDL 함수 사용


1.1 테이블 생성 스크립트[편집]

SELECT DBMS_METADATA.GET_DDL('TABLE','TB_BOARD') FROM DUAL;

1.2 인덱스 생성 스크립트[편집]

SELECT DBMS_METADATA.GET_DDL('INDEX','IX_BOARD') FROM DUAL;

1.2.1 PK 확인 스크립트[편집]

SELECT A.OWNER

    , A.TABLE_NAME
    , B.CONSTRAINT_NAME

-- , C.COLUMN_NAME -- , COUNT(*) OVER (PARTITION BY A.OWNER,B.CONSTRAINT_NAME) AS DUP

 FROM DBA_TABLES       A
    , DBA_CONSTRAINTS  B
    , DBA_CONS_COLUMNS C

-- , MIG_TABLES D

WHERE A.TABLE_NAME = B.TABLE_NAME
  AND A.OWNER      = B.OWNER 

-- AND D.TABLE_NAME = B.TABLE_NAME -- AND D.OWNER = B.OWNER

  AND B.CONSTRAINT_NAME = C.CONSTRAINT_NAME 
  AND B.CONSTRAINT_TYPE = 'P'
GROUP BY A.OWNER
    , A.TABLE_NAME
    , B.CONSTRAINT_NAME            
ORDER BY 1,2,3

1.3 프로시져 생성 스크립트[편집]

SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_BOARD') FROM DUAL;

1.4 시퀀스 생성 스크립트[편집]

SELECT DBMS_METADATA.GET_DDL('SEQUENCE','SEQ_BOARD') FROM DUAL;

1.5 생성스크립트 파일로 저장하기[편집]

- 테이블, 인덱스, 시퀀스, 프로시저 생성 스크립트를 파일로 저장.

set pagesize 0
set long 90000
set feedback off
set echo off 
spool board.sql 

SELECT DBMS_METADATA.GET_DDL('TABLE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='TABLE';
SELECT DBMS_METADATA.GET_DDL('INDEX', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='INDEX';
SELECT DBMS_METADATA.GET_DDL('SEQUENCE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='SEQUENCE';
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='PROCEDURE';

spool off