1. Materialized view over Databaselink
=======================================
1. using ROWID
On Source Database (DUGPRD):
==============================
STEP 1: CREATE MATERIALIZED VIEW LOG ON PA.PA_EXPENDITURES_ALL
On Remote Database (DUGDWH) using db link
STEP 2:
CREATE MATERIALIZED VIEW PA_EXPENDITURES_ALL_MV
BUILD IMMEDIATE
REFRESH FAST
ON DEMAND
WITH ROWID
AS
SELECT * FROM PA.PA_EXPENDITURES_ALL@TO_DUGPRD.DEPA.AE;
Error:
ORA-12018: following error encountered during code generation for
"BIAPPS_DW"."S_PA_EXPENDITURES_ALL_MV"
ORA-00942: table or view does not exist
Oracle started to complain when creating the above materialized view issuing an
error ORA-00942: table or view does not exist, but the SQL without the create
materialized view command ran fine giving the expected results.
SELECT * FROM PA.PA_EXPENDITURES_ALL@TO_DUGRND; -- is working fine
Solution:
DB link has created for user EBS_ETL.
grant select on mlog$_PA_EXPENDITURES_ALL to EBS_ETL
2. Primary key
Steps to perform on DUGRND ( Source )
========================================
STEP 1.Create table
CREATE TABLE PA.PA_EXPENDITURES_ALL_TEST
AS
SELECT * FROM PA.PA_EXPENDITURES_ALL
2. STEP 2. Add Primary Key Constraint
alter table PA.PA_EXPENDITURES_ALL_TEST add constraint
PA_EXPENDITURES_ALL_TEST_PK primary key ( EXPENDITURE_ID );
STEP 3. materialized view log
create materialized view log on PA.PA_EXPENDITURES_ALL_TEST ;
STEP 4. select count(*) from PA.PA_EXPENDITURES_ALL_TEST –- make a note of
row count
On Remote Database (DUHDWH)
STEP 1. Create Materialized View
CREATE MATERIALIZED VIEW PA_EXPENDITURES_ALL_TEST_MV
BUILD IMMEDIATE
REFRESH FAST
ON DEMAND
AS
SELECT * FROM PA.PA_EXPENDITURES_ALL_TEST@TO_DUGRND;
STEP 2. select count(*) from PA_EXPENDITURES_ALL_TEST_MV; -- make a note of
row count
STEP 3. exec dbms_mview.refresh('PA_EXPENDITURES_ALL_TEST_MV')
On Source(DUGRND)
STEP 1. Delete Some rows
delete from PA.PA_EXPENDITURES_ALL_TEST where rownum < 10;
commit;
STEP 2. select count(*) from PA.PA_EXPENDITURES_ALL_TEST -- make a note of
row count
On Remote Database (DUHDWH)
STEP 1. select count(*) from PA_EXPENDITURES_ALL_TEST_MV;