다른 스키마의 테이블이 포함된 뷰를 실행하려고 하면 ORA-001031 권한 부족이 발생합니다. 이러한 테이블에는 뷰가 만들어진 스키마에 대한 실행 권한이 있습니다. 뷰의 SQL 문을 실행하면 작동합니다. 내가 무엇을 놓치고 있나요?
마침내 해결했습니다. Steve의 대답은 맞지만 모든 경우에 해당되는 것은 아닙니다. 해당 뷰가 세 번째 스키마에서 실행되는 경우 실패합니다. 작동하려면 부여 옵션을 추가해야 합니다:
부여 옵션으로 [table_name]에서 [read_username]으로 부여 선택;
이렇게 하면 [READ_USERNAME]
도 뷰에 대한 선택 권한을 다른 스키마에 부여할 수 있습니다.
Q. 는 " 허가합니다 때 함께 option"; 필수?
A. 경우 제 3 의 실행됨을 보기입니다 스키마에는.
예: 스키마에는 스즈문 보기입니다 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. fdr dsdw_select_role 허가합니다 위해.
하지만. fdr 된다 select count (*) 를 dsdw.view_name. 1 행의 오류: Ora 01031: 권한이 없습니다
실행하십시오 허가합니다:
grant select on fdr.balance to dsdw with grant option;
이제 fdr: select count (*) 를 dsdw.view_name. 5 행
Let me make a 요약.
해당 객체를 포함하는 다른 소유자가 다른 소유자의 %s/dbase/ext_table. 보기입니다 제작할 때, 함께 option" 허가합니다 부여하십시오 "; 사용 표시합니다. 따라서 다른 사용자 또는 스키마에는 허가합니다 소유자에게도 볼 수 있습니다.
예: User_a mine_a 불렀으매 소유자인 한 표 User_b yours_b 불렀으매 소유자인 한 표
보기 위해 일할 수 있는 선택할 수 있는, 좋아, user_a 전달자로써 " 허가합니다 mine_a user_b option" 허가합니다 있다.
다음 view) 를 선택할 수 있는 user_b 허가합니다 사람들.
반드시 대해서만 사용할 수 있는 적절한 권한을 보기인 보기입니다 자체가 아니라 그 기본 객체. 그러나 기본 객체 접근 권한을 뷰는 재거됨 경우 사용자는 더 이상 액세스할 수 있습니다. 이 때문에 일어나는 비헤이비어를 것을 볼 때 사용되는 보안 도메인 사용자 쿼리합니다 디파 표시합니다. # 39 에서 view& 일치하지 않은 경우 기본 객체에 대한 권한 후 사용할 수 있게 되고, s 디파 보기입니다 잘못된, 누구도 보기입니다. 따라서 사용자가 부여되었는지 경우에도 액세스하려면 보기인 사용자가 사용할 수 없게 보기입니다 definer& # 39 의 경우, 이미 부여된 인권에 view& # 39 의 기본 객체.
Oracle 문서용으로 http://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm # DBSEG98017