先吐槽一下,不知道开发的人怎么想的。非要在不DBLINK关系的用户间,做一个MV。


其实,发生上面的问题的原因是很简单的,听完他们的想法,之后1分钟就搞定了。

开发组现在的机器上有一个DBLINK。两边都已经设定了。现在的想法是想把主表一侧的另一个

用户(u01.test01)的表,作为主表,做一个MV。


但这时就有一个问题,就是这个用户不在这个DBLINK中。

需要给它授权,开发组的人中把下面的权限受给DBLINK的用户(u02)了。

grant select on u01.test01 to u02;


其实,正常做成MV时,应该把使用的表(test01)及与其相关的log表的权限都受给

DBLINK用户(u02)。


解决方法:

就是把log表的权限也给了DBLINK用户(u02)。


検証結果:

--解决方法的命令执行前

SQL> create materialized view mv04 refresh fast as select * from test02.tab04@cn11;

create materialized view mv04 refresh fast as select * from test02.tab04@cn11

                                                                  *

行1でエラーが発生しました。:

ORA-12018: "CN31TEST"."MV04"のコード生成中に次のエラーが発生しました。

ORA-00942:表またはビューが存在しません。


--解决方法实施后

SQL> create materialized view mv04 refresh fast as select * from test02.tab04@cn11;


マテリアライズドビューが作成されました。