반응형

SYNONYM은 오라클 객체(테이블,뷰,시퀀스,프로시저)에 대한 Alias를 말한다.

SYNONYM은 실질적으로 그차제가 Object가 아니라 Object에 대한 직접적인 참조 


- 실무에서 다른 유저의 객체를 참고할 경우 SYNONYM을 생성해서 사용을 하면

  추후에 참고하고 있는 오프젝트가 이름을 바꾸거나 이동을 할 경우 객체를 사용하는

  SQL 구문을 모두 다시 고칠 필요가 없이 SYNONYM 만 다시 정의 하면 된다.

- 긴 이름을 단순하게, 짧게 만들어 쓸 수 있다. 

- 객체를 참조하는 사용자의 오브젝트를 감출 수 있기 때문에 보안 유지가 된다. 

  SYNONYM을 사용하는 유저는 참조하고 있는 객체에 대한 사용자의 오브젝트 

  소유자,이름,서버이름을 몰라도 SYNONYM이름만 알면 사용할 수 있다. 


SYNONYM 사용하는 경우

#오브젝트의 실제 이름과 소유자 그리고 위치를 감추고 DB보안을 개선하는데 사용

#오브젝트에 Public Access를 제공

#Remote DB의 table,view, program Init를 위해 투명성 제공

#DB SQL문 단순화


SYNONYM 두가지 종류가 있다.

- Private SYNONYM

  특정사용사만 이용할 수있다.

- Publice SYNONYM

  DB에 있는 모든 사용자가 공유 하여 사용할 수 있다. 



SYNONYM 구문


CREATE [PUBLIC] SYNONYM synonm_name

FOR object_name


- Public : 모든 사용자가 접근 가능한 SYNONYM을 생성

             Publice SYNONYM 은 DBA만 생성할 수 있다.



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

1. 먼저 scott/tiger USER로 접속해서 test USER에게 emp 테이블의 조작할 권한을 부여한다


GRANT ALL ON emp TO test;

권한이 부여 되었습니다. 


test user에 대하여 scott의 emp테이블을 조작할 수 있는 권한을 부여한다.

권한이 있어야 select 하거나 update, insert 할 수 있다.


2. test USER로 접속해 동의어를 생성한다 


connect test/test


GREATE SYNONYM scott_emp FOR scott.emp;

시노임이 생성 됨


scott USER가 소유하고 있는 emp테이블에 대해 scott_emp라는 일반 시노임을 생성

scott 사용자의 emp 테이블을 test 사용자가 scott_emp라는 동의러로 사용한다.


-- SYNONYM을 이용한 쿼리

select empno ,ename from scott_emp;


-- 일반 테이블 쿼리

select empno ,ename from scott.emp;


두 쿼리 결과는 같다.


동의어 삭제


DROP SYNONM scott_emp;

시노임이 삭제 되었습니다. 


select empno ,ename from scott_emp;

라인 1에 오류:

ORA-00942: 테이블 또는 뷰가 존재 하지 않는다. 


http://jhbench.tistory.com/200 블로그 참조

반응형

+ Recent posts