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

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


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;


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*/.


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.