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 계정명.함수명; |
'DB' 카테고리의 다른 글
oracle 21c XE 다운로드 및 설치 (0) | 2022.02.23 |
---|---|
DBCP 속성 설명 ( ManagedBasicDataSource 구성 매개 변수 ) (0) | 2021.04.13 |
댓글