본문 바로가기
Database/Oracle

[SQL-Oracle]동의어(SYNONYM)

by sukii 2023. 12. 11.
반응형

동의어(SYNONYM) : 오라클 객체에 다른 이름을 부여하여 사용하기 위한 객체
--전용 동의어 : 특정 사용자만 사용할 수 있는 동의어 - 일반 사용자에 의해 관리
--공용 동의어 : 모든 사용자가 사용할 수 있는 동의어 - 관리자에 의해 관리

🔘공용 동의어 확인
--USER_TABLES 딕셔너리를 사용하여 테이블의 정보를 제공받아 사용 가능
--USER_TABLES 딕셔너리는 SYS 계정(SYSDBA - 관리자)에 의해 생성된 뷰

--다른 사용자 스키마에 존재하는 테이블 또는 뷰에 접근하기 위해 표현하는 방법
형식) 사용자명.테이블명 또는 사용자명.뷰이름 
--현재 접속 사용자 스키마에 존재하는 테이블 또는 뷰인 경우 사용자명 생략 가능

SELECT TABLE_NAME FROM SYS.USER_TABLES;


--SYS.USER_TABLES 객체(뷰)의 공용 동의어로 USER_TABLES가 생성되어 있어 사용자명 없이 USER_TABLES 객체(뷰) 사용

SELECT TABLE_NAME FROM USER_TABLES;


--SYS.USER_TABLES 객체(뷰)의 공용 동의어로 TABS가 생성되어 있어 사용자명 없이 USER_TABLES라는 이름 대신 TABS 사용 가능

SELECT TABLE_NAME FROM TABS;

 

 


🔘동의어 생성
형식) CREATE [PUBLIC] SYNONYM 동의어 FOR 객체명
PUBLIC : 공용 동의어를 생성하기 위한 키워드

--COMM 테이블에 대한 전용 동의어로 BONUS 동의어 생성하기 전 확인해보기

SELECT * FROM COMM;
SELECT * FROM BONUS;--동의어 생성 전이기 때문에 테이블 또는 뷰가 없으므로 에러 발생

 

--COMM 테이블에 대한 전용 동의어로 BONUS 동의어 생성하기

--현재 접속 사용자가 CREATE SYNONYM 명령을 사용할 수 있는 권한이 없으므로 CREATE SYNONYM 명령을 작성하여 전달하면 에러 발생
CREATE SYNONYM BONUS FOR COMM;--권한이 불충분하여 에러 발생

 

▶️권한 부여 방법
시스템 관리자(SYSDBA - SYS 계정)로 접속하여 현재 접속 사용자(SCOTT)에게 CREATE SYNONYM 시스템 권한 부여.

여기서 중요한 것은 SYS 계정으로 접속하여 아래 명령문을 써야 권한이 부여된다는 것!

GRANT CREATE SYNONYM TO SCOTT;

권한 부여하는 방법(참고 사진)



--관리자로부터 CREATE SYNONYM 시스템 권한 부여 받으면 CREATE SYNONYM 명령을 전달하여 실행 가능

CREATE SYNONYM BONUS FOR COMM;
SELECT * FROM COMM;
SELECT * FROM BONUS;--동의어가 생성되어 'BONUS'를 사용해서 COMM 테이블을 검색할 수 있음



🔘 동의어 확인 - USER_SYNONYMS : 동의어 정보를 제공하는 딕셔너리

SELECT TABLE_NAME, SYNONYM_NAME, TABLE_OWNER FROM USER_SYNONYMS;


🔘 동의어 삭제
형식) DROP [PUBLIC] SYNONYM 동의어

--COMM 테이블의 부여된 BONUS 전용 동의어 삭제
DROP SYNONYM BONUS;

--동의어 확인
SELECT TABLE_NAME,SYNONYM_NAME,TABLE_OWNER FROM USER_SYNONYMS;

--COMM 테이블에 저장된 모든 행 검색
SELECT * FROM COMM;
SELECT * FROM BONUS;--테이블 또는 뷰가 없으므로 에러 발생

 

반응형