14_SYNONYM_IMAGE
동의어 SYNONYM
다른 DB가 가진 객체에 대한 별명 혹은 줄임말
여러 사용자가 테이블을 공유할 경우, 다른 사용자가 테이블에 접근할 때 '사용자명.테이블명'으로 표현함
이 때 동의어를 사용하면 간단하게 사용 가능하다.
동의어 구분
- 비공개 동의어: 객체에 대한 접근 권한을 부여받은 사용자가 정의한 동의어로 해당 사용자만 사용 가능함
- 공개 동의어: 모든 권한을 주는 사용자(DBA)가 정의한 동의어로 모든 사용자가 사용할 수 있음(PUBLIC), (EX.DUAL)
1. SYNONYM 생성 방법(비공개 동의어)- 사용자 계정에서 만드는 방법
[표현식]
CREATE SYNONYM 별명(줄임말)
FOR 사용자명.객체명;
#1_ SELECT 권한을 부여받아야함
[SAMPLE 계정]
SELECT * FROM KH.EMPLOYEE;
< 오류 발생: SELECT 권한 없음
< SYSTEM 계정에서 SELECT 권한을 부여받아야 한다.
CREATE SYNONYM EMP FOR KH.EMPLOYEE; < KH.EMPLOYEE의 별명을 EMP로 지정함
SELECT * FROM EMP;
< SAMPLE 계정에서만 동의어 사용이 가능하다.
[SYSTEM 계정]
- KH.EMPLOYEE SELECT 권한 부여
GRANT SELECT
ON KH.EMPLOYEE TO SAMPLE;
- SYNONYM 생성 권한 부여
GRANT CREATE SYNONYM
TO SAMPLE;
2. SYNONYM 생성 방법(공개 동의어)- 시스템 계정에서 만드는 방법
[표현식]
CREATE PUBLIC SYNONYM 별명(줄임말)
FOR 사용자명.객체명;
#1_ 시스템에서 공개 동의어를 만든 뒤 SAMPLE 계정에서도 접근이 가능한지 테스트
[SYSTEM 계정]
- 공개 동의어 만들기
CREATE PUBLIC SYNONYM DEPT FOR KH.DEPARTMENT;
SELECT * FROM KH.DEPARTMENT;
SELECT * FROM DEPT;
- SAMPLE 계정에 SELECT 권한 부여
GRANT SELECT
ON KH.DEPARTMENT
TO SAMPLE;
[SAMPLE 계정]
SELECT * FROM DEPT;
> 오류 발생: 공개 동의어지만 해당 테이블 조회 권한이 없어서 오류 발생
3. SYNONYM 삭제
[SYSTEM 계정]
DROP PUBLIC SYNONYM DEPT;
SELECT * FROM DEPT;
< 공개 동의어 삭제는 SYSTEM 계정에서만 삭제할 수 있다.
[SAMPLE 계정]
DROP SYNONYM EMP;
SELECT * FROM EMP;