by 낙지 [DB 기타] 데이터베이스 Materialized View refresh [2016.08.29 11:03:55]
오라클 계정이 두개 있습니다. 1. A계정 2. B계정 mv refresh 는 B계정에서 돌아가게 되어 있습니다.(아래 쿼리) --exec DBMS_MVIEW.REFRESH ('MV_MST_ABC') ;
근데 이거를 A계정에서 refresh 를 돌리고 싶은데 어떻게해야 될까요 방법이 따로 있을까요 ㅠㅠ ??
이것 저것 다 해봐도 권한이 없다는둥 다른 안된다는 메시지만 뜨네요 어떻게 하면 될까요??
개념 상 안될 것 같습니다.
참고로, 11gR2 의 경우 BMS_MVIEW 는 SYS.dbms_snapshot 의 public synonym 인데, refresh 에 대해서는 아래처럼 기술되어 있습니다. => Owner 를 지정할 수 있는 변수가 없습니다.
PROCEDURE refresh(list IN VARCHAR2, method IN VARCHAR2 := NULL, rollback_seg IN VARCHAR2 := NULL, push_deferred_rpc IN BOOLEAN := TRUE, refresh_after_errors IN BOOLEAN := FALSE, purge_option IN BINARY_INTEGER := 1, parallelism IN BINARY_INTEGER := 0, heap_size IN BINARY_INTEGER := 0, atomic_refresh IN BOOLEAN := TRUE, nested IN BOOLEAN := FALSE);
필요한 권한이 있다면, 우회? 할 수는 있겠네요.
A User 에 필요한 권한은, 1) 관련된 B 의 모든 Object 를 select 할 수 있는 권한 (ex> select any table 등) 과 2) dbms_snapshot 및 관련된 package 등을 실행할 수 있는 권한 등 입니다.
1. A Schema 가 소유한 Procedure 생성 ( create or replace package A.test_pke_a IS ~~~ )
2. Procedure 내
- AUTHID CURRENT_USER = B 를 기술하고
- MVIEW.REFRESH ('MV_MST_ABC') 부분을 기술