Hi,
I have simple question - is it possible to do fast refresh on simple materialized view based on rowid?
Consider following example:
Remote schema
CREATE TABLE TEST_TABLE(
ID NUMBER(10),
SOME_STRING VARCHAR2(10),
CONSTRAINT TEST_TABLE_PK PRIMARY KEY(ID) USING INDEX TABLESPACE L_INDEXES
);
CREATE MATERIALIZED VIEW LOG ON TEST_TABLE
TABLESPACE L_DATA
WITH PRIMARY KEY, SEQUENCE
INCLUDING NEW VALUES;
Local schema
CREATE MATERIALIZED VIEW TEST_TABLE_REMOTE
PCTFREE 5
TABLESPACE L_DATA
BUILD IMMEDIATE
USING INDEX TABLESPACE L_INDEXES
REFRESH ON DEMAND
AS
SELECT ID,
SOME_STRING
FROM TEST_TABLE@DB_LINK_NAME;
Looking into table SYS.SLOG$ on remote DB, I see a record for master table.
BEGIN
DBMS_MVIEW.REFRESH('TEST_TABLE_REMOTE', 'F');
END;
/
Fast refresh is working.
Now let's do it with RowID.
Remote schema
Master table remains the same.
DROP MATERIALIZED VIEW LOG TEST_TABLE;
CREATE MATERIALIZED VIEW LOG ON TEST_TABLE
TABLESPACE L_DATA
WITH ROWID, SEQUENCE
INCLUDING NEW VALUES;
Local schema
DROP MATERIALIZED VIEW TEST_TABLE_REMOTE;
CREATE MATERIALIZED VIEW TEST_TABLE_REMOTE
PCTFREE 5
TABLESPACE L_DATA
BUILD IMMEDIATE
USING INDEX TABLESPACE L_INDEXES
REFRESH ON DEMAND
AS
SELECT RowID MyRowID,
SOME_STRING
FROM TEST_TABLE@HOSTDB.REMOTE;
Looking into table SYS.SLOG$ on remote DB, there is no record for master table.
Fast refresh doesn't work
BEGIN
DBMS_MVIEW.REFRESH('TEST_TABLE_REMOTE', 'F');
END;
/
ORA-12004: REFRESH FAST cannot be used for materialized view "LOCAL_SCHEMA"."TEST_TABLE_REMOTE"
Why?
Both DBs are running on the same version 12.1.0.2
Thank you in advance for your hints.