콘텐츠로 이동

DBMS METADATA

DBMS_METADATA#

DBMS_METADATA 패키지는 데이터베이스 딕셔너리로부터 객체 생성 DDL 구문 또는 권한 GRANT 구문을 추출하는 기능을 제공한다. 아래는 DBMS_METADATA 패키지를 구성하는 프로시저와 함수를 정리한 표이다.

프로시저 및 함수 설명
GET_DDL 지정한 객체에 대한 DDL 구문 반환
GET_DEPENDENT_DDL 지정한 객체에 종속된 객체들의 DDL 구문 반환
GET_GRANTED_DDL 지정한 사용자에게 부여된 권한들에 대한 GRANT 구문 반환
SET_TRANSFORM_PARAM 반환되는 DDL 문 내의 특정 항목들의 포함 여부 설정
SHOW_TRANSFORM_PARAMS 현재 설정된 transform parameter 값 출력

GET_DDL#

지정한 객체에 대한 생성 DDL 구문을 반환한다.

구문#

DBMS_METADATA.GET_DDL (
   object_type     IN VARCHAR(20),
   object_name     IN VARCHAR(128),
   schema          IN VARCHAR(128) DEFAULT NULL)
RETURN VARCHAR(65534);

파라미터#

이름 입출력 데이터 타입 설명
object_type IN VARCHAR(20) 객체 종류
object_name IN VARCHAR(128) 객체 이름 (대소문자 구분)
schema IN VARCHAR(128) 객체 소유자 (대소문자 구분).
object_type이 스키마 객체이면 기본값은 현재 접속한 사용자이고, 비스키마 객체이면 기본값은 NULL이다.
object_type#

스키마 객체

  • CONSTRAINT
  • DB_LINK
  • FUNCTION
  • INDEX
  • LIBRARY
  • MATERIALIZED_VIEW
  • PACKAGE
  • PACKAGE_SPEC
  • PACKAGE_BODY
  • PROCEDURE
  • QUEUE
  • REF_CONSTRAINT
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TRIGGER
  • TYPESET
  • VIEW

비스키마 객체

  • DIRECTORY
  • JOB
  • REPLICATION
  • ROLE
  • TABLESPACE: 메모리 시스템 테이블스페이스는 DDL문이 반환되지 않고, 디스크 시스템 테이블스페이스는 ALTER 구문이 반환된다.
  • USER

결과값#

DDL 구문

예외#

invalid_argval not_supported_obj_type schema_not_found object_not_found not_supported_ddl

예제#

접속 사용자가 소유한 모든 테이블의 생성 DDL 구문을 구하는 예제이다.

set vertical on;
SELECT TO_CHAR(dbms_metadata.get_ddl('TABLE', table_name, null)) as ddl
FROM system_.sys_tables_
WHERE table_type = 'T' AND user_id = user_id()
ORDER BY table_name;

GET_DEPENDENT_DDL#

지정한 객체에 종속된 객체들의 생성 DDL 구문을 반환한다.

구문#

DBMS_METADATA.GET_DEPENDENT_DDL (
   object_type          IN VARCHAR(20),
   base_object_name     IN VARCHAR(128),
   base_object_schema   IN VARCHAR(128) DEFAULT NULL)
RETURN VARCHAR(65534);

파라미터#

이름 입출력 데이터 타입 설명
object_type IN VARCHAR(20) 객체 종류
base_object_name IN VARCHAR(128) 베이스 객체 이름 (대소문자 구분)
base_object_schema IN VARCHAR(128) 베이스 객체 소유자 (대소문자 구분).
기본값은 현재 접속한 사용자이다.
object_type#
  • COMMENT
  • CONSTRAINT
  • INDEX
  • OBJECT_GRANT
  • REF_CONSTRAINT
  • TRIGGER

결과값#

DDL 구문

예외#

invalid_argval not_supported_obj_type schema_not_found object_not_found

예제#

접속 사용자의 T1 테이블에 대한 모든 객체 권한을 구하는 예제이다.

set vertical on;
SELECT TO_CHAR(dbms_metadata.get_dependent_ddl('OBJECT_GRANT', 'T1')) as ddl
FROM dual;

GET_GRANTED_DDL#

지정한 사용자에게 부여된 권한들의 생성 DDL 구문을 반환한다.

구문#

DBMS_METADATA.GET_GRANTED_DDL (
   object_type          IN VARCHAR(20),
   grantee              IN VARCHAR(128) DEFAULT NULL)
RETURN VARCHAR(65534);

파라미터#

이름 입출력 데이터 타입 설명
object_type IN VARCHAR(20) 객체 종류
grantee IN VARCHAR(128) grantee (대소문자 구분).
기본값은 현재 접속한 사용자이다.
object_type#
  • OBJECT_GRANT
  • ROLE_GRANT
  • SYSTEM_GRANT

결과값#

DDL 구문

예외#

invalid_argval not_supported_obj_type grantee_not_found object_not_found

예제#

USER1 사용자에 부여된 모든 시스템 권한을 구하는 예제이다.

set vertical on;
SELECT TO_CHAR(dbms_metadata.get_granted_ddl('SYSTEM_GRANT', 'USER1')) as ddl
FROM dual;

SET_TRANSFORM_PARAM#

반환되는 DDL 문 내의 특정 항목들의 포함 여부를 설정한다. 파라미터 설정은 같은 세션 내에서만 적용된다.

구문#

DBMS_METADATA.SET_TRANSFORM_PARAM (
   name          IN VARCHAR(40),
   value         IN CHAR(1));

파라미터#

이름 입출력 데이터 타입 설명
name IN VARCHAR(40) 파라미터 이름
value IN CHAR(1)
객체 종류별 적용되는 파라미터#
Object Type Name Description Default
모든 객체 SQLTERMINATOR DDL 문에 SQL 종결자(terminator)를 덧붙일지 여부를 지정한다.
T: SQL 종결자를 덧붙임
F: SQL 종결자를 덧붙이지 않음
F
TABLE
INDEX
CONSTRAINT
SEGMENT_ATTRIBUTES segment attributes (physical attributes, storage clause, tablespace, logging) 포함 여부를 지정한다.
T: 포함
F: 미포함
T
STORAGE storage clause 포함 여부를 지정한다.
T: 포함
F: 미포함
T
TABLESPACE tablespace 포함 여부를 지정한다.
T: 포함
F: 미포함
T
TABLE CONSTRAINTS foreign key를 제외한 constraint(primary key, unique, check)의 포함 여부를 지정한다.
T: 포함
F: 미포함
T
REF_CONSTRAINTS foreign key 포함 여부를 지정한다.
T: 포함
F: 미포함

결과값#

없음

예외#

invalid_argval

예제#

반환되는 DDL문에 SQL 종결자를 덧붙이도록 설정하는 예제이다.

exec dbms_metadata.set_transform_param('SQLTERMINATOR', 'T');

SHOW_TRANSFORM_PARAMS#

현재 설정된 transform parameter 값을 출력한다.

구문#

DBMS_METADATA.SHOW_TRANSFORM_PARAMS;

결과값#

없음

예외#

예외를 발생시키지 않는다.