본문 바로가기
Database/Oracle

[DataBase] Oracle DBMS Synonym (Public, Private)개념과 실습

by 스파이디웹 2023. 2. 21.

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