programing

Oracle에서 구체화된 보기를 부분적으로 새로 고칠 수 있습니까?

yellowcard 2023. 8. 8. 21:26
반응형

Oracle에서 구체화된 보기를 부분적으로 새로 고칠 수 있습니까?

다른 구체화된 보기, 일반 보기 및 일부 테이블을 기반으로 하는 매우 복잡한 Oracle 보기를 사용하고 있습니다("빠른 새로 고침"은 불가능).대부분의 경우, 이 보기의 기존 레코드는 날짜를 기반으로 하며 "안정적"이며, 새 레코드 세트는 새 날짜를 가집니다.

가끔 저는 뒷날짜를 받습니다.저는 그것들이 무엇인지 알고 있고 만약 제가 테이블을 유지하고 있다면 그것들을 어떻게 다루어야 하는지 알고 있지만, 저는 이것을 "보기"로 유지하고 싶습니다.전체 새로 고침은 약 30분 정도 걸리지만 지정된 날짜에는 25초밖에 걸리지 않습니다.

구체화된 보기의 일부만 업데이트되도록 지정할 수 있습니까(즉, 영향을 받는 날짜)?

보기를 스크랩하고 표와 절차를 사용하여 해당 표에 지정된 날짜를 채우거나 새로 고쳐야 합니까?

답변 3(스캐프맨)에서와 같이 날짜별로 분할합니다.

그냥 일반 MV를 새로 고칠 수 있습니다.table_refreshed아래) 및 교환 키워드를 사용합니다.

ALTER TABLE all_partitions
  EXCHANGE PARTITION to_calculate
  WITH TABLE table_refreshed
  WITHOUT VALIDATION
  UPDATE GLOBAL INDEXES;

이 질문에 대한 답이 부족하다는 것을 더 많이 읽고 판단한 후, 저는 구체화된 관점의 단일 파티션을 새로 고치는 것은 불가능하다는 결론에 도달했습니다.

그렇지 않다는 것을 증명하는 구문 예제를 제시해 주신다면, 저는 기꺼이 당신의 답변을 승인된 것으로 표시하겠습니다.

앞으로 이 질문이 유용할 수도 있는 다른 사람들: Oracle 10g에서 파티션(또는 mview)을 새로 고치면 Oracle이 문제가 발생한다는 것을 알고 싶을 수도 있습니다.DELETE다음에INSERT.

이로 인해 성능 문제가 발생하는 경우(나와 같은) 사용할 수 있는 옵션이 있습니다.atomic_refresh => false어느 쪽이TRUNCATE,그리고나서INSERT /*+APPEND*/.

파티션 변경 추적을 통해 구체화된 보기의 단일 파티션을 새로 고칠 수 있었습니다.

보기는 다음을 사용하여 생성되어야 합니다.REFRESH FAST WITH ROWID옵션 및DBMS_MVIEW.REFRESH와 함께 호출됩니다.'P'방법.

일반 테이블과 마찬가지로 구체화된 보기를 분할할 수 있습니다.mview를 날짜별로 분할한 다음 필요한 파티션만 새로 고칠 수 있습니다.

언급URL : https://stackoverflow.com/questions/1783308/is-it-possible-to-partially-refresh-a-materialized-view-in-oracle

반응형