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을 명시 해야줘야 한다.
'DB > Oracle' 카테고리의 다른 글
[DB] 오라클 실행계획 보는 법(autotrace 사용) (0) | 2019.03.25 |
---|---|
[DB] 오라클 시퀀스란? (시퀀스 생성, 시퀀스 삭제) (0) | 2019.03.15 |
[DB] 오라클 에러, ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. (0) | 2019.03.13 |
[DB] 오라클 파티션 테이블 정의 및 생성 (0) | 2019.03.13 |
[DB] 오라클 제약조건 (NOT NULL, 기본키, UNIQUE, 외래키, CHECK) (0) | 2019.03.12 |