목차
- 동의어(SYNONYM)
1-1. 동의어 생성 권한 부여
1-2. 동의어 생성 - 동의어 구분
2-1. 비공개 동의어
2-2. 공개 동의어
학습점검
✅ SYNONYM 객체의 사용 목적에 대해 이해할 수 있다.
✅ SYNONYM 객체에 대해 이해할 수 있다.
✅ CREATE SYNONYM문을 이용하여 SYNONYM 객체를 생성할 수 있다.
✅ 공개동의어와 비공개동의어에 대해 이해할 수 있다.
1. 동의어(SYNONYM)
- 동의어(SYNONYM)은 다른 데이터베이스가 가진 객체(OBJECT)의 별명 혹은 줄임말을 뜻한다.
- 여러 사용자가 테이블을 공유하는 경우에는 사용자가 다른 사용자의 객체에 접근하려거든 '사용자명.테이블명'을 명시해야 한다.
- 자칫 길게 표현될 수 있는 것을 동의어(SYNONYM) 설정해 간단히 쓸 수 있다.
1-1. 동의어 생성 권한 부여 SYSTEM 계정
✅ GRANT CREATE SYNONYM TO 사용자명;
- CREATE SYNONYM 하기 위해서는 반드시 권한 부여(GRANT)가 선행되어야 한다.
- 이때 권한 부여는 SYSTEM 계정만이 수행할 수 있다.
1-2. 동의어 생성
✅ CREATE SYNONYM 줄임말 FOR 사용자명.객체명;
CREATE SYNONYM EMP FOR EMPLOYEE; -- 비공개 동의어, 자신의 계정에서 사용자명 생략
- 자신의 계정에서 줄임말 생성할 때는 C##EMPLOYEE.EMPLOYEE 라고 적지 않고, 예시에서처럼 객체명만 작성할 수 있다.
- 이는 비공개 동의어로서 자기 계정에서만 쓸 수 있는 줄임말로 정의된다.
SELECT E.*
FROM EMP E;
- 동의어 등록한 뒤에는 위처럼 EMPLOYEE라는 테이블명 대신 짧은 줄임말로 대신 사용할 수 있다.
2. 동의어 구분
2-1. 비공개 동의어 객체 접근 권한을 부여 받은 사용자
CREATE SYNONYM EMP FOR EMPLOYEE; -- 자신의 계정에서 사용자명 생략
- 객체 접근 권한을 부여 받은 사용자가 스스로 정의한 동의어이다.
SELECT E.*
FROM EMP E;
- SELECT 조회 또한 자신의 계정에서 한정적으로 수행 가능하다. 접근 시도한 SYSTEM 계정 포함 타 사용자에게는 '테이블 또는 뷰가 존재하지 않습니다'라는 오류가 발생한다.
2-2. 공개 동의어 SYSTEM 계정
CREATE PUBLIC SYNONYM DEPT FOR C##EMPLOYEE.DEPARTMENT;
- 생성(CREATE SYNONYM) 과정 자체를 SYSTEM 계정으로 실행한다.
- 모든 권한을 주는 사용자인 SYSTEM 계정이 정의한 동의어가 바로 공개 동의어이다.
- 이렇게 정의된 공개 동의어는 모든 사용자가 쓸 수 있다.
- PUBLIC 개념이다. CREATE 생성 구문에서도 PUBLIC SYNONYM임을 명시한다.
SELECT D.*
FROM DEPT D;
- SYSTEM 계정 포함 모든 계정에서 동의어 DEPT 사용해 조회가 가능하다.
'Database' 카테고리의 다른 글
[JDBC] JDBC Driver | Connection | PreparedStatement (0) | 2022.01.29 |
---|---|
[Oracle/SQL] 14. 시스템 권한 | 객체 권한 | GRANT | REVOKE | ROLE (0) | 2022.01.28 |
[Oracle/SQL] 12. 인덱스 | INDEX | ROWID | INDEX HINT | REBUILD (0) | 2022.01.27 |
[Oracle/SQL] 11. 시퀀스 | SEQUENCE | CURRVAL | NEXTVAL (0) | 2022.01.27 |
[Oracle/SQL] 10. VIEW | 인라인뷰 | DDL 활용한 베이스테이블 조작 (0) | 2022.01.27 |