오라클 동의어(Synonym)

동의어(Synonym) 정의

객체를 조회할 때마다 일일 객체의 소유자를 지정하는 것이 번거로울 경우 동의어를 정의하면 긴 이름대신 간단한 이름으로 접근할 수 있다




동의어 종류

비공개 동의어

객체에 대한 접근 권한을 부여 받은 사용자가 정의한 동의어로 해당 사용자만 사용할 수 있다


공개동의어

1) 권한을 주는 사용자가 정의한 동의어로 누구나 사용할 수 있다

2) 공개 동의어는 DBA 권한을 가진 사용자만이 생성할 수 있다

3) SYNONYM 앞에 PUBLIC를 붙여서 정의한다

4) ex) dual은 원래 sys가 소유하는 테이블 명이므로 다른 사용자가 dual 테이블에 접근하려면 sys.dual로 표현해야 하는 것이 원칙. 모든 사용자가 sys. 을 생략하고 접근한 것이 공개 동의어로 지정되어 있기 때문이다



[1] 테이블 생성 후 객체 권한 부여하기

SQL> sqlplus system/admin1234 -- 시스템 계정에서는 작업하지 마라, 실습을 위해서 만들어 본것이다

SQL> create table table_systbl(ename varchar2(20));



SQL> insert into table_systbl values('이순신');

SQL> insert into table_systbl values('강감찬');



scott 사용자(계정)에게 table_systbl 이란 테이블에 select 할 권한을 부여한다


SQL> grant select on table_systbl to scott;



SQL> conn scott/tiger


SQL> select * from table_systbl; -- error

SQL> select * from system.table_systbl; -- 실행



[2] 동의어 생성 및 이미 파악하기

SQL> conn system/admin1234

SQL> grant create synonym to scott;

SQL> conn scott/tiger

SQL> create synonym systab for system.table_systbl;

SQL> select * from systab;




[3] 비공개 동의어 생성 및 의미

사용자 정의롤을 생성한 후 에 사용자 정의 롤에 connect, resource role과

create synonym 권한과 scott 소유자의 emp 테이블과 dept 테이블에

eogks select 객체 권한을 role에 부여



SQL> conn system/admin1234

SQL> create role test_role;


SQL> create role test_role;


SQL> grant select on scott.dept to test_role;



사용자 생성

SQL> create user tester10 identified by tiger;

SQL> create user tester11 identified by tiger;


SQL> conn scott/tiger

Connected.

SQL> grant select on dept to tester10;



SQL> conn tester10/tiger

SQL> select * from dept; --error

SQL> select * from scott.dept;



사용자 tester10 비공개 동의어 생성

SQL> conn tester10/tiger

SQL> create synonym dept for scott.dept;

SQL> select * from dept;


SQL> conn tester11/tiger

SQL> select * from dept; -- error 비공개 동의어가 일반적인 것이다



[4] 공개 동의어 정의하기

SQL>sqlplus system/admin1234

SQL> create public synonym PublDept for scott.dept;

사용자 생성

SQL> create user tester12 identified by tiger;


사용자에게 롤 부여

SQL> grant test_role to tester12;


SQL> conn tester12/tiger

SQL> select * from PublDept; -- 범용적으로 사용할 수 있다고 하여 공개 동의어라고 불려짐고 있다




[5] 비공개 동의어 제거

비공개 동의어인 dept는 동의어를 소유한 사용자로 접소한 후 제거 가능하다

SQL> conn tester10/tiger

SQL> drop synonym dept;

SQL> select * from dept; 



[6] 공개 동의어 제거

SQL> conn system/admin1234

SQL> drop synonym PubDept; --error


SQL> drop public synonym PubDept; -- public 으로 삭제 해야된다

'ORACLE' 카테고리의 다른 글

2020040902 - Transaction (트랜잭션)  (0) 2020.04.30
0416 - 02 - eXERD 설치  (0) 2020.04.30
0416 - 01 - 데이터베이스 설계  (0) 2020.04.30
2020041001 / 단원 11_join(조인)  (0) 2020.04.30
오라클(Oracle) 다운로드 및 설치하기  (0) 2020.04.30

댓글

Designed by JB FACTORY