Synonym 시노님은 테이블의 동의어이며, 목적으로 첫 번째는 보안(원본 테이블의 이름을 노출하지 않기 위함)이며 두 번째로는 편의성이 있다.
먼저 문법으로는 다음과 같다.
OR REPLACE: 기존의 같은 이름의 SYNONYM이 있다면 대체할 것. 재생성 대신 이미 객체가 존재할 경우 대체하는 것이다.
PUBPLIC: SYNONYM 생성자 외의 유저들도 사용 가능 (DEFAULT: PRIVATE)
예를들어 HR유저가 SCOTT유저의 EMP 테이블을 조회하려고 한다. 일반적으로는 조회 불가하다. HR유저에게 조회권한을 부여하게 되면 다음과 같이 조회하여야 조회 가능하다.
SELECT * FROM SCOTT.EMP;
그냥 SELECT * FROM EMP; 하면 조회되지 않는다.
그런데 SYNONYM을 활용하면 SELECT * FROM EMP;로 조회가 가능하다.
테스트를 해보았다.
먼저 HR계정으로 접속하여 SELECT * FROM EMP; 를 시도해본다.
테이블 또는 뷰가 존재하지 않는다는 ORA메시지가 뜬다.
그 다음에 EMP 접근 권한을 주기 위해 SYSTEM 계정으로 접속하고 SCOTT.EMP 테이블 조회권한을 부여한다.
그 다음 다시 HR로 접속하여 테이블에 접근을 시도해본다.
LINE 1은 역시 접근 불가하나 LINE 3처럼 하면 조회가 가능하다.
다시 SYSTEM 계정으로 접속하여 SYNONYM을 설정한다.
이제 그냥 EMP 테이블 조회가 가능하다.
SYNONYM 테이블 검색하는 뷰는 DBA_SYNONYMS이다.
복습후기
이제 SQL이 다 끝나간다고 한다.
이번주면 다 끝나겠지? 벌써 SQL만 게시글이 60이 넘었다.
다음은 R과 통계인데 더 빡시게 해야겠다.
'배우기 > 복습노트[oracle sql]' 카테고리의 다른 글
[복습] SQL | Oracle 권한에 대하여(GRANT, REVOKE) (0) | 2023.11.16 |
---|---|
[복습] SQL | Oracle database간의 link인 DB Link (0) | 2023.11.16 |
[복습] SQL | Oracle 부서의 계층을 표시하기, 계층형 질의 (0) | 2023.11.16 |
[실습문제] 2023. 11. 14.(화) (2문제) (0) | 2023.11.15 |
[복습] SQL | Oracle 부정연산자 not equal join 과 exists 연산자 + 복습후기(20231114) (0) | 2023.11.14 |