SQL 문을 실행할 때 때때로 ora-00942 오류가 표시됩니다. 몇 가지 원인이 있으며 평소와 같이 오류 구문은 가장 설명이 아닙니다. 이 문제에 직면하여 ora-00942 오류를 해결하는 방법을 알고 싶다면 계속 읽으십시오.
내가 아는 한, ora-00942 오류의 세 가지 주요 원인이 있습니다.
- 불충분 한 사용자 권한
- 테이블이나 뷰가 실제로 존재하지 않습니다
- 테이블 또는 뷰가 다른 스키마에 있습니다.
각 문제를 해결하는 방법을 보여 드리겠습니다.
ORA-00942 에러를 고치세요
먼저, 약간의 면책 조항. 저는 DBA가 아니며 Windows 관리자이자 데스크톱 및 서버 하드웨어 기술입니다. 나는 SQL을 실행하는 방법을 알고 있지만 어느 정도의 전문 지식은 아니며 문제를 해결할 수있는 수준이 아닙니다. Oracle DBA 친구에게 도움을 요청해야했기 때문에이 기사를 작성하는 동안 영리한 부분은 모두 그의 것입니다.
ora-00942 오류의 세 가지 원인에 대한이 목록은 완전한 것이 아닙니다. 분명히 다른 임의의 원인이 있지만이 세 가지가 가장 일반적입니다.
불충분 한 사용자 권한
ora-00942 오류의 주요 원인 중 하나는 사용자에게 해당 테이블에 액세스 할 수있는 충분한 권한이 없기 때문입니다. 두 개의 쿼리를 실행하여이를 확인할 수 있습니다.
-사용자 또는 역할에 대한 시스템 권한을 나열합니다. SELECT * FROM dba_sys_privs 권한 부 여자 IN (& user_role, 'PUBLIC');
- 사용자 또는 역할에 대한 객체 권한을 나열합니다
권한 부 여자, 소유자 || '.'|| table_name 개체, 권한, 부여 할 수있는 FROM dba_tab_privs 권한 부 여자 IN (& user_role) ORDER BY grantee, owner || '.'|| table_name, 권한;
이 두 가지는 해당 사용자에게 명령을 실행할 수있는 올바른 권한이 있는지 알려줍니다. 사용자에게 올바른 권한이 있으면 다음으로 이동하십시오. 사용자에게 올바른 권한이 없으면 권한을 부여하거나 DB 관리자에게 요청하십시오.
ora-00942 오류는 사용중인 스키마 사용자에게 INSERT 권한이 있지만 SELECT 권한이없는 경우에도 발생할 수 있습니다. 다시 권한 수준을 확인하고 SELECT를 목록에 추가하거나 DB 관리자에게 요청하십시오. 분명히 각 스키마에 특정 SELECT 권한이 부여되어야합니다. 그렇지 않으면 ora-00942 오류가 계속 표시됩니다.
테이블이나 뷰가 실제로 존재하지 않습니다
ora-00942 오류의 원인은 잘못된 쿼리 구문 또는 테이블이없는 경우에 발생할 수 있습니다. 이것이 논리적으로 처음 시작하는 것처럼 보이지만 사용자 권한이 오류의 가장 큰 원인이라는 것이 확실합니다. 존재하지 않는 테이블 또는 사용중인 테이블 구문이 두 번째입니다.
테이블이 존재하는지 확인하려면 먼저 쿼리 구문을 확인하십시오. 구문이 올바른 경우이 쿼리를 실행하십시오.
SELECT 소유자, object_name, object_type FROM all_objects WHERE object_type IN ( 'TABLE', 'VIEW') AND object_name = 'YOUR_TABLE_NAME';
마지막 행에서 'YOUR_TABLE_NAME'이 보이는 실제 테이블 이름을 삽입하십시오. 쿼리하려는 테이블이 존재하는지 여부를 확실히 알려줍니다. 테이블없이 리턴되면 쿼리중인 테이블이 스키마 또는 데이터베이스에 존재하지 않습니다.
사용중인 시스템에 테이블 메뉴가있는 경우 원하는 경우 수동으로 테이블을 점검 할 수 있지만 위 쿼리는 작업을 수행합니다.
테이블 또는 뷰가 다른 스키마에 있습니다.
사용자에게 권한이 있고 테이블이 존재하지만 여전히 ora-00942 오류가 표시되면 스키마에 문제가있을 수 있습니다. 여러 스키마를 관리하는 경우 자신이 아닌 스키마에 대해 쿼리를 쉽게 실행할 수 있습니다. 당신이 바쁘고 그것에 맞서면, 그것은 간단한 오류입니다.
쿼리의 FROM 줄에 스키마 이름을 추가하거나 추가 할 수 있으면 스키마를 수동으로 확인하십시오. 새 스키마에 대한 올바른 권한이 없으면 ora-00942 오류가 다시 나타납니다. 첫 번째 사용자 권한 수정으로 돌아가서 해당 스키마를 확인하거나 DBA가이를 수행하도록하십시오.
위에서 언급했듯이 저는 Oracle DBA 버디와이 부분에 대해상의했습니다. 여기에서 오류나 누락이 발견되면 내 것입니다. 내가 놓친 부분이나 틀린 점이 있으면 의견 섹션에 알려주십시오.
ora-00942 오류를 해결하는 다른 방법을 알고 있다면 아래에 알려주십시오!