본문 바로가기

Infomation

SYNONYM(동의어)

시노님을 사용하는 이유

① 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.

② 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.

③ 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.

④ 또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있다. 시노님을 사용하는 유저는 참조하고 있는 객체를에 대한 소유자, 이름, 서버이름을 모르고 시노님 이름만 알아도 사용 할 수 있다.

시노님을 사용하는 경우

객체의 실제 이름과 소유자 그리고 위치를 감춤으로써 데이터베이스 보안을 개선하는데 사용 한다

객체의 Public Access를 제공 한다

Remote 데이터베이스의 TABLE, VIEW, PROGRAM UNIT를 위해 투명성을 제공 한다.

데이터베이스 사용자를 위해 SQL 문을 단순화 할 수 있다.

시노님의 두 가지 종류

Private Synonym : 전용 시노님은 특정 사용자만 이용할수 있다.

Public Synonym : 공용 시노님은 공용 사용자 그룹이 소유하며 그 데이터베이스에 있는 모든 사용자가 공유 한다.

시노님 문법

  • PUBLIC : 모든 사용자가 접근 가능한 시노님을 생성 한다.

시노님 예제

scott USER의 emp테이블을 test USER가 사용 하는 예제.

 
-- ① 먼저 scott/tiger USER로 접속해서 test USER에게 
--   emp 테이블을 조작할 권한을 부여합니다.
SQL> GRANT ALL ON  emp TO test; 

-- ② test USER로 접속해 동의어를 생성합니다. 
SQL> CONNECT test/test 
SQL> CREATE SYNONYM scott_emp FOR scott.emp ; 

-- scott USER가 소유하고 있는 emp 테이블에 대해 
   scott_emp라는 일반 시노님을 생성했다. 
-- scott 사용자의 emp테이블을 test 사용자가 
   scott_emp라는 동의어로 사용 합니다. 

-- ③ 시노님을 이용한 쿼리
SQL> SELECT empno, ename FROM  scott_emp; 

-- 일반 테이블을 쿼리
SQL> SELECT empno,  ename FROM  scott.emp; 
 이 두 쿼리의 결과는 같다. 

   EMPNO ENAME
-------- ---------
    7369 SMITH
    7499 ALLEN
...

-- ④ 동의어 삭제 
SQL> DROP SYNONYM scott_emp; 

-- 시노님을 이용한 조회
SQL> SELECT empno,  ename FROM  scott_emp; 
         라인 1 에 오류:
     ORA-00942: 테이블 또는 뷰가 존재하지 않습니다