오라클에서 스키마 정보를 추출하는 방법은 여러 가지가 있습니다. 일반적으로 사용하는 방법은 다음과 같습니다.
✅ 사용자(스키마) 목록 확인하기
-- 전체 사용자(스키마) 목록 조회
SELECT username FROM dba_users;
✅ 특정 스키마의 테이블 목록 추출
-- 현재 접속한 사용자 스키마의 테이블 조회
SELECT table_name FROM user_tables;
-- 특정 사용자(스키마)의 테이블 조회 (DBA권한 필요)
SELECT table_name FROM all_tables WHERE owner = '스키마명';
✅ 특정 스키마의 컬럼 정보 추출
-- 특정 테이블의 컬럼 목록과 데이터타입 등 정보 조회
SELECT column_name, data_type, data_length, nullable
FROM all_tab_columns
WHERE owner = '스키마명'
AND table_name = '테이블명';
✅ 특정 스키마의 제약조건 조회하기
-- 특정 스키마의 제약조건 조회
SELECT constraint_name, constraint_type, table_name
FROM all_constraints
WHERE owner = '스키마명';
제약조건 타입은 다음과 같습니다
- P: Primary Key
- R: Foreign Key
- U: Unique
- C: Check
✅ 인덱스 정보 추출하기
-- 특정 스키마의 인덱스 정보 조회
SELECT index_name, table_name, uniqueness
FROM all_indexes
WHERE owner = '스키마명';
✅ 오브젝트 타입별 목록 추출하기
-- 스키마의 오브젝트 타입별 목록 조회 (테이블, 뷰, 시퀀스, 패키지 등)
SELECT object_name, object_type
FROM all_objects
WHERE owner = '스키마명';
✅ 스키마 구조 전체를 DDL 형태로 추출하기 (DBMS_METADATA 이용)
Oracle의 DBMS_METADATA 패키지를 활용하여 테이블 및 기타 오브젝트의 DDL 문장을 추출할 수 있습니다.
-- 특정 테이블 DDL 추출 예시
SELECT DBMS_METADATA.GET_DDL('TABLE', '테이블명', '스키마명') FROM dual;
-- 특정 스키마 전체의 테이블 DDL 추출 (예시)
SELECT DBMS_METADATA.GET_DDL('TABLE', table_name, owner)
FROM all_tables
WHERE owner = '스키마명';
참고: DDL 추출 시 권한에 따라 ORA-31603 오류가 발생할 수 있으며, 이때는 EXECUTE_CATALOG_ROLE 권한이 필요합니다.
✅ 데이터 펌프(expdp, impdp)를 활용한 스키마 추출(덤프파일 생성)
- OS 단에서 Oracle 데이터 펌프를 사용하여 특정 스키마 전체를 덤프파일로 추출할 수 있습니다.
- directory는 Oracle에 미리 등록된 디렉터리명입니다. (예: DATA_PUMP_DIR)
expdp userid=system/password schemas=스키마명 directory=디렉터리명 dumpfile=스키마명.dmp logfile=스키마명.log
오라클 - ORA-31603 에러
ORA-31603 에러는 오라클에서 DBMS_METADATA 패키지를 이용해 DDL을 추출할 때 권한이 부족하여 발생하는 오류입니다.📌 에러 메시지ORA-31603: object "OBJECT_NAME" of type TABLE not found in schema "SCHEMA_NAME" ORA-0
make2t.tistory.com
'IT > Oracle' 카테고리의 다른 글
오라클 - 등록된 Job 및 프로시저 호출 조회 (5) | 2025.03.18 |
---|---|
오라클 - ORA-31603 에러 (3) | 2025.03.16 |
오라클 데이터베이스 간 스키마를 동기화 기법 소개 (2) | 2025.03.16 |
PL/SQL에서 커서(Cursor) 이용한 SELECT INSERT 하는 프로시저 설명 (1) | 2025.03.12 |
오라클 - Standard Edition (SE) 파티션 테이블 지원 여부 (3) | 2025.03.11 |