Hallo,
ich möchte eine materialized view erstellen,
die sich bei jeder änderung der Ursprungstabelle aktualisiert.
Ursprungstabelle und M-View liegen in 2 verschiedenen Schemas
Schema STRMADMIN besitzt die Ursprungstabelle
Schema STRREPLIC besitzt die Mat-View
beide User erhielten für den Test folgende System-Privilegien:
ON COMMIT REFRESH
QUERY REWRITE (auch wenn ich „disable query rewrite“ in der Mat-View stehen habe)
ORACLE-Version:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
Nun bin ich wie folgt vorgegangen:
als User: strmadmin
CREATE TABLE testtab
(
CODIGO NUMBER NOT NULL,
NOMBRE VARCHAR2(15),
)
grant select on strmadmin.testtab to strreplic;
CREATE MATERIALIZED VIEW LOG ON strmadmin.testtab WITH ROWID INCLUDING NEW VALUES;
als User strreplic:
CREATE MATERIALIZED VIEW STRREPLIC.testtab
REFRESH FORCE WITH ROWID
DISABLE QUERY REWRITE AS
SELECT * FROM „STRMADMIN“.testtab
ALTER MATERIALIZED VIEW strreplic.testtab REFRESH FAST on commit;
Nun wollte ich einen Satz in die Tabelle einfügen
Als User strmadmin (owner der Tabelle testtab):
insert into strmadmin.testtab values(1,‚otto‘);
commit;
=> beim Commit erhielt ich den Fehler
ORA-12018: following error encountered during code generation for „STRREPLIC“.„TESTTAB“
ORA-00942: table or view does not exist
Als User sys:
insert into strmadmin.testtab values(1,‚otto‘);
commit;
=>
ORA-12018: following error encountered during code generation for „STRREPLIC“.„TESTTAB“
ORA-01031: insufficient privileges
Weiss jemand, was ich hier nicht beachtet habe ?
Wer benötigt hier noch welches Recht?
Auch wenn ich dem User strmadmin ein „grant all“ auf die MView gebe, erhalte ich den Fehler
liebe Grüsse
Regine