PL / SQL 에서 ORA - 00942 오류 에 대한 추가 연구
Error: PL/SQL: ORA-00942: table or view does not exist
오류 원인 보기:
Cause: The table or view entered does not exist, a synonym that is not allowed here was used, or a view was referenced where a table is required. Existing user tables and views can be listed by querying the data dictionary. Certain privileges may be required to access the table. If an application returned this message, the table the application tried to access does not exist in the database, or the application does not have access to it.
Action: Check each of the following:
the spelling of the table or view name.
that a view is not specified where a table is required.
that an existing table or view name exists.
Contact the database administrator if the table needs to be created or if user or application privileges are required to access the table.
Also, if attempting to access a table or view in another schema, make certain the correct schema is referenced and that access to the object is granted.
그러나 모두들 매우 놀 라 고 이상 하 다. 분명히 SQL / PLUS 에서 직접 조회 할 수 있 었 는데, 그리고 결 과 를 되 돌려 주 었 다.그런데 왜 컴 파일 과정, 함수 또는 가방 에 오류 가 발생 했 습 니까?
그렇지 않 으 면 현재 사용자 가 충분 한 권한 이 없다 는 것 을 설명 할 수 있 을 뿐이다.
좋 습 니 다. 사용자 가 정확 한 조회 권한 을 가 질 수 있 도록 직접 권한 을 부여 합 니 다.
SQL> grant select on dba_tablespaces to xxx;
Grant succeeded.
SQL> grant select on v$session to xxx;
grant select on v$session to asg
*
ERROR at line 1:
ORA-02030: can only select from fixed tables/views
위 와 같은 조작 을 하면 데이터 사전 (DATA DICTIONARY) 이 직접 권한 을 부여 하고 사용 할 수 있 음 을 볼 수 있다.그러나 다 이 나 믹 퍼 포 먼 스 뷰 는 안 되 고 ORA - 02030 의 오 류 를 신고 했다.
can only select from fixed tables/views
Cause: An attempt is being made to perform an operation other than a retrieval from a fixed table/view.
Action: You may only select rows from fixed tables/views.
보 았 습 니 다. V $SESSION 에 대한 제 권한 수여 에 문제 가 있 습 니 다!네, 즉 V $는 VIEWS 가 아 닙 니 다.
오 라 클 이 내 놓 은 설명 을 살 펴 보 자.
V$ Views
The actual dynamic performance views are identified by the prefix
V_$
. Public synonyms
for these views have the prefix
V$
. Database administrators and other users should access only the V$
objects, not the V_$
objects. 분명히 V $는 '동의어' 라 고 할 수 있 습 니 다!권한 수여 오류 가 발생 할 수 있 습 니 다.
그럼 어떻게 권한 을 부여 해 야 하나 요?네, ORACLE 가 제시 한 규칙 에 따라 준 마 를 찾 습 니 다.
SQL> grant select on v_$session to XXX;
Grant succeeded.
인증 성공 을 볼 수 있 습 니 다. 컴 파일 에 성공 하기 위해 서 는 프로그램 스 크 립 트 를 약간 변경 해 야 합 니 다. 뭐라고 요?네, V $SESSION 을 SYS. V $로 바 꾸 는 겁 니 다.세 션 이면 됩 니 다.
다음 에 생각해 보 겠 습 니 다. 만약 에 저희 가 작성 한 내용 이 비교적 많은 DATA DICTionary 나 DYNAMIC PERFORMANCE VIEW 와 관련 이 있다 면 저희 가 하나씩 권한 을 부여 하 는 것 이 귀 찮 지 않 겠 습 니까?
저 희 는 ORACLE 에서 미리 정 의 된 캐릭터 를 통 해 권한 수 여 를 한꺼번에 완성 할 수 있 습 니 다.
SQL> grant select any dictionary to xxx;
Grant succeeded.
이렇게 하면 저 는 DATA DICTionary 와 DYNAMIC PERFORMANCE VIEW 를 직접 사용 할 수 있 습 니 다.그러나 이러한 권한 수 여 는 데이터 뱅 크 의 안전성 에 불리 하 다 는 점 을 주의해 야 한다.
------------------------
ORA - 00942 에서 시 작 된 문 제 는 DYNAMIC PERFORMANCE VIEW 와 ORACLE SECURITY 등에 문 제 를 설명 하 는 것 이 재 미 있 었 다.그 러 니까 ORACLE 의 학습 에 있어 서 손 을 많이 쓰 고 공식 문 서 를 많이 읽 으 며 정 리 를 많이 하 는 것 이 중요 하 다.
기술 에 장애 가 없 으 니 뚫 을 수 있 느 냐 없 느 냐 에 달 려 있다 -:)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx websocket ip_해시 규칙프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다. 프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다. spring.profiles.active=de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.