반응형

Synonym(시노님)의 영어적 의미로는 동의어라는 뜻을 갖고 있다. 오라클에서 시노님이란 동의어의 의미를 갖고 있는데, 오라클의 객체들에게도 본명이 아닌 다른 이름을 붙여 그 이름을 사용 할 수 있다. 보통은 테이블에 시노님을 붙여서 많이 사용하는데 테이블 이외에도 시노님 생성한 객체들은 아래와 같다.


시노님 생성이 가능한 오라클 객체

- 테이블, 뷰, 프로시저, 함수, 패키지, 시퀀스


테이블에 다른이름(시노님)을 붙인다는 이야기는 어떤 이야기일까요? SHOP_USER_SKT 라는 테이블이 있다. SHOP_USER_SKT라는 원본테이블에 SHOP_USER라는 시노님을 주면 SHOP_USER_SKT 대신 SHOP_USER으로 테이블을 사용 할 수 있다


시노님 생성

CREATE OR REPLACE [PUBLIC] SYNONYM 시노님 FOR 원본객체;

PUBLIC 생략 시 PRIVATE로 생성이 되며 PRIVATE는 특정 사용자만 사용이 가능하며 다른 사용자가 사용할 시에는 권한을 부여해야 한다. PUBLIC은 모든 사용자가 사용이 가능하다.

CREATE OR REPLACE SYNONM TELCO_PAY FOR TELCO_PAY_201903; GRANT SELECT ON TELCO_PAY TO JUN;

월마다 생성이 되는(2019년 3월 작업테이블) TELCO_PAY_201903 테이블이 있다. 원본 테이블 TELCO_PAY_201903에 TELCO_PAY라는 시노님을 줘서 TELCO_PAY라는 이름으로 작업을 할 수 있다.


공부를 하다 보면 시노님은 다른 사용자가 사용하게끔 하기 위해서 또는 보안상 사용한다 라는 내용이 많다. 하지만 실제 실무에서 사용한 시노님은 월마다 생성되는 작업 테이블이 있다. PL/SQL 작성 시 함수 내에서 월마다 생성되는 테이블(또는 여러개의 통신사별 테이블)의 시노님을 윗줄에 주고 나면 아래 테이블에는 똑같은 이름(시노님)으로 함수를 작성 할 수 있다. 함수를 깔끔하게 작성 할 수 있다.


PL/SQL - 함수 내 에서 시노님 즉시 생성

EXCUTE IMMEDIATE 'CREATE OR REPLACE SYNONM TELCO_PAY FOR TELCO_PAY_'||CLOSE_MONTH;


master라는 계정에서 시노님을 생성을 했다. JUN이라는 계정에서 TELCO_PAY계정을 사용하고 싶다면 GRANT를 통해서 권한을 주고 master.TELCO_PAY 라는 소유자명을 명시해주고 사용하자. 


PUBLIC을 명시하여 시노님을 생성하면 PUBLIC으로 생성이 된다. 생성 후에 조회를 위해서 SELECT 권한을 PUBLIC에 부여하면 조회가 가능하다.

CREATE OR REPLACE PUBLIC SYNONM FOR TELCO_PAY_201903;

GRANT SELECT ON TELCO_PAY TO PUBLIC;

PUBLIC 권한을 주면 JUN은 소유자명 명시 없이 시노님인 TELCO_PAY만 명시하여 작업을 할 수 있다.


시노님 삭제

DROP SYNONYM TELCO_PAY;           -- PRIVATE 시노님 삭제

DROP PUBLIC SYNONYM TELCO_PAY;    -- PUBLIC 시노님 삭제

시노님 삭제는 DROP을 사용하며 PUBLIC 시노님을 삭제할 시에는 PUBLIC을 명시 해야줘야 한다.

반응형

+ Recent posts