반응형
ORA-31603 에러는 오라클에서 DBMS_METADATA 패키지를 이용해 DDL을 추출할 때 권한이 부족하여 발생하는 오류입니다.
📌 에러 메시지
ORA-31603: object "OBJECT_NAME" of type TABLE not found in schema "SCHEMA_NAME" ORA-06512: at "SYS.DBMS_METADATA", line xxxx
이 에러는 보통 다음과 같은 상황에서 발생합니다.
- 권한 부족
- 존재하지 않는 오브젝트를 조회할 때
- 오브젝트명을 잘못 입력했을 때
- 오브젝트 타입을 잘못 지정했을 때 (TABLE, VIEW, INDEX 등)
✅ ORA-31603 에러 원인 및 해결방법
원인 ①: 권한 부족 (가장 흔한 경우)
DDL 정보를 추출하려면 다음 권한 중 하나가 필요합니다.
- SELECT_CATALOG_ROLE
- EXECUTE_CATALOG_ROLE
- 또는 해당 오브젝트의 소유자 이거나 DBA 권한을 가진 사용자여야 함
특히 다른 사용자의 오브젝트를 조회할 때 자주 발생합니다.
해결 방법 : DBA 또는 관리자 계정으로 접속해 권한 부여
GRANT SELECT_CATALOG_ROLE TO 사용자명; GRANT EXECUTE_CATALOG_ROLE TO 사용자명;
원인 ②: 오브젝트 이름이나 타입 지정 오류
- 지정한 오브젝트 타입이 실제 오브젝트 타입과 다를 때
- 존재하지 않는 오브젝트를 요청했을 때 발생합니다.
해결 방법 : 정확한 오브젝트 타입과 이름을 확인합니다.
-- 오브젝트 타입 확인
SELECT object_name, object_type
FROM all_objects
WHERE object_name = '오브젝트명';
타입 확인 후 다시 정확히 지정해서 실행합니다.
📌 정상 동작 예시 (권한 부여 후)
권한이 부여되면 다음과 같이 정상 조회됩니다.
-- 정상 예시
SELECT DBMS_METADATA.GET_DDL('TABLE', '테이블명', '스키마명') FROM dual;
정상 출력 예시
CREATE TABLE "SCHEMA_NAME"."TABLE_NAME" ( "COLUMN1" VARCHAR2(20 BYTE), "COLUMN2" NUMBER )
🔔 정리
원인 | 해결 방법 |
권한 부족 | SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE 부여 |
오브젝트 존재하지 않음 | 오브젝트 이름/타입 정확히 지정 후 재실행 |
이렇게 권한을 부여하거나 오브젝트명을 정확히 입력하면 ORA-31603 에러를 해결할 수 있습니다.
오라클에서 스키마 정보를 추출하는 방법
오라클에서 스키마 정보를 추출하는 방법은 여러 가지가 있습니다. 일반적으로 사용하는 방법은 다음과 같습니다.✅ 사용자(스키마) 목록 확인하기-- 전체 사용자(스키마) 목록 조회SELECT username
make2t.tistory.com
반응형
'IT > Oracle' 카테고리의 다른 글
오라클 - 소수점을 저장하는 데이터 타입 (3) | 2025.03.30 |
---|---|
오라클 - 등록된 Job 및 프로시저 호출 조회 (5) | 2025.03.18 |
오라클에서 스키마 정보를 추출하는 방법 (2) | 2025.03.16 |
오라클 데이터베이스 간 스키마를 동기화 기법 소개 (2) | 2025.03.16 |
PL/SQL에서 커서(Cursor) 이용한 SELECT INSERT 하는 프로시저 설명 (1) | 2025.03.12 |