기본 콘텐츠로 건너뛰기

181203 DB SYNONYM

DB SYNONYM


0. 개요

데이터베이스 객체에 대한 소유권은 해당 객체를 생성한 사용자가 갖는다
 = 다른 사용자가 그 객체에 접근하려면 접근권한을 부여받아야 한다
 = 다른 사용자가 해당 객체를 조회하려면 소유자의 ID를 지정해야함
 ↔ 객체를 조회할 때마다 ID를 지정하는 것은 귀찮은 일
∴ 하나의 객체에 다른 이름을 지정할 때 사용
   SYNONYM은 데이터베이스 전체에서 사용할 수 있는 객체

1. 정의

오라클 객체인 테이블, 뷰, 시퀀스, 프로시저에 대한 별칭
객체에 대한 직접적인 참조를 의미함

2. 사용하는 이유

DB 투명성 제공
다른 사용자의 객체를 참조하기 위해
코딩의 단순화

3. 종류

1) private synonym: 특정 사용자만 사용 가능
2) public synonym: 공용 사용자 그룹, 모든 사용자가 사용 가능

4. 사용법

0) scott계정 사용자에게 synonym 권한 부여
 - 처음부터 scott 계정이 권한을 갖고 있지 않음
 - system 계정이 권한을 부여해줘야 scott 계정도 synonym 사용가능
 - 권한 부여: grant create synonym to scott
 ※ other 계정은 생성때부터 synonym권한이 있음 (  1) 참조  )
 

1) scott계정으로 접속해서 other계정에게 MA_MI_DEPT테이블의 조작 권한을 부여
 - grant all on MA_MI_DEPT to other
  : scott 계정의 MA_MI_DEPT 테이블의 모든 권한을 other 계정에게 부여

2) other 계정으로 접속해서 synonym 생성
 - create synonym MA_MI_DEPT for SCOTT.MA_MI_DEPT
  : other계정이 scott계정의 MA_MI_DEPT 테이블을 MA_MI_DEPT로 이용하겠다고 선언

2-1) 일반 쿼리, synonym을 이용한 쿼리
 - 일반 : SELECT * FROM SCOTT.MA_MI_DEPT ;
 - synonym이용: SELECT * FROM MA_MI_DEPT ;

3) synonym 삭제
 - drop synonym scott_emp
  : synonym을 삭제했기 때문에 synonym을 이용한 쿼리는 사용 불가
   (일반 쿼리는 사용 가능)

4) 권한 해제
 - revoke all on MA_MI_DEPT from OTHER
  : 권한을 해제 했기 때문에 일반 쿼리조차 사용 불가

5. 주의점

실무에서는 DBA만이 synonym을 생성, 삭제하고 권한을 해제할 수 있음