본문 바로가기
DB

oracle 스키마명 없이 조회하기 ( synonym )

by 애플 로그 2021. 2. 24.
반응형

oracle 스키마명 없이 조회하기 ( synonym )

 

A계정에는 실제 데이터를 넣어 놓고, 

B계정에서 특정 권한만 줘서 조회가 가능하게끔 설정 하려한다.

 

DBA가 있고 관리가 어느정도 되는 업체에서는 

스키마와 조회 스키마를 나누어 구성을 많이 한다.

 

 

[A계정] 에서 B의 스키마명 없이 조회 가능

EX ) SELECT * FROM B.테이블;  ->  SELECT * FROM 테이블;

 

[대상]

B의 전체 테이블

 

 

1. B계정의 테이블 권한 주기

 

[B계정] 나같은 경우에는 모든 테이블 대상이 었으므로 ..

 1) B의 전체 테이블 조회 권한을 A에게 주고 싶은 경우

 

 

 SELECT 'GRANT SELECT ON B.' || TABLE_NAME || ' TO A;'

 FROM ALL_TABLES

 WHERE OWNER = 'B';

 

쿼리 결과를 복사하여 실행한다.

 

 

 

2. SYNONYM 생성

[A 계정]

 1)  synonym 전체 테이블 전체에 적용

 

테이블이나 함수명 을 다른 계정에서 접근하기 위해서 계정명.테이블명, 계정명.함수명 으로 접근 하여야 한다. 스키마명 없이 테이블명, 함수명으로 접근하기 위해 SYNONYM을 설정 한다.

 

(  A 계정에서 실행 )

 SELECT 'CREATE SYNONYM ' || TABLE_NAME || ' FOR B.'|| TABLE_NAME || ';'

 FROM ALL_TABLES

 WHERE OWNER = 'B';

 

 


 * 작업이후는 SELECT 함수명, * FROM 테이블명,  으로 접근 가능하다.

 

 

 

3. 권한, synonym 문법

 

 1)  B개별 테이블 및 function 권한 문법

 

 

 - 조회 권한

 

   GRANT SELECT ON 권한을줄테이블명 TO 권한을받을사용자계정;

 

- 입력 수정 삭제 권한

 

  GRANT INSERT, UPDATE, DELETE ON 권한을줄테이블명 TO 권한을받을사용자계정;

 

- FUNCTION 권한 주기

 

   GRANT EXECUTE ON 권한을줄함수명 TO 권한을받을사용자계정;

 

 

 

 

 

 2)  synonym 개별 테이블에 주고 싶은 경우

 

 

테이블이나 함수명 을 다른 계정에서 접근하기 위해서 계정명.테이블명, 계정명.함수명 으로 접근 하여야 한다.

그냥 테이블명, 함수명으로 접근하기 위해 SYNONYM을 설정 한다.

 

- 테이블

 

  CREATE [PUBLIC] SYNONYM 시노님명칭 FOR 계정명.테이블명;

 

  - PUBLIC : 모든 사용자가 접근 가능한 시노님을 생성 한다.

 

- 함수 

  

  CREATE SYNONYM 시노님명칭 FOR 계정명.함수명;

 

댓글