본문 바로가기
ORACLE

ORA-00942 오류 해결 방법 | Oracle 테이블 존재하지 않음 오류 해결 가이드

by samie 2025. 4. 7.
ORA-00942 오류 해결 방법 | Oracle 테이블 존재하지 않음 오류 해결 가이드

ORA-00942: 테이블 또는 뷰가 존재하지 않음

Oracle에서 ORA-00942 오류는 가장 흔히 발생하는 문제 중 하나입니다. 이 오류는 SQL 문에서 참조한 테이블이나 뷰가 데이터베이스에 존재하지 않거나, 현재 사용자에게 해당 테이블에 대한 권한이 없을 때 발생합니다.

1. ORA-00942 오류란?

SQL 쿼리를 실행할 때 다음과 같은 오류 메시지가 발생할 수 있습니다.


ORA-00942: table or view does not exist

즉, 쿼리에서 사용된 테이블이 데이터베이스 내에 존재하지 않거나, 현재 사용자가 접근 권한이 없는 경우 발생합니다.

2. 오류 발생 원인

ORA-00942 오류는 다음과 같은 이유로 발생할 수 있습니다.

  • 📌 테이블이 실제로 존재하지 않음
  • 🔑 사용자에게 SELECT, INSERT, UPDATE 권한이 없음
  • 🔄 스키마 명시 오류 (예: 다른 사용자 테이블을 참조하려는 경우)
  • ⚙️ 뷰(View)가 존재하지 않거나 손상됨

3. 해결 방법

✔️ 1. 테이블 존재 여부 확인

먼저, 현재 사용자가 접근 가능한 테이블 목록을 확인합니다.


SELECT table_name FROM user_tables WHERE table_name = 'EMPLOYEES';

만약 결과가 없으면 테이블이 존재하지 않는 것입니다.

✔️ 2. 권한 확인 및 부여

접속한 사용자가 테이블에 접근할 권한이 있는지 확인합니다.


SELECT table_name FROM all_tables WHERE table_name = 'EMPLOYEES';

권한이 부족하면 DBA 권한을 가진 계정에서 권한을 부여해야 합니다.


GRANT SELECT ON employees TO hr;

✔️ 3. 스키마 지정

다른 사용자의 테이블을 참조할 경우, 반드시 소유자의 스키마를 명시해야 합니다.


SELECT * FROM hr.employees;

✔️ 4. 뷰 존재 여부 확인

뷰가 손상되었거나 존재하지 않을 수 있습니다.


SELECT view_name FROM user_views WHERE view_name = 'EMPLOYEE_VIEW';

필요하면 뷰를 다시 생성하세요.


CREATE OR REPLACE VIEW employee_view AS SELECT * FROM hr.employees;

4. 예제 및 실행 테스트

✔️ 테이블 존재 확인


SELECT * FROM all_tables WHERE table_name = 'EMPLOYEES';

✔️ 권한 부여 후 실행


GRANT SELECT ON hr.employees TO scott;
SELECT * FROM hr.employees;

5. 추가 팁 및 주의사항

  • 🔍 테이블 이름이 대소문자를 구분할 수 있으므로 정확히 입력해야 합니다.
  • 🔑 권한 문제로 발생하는 경우 DBA 계정에서 직접 확인해야 합니다.
  • ⚙️ 뷰가 손상된 경우 다시 생성하는 것이 해결 방법이 될 수 있습니다.

🔚 마무리

ORA-00942 오류는 대부분 권한 문제 또는 테이블 존재 여부 확인 부족으로 발생합니다. 위 해결 방법을 참고하여 쉽게 해결해 보세요!

도움이 되셨다면 댓글이나 공감 부탁드립니다. Oracle 오류 시리즈는 계속 업데이트됩니다! 😊