오라클 다른 계정에서 mv refresh 돌리고 싶은데 방법을 잘 모르겠습니다.. 0 4 2,356

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 를 돌리고 싶은데 어떻게해야 될까요 방법이 따로 있을까요 ㅠㅠ ??

이것 저것 다 해봐도 권한이 없다는둥 다른 안된다는 메시지만 뜨네요 어떻게 하면 될까요??

 

by 포동푸우 [2016.08.29 16:07:47]

개념 상 안될 것 같습니다. 

참고로, 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);

 


by 포동푸우 [2016.08.29 16:17:15]

필요한 권한이 있다면, 우회? 할 수는 있겠네요.

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') 부분을 기술

 


by 와일드키드 [2016.08.29 16:21:28]

안녕하세요. 아래와 같이한번 해보세요 (확인해보지는 못했습니다만)

SQL>connect / as sysdba

GRANT ALTER ANY MATERIALIZED VIEW TO A계정;

 


by 낙지 [2016.08.31 13:41:44]

감사합니다 이렇게 하니깐 되네요 ^^ ㅎㅎㅎ 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입