DB/오라클

오라클 테이블, 프로시져스크립트 추출

개발자와코더사이가 PM일까? 2022. 11. 26. 17:53
반응형

개발 DB에서 배포 스크립트를 만들려고 할때 각 스크립트가 필요하다.

인터넷에서 찾아보니 아래와 같이 하나씩 물어보는데.. 음.. 이건 내가 원하는 명령어가 아니였다.

어떻게 아래와 같이 하나씩 찾아서 할 수가 있을까?

-- 오라클 테이블 스크립트 추출
select dbms_metadata.get_ddl('TABLE','테이블명') from dual;
-- 오라클 프로시져 스크립트 추출
select dbms_metadata.get_ddl('PROCEDURE','프로시져명') from dual;
-- 오라클 VIEW 스크립트 추출
select dbms_metadata.get_ddl('VIEW','VIEW명') from dual;
-- 오라클 INDEX 스크립트 추출
select dbms_metadata.get_ddl('INDEX','INDEX명') from dual;
-- 오라클 SEQUENCE 스크립트 추출
select dbms_metadata.get_ddl('SEQUENC','INDEX명') from dual;

1차로 생각한 것은 아래와 같이 각 메인 DBA 테이블에 가서 해당 데이터를 가져오는 것이였다.

-- 오라클 테이블 스크립트 추출
select DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME, OWNER)
FROM DBA_TABLES
WHERE OWNER = '사용자명'

-- 오라클 INDEX 스크립트 추출
SELECT DBMS_METADATA.GET_DDL('INDEX', INDEX_NAME, TABLE_OWNER)
FROM  DBA_INDEXES WHERE TABLE_OWNER = '사용자명'

하지만.. 이것도 귀찮고.. 결국에는 아래와 같이 해서 추출 했다.

SELECT object_type
     , object_name
     , DBMS_METADATA.GET_DDL(object_type, object_name, user) as script
  FROM user_objects
 WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'VIEW') 
 ORDER BY object_type;