Oracle MV requires object type to be defined as FINAL?
I tested in my test server ambient and worked.
SQL&gt; create table test_mv (col1 number not null unique, col2 number);

Table created.

SQL&gt; create materialized view log on test_mv with primary key;

Materialized view log created.

SQL&gt;  create materialized view mv refresh fast on demand as
  2     select col1,col2, sdo_geometry(2001, 26917, sdo_point_type(col1,col2, null), null, null) as shape
  3     from test_mv;

Materialized view created.

SQL&gt; insert into test_mv values (1, 1);

1 row created.

SQL&gt;  insert into test_mv values (2, 2);

1 row created.

SQL&gt; commit;

Commit complete.

SQL&gt; exec dbms_mview.refresh('MV', 'f');

PL/SQL procedure successfully completed.

col1 col2 shape
1   1   (2001, 26917, (1, 1, ), (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ))
2   2   (2001, 26917, (2, 2, ), (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ))