A 유저가 B 유저의 한 테이블을 truncate 할수 있게 만들어 주려면 어떤권한이 필요할까?
grant truncate on B."테이블명" to A
이런 구문이 가능하다면 문제는 해결되겠지만 ... truncate 권한만을 따로 줄수가 없다.
grant drop any table to A
이렇게 하면 A 유저가 B 유저의 테이블을 truncate 할수 있다.
하지만 한 테이블의 truncate 를 가능하게 하기 위해서 너무나 큰 권한을 주었다.
프로시저를 활용해서 drop any table 권한을 주지 않고도
A 유저가 B 유저의 테이블을 truncate 하게 만들수 있다.
create user u_obj identified by uobj; -- table owner user
grant create session to u_obj;
grant resource to u_obj;
create table u_obj.t_trc ( a int); -- truncate 대상 테이블
create user u_trc identified by utrc; -- truncate 하려는 user
grant create session to u_trc;
grant select, insert on u_obj.t_trc to u_trc;
-- truncate 해줄 프로시져 작성
create or replace procedure u_obj.p_trc( p_tname in varchar2 )
as
begin
execute immediate 'truncate table ' || p_tname;
end;
/
이 상태에서 u_trc 는 t_trc 테이블을 truncate 할수 없지만 프로시저를
실행함으로써 가능하게 할수 있다.
'생계 > Oracle' 카테고리의 다른 글
tnsnames.ora 를 통한 DB 접속 테스트 (0) | 2018.11.05 |
---|---|
오라클 flashback as of timestamp 테스트 (0) | 2018.10.23 |
리눅스환경 오라클 삭제 linux (0) | 2018.05.24 |
구글 클라우드 플랫폼에 오라클 12c 설치 연결 테스트 (0) | 2018.04.10 |
oracle 12c silent mode 설치 (0) | 2017.12.13 |