최근 인터페이스를 이용해 데이터를 서로 주고 받는 각기 다른 웹사이트의 DB를 합치는 DB 일원화 업무로 인하여 DB에서 작업해야 될 일이 많아졌다.
테이블이나 function을 생성해야 하는데 권한과 시노님 문제 때문에 헷갈리는게 많아 정리를 하고자 한다.
예를 들어 스키마1과 스키마2 가 존재한다.
스키마1에서 생성한 TABLE 및 FUNCTION을 스키마2에게 SYNONYM 및 GRANT를 생성 및 부여하고 싶다.
작업순서
1. 권한 부여
- GRANT는 TABLE 및 FUNCTION을 생성'한' 스키마 워크시트에서 작업
2. Synonym 생성
- SYNONYM은 TABLE 및 FUNCTION을 생성'할' 스키마 워크시트에서 작업
EX)
스키마1에서 TABLE 및 FUNCTION을 생성했다.
--> 스키마1에서 GRANT 작업을 실행.
스키마2에게 스키마1에서 생성한 TABLE 및 FUNCTION의 SYNONYM을 부여하고 싶다
--> 스키마2에서 SYNONYM작업을 실행한다.
* 아래 예시의 '[ --- ]'를 지우고 작업을 진행 한다.
TABLE
GRANT SELECT, INSERT, DELETE, UPDATE ON [테이블 이름] TO [권한을 부여할 스키마];
CREATE PUBLIC SYNONYM [줄여서 만들 이름] FOR [테이블을 생성한 스키마].[테이블 이름];
* CREATE 뒤에 붙은 PUBLIC은 사용하려는 목적에 맞춰 변경해준다.(PUBLIC은 모든 사용자가 접근 가능)
* 기본값 PRIVATE
FUNCTION
GRANT EXECUTE ON [FUNCTION 이름] TO [권한을 줄 스키마];
GRANT SYNONYM [FUNCTION이름] FOR [FUNCTION을 생성한 스키마].[FUNCTION 이름];