동의어(Synonym) 란?
: 객체를 조회할 때마다 일일이 객체의 소유자를 지정하는 것이 번거로울 경우 동의어를 정의하면 긴 이름대신 간단한 이름으로 접근할 수 있도록 하는 명령어 입니다.
1) 동의어 생성
1) 권한을 부여한다.
grant create synonym to scott; -- 동의어를 만들 수 있도록 허용
2) 동의어 생성
create synonym systab for system.table_systbl;
-- system.table_systbl 이 스키마를 동의어로 systab 만듭니다.
( 간단히 접근하기 위함, 이름이 길때 등...) 사용합니다.
2) 비공개 동의어 생성
: 객체에 대한 접근 권한을 부여 받은 사용자가 정의한 동의어로 해당 사용자만 사용할 수 있습니다.
create role test_role; -- 롤을 하나 생성을 했다.
grant connect, resource, create synonym to test_role;
-- connect + resource+ create synonym 권한을 test_role 에 줍니다.
grant select on scott.dept to test_role;
-- 위에 생성한 권한 + scott.dept 에대한 select 권한까지 받았다.
* 사용자에게 롤 부여
grant test_role to tester10; -- tester10, tester11 에게 권한을 부여 하였다.
grant test_role to tester11;
* 부여받은 권한 실행
select * from scott.dept; -- 스키마와 함께 써야한다.
3) 공개 동의어 생성
: 권한을 주는 사용자가 정의한 동의어로 누구나 사용할 수 있습니다. 또한 SYNONYM 앞에 PUBLIC를 붙여서 정의합니다.
create public synonym PubDept for scott.dept; -- 공개 동의어 생성
* 사용자에게 롤 부여
grant test_role to tester12;
select * from PubDept; -- 공개 동의어
4) 비공개 동의어/ 공개 동의어 제거하기
* 비공개 동의어 삭제 -- 비공개 동의어인 dept는 동의어를 소유한 사용자로 접속한 후 제거해야 합니다.
drop synonym dept;
* 공개 동의어 삭제
drop public synonym PubDept;
'빅데이터 > DataBase' 카테고리의 다른 글
[DataBase] 데이터베이스 구축 (0) | 2020.04.17 |
---|---|
[DataBase] 데이터 제어어(DCL : Data Control Language) (0) | 2020.04.14 |
[DataBase] 인덱스(Index) (0) | 2020.04.14 |
[DataBase] 시퀀스(Sequence) (0) | 2020.04.14 |
[DataBase] 뷰(View) (0) | 2020.04.13 |