본문 바로가기
Data/Oracle

[Oracle] Synonym(시노님)

by prinha 2020. 11. 23.
반응형

 

시노님(Synonym)이란?

'동의어'라는 뜻으로, 데이터베이스 객체는 각자 고유한 이름이 있는데

이 객체들에 대한 동의어를 만드는 것이 바로 시노님이며 이 또한 데이터베이스 객체에 속한다. (ex. 필명)

시노님에는 모든 사용자가 접근할 수 있는 Public시노님과 특정 사용자에게만 참조되는  Private시노님이 있다.

 


0. 시노님 사용 이유

1) 데이터베이스의 투명성을 제공하기 위해서 사용한다. 다른 사용자의 객체를 참조할 때 많이 사용한다.

2) 일단 시노님을 생성해 놓으면 나중에 이 시노님이 참조하고 있는 객체의 이름이 바뀌더라도 이전에 작성해 놨던 SQL문을 수정할 필요가 없다.

3) 시노님은 별칭이므로 원 객체를 숨길 수 있어 보안 측면에서 유리하다. PRIVATE 시노님은 다른 사용자가 참조할 때 소유자명.시노님명 형태로 사용하지만, PUBLIC은 소유자명까지 숨길 수 있다.

 

1. 시노님 생성

-- 시노님 생성
-- public을 생략하면 private 시노님이 만들어진다.

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


-- 입력

    CREATE OR REPLACE SYNONYM syn_channel
    FOR channels;
    
-- 결과

    synonym SYN_CHANNEL이(가) 생성되었습니다.

-- 입력

    SELECT COUNT(*)
      FROM syn_channel;
      
-- 결과

    COUNT(*)
    ----------
           5

 

2. private 시노님 생성시 권한 부여

 GRANT SELECT ON syn_channel TO HR;
 GRANT SELECT ON syn_channel2 TO PUBLIC;

public 시노님은 소유자명을 붙이지 않아도 참조가 가능한데,

그 이유는 해당 시노님의 소유자가 시노님을 생성한 user가 아닌 public이 되기 때문이다.

생성된 시노님 정보는 private은 user_synonyms, public까지 보려면 all_synonyms를 참조한다.

 

3. 시노님 삭제 

-- 시노님 삭제
DROP [PUBLIC] SYNONYM [스키마명.]시노님명;

DROP SYNONYM syn_channel;

DROP PUBLIC SYNONYM syn_channel2;

private 시노님을 제거할 때 DROP SYNONYM이나  DROP ANY SYNONYM 권한이 있어야한다.

public 시노님을 제거 할 때  DROP PUBLIC SYNONYM 권한이 있어야한다. (PUBLIC 키워드 명시 필수)

 

 


출처 및 참고 : thebook.io/006696/

반응형