728x90
반응형
1. SYNONYM의 개념 

  - 내 계정에서 다른 계정의 특정 테이블을 내 계정에서 볼 때

    Alias(별칭)를 정해놓고, 그 테이블을 참조할 때 Alias로 참조한다.

 

2. SYNONYM의 사용 

  - ORACLE0904 라는 계정에서 SCOTT 계정의 DEPT(부서테이블)을 보려 한다면,

     통상적으로 이렇게 사용한다.

    예) SELECT * FROM SCOTT.DEPT

 

  - 하지만, 이렇게 사용한다면, 나중에 SQL문이 길어질 때, SQL문의 복잡함에 한 몫을 더한다는 점과

     다른 스키마(여기서는 SCOTT)에 있는 오브젝트(여기서는 DEPT)의 위치를

     노출시킨다는 점에서 보안성에도 문제가 있을 수 있다고 한다.

 

  - 그래서 SCOTT.DEPT 라는 부분을 내 계정에서 간단히 줄여 별칭으로 사용하기 위함이 SYNONYM이다.

    예를 들어, 별칭....이라...음. 나는 앞으로 SCOTT.DEPT를 'DEPT2'라는 별칭으로 사용하기 위해

    내 계정에서 별칭을 정하는 작업을 다음과 같이 한다.

    예) CREATE SYNONYM DEPT2 FOR SCOTT.DEPT

 

  - 이렇게 별칭을 설정하여 놓고, SELECT * FROM DEPT2 라는 쿼리를 수행하면,

    SELECT * FROM SCOTT.DEPT 쿼리 수행 결과와 결과가 같음을 확인할 수 있다.

    쿼리문 길이 및 보안유지에도, 조금이나마 도움이 된다는 취지에서 SYNONYM을 사용한다.

 

  * 만약 ORACLE0904 계정에서 SCOTT 계정의 테이블을 SELECT 할 권한이 없다면,

    SCOTT 계정으로 접속하여, 다음과 같이 권한을 주고 작업하면 된다.

    예) GRANT SELECT ON DEPT TO ORACLE0904 
            
--> ORACLE0904 계정에게 DEPT 테이블의
 SELECT 권한 부여

 

  * 또한 나중에 이 별칭을 사용하지 않게 된다면, 해당 SYNONYM을 다음과 같이 없애줘 버리면 그만이다.

    예) DROP SYNONYM DEPT2

728x90
반응형

+ Recent posts