ATOMIC_REFRESH=>FALSE Ignored When Mview Has Domain Index (Doc ID 1390665.1)

Last updated on JANUARY 18, 2017

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.2 and later
Information in this document applies to any platform.

Goal

Materialized View refresh with CTXCAT index is slow, even after passing the parameter ATOMIC_REFRESH=FALSE and 10046 Trace shows DELETE statements instead of TRUNCATE. However, complete refresh after removing the CTXCAT index shows truncate statement.
Example showing ATOMIC_REFRESH=FALSE is not taking effect:
--Create Index Set
begin
ctx_ddl.create_index_set('test_iset');
ctx_ddl.add_index ('test_iset', 'object_type');
end;
/
PL/SQL procedure successfully completed.
--Create Mview
CREATE materialized view MITSSRC.TEST_MV
TABLESPACE SAPIENTD_LRG01
AS
SELECT * FROM USER_OBJECTS;

Materialized view created.
--Create CTXCAT Index
CREATE INDEX MITSSRC.TEST_MV_IDX01 ON MITSSRC.TEST_MV
(OBJECT_NAME) INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('index set test_iset');

Index created.
--Mview Refresh
execute DBMS_MVIEW.REFRESH('MITSSRC.TEST_MV', ATOMIC_REFRESH=FALSE);

PL/SQL procedure successfully completed.
Verify from 10046 trace delete being used for above refresh statement
-- DELETE CTXCAT INDEX
DROP INDEX MITSSRC.TEST_MV_IDX01;
--Mview Refresh
execute DBMS_MVIEW.REFRESH('MITSSRC.TEST_MV', ATOMIC_REFRESH=>FALSE);
Verify from 10046 trace truncate being used for above refresh statement.

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms