2014-06-13 4 views
0

SCHEMA_B의 테이블 LICENSE에있는 열을 사용하여 SCHEMA_A에서보기를 만들고 싶습니다. 오라클 : 관리자 계정을 사용하여 스키마 전체에서보기 만들기

create view SCHEMA_B.V_TEST as 
SELECT LICENSE_NUMBER FROM  SCHEMA_A.LICENSE L 

다음

이 "ORA-01031 : 권한이 충분하지 않습니다"저를주고있다
select * from SCHEMA_B.V_TEST 

내가 관리자 계정과보기에서 선택하려고 할 때. (편집 : 관리자 계정에는 SELECT ANY TABLE 권한이 있습니다.) 무엇이 누락 되었습니까?

비슷한 질문이 있지만 해결책은 한 사용자가 다른 사용자에게 선택 권한을 부여하는 것과 관련이 있습니다. 내가 관리자이기 때문에 이미 두 스키마 모두에서 선택 권한을 가져야합니다. 그러나 나는 "부여 옵션을 SCHEMA_A.LICENSE에 부여 옵션과 함께 admin_account 부여"줄을 추가하려고 시도하고 동일한 오류가 발생합니다.

+1

"보기를 관리자 계정으로 간주"이란 의미는 무엇입니까? 'schema_a'에서 뷰를 생성 할 때 에러가 발생한다고 말하는 것입니까? 세 번째 계정에'schema_a '에서 생성 한 뷰를 쿼리 할 수있는 권한이 없다는 말입니까? 아니면 다른 말하고있는거야? 오류를 발생시키는 진술은 무엇입니까? –

+0

Justin Cave, 미안하지만 그게 확실하지 않습니다. 명확히하기 위해 편집 됨. – user3234309

+0

ORA-01031에서보기를 선택하지 않고 있습니다. 그렇지 않습니까? 이것은'schema_b'는'schema_a.license'에 대한 선택 권한을 가지고 있다는 것을 의미합니다. 'select '의 오류는'admin account '에'select select table'권한이 없다는 것을 나타내므로 어떤 권한이 필요한지 살펴볼 필요가 있습니다. 왜 두 스키마 모두에서 이미 선택 권한을 갖고 있다고 생각합니까? 기존 개체에 대한 명시 적 권한이있을 수 있지만 자동으로 새로운 것을 볼 수는 없습니다. (그 계정에서보기를 조회 할 수 있어야한다는 것은 확실하지 않습니다.) –

답변

1

schema_b에 schema_a.licence에 대한 선택 권한이 없기 때문에 뷰 작성이 실패했다고 생각합니다. schema_b에 오브젝트를 작성 중이므로 schema_b에 필요한 특권이 있어야합니다.

그랜트를 : schema_a (또는 DBA - "관리자 계정")와 같은

grant select on schema_a.licence to schema_b 

다음 뷰를 생성 할 수 있어야하고 다음에서 선택합니다.

+0

작성이 실패하지 않습니다. view가 생성되고 (주석으로 확인 됨), 이는'schema_b'가'schema_a'에 select privs를 가지고 있음을 의미합니다. 그런 다음'admin_account' (DBA 권한을 가지기 위해 * 나타나지 않음)는 뷰에서 선택하려고 시도하는데, 사용자가 새로운 객체에 대한 선택 권한을 가지고 있지 않음을 시사합니다. 나는 생각한다. –