SYNONYM 이란,,
사용자가 다른 사용자의 객체를 참조할 때
[사용자ID].[테이블명]으로 표시하는데,
이처럼 길게 표현되는 것을 동의어(SYNONYM)로 설정 후
간단히 사용 가능한 객체를 말합니다.
예를들어 USER2 계정에서 USER1의 EMPLOYEE 테이블을 참조하고자 할 때,
USER1.EMPLOYEE <- 이런 식으로 길게 작성해야 하죠.
이러한 불편함을 덜어주고자 SYNONYM이 사용됩니다.
▶ SYNONYM 종류
SYNONYM 종류는 두 가지로 구분됩니다.
비공개 동의어와 공개 동의어가 있죠.
▷ 비공개 동의어
객체에 대한 접근 권한을 부여 받은 사용자가 정의한 동의어로
해당 사용자만 사용 가능
▷ 공개 동의어
권한을 주는 사용자(DBA)가 정의한 동의어로
모든 사용자가 사용 가능(PUBLIC)
ex. DUAL
두 가지 동의어의 사용법이 각각 다릅니다.
한번 알아보도록 하죠.
● 비공개 동의어(PUBLIC 안씀)
첫 번째 줄 명령어와 같이
PUBLIC을 사용하지 않고 SYNONYM을 CREATE 해주면 권한 오류가 발생합니다.
따라서 비공개 동의어를 사용하고자 할 때,
SYSTEM 계정에 SYNONYM 생성 권한을 부여해줘야 합니다.
(GRANT CREATE SYNONYM TO "테이블명")
● 공개 동의어(PUBLIC 씀)
공개 동의어 생성은 간단합니다.
CREATE PUBLIC SYNONYM <- PUBLIC 명령어를 추가해줍니다.
이렇게 공개 동의어로 생성하게 되면
권한을 부여해 줄 필요 없이 어느 계정이든 사용이 가능합니다.
위 그림의 명령은
EMPLOYEE.DEPARTMENT 를 DEPT라는 SYNONYM으로 생성한 후,
SYSTEM 계정, EMPLOYEE 계정에서 DEPT로 조회한 경우입니다.(동일한 결과를 추출)
● 동의어 삭제
동의어 삭제는 간단합니다.
DDL 명령(DROP)을 통해
테이블을 삭제하듯 삭제해주면 됩니다.
EX)
DROP PUBLIC SYNONYM DEPT;