관리 메뉴

기억하기 프로젝트

Synonym 개념 정리 본문

개발이야기/Database

Synonym 개념 정리

sy89 2015. 1. 18. 17:43


최근에 팀 내의 DB이전 작업으로, 기존에 사용중이던 시노님과 DB Link 정리작업을 했었다. 작업도중 시노님과 DB Link의 차이와 특징에 대해 정확하게 알고싶어서 "뇌를 자극하는 오라클 프로그래밍" 책을 참고하여 정리해 보았다. 

먼저 시노님의 특징부터 알아보자.

시노님 : 데이터베이스에서 다른 객체들에 대한 가명을 가진 객체로써, 오라클에서의 Synonym은 스키마 오브젝트들의 별칭(alias)을 뜻한다.

예를 들어, HR스키마의 EMPLOYEE테이블의 데이터를 DEV 사용자가 조회하기 위해서는, 스키마가 다른 테이블이기 때문에 다음과같이 EMPLOYEE 테이블명 앞에 스키마명도 함께 정의해야 한다.

SELECT * FROM HR.EMPLOYEE

(단, DEV사용자가 SELECT권한을 부여받았다는 전제 하에)

HR 사용자로 로그인했을 경우에는 생략해도 상관이 없지만, DEV사용자로 로그인했을 경우에는 반드시 스키마명을 명시해줘야 한다.

하지만, DEV사용자가 항상 'HR.EMPLOYEE' 로 정의하기 번거롭기 때문에 'EMPLOYEE'만을 표기해서 사용할 수 있는 방법은 없을까? 이럴때 사용할 수 있는 방법이 바로 시노님이다.

HR.EMPLOYEE 의 별칭을 EMPLOYEE로 만들면 되는 것이다. 이렇게 하면 스키마명을 쓰지 않고도 EMPLOYEE 테이블의 데이터를 조회할 수 있다. 

또한, 보안성 측면에서도 시노님을 사용하는 이점이 있는데, 이는 EMPLOYEE라는 객체가 동일한 이름으로 두 개 존재하지만 스키마가 달라서 충돌되지도 않고 EMPLOYEE가 HR스키마에 속한다는 사실을 감출 수 있기 때문에 데이터 보안성 측면에서도 시노님 사용 이점이 있는 것이다.


시노님 생성 문법은 다음과 같다.

create [OR REPLACE] [PUBLIC] synonym '스키마명.시노님명' for '스키마명.대상오브젝트명';


시노님의 종류는 public/private  으로 나뉘는데, PUBLIC시노님은 모든 사용자가 이 시노님에 접근 및 사용이 가능하고, PRIVATE시노님은 시노님을 생성한 스키마에서만 접근하여 사용할 수 있다.

시노님을 사용하는데 몇 가지 제한사항으로는,

1. 위의 예시에서 언급한 HR.EMPLOYEE테이블에 대한 SELECT권한이 있어야 한다. SELECT권한이 없더라도 시노님 생성은 가능하지만 데이터는 조회할 수 없다.

2. 시노님 생성 권한이 있어야 한다.






'개발이야기 > Database' 카테고리의 다른 글

mysql 엔진 MyISAM과 InnoDB 차이  (1) 2016.05.27