ORA-01031 가져오기: ORA-00942 대신 테이블을 쿼리하는 동안 권한이 부족합니다. 테이블 또는 보기가 없습니다.
스키마 A에서 스키마 C의 테이블을 쿼리할 때 ORA-01031: 불충분한 권한을 얻고 스키마 B에서 동일한 테이블을 쿼리할 때 ORA-00942: 테이블 또는 뷰가 존재하지 않습니다.표에서 두 스키마 모두 권한이 없습니다.이 경우 다른 오류 메시지가 표시되는 이유는 무엇입니까?
받을 수 있습니다.ORA-01031: insufficient privileges
대신에ORA-00942: table or view does not exist
테이블에 하나 이상의 권한이 있지만 필요한 권한이 없는 경우.
스키마 만들기
SQL> create user schemaA identified by schemaA;
User created.
SQL> create user schemaB identified by schemaB;
User created.
SQL> create user test_user identified by test_user;
User created.
SQL> grant connect to test_user;
Grant succeeded.
개체 및 권한 생성
SELECT를 부여하지 않고 스키마에 DELETE와 같은 권한을 부여하는 것은 드문 일이지만 가능합니다.
SQL> create table schemaA.table1(a number);
Table created.
SQL> create table schemaB.table2(a number);
Table created.
SQL> grant delete on schemaB.table2 to test_user;
Grant succeeded.
TEST_USER로 연결하고 테이블 쿼리 시도
테이블에 대한 일부 권한이 있으면 오류 메시지가 변경됨을 나타냅니다.
SQL> select * from schemaA.table1;
select * from schemaA.table1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from schemaB.table2;
select * from schemaB.table2
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL>
ORA-01031: insufficient privileges
개체가 스키마에 있지만 해당 개체에 대한 액세스 권한이 없는 경우 발생합니다.
ORA-00942: table or view does not exist
개체가 현재 스키마에 없을 때 발생합니다.개체가 다른 스키마에 있는 경우 다음을 사용하여 개체에 액세스해야 합니다.소유자가 호출 스키마에 대한 액세스 권한을 부여하지 않은 경우에도 권한 부족 오류가 발생할 수 있습니다.
ORA-01031의 경우: 권한이 부족합니다.일반적인 원인 중 일부는 다음과 같습니다.
- 적절한 권한 없이 오라클 사용자 이름 또는 암호를 변경하려고 했습니다.
- 작업을 수행하려고 했습니다.
UPDATE
테이블로, 하지만 당신은 오직.SELECT
테이블에 대한 접근 권한 - 다음을 사용하여 오라클 데이터베이스를 시작하려고 했습니다.
CONNECT INTERNAL
. - 운영 체제에 대한 적절한 권한 없이 오라클 데이터베이스를 설치하려고 했습니다.
이 Oracle 오류를 해결하는 옵션은 다음과 같습니다.
- 오라클 DBA가 누락된 적절한 권한을 부여하도록 할 수 있습니다.
- 오라클 DBA가 대신 작업을 실행하도록 할 수 있습니다.
- 오라클을 시작하는 데 문제가 있는 경우 오라클 사용자를 dba 그룹에 추가해야 할 수 있습니다.
위해서ORA-00942: table or view does not exist.
존재하지 않거나 액세스 권한이 없거나 다른 스키마에 속하는 테이블 또는 뷰를 참조하는 SQL 문을 실행하려고 했지만 스키마 이름으로 테이블을 참조하지 않았습니다.
테이블 또는 뷰가 존재하지 않아 이 오류가 발생한 경우 테이블 또는 뷰를 작성해야 합니다.
다음 SQL 문을 실행하여 테이블이 Oracle에 있는지 확인할 수 있습니다.
select *
from all_objects
where object_type in ('TABLE','VIEW')
and object_name = 'OBJECT_NAME';
예를 들어 공급업체 테이블을 찾고 있는 경우 다음을 실행합니다.
select *
from all_objects
where object_type in ('TABLE','VIEW')
and object_name = 'SUPPLIERS';
옵션 #2
테이블 또는 뷰에 대한 액세스 권한이 없어 이 오류가 발생한 경우 테이블/뷰의 소유자를 지정하거나 DBA가 이 개체에 대한 적절한 권한을 부여해야 합니다.
옵션 #3
테이블/뷰가 다른 스키마에 속해 있고 스키마 이름으로 테이블을 참조하지 않았기 때문에 이 오류가 발생한 경우, 스키마 이름을 포함하도록 SQL을 다시 작성해야 합니다.
예를 들어 다음 SQL 문을 실행했을 수 있습니다.
select *
from suppliers;
그데그런.suppliers
테이블은 사용자 소유가 아니라 app이라는 스키마에 의해 소유되므로 SQL을 다음과 같이 수정할 수 있습니다.
select *
from app.suppliers;
공급업체 테이블/뷰가 어떤 스키마에 속하는지 모르는 경우 다음 SQL을 실행하여 확인할 수 있습니다.
select owner
from all_objects
where object_type in ('TABLE','VIEW')
and object_name = 'SUPPLIERS';
그러면 공급업체 테이블을 소유한 스키마 이름이 반환됩니다.
sql 명령줄에서 실행해 보십시오.
connect/ as sysdba;
create user b identified by "password";
grant all privileges to b;
SQL Developer에서 새 연결을 생성합니다.
스키마 'c'에 대해서도 동일한 작업을 수행합니다;
스키마 'a'에 대한 권한도 부여합니다.
connect/ as sysdba;
grant all privileges to a;
이 방법으로 문제를 해결했습니다.
SQL 개발자:모든 것이 정상적으로 작동했고 로그인할 수 있는 모든 권한이 있었고 암호 변경이 없었으며 테이블을 클릭하여 데이터 탭을 볼 수 있었습니다.
그러나 쿼리(단순 선택 문)를 실행하면 "ORA-01031: 불충분한 권한" 메시지가 표시됩니다.
해결책은 단순히 연결을 끊고 다시 연결하는 것입니다.참고: 다시 연결만 수행하면 안 됩니다. SQL 개발자 스냅샷 연결 끊기
ORA-01031: 권한 부족 해결 방법:시스템 사용자로 이동한 다음 이 코드를 작성합니다.
SQL > grant dba to UserName; //Put 이 오류 메시지를 표시하는 사용자 이름을 입력합니다.
허가가 성공했습니다.
언급URL : https://stackoverflow.com/questions/20988572/getting-ora-01031-insufficient-privileges-while-querying-a-table-instead-of-ora
'programing' 카테고리의 다른 글
IIS 7에서 하위 도메인을 설정하는 방법 (0) | 2023.06.24 |
---|---|
유형 스크립트에서 콜백 함수 내의 '이것'에 액세스하는 방법은 무엇입니까? (0) | 2023.06.19 |
구성 요소에서 getStaticProps 사용 (0) | 2023.06.19 |
VS 2008은 ASPX 코드를 계속 제거하고 다시 추가합니다. (0) | 2023.06.19 |
문자열로 지정된 식을 평가합니다. (0) | 2023.06.19 |