# 데이터베이스/오라클

synonym(동의어)

dev-jjong 2013. 4. 9. 20:40

--동의어(synonym) : 객체에 대한 별명

동의어(Synonym)란? 
 
 
-------------------
Synonym(동의어)
-------------------

A. 개념
- 동의어(Synonym)은 Table, View, SnapShot,Sequence,Procedure, Function, Package에
대한 별칭이다.
- 공용 및 전용 동의어의 두가지 종류가 있다. 공용동의어는 public이라는 특정사용자 그룹에서
소유하며 DB의 모든 사용자가 사용할수 있다. 전용동의어는 다른 사용자에 대해 전용동의어의
가용성을 제어할수 있는 특정 사용자의 스키마에 들어있다.
B. 생성
- 예를들어 scott의 Schema에 포함된 Emp Table에 대해 puiblic_emp라는 공용 Synonym생성
- Create public synonym public_emp for scott.emp;
- 이상과 같이 공용으로 생성하면 Oracle의 다른 사용자는 public_emp라는 별칭을 사용하여
Query 할수있다.
- tiger라는 User는 public_emp라는 별칭을 사용하여 다음과 같이 Query 할수있다.
Sqlplus>select * from public_emp;
C. 삭제
- drop public synonym public_emp

-----------------------------------------------------------------------
만약 Synonym이 전용이라면 생성과 삭제시 public이라는 Option을 안쓰면 된다.

 --system/oracle 계정
 SQL> grant create synonym to user1; --synonym권한만 주기
 SQL> grant create public synonym to user1;-- public, synonym권한주기
 
 
-- public synonym : 모든 계정에서 별명을 공유 할 수 있다.
 
  --user1/hb 계정
 SQL> create synonym saw for scott.sawon
 SQL> create public synonym saw2 for scott.sawon
 

--scott/tiger 계정
 SQL> grant select on sawon to user1; --유저1에게 권한을 준것이다

  --user1/hb 계정
  --synonym 삭제
  SQL> drop synonym saw;  --user1에서 삭제가능.
  동의어가 삭제되었습니다.
  SQL> drop public synonym saw2;  --권한이 없다. public 선언해서 만든것은 system 계정에서만 지울 수있다.
  ORA-01031: 권한이 불충분합니다

 

--------------------동의어(synonym) 끝-------------------------