Is it possible to partially refresh a materialized view in Oracle?

前端 未结 4 1311
梦如初夏
梦如初夏 2021-01-11 15:44

I have a very complex Oracle view based on other materialized views, regular views as well as some tables (I can\'t \"fast refresh\" it). Most of the time, existing records

相关标签:
4条回答
  • 2021-01-11 15:50

    Partition by date as in answer 3 (skaffman).

    You could just do the refresh of a normal mv(table_refreshed below) and than use the exchange keyword i.e.

    ALTER TABLE all_partitions
      EXCHANGE PARTITION to_calculate
      WITH TABLE table_refreshed
      WITHOUT VALIDATION
      UPDATE GLOBAL INDEXES;
    
    0 讨论(0)
  • 2021-01-11 15:57

    I have been able to refresh a single partition of a materialized view with partition change tracking.

    It seems to require that the view is created with REFRESH FAST WITH ROWID option and DBMS_MVIEW.REFRESH is called with 'P' method.

    0 讨论(0)
  • 2021-01-11 16:02

    You can partition materialized views just as you can with normal tables. Partition your mview by date, and then you can refresh only the required partition.

    0 讨论(0)
  • 2021-01-11 16:03

    After more reading and judging by the lack of answers to this question, I come come to the conclusion that it is not possible to refresh a single partition of a materialized view.

    If you can give a syntax example that proves otherwise, I will happily mark your answer the accepted one.

    To others who might find this questions useful in the future: you might also want to know that in Oracle 10g, refreshing a partition (or any mview) will cause Oracle to issue DELETE, followed by INSERT.

    If this is giving you performance problems (like me), there is an option to use atomic_refresh => false, which will TRUNCATE, then INSERT /*+APPEND*/.

    0 讨论(0)
提交回复
热议问题