ORA-00942: 테이블 또는 뷰가 존재하지 않습니다 오류는 다음과 같은 원인으로 발생합니다.
- 실제로 테이블, 뷰가 존재하지 않는 경우
- 테이블, 뷰가 존재하지만 권한 문제로 조회가 불가능한 경우
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다 오류는 보통 권한 문제로 발생하는 경우가 높습니다. 테이블, 뷰 존재 여부를 착각하는 경우는 그리 많지 않을 것이기 때문입니다. 물론 테이블, 뷰가 실제로 존재하지 않는 경우도 있을 것입니다. 또는 오타의 가능성도 생각해 볼 수 있습니다.
예제 자료는 V$PARAMETER 파라미터 뷰에 대한 접근 권한이 없어서 뷰가 존재하지 않는다는 오류가 발생합니다.
Select VALUE
FROM V$PARAMETER
WHERE UPPER(NAME) = 'DB_BLOCK_SIZE'
Error occurred: [942] (ORA-00942: table or view does not exist)
---------------------------------------------------------------
Select VALUE
FROM V$PARAMETER
WHERE UPPER(NAME) = 'UNDO_TABLESPACE'
Error occurred: [942] (ORA-00942: table or view does not exist)
---------------------------------------------------------------
select null
from
SYS.DBA_DATA_FILES A,
SYS.DBA_FREE_SPACE B,
SYS.V_$TEMP_SPACE_HEADER C,
SYS.V_$TEMP_EXTENT_POOL D,
SYS.DBA_TEMP_FILES E
where 0=1
Error occurred: [942] (ORA-00942: table or view does not exist)
SELECT privilege on v$parameter is required. Unable to determine db_block_size. 와 같은 뷰 권한을 처리하기 위해 다음과 같은 명령어를 진행합니다.
GRANT SELECT ON V_$PARAMETER TO username;
--Grant succeeded.
참고로 V$PARAMETER가 아니라 V_$PARAMETER 뷰에 관한 권한을 주어야 합니다. V$PARAMETER는 시노님입니다.
CREATE OR REPLACE PUBLIC SYNONYM V$PARAMETER FOR SYS.V_$PARAMETER;
권한 문제가 아니라 테이블 또는 뷰가 정말 존재하지 않는 경우에는 테이블 생성 스크립트를 진행하면 될 것입니다.
ORA-00942: table or view does not exist
Create View 명령어를 통해 뷰를 생성할 때, ORA-00942: 테이블 또는 뷰가 존재하지 않습니다 오류가 발생하는 경우가 있습니다. 참고로 해당 오류가 영어로 표시가 될 때에는 ORA-00942: table or view does not exist When Create View 라고 안내를 해드립니다.
이번 주제는 뷰를 생성할 때 Line 0, Column 0에서 테이블 또는 뷰가 존재하지 않다고 하는 경우에 대한 안내입니다. 해당 상황에서 검토해야 할 부분은 패키지에 대한 실행권한이 없을 가능성이 있다는 것입니다. 예시를 보며 진행해 보겠습니다.
다음과 같은 오류가 발생하였습니다.
Invalid 상태 입니다.
훑어보니 함수(function) 실행에 대한 권한이 없습니다.
GRANT EXECUTE ON Grantor.PackageName TO Grantee
EXECUTE 권한 외에도 필요한 것 있으면 부여하시면 된답니다.
컴파일을 완료했습니다.