문제

다른 스키마의 테이블을 포함하는보기를 실행하려고 할 때 ORA-001031 불충분 한 특권이 발생합니다. 이 테이블에는보기가 생성 된 스키마에 대한 권한이 실행됩니다. View의 SQL 문을 실행하면 작동합니다. 내가 무엇을 놓치고 있습니까?

도움이 되었습니까?

해결책

테이블 소유자는 기본 테이블에서 SELECT 문을 실행하는 사용자에게 선택 액세스를 부여해야합니다.

grant SELECT on TABLE_NAME to READ_USERNAME;

다른 팁

마침내 나는 그것을 작동시켰다. Steve의 대답은 옳지 만 모든 경우에는 아닙니다. 그 뷰가 세 번째 스키마에서 실행될 때 실패합니다. 그것이 작동하려면 보조금 옵션을 추가해야합니다.

GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

그런 식으로, [READ_USERNAME] 또한 다른 스키마에 대한 견해를 통해 선택 권한을 부여 할 수 있습니다.

Q. "보조금 옵션"은 언제 필요합니까?

A. 세 번째 스키마에서 뷰를 실행할 때.

예 : Schema DSDSW에는 View_Name이라는 뷰가 있습니다

a) that view selects from a table in another schema  (FDR.balance)
b) a third shema  X_WORK  tries to select  from that view

일반적인 보조금 : dsdw.view_name에서 dsdw_select_role로 선택하십시오. Grant DSDW_SELECT_ROLE에 FDR에;

그러나 : fdr는 dsdw.view_name에서 select count (*)를 얻습니다. 1 행의 오류 : ORA-01031 : 불충분 한 권한

보조금 발급 :

grant select on fdr.balance to dsdw with grant option;

이제 fdr : dsdw.view_name에서 count (*)를 선택하십시오. 5 줄

요약하겠습니다.

다른 소유자의 객체를 포함하는보기를 구축 할 때, 다른 소유자는 "보조금 옵션"을 소유자에게 부여해야합니다. 따라서보기 소유자는 다른 사용자 또는 스키마에게 부여 할 수 있습니다 ....

예 : user_a는 mine_a user_b라는 테이블의 소유자입니다.

user_B가 Mine_A와 Yours_B의 조인으로보기를 만들고 싶다고 가정 해 봅시다.

보기가 잘 작동하려면 user_a는 "Grant Select on Mine_a to User_B with grant 옵션"을 제공해야합니다.

그런 다음 user_b는 모든 사람에게 해당 견해를 선택할 수 있습니다.

저장된 절차를 통해 뷰에 액세스하는 경우, 실행 보조금은보기에 액세스하기에 충분하지 않습니다. 명시 적으로 선택해야합니다.

저장된 절차를 통해 뷰에 액세스하는 경우, 실행 보조금은보기에 액세스하기에 충분하지 않습니다. 명시 적으로 선택해야합니다.

간단히 입력하십시오

공개적으로 모든 것을 부여하십시오.

보기를 사용하려면 사용자는 적절한 권한을 가져야하지만 기본 객체가 아니라보기 자체에만 있어야합니다. 그러나 뷰의 기본 개체에 대한 액세스 권한이 제거되면 사용자는 더 이상 액세스 할 수 없습니다. 이 동작은 사용자가보기를 쿼리 할 때 사용되는 보안 도메인이보기의 정의기의 보안 도메인이기 때문에 발생합니다. 기본 객체의 권한이 뷰의 정의기에서 취소되면보기가 유효하지 않으며 아무도보기를 사용할 수 없습니다. 따라서 사용자가보기에 대한 액세스 권한을 부여하더라도, 뷰의 기본 객체에서 정의기의 권한이 취소 된 경우 사용자는보기를 사용할 수 없습니다.

오라클 문서http://docs.oracle.com/cd/b28359_01/network.111/b28531/authorization.htm#dbseg98017

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top