오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

[ORACLE] TABLE, INDEX CREATE DDL 추출

각종 툴을 쓰면 보통 TABLE, INDEX DDL SCRIPT 추출 기능이 있는데, 오라클 쿼리로도 가져올 수 있다.

SUNGHS.USER_INFO 테이블, 인덱스 추출

특정 테이블명과 인덱스명을 알 때 이다.
TABLE 명 : USER_INFO
IDX 명 : IDX_USER_INFO

SELECT DBMS_METADATA.GET_DDL('TABLE', 'USER_INFO', 'SUNGHS') FROM DUAL

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_USER_INFO', 'SUNGHS') FROM DUAL

추출에 조건을 걸 수 있다.

--- SUNGHS.A*로 시작하는 테이블만
SELECT DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME, 'SUNGHS') FROM DBA_TABLES WHERE TABLE_NAME LIKE 'A%'

--- IDX_A*로 시작하는 인덱스만
SELECT DBMS_METADATA.GET_DDL('INDEX', INDEX_NAME, 'SUNGHS') FROM DBA_INDEXES WHERE TABLE_NAME LIKE 'IDX_A%'

특정 스키마의 TABLE, INDEX 전부 추출

SELECT DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME) FROM USER_TABLES

SELECT DBMS_METADATA.GET_DDL('INDEX', INDEX_NAME) FROM USER_INDEXES

DB

오라클 스키마만 저장 하기 export

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

2009. 8. 4. 10:41

export시 테이블 자료 제외하고하는 방법?

작성자

PG짱(ebc772osh)

작성일

2008-09-25 14:04:13

조회수

866

특정 계정의 테이블을 export

테이블 안 자료들은 제외하고 테이블만 export 하는 옵션이나 방법이 있나요?

아님 어쩔 수 없이 delete table 쿼리로 하나하나 비워준 다음에 export 해야하는건지?

이 글에 대한 댓글이 총 2건 있습니다.

Toad 에 보면 테이블,뷰, 등의 오브젝트 생성 스크립트 전체를 한번에 

뜨는 기능이 있습니다. 그게 더 나을듯 싶은데요.

인랑님이 2008-09-25 14:34:01에 작성한 댓글입니다.
이 댓글은 2008-09-25 14:48:02에 마지막으로 수정되었습니다.
Edit

export할때 rows=n 옵션을 주시면 데이터없는 테이블 스키마만 export 됩니다.

ex) exp system/*** file=rowsn.dmp rows=n log=rowsn.log

사족으로 이렇게 받은 덤프파일로 테이블 및 인덱스 생성 스크립트를 뽑을 수 있습니다.

imp system/**** file=rowsn.dmp indexfile=rowsn.sql
(import 명령이나 실제로는 rowsn.sql파일만 생성합니다.)

수고하세요

  • #export스키마
  • #IT·컴퓨터

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

Oracle DB에서 Table, Index, Function, Procedure, View, Sequence 등의 Create SQL 문장을 확인하고자 할 때,

보통은 Orange, Toad, SQL Developer 같은 툴들을 이용하면 메뉴에 있는 기능으로 쉽게 Create DDL문을 추출할 수 있습니다.

하지만, 이런 툴이 없을 때 간단하게 SQL*Plus 상에서 이용할 수 있는 커맨드가 있습니다.

dbms_metadata 패키지의 get_ddl( ) 함수를 이용하면 쉽게 오브젝트들의 생성 스크립트를 추출할 수 있습니다.

이 기능은 Oracle 9i 이상 지원됩니다.


SQL> set pagesize 0
SQL> set long 40000
SQL> select dbms_metadata.get_ddl('TABLE','SALES') from dual;

위 샘플은 SALES 테이블의 스크립트를 추출하는 예입니다.

set pagesize 0 은 화면에서 출력하는 단위(라인수)가 있는데 이걸 없애는 것입니다.

set long 40000 은 화면에서 출력되는 글자수를 40000 으로 지정하는 것입니다. 만약 소스가 더 길다면 더 크게 잡아주면 됩니다.

첫번째 인자로 조회할 Object Type 을 지정합니다.

'TABLE' 대신 'INDEX', 'VIEW', 'PROCEDURE', 'FUNCTION' 등을 지정할 수 있습니다.

두번째 인자는 조회할 Object 명을 지정합니다.

위에서는 'SALES' 테이블을 지정했습니다.

만약 SALES 테이블이 여러 DB유저에 있다면, 유저를 아래처럼 지정할 수 있습니다.

아래는 'SCOTT' 유저에 있는 'SALES' 테이블을 찾습니다. 유저를 명시하지 않으면 Default로 현재 유저(스키마) 내에서 오브젝트를 찾습니다.


SQL> select dbms_metadata.get_ddl('TABLE','SALES', 'SCOTT') from dual;

아래는 실행 샘플들~~

Index 추출~

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

Procedure 추출~

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

View 추출~

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

Sequence 추출~

오라클 테이블 스키마 추출 - olakeul teibeul seukima chuchul

Oracle DB 내의 모든 오브젝트들에 대한 Create SQL 문을 추출할 수 있네요.