DB

SQL 동의어

짱코딩러 2022. 8. 11. 23:04

동의어생성

CREATE [PUBLIC] SYNONYM synonym_name
FOR user_name.object_name;
(synonym_name은 user_name.object_name에 대한 별칭)

 

권한부여

GRANT SELECT ON [TABLE NAME] TO [USER];

 

 

비공개 동의어 

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

userb1소유자로 접속해 scott의 emp테이블을 select 하기

사용자 정의 롤 생성해두기
CONN system/1234
CREATE ROLE TEST_ROLE;
GRANT CONNECT, RESOURCE, CREATE SYNONYM TO TEST_ROLE;
1.scott계정으로 로그인
conn scott/tiger
2.권한 부여
grant select on scott.emp to test_role;
3.userb1계정 로그인
conn userb1/b1234
4.소유자 이름 붙여서 출력
select* from scott.emp;
1.비공개 동의어 생성
create synonym emp for scott.emp;
2.소유자명 없이 출력
select* from emp;

비공개 동의어 삭제

비공개 동의어는 동의어를 소유한 사용자계정에서 제거해야 함

CONN USERB1/B1234	--system계정에서는 삭제불가
DROP SYNONYM EMP;

 

 

공개 동의어

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

(DBA 권한을 가진 사용자만이 생성할 수 있다. SYNONYM 앞에 PUBLIC를 붙여서 정의한다.)

ex.DUAL 테이블은 공개 동의어라서 접근할 때 앞에 테이블명(SYS.DUAL) 안붙여줘도됨

1.system계정 로그인
CONN system/1234
2.공개동의어 생성
CREATE PUBLIC SYNONYM PubEMP FOR scott.EMP;
1.userb1 로그인
conn userb1/b1234
2.공개동의어로 출력
select* from PubEMP;

단, USERB2 소유자가 EMP 테이블을 조회할 수 있도록 하기 위해서는 SCOTT 소유자의 EMP 테이블에 대한 SELECT 객체 권한을 USERB2 소유자에게 부여해야 합니다.

GRANT SELECT ON EMP TO USERB2;

 

'DB' 카테고리의 다른 글

PL/SQL 저장 프로시저  (0) 2022.08.17
JDBC Vo, Dao  (0) 2022.08.10
JDBC 주요 API  (0) 2022.08.10
JDBC 입력, 수정, 삭제  (0) 2022.08.09
JDBC 트랜잭션  (0) 2022.08.09