[Oracle] synonym 생성 및 삭제

gayoung·2023년 11월 10일

DB

목록 보기
4/16

1. Synonym이란?

  • 데이터베이스 객체는 각자 고유한 이름이 있음. 이 객체들에 대한 동의어를 만드는 것
  • ALIAS는 1회성, Synonymn은 영구적
  • 다른 유저의 객체를 참조할 때 사용
  • 종류
    • PUBLIC : 모든 사용자 접근 가능
    • PRIVATE : 특정 사용자만 접근 가능

2. Synonym 목적

  • 데이터베이스의 투명성 제공
  • 다른 유저의 객체를 참조하는 경우가 있을 때 Synonym을 생성하면 참조하고 있는객체가 이름이 변경되거나, 이동이 되면 Synonym만 재정의하면 되어 관리가 편리
  • 객체의 긴 이름을 짧은 이름으로 별칭을 지어 SQL문 단순화 가능
  • Synonym 권한이 있는 유저는 참조하고있는 객체에 대한 소유자, 이름, 서버이름을 몰라도 Synonym이름만 안다면 사용이 가능하므로 데이터베이스의 보안 강화 가능

3. Synonym 생성

CREATE OR REPLACE [PUBLIC] SYNONYM 시노님명 FOR 스키마명.OBJECT명;

-- PRIVATE 
CREATE SYNONYM EMP FOR USER1.EMPLOYEE;
CREATE SYNONYM GAYOUNG.EMP FOR USER1.EMPLOYEE;

-- PUBLIC
CREATE PUBLIC SYNONYM EMP FOR USER1.EMPLOYEE;
  • "EMP"로 별칭을 정하고 USER1의 EMPLOYEE오브젝트를 현재 사용자가 참조하는 것
  • 이미 존재하는 Synonym 이름으로 생성한다면, 자동으로 재작성 처리가 되어 CREATE 로 작성해도 덮어써짐
  • PUBLIC : 모든 사용자가 접근 가능한 Synonym 생성
  • PUBLIC SYNONYM과 PRIVATE SYNONYM은 구별되므로 SYNONYM_NAME이 같아도 둘다 존재할 수 있음

4. Synonym 사용권한 부여

GRANT SELECT ON 시노님명 TO 계정명;

GRANT SELECT ON EMP TO GAYOUNG;
  • SYNONYM을 조회했을 때 "테이블 또느 뷰가 존재하지 않습니다" 오류가 나면 권한이 없어서 난 것 -> GRANT로 SELECT 권한 부여

5. Synonym 조회

테이블명의미
DBA_SYNONYMS데이터베이스의 모든 Synonym 조회
ALL_SYNONYMS현재 사용자가 엑세스할 수 있는 Synonym 조회
USER_SYNONYMS현재 사용자가 소유한 Synonym 조회

--DBA: DBA사람만 확인(내용 전체), USER(내가 생성한거), ALL(권한) PUBLIC하나->JOB이 PUBLIC에 이미 있으니까 계정별로 만들어야함, LOCAL SY:계정별-> 보통 PRIVATE


6. Synonym 삭제

DROP [PUBLIC/PRIVATE] SYNONYM 시노님명;

DROP SYNONYM EMP;
  • PUBLIC SYNONYM의 경우 PUBLIC이라고 명시해줘야함

  • PUBLIC SYNONYM 삭제 : DROP PUBLIC SYNONYM권한이 있어야 함

  • PRIVATE SYNONYM 삭제 : DROP SYNONYM이나 DROP ANY SYNONYM 권한이 있어야 함

  • PUBLIC을 명시하지 않고 PUBLIC SYNONYM 삭제하면 에러 발생

       ORA-01432: public synonym to be dropped does not exist 오류
  • PRIVATE SYNONYM을 PUBLIC을 명시하지 않고 삭제하려 하면 에러 발생
       ORA-01434: private synonym to be dropped does not exist 오류

7. Synonym 이름 변경

RENAME 기존시노님명 TO 변경할시노님명;

RENAME EMP TO EMP1;

0개의 댓글