Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建物化视图时使用ORA-06512_Sql_Oracle - Fatal编程技术网

Sql 创建物化视图时使用ORA-06512

Sql 创建物化视图时使用ORA-06512,sql,oracle,Sql,Oracle,我正在尝试在Oracle中创建mview。它将用于我每天运行的报告,因此我只需要在执行之前按需更新它 CREATE MATERIALIZED VIEW mv_test REFRESH ON DEMAND AS SELECT zzcode, COUNT(1) c FROM cdc.uap_zufi_t_dca_place@rbip GROUP BY zzcode; BE

我正在尝试在Oracle中创建mview。它将用于我每天运行的报告,因此我只需要在执行之前按需更新它

CREATE MATERIALIZED VIEW mv_test
    REFRESH
        ON DEMAND
AS
    SELECT
        zzcode,
        COUNT(1) c
    FROM
        cdc.uap_zufi_t_dca_place@rbip
    GROUP BY
        zzcode;
        
BEGIN
    dbms_snapshot.refresh('mv_test', 'f');
END;
但是,出现以下错误:

ORA-06512:在第2行 2341300000-“表“%s”。%s”没有具体化的视图日志 *原因:无法执行快速刷新,因为主表 不包含物化视图日志。 *操作:使用“创建物化视图日志”命令创建
主表上的物化视图日志。

您实际上应该使用
dbms\u mview
包,而不是旧的
dbms\u快照。在这种情况下,它们也会做同样的事情,但Oracle甚至不再费心记录
dbms\u snapshot
包了

的第二个参数是
方法
。您正在指定“f”的
方法,这意味着您要求快速(增量)刷新。如果需要增量刷新,则需要在远程数据库上创建一个物化视图日志(这几乎肯定不能通过数据库链接完成)。或者,您可以要求完全刷新,而不是每次都通过网络发送每一行

begin
  dbms_mview.refresh( 'MV_TEST', 'c' );
end;

错误消息的哪一部分让您感到困惑?它不仅告诉您问题出在哪里,而且还提供必要的操作来修复itTry
refresh on demand complete
此查询返回什么
从所有视图中选择refresh\u mode,refresh\u method,其中MVView\u name='MV\u TEST'
?您需要在MV引用的表上创建物化视图日志,而不是mv本身。在你的情况下,这可能是在cdc.uap_zufi_t_dca上_place@rbipI“我猜您需要登录到该源数据库才能创建该日志(或者让具有相应权限的人为您创建该日志)。恐怕我不知道当源表位于另一个DB中时,是否可以在一个DB中创建MV,但我猜如果您阅读Oracle文档,它可能会告诉您。如果您仔细阅读了文档,或者将参数留空以使用默认刷新方法,而不猜测MV是如何设计的,这可能是一个好主意