데이터베이스를 다루는데 있어서 가끔 GUI 툴을 쓸 수 없는 경우가 있습니다. 또한 프로시저 같은 경우 아주 큰 용량의 경우 exp 를 통해서 덤프를 받은 파일로 복구를 할 때 제대로 생성이 안되는 경우도 있습니다. 이렇게 좋지 않은 환경이 겹칠 경우 부득이하게 SQL*Plus를 사용해서 필요한 곳을 부분적으로 덤프 하게 됩니다.
테이블이나 프로시저의 생성 스크립트를 추출하기 위해서 DBMS_METADATA 패키지의 GET_DDL 함수를 사용할 수 있습니다.
1. 생성 스크립트 확인
- 테이블명이 'TB_BOARD' 인 테이블의 생성 스크립트를 확인합니다.
SELECT DBMS_METADATA.GET_DDL('TABLE','TB_BOARD') FROM DUAL;
- 인덱스의 이름이 'IX_BOARD' 인 인덱스의 생성 스크립트를 확인합니다.
SELECT DBMS_METADATA.GET_DDL('INDEX','IX_BOARD') FROM DUAL;
- 프로시져의 이름이 'P_BOARD' 인 프로시저의 생성 스크립트를 확인합니다.
SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_BOARD') FROM DUAL;
- 시퀀스의 이름이 'SEQ_BOARD' 인 시퀀스의 생성 스크립트를 확인합니다.
SELECT DBMS_METADATA.GET_DDL('SEQUENCE','SEQ_BOARD') FROM DUAL;
2. 생성스크립트 파일로 저장하기
- 테이블, 인덱스, 시퀀스, 프로시저 생성 스크립트를 파일로 저장합니다.
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
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
오라클 문자열에서 숫자만 남기고 다른 문자 제거하기 (2) | 2018.04.20 |
---|---|
오라클 데이터베이스 링크 생성하기 (2) | 2018.04.20 |
Oracle Sequence 만들기 (일련번호 생성하기) (0) | 2018.04.20 |
Oracle에서 테이블 복사하기 (0) | 2018.04.20 |
Oracle 두 날짜 사이의 일수 차이 와 분 차이 구하기 (0) | 2018.04.20 |