본문 바로가기

IT/Oracle

오라클 - ORA-31603 에러

반응형

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

 

반응형