사용방법 :
select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT')
from dual;
select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT')
from dual;
도움이 될런지.....
9i 이전 버젼이라면...
exp/imp를 이용하면 됩니다.
exp rows=n 로 해서 data를 제외하고 저장하고,
imp indexfile=myddl.sql 등으로 DDL 구문을 뽑아낼 수가 있습니다. 제일 앞부분은 '#' 주석으로 막혀있는데 이걸 제거하면 되겠지요.
9i 버젼이라면... 위의 분이 말씀하신 대로 dbms_metadata.get_ddl 을 이용하시는 것이 깔끔합니다.
프로시져에서 utl_file을 이용해서 dbms_metadata로 얻는 데이타를 file에 write 하도록 하고 이 프로시져는 dbms_job 등을 이용하면 배치로 돌릴 수 있습니다.
아래 쿼리를 이용하면 현재 유저에 소속된 모든 table 의 DDL문을 뽑아 낼 수가 있습니다.
SELECT DBMS_METADATA.get_ddl ('TABLE', table_name) FROM user_tables
SP의 경우는
SELECT DBMS_METADATA.get_ddl ('PROCEDURE', name) FROM user_source
where type = 'PROCEDURE'
'SQL > ORACLE' 카테고리의 다른 글
[펌] 3. SQL (0) | 2014.02.12 |
---|---|
[Oracle] exp, imp 사용방법 (0) | 2014.02.12 |
[펌] Oracle 에러별 원인 및 조치사항 몇가지 (0) | 2014.02.12 |
[펌] 오라클 에러 해결방법 (0) | 2014.02.12 |
[oracle]spfile 파라미터 수정후 startup이 안될때 (0) | 2014.02.12 |
[펌] [Tuning] INIT.ORA 파일 설정 (0) | 2014.02.12 |
[펌] ORACLE 9I 인스턴스 구동을 위한 SPFILE 및 INIT.ORA 파라미터 파일 (0) | 2014.02.12 |
[펌] 9i에서의 INIT.ORA 사용 관련 방법 (0) | 2014.02.12 |