2016-09-13 1 views
1

schema1에서 schema2 (oracle10g)에 대한 테이블에 대한 액세스 권한을 부여하려고합니다. 동의어를 만들 수 있지만 같은 테이블에 선택 권한을 부여 할 수없는 이유는 무엇입니까?

나는 schema2에 동의어를 생성 :

CREATE SYNONYM schema2.table FOR schema1.table; 

동의어가 성공적으로 만들었습니다.

은 그럼 내가 같은 테이블에 선택 부여하려고 :

grant select on schema1.table to schema2; 

내가 가진 :

ORA-00942: table or view does not exist 

이 나에게 이해가되지 않습니다. 동의어를 만들 수 있었지만 보조금을 만들 수는 없었습니다. 내가 뭘 잘못하고 있니?

나는 schema2에서 테이블을 얻을 수 없습니다입니다 :

select * from table; 
ORA-00942: table or view does not exist 
+0

교부금이 주어지며, 취해지지 않는다는 것을 명심하십시오. Schema2는 Schema1 개체에 대한 권한을 부여 할 수 없습니다 (DBA 계정이 아니면). 교부금은 Schema1에서 가져 와서 Schema2가 해당 객체에 액세스 할 수있게해야합니다. –

답변

2

만약 내가이 "동의어 만들기 | 권리를 난에 보조금을 필요없이 스키마 2 스키마 1의 테이블에 대한 동의어를 만들 수 있습니다 스키마 1 테이블 (GRANT WITH GRANT OPTION)에 다른 사용자에게 다시 권한을 부여 할 수있는 권한이 없으면이 사용자로부터 권한을 부여 할 수 없습니다.

솔루션, 로그 in schema1로 설정하고 거기에서 권한을 부여하면 동의어가 schema2에서 작동하거나 내가 로그인 한 사용자가 schema1 오브젝트에 권한을 부여 할 수있는 권한이 있는지 확인하십시오. 같은 SCHEMA1에서

로그인하고 schema2은 테이블에 갖고 싶어 중 작업 허가 : 귀하의 코멘트 당

.

예컨대)

SQL> GRANT SELECT, INSERT, UPDATE, SCHEMA2에 테이블에 DELETE;

SCHEMA2는 동의어를 통해 테이블을 볼 수 있으며 테이블에 대한 조작을 허용 할 수 있습니다.

SCHEMA2가 사용할 다른 스키마에 대한 선택 권한을 부여 할보기에서이 테이블을 사용하려는 경우 schema1의 초기 부여에 "WITH GRANT OPTION"을 추가해야합니다. 다른 사용자에게 권한을 다시 부여 할 수 있습니다.

+0

schema1에서 어떤 권한을 부여해야합니까? 스키마 2에서 어떤 특정 권한을 검사해야합니까? – Rodrick

+0

내 대답 업데이트보기 –

2

실제로 존재하지 않는 개체에 대한 동의어를 만들 수 있습니다. 예 :

create synonym flub for blib;

... 그래서 당신이 존재하는 개체를 의미하지 않는다 동의어를 만들 수 있었다 사실.

관련 문제