오라클 11g 데이터베이스에 몇 개의 MV가 있습니다. 새로운 요구 사항은 반드시 있어야한다는 것을 의미합니다.쿼리에 영향을주지 않고 oracle mview를 자르십시오.
아톰이 아닌 경우 DBMS_MVIEW.REFRESH는 일련의 삽입 전에 자르기를 수행하지만 atomic => true 일 때 모든 레코드가 먼저 하나씩 삭제된다는 것을 알고 있습니다. 비 원자 버전이 단 몇 분 동안 레코드를 삭제하는 데 한 시간이 걸립니다.
내가 새로 고치는 동안 계속이 MV에 대한 쿼리를 허용하는 방법이 필요합니다. MV 쿼리가 카운트를 사용하고 mosts 레코드가 어쨌든 변경 될 것이기 때문에 FAST 리프레시 방법은 의문의 여지가 있습니다.
LOCK TABLE FOOBAR_MVIEW_LOCK IN EXCLUSIVE MODE;
SELECT * FROM FOOBAR_MVIEW_DATA1,FOOBAR_MVIEW_DATA2;
COMMIT;
및
LOCK TABLE FOOBAR_MVIEW_LOCK IN EXCLUSIVE MODE;
EXECUTE DBMS_MVIEW.REFRESH('FOOBAR_MVIEW_DATA1,FOOBAR_MVIEW_DATA2','cc');
COMMIT;
더 나은 방법이 있나요을 :
그래서, 함께 왔어요 구조물이있다? NB. 파티션 교체에 대해 이야기하기 시작하면 팀 리더가 긴장을 느낍니다. :-)
나는 당신이 생각해 낸 구조, 문제를 해결하는 방법, 명시 적 잠금이 제공하는 이점, 또는 둘 사이의 데카르트 결합을 수행하는 쿼리의 역할에 대해 잘 모르겠다. 테이블이 있습니다. 제안 된 솔루션에 대해 좀 더 자세히 설명해 주시겠습니까? –
쿼리는 실제 쿼리가 아니며 구문을 보여줍니다. 아이디어는 쿼리를 수행하는 프로세스가 있고 또 다른 수행하는 새로 고침이 있다는 것입니다. 각 세션이 다른 쪽에서 잠금을 해제 할 때까지 기다려야하므로 한 번에 하나만 제어 할 수 있습니다. –
쿼리를 실행하는 세션이 하나 뿐이니까? –