오라클 동의어(Synonym)
- ORACLE
- 2020. 4. 14.
동의어(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 |