동의어(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

+ Recent posts