⚫동의어(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;--테이블 또는 뷰가 없으므로 에러 발생
'Database > Oracle' 카테고리의 다른 글
[SQL-Oracle]DCL(DATA CONTROL LANGUAGE) - 데이타 제어어 (0) | 2023.12.11 |
---|---|
[SQL-Oracle]사용자(USER) (0) | 2023.12.11 |
[SQL-Oracle]인덱스(INDEX) (1) | 2023.12.08 |
[SQL-Oracle]뷰(VIEW) - 단순뷰, 복합뷰, 인라인뷰 (1) | 2023.12.07 |
[SQL-Oracle]시퀀스(SEQUENCE) (0) | 2023.12.07 |