Synonym은 '동의어'란 뜻으로 데이터베이스 객체는 각자 고유한 이름이 있는데, 이 객체들에 대한 동의어를 만드는 것이 바로 시노님(Synonym)이다.
예로 이지은이라는 사람이 "독도는 우리땅!"이라고 애기를 하는데 만약 아이유라는 필명을 사용하고, 필명의 본명을 알고 있는 사람을 제외한 나머지는 본명을 모르고, 아이유로만 알고 있다.여기서 이지은이 객체명이라고 한다면 아이유는 바로 시노님(Synonym)이라는 것이다.
시노님에는 PUBLIC과 PRIVATE시노님이 있다.
- PUBLIC : 데이터 베이스의 모든 사용자가 접근할 수 있다.
- PRIVATE : 특정 사용자에게만 참조되는 시노님이다.
※시소님 생성 : CREATE OR REPLACE SYNONYM TEST_CHANNEL FOR CHANNELS;
(CREATE OR REPLACE [PUBLIC] SYNONYM [스키마명.]시노님명 FOR [스키마명.]객체명;)
- CHANNELS테이블에 대한 시노님이 만들어 졌고, 어느 사용자나 TEST_CHANNEL이라는 이름으로 CHANNELS테이블 조회가 가능하다.
- PUBLIC을 생략하면 PRIVATE 시노님이 만들어지고, PUBLIC 시노님은 DBA권한이 있는 사용자만 생성 및 삭제가 가능하다.
- FOR절 이하의 객체에는 테이블,뷰,프로시저,함수,패키지,시퀀스 등이 올수 있다.
- KSW계정에서 해당 테이블에 대한 시노님 생성
- 다른 계정으로 (여기선HR로 테스트)로그인 하여 접근이 가능한지 확인
TO.조회했는데 오류가 날 경우 SELECT권한등 권한을 주고 난 다음 실행하여야 한다.
(HR에게 SELECT권한 부여 : GRANT SELECT ON TEST_CHANNEL TO HR)
만약 아래와 같이 PUBLIC을 주고 만든다면 따로 스키마명을 안쓰고 조회해도 가능하다.
※PUBLIC을 붙이고 TEST_CHANNEL_02라는 시노님 생성
- PUBLIC용 시노님 생성 : CREATE OR REPLACE PUBLIC SYNONYM TEST_CHANNEL_02 FOR CHANNELS;
- TEST_CHANNEL_02시노님에 조회권한을 PUBLIC을 준다.
-> GRANT SELECT ON TEST_CHANNEL_02 TO PUBLIC; - HR사용자로 로그인하여 조회
이런식으로 시노님을 만들면 소유자가 KSW가 아니라 PUBLIC이 되기때문에 따로 적지 않아도 된다.
시소님을 사용하는 이유로는
- 데이터베이스의 투명성을 제공하기 위해 사용. 다른 사용자의 객체를 참조를 할때에 많이 사용된다.
- 일단 시노님을 생성하면 나중에 이 시노님이 참고하고 있는 객체의 이름이 바뀌더라도 이전에 작성한 SQL문을 수정할 필요가 없다.
- 시노님은 별칭이므로 보안 측면에서 유리하다.PRIVATE시노님은 다른 사용자가 참조할 때 소유자명 시노님명 형태로 사용하지만,PUBLIC은 소유자명까지 숨길수 있다는 장점이 있다.
※시노님 삭제 : DROP SYNONYM TEST_CHANNEL; 또는 DROP PUBLIC SYNONYM TEST_CHANNEL;
(DROP [PUBLIC] SYNONYM [스키마명.]시노님명;)
PRIVATE 시노님을 제거할때 DROP SYNONYM이나 DROP ANY SYNONYM권한이 있어야 하며, PUBLIC 시노님을 제거할 때는 DROP PUBLIC SYNONYM권한이 있어야 한다.
PUBLIC시노님을 제거할시 PUBLIC키워드를 명시해야만 한다.
'DB > ORACLE' 카테고리의 다른 글
11.[오라클]파티션테이블 정리 (1) | 2024.01.21 |
---|---|
10.[오라클 공부]시퀀스 정리 (0) | 2024.01.21 |
8.[오라클]인덱스 정리 (0) | 2024.01.17 |
7.[오라클]뷰 정리 (1) | 2024.01.17 |
6.[오라클]테이블 및 칼럼 관련 정리 (0) | 2024.01.17 |