1. Synonym이란?
- 시노님(Synonym)의 뜻은 동의어이며 일종의 별칭
- 오라클에서 쿼리문을 작성할 때 스키마명(소유자명)을 붙이지 않고 테이블을 사용하고 있다면 해당 테이블의 시노님을 사용하고 있는 것
- 시노님은 Table, View, Procedure, Function, Sequence 등의 오라클 오브젝트에 사용 가능
- (mysql에는 없는 기능) MySQL은 DB.Table의 구조
2. Synonym의 장점
- 오브젝트명을 짧게하여 SQL문을 단순화
- 스키마, 오브젝트명(테이블명 등)이 변경 되어도 시노님만 재생성하면 SQL문은 변경하지 않아도 됨
- 오브젝트를 외부에 제공할 경우 스키마, 오브젝트명을 숨길 수 있어서 보안에 도움이 됨
3. Synonym 문법
CREATE [OR REPLACE] [PUBLIC]
SYNONYM '[스키마명]'.시노님명'
FOR '스키마명.대상오브젝트명'
① OR REPLACE : 시노님을 수정할 때 DROP 하지 않고 기존 생성 쿼리를 사용하여 수정
② PUBLIC : PUBLIC를 생략하면 PRIVATE로 시노님이 생성
③ [스키마명].시노님명 : 자신의 계정에서 시노님을 생성할 경우 [스키마명]은 생략이 가능하며, 타 계정에서 시노님을 생성해 줄 경우 명시
4. Public vs Private
Public:
public synonym으로 생성할 경우 대상 오브젝트의 권한을 가지고 있는 모든 스키마에 해당 시노님을 사용할 수 있다. (스키마마다 시노님을 생성해 줄 필요 없음)
Private:
synonym을 생성한 스키마에서만 해당 시노님을 사용할 수 있다. (scott 계정에서 synonym을 생성하였다면 scott 계정에서만 해당 synonym을 사용가능 함)
5. Synonym 실습
1) SYS계정 테이블 생성, 데이터 입력, 권한부여
CREATE TABLE SYN_TEST(
col1 VARCHAR2(50)
); -- 테스트 테이블생성
INSERT INTO SYN_TEST VALUES ('test'); -- 테스트 데이터 삽입
GRANT SELECT ON SYS.SYN_TEST TO SCOTT; -- 조회 권한 부여
COMMIT; -- 커밋
2) SCOTT 계정으로 조회
SELECT *
FROM SYS.SYN_TEST;
3) Schema(Owner)제외 후 조회 시도
SELECT *
FROM SYN_TEST;
4) Public Synonym 생성
CREATE PUBLIC
SYNONYM SYN_TEST
FOR SYS.SYN_TEST;
COMMIT;
5) Scott 계정에서 Schema(Owner)제외 후 조회 시도
SELECT *
FROM SYN_TEST;
6) Synonym 삭제
DROP SYNONYM SYN_TEST;
DROP PUBLIC SYNONYM SYN_TEST; -- PUBLIC 시노님은 꼭 PUBLIC를 붙여서 삭제해야 함
'Database > Oracle' 카테고리의 다른 글
[Oracle] 해커랭크(HackerRank) 문제 풀이 - Occupations (0) | 2023.03.22 |
---|