-
SQL_SYNONYM 생성/삭제 & DATA DICTIONARYData Base_Oracle/SQL 2020. 1. 10. 16:31
SYNONYM 생성_PRIVATE
동의어를 생성하기 위해서는 관리자로부터
create synonym 권한을 부여받아야 함§ 형식
[ SQL> create synonym 동의어이름 for 대상객체명(=테이블명); ]
# 예제
▶ b_dept2에 buser라는 동의어 생성
[ SQL> create synonym buser for b_dept2;
동의어가 생성되었습니다.
select * from tab; ]TNAME TABTYPE CLUSTERID BUSER SYONONYM ... ... ... ▷ buser 테이블 확인
[ SQL> select * from buser; ]DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 SUPPORT KWANGJU ▷ buser 테이블에서 부서번호가 50인 레코드 삭제
[ SQL> delete from buser where deptno=50;
1 행이 삭제되었습니다.
select * from buser ;
select * from b_dept2; ]DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON ※ buser에서 삭제한 내용이 b_dept2에도 반영됨
즉, 동의어는 테이블의 별칭이라고 할 수 있음SYNONYM 생성_PUBLIC
관리자가 만들어 주는 모든 계정에서 사용 가능한 공용 동의어
§ 형식
[ SQL> create [public] synonym 동의어명 for 소유자명.테이블명; ]
※ 관리자가 특정 계정의 테이블에 접근할 권한을 임의로 줄 수 없기 때문에
이미 소유자에 의해 권한이 부여된 상태여야 함# 예제
▷ 관리자 계정 로그인
[ SQL> conn sys/##### as sysdba
연결되었습니다. ]▶ scott이 test1에 권한을 부여한 b_dept2 테이블에 공용 동의어 생성
[ SQL> create public synonym butest for scott.b_dept2;
동의어가 생성되었습니다. ]▷ test1 계정에서 butest 동의어 확인
[ SQL> select * from butest; ]DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 TEST SEOUL ※ scott 계정에서는 butest 동의어를 사용할 수 있지만
test1 이외의 일반 계정은 scott에게 권한을 부여받지 않았기 때문에 사용 불가SYNONYM 삭제
권한이 회수되어도 동의어가 자동으로 삭제되지는 않기 때문에
수동으로 삭제 해주어야 함§ 형식
▶ private synonym 삭제
[ SQL> drop synonym 동의어명; ]▶ public synonym 삭제
[ SQL> drop [public] synonym 동의어명; ]# 예제
▶ test1 계정에서 buser2 동의어 삭제
[ SQL> drop synonym buser2;
동의어가 삭제되었습니다. ]▷ test 1 계정에서 butest 공용 동의어 삭제
[ SQL> drop synonym butest;
1행에 오류:
ORA-01434: 삭제할 비공개 동의어가 존재하지 않습니다 ]※ butest는 sys계정에서 생성한 것이기 때문에 발생하는 에러
sys계정으로 로그인해서 삭제해야함SYNONYM DATA DICTIONARY
※ user_synonyms
동의어 이름, 테이블 소유 계정, 테이블 이름, DB 링크 정보가 담겨 있는 Oracle 자체 테이블▷ user_synonyms 구조 확인
[ SQL> desc user_synonyms ]이름 널? 유형 SYNONYM_NAME NOT NULL VARCHAR2(30) TABLE_OWNER VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) DB_LINK VARCHAR2(128) ▷ user_synonyms 내용 확인
[ SQL> select * from user_synonyms ]SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK BUSER SCOTT B_DEPT2
동의어의 생성/삭제 방법과 데이터 딕셔너리를 살펴보았습니다.
동의어를 생성하면 다른 계정에서 사용을 허가받은 테이블의 이름을 편리하게 작성할 수 있습니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL_PRIVILEGE 계정 관리 (2) (0) 2020.01.10 SQL_PRIVILEGE 개요 & 계정 관리 (1) (0) 2020.01.10 SQL_SYNONYM 개요 & 테이블 접근 권한 설정 (0) 2020.01.10 SQL_SEQUENCE (0) 2020.01.09 SQL_INDEX (0) 2020.01.09