暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DBMS_MVIEW.REFRESH引发 “PLS-00306: 调用 'verify_log' 时参数的错误数量或类型”

askTom 2016-07-22
807

问题描述

你好,

Actual数据库: 11g R2标准版;
Source1数据库: 10g R2企业版;
Source2数据库: 11g标准版;

Scenario

Step 1.为从Source1 db获取数据创建数据库链接:
CREATE DATABASE LINK tmp_dbl_test
  CONNECT TO my_user
  IDENTIFIED BY my_pwd
  USING 'my_db_source1';


Step 2.创建物化视图:
CREATE MATERIALIZED VIEW my_mv
    BUILD IMMEDIATE
    REFRESH ON DEMAND
AS
    SELECT *
    FROM my_source1_table@tmp_dbl_test
;


Step 3.将dblink的源更改为Source2:
DROP DATABASE LINK tmp_dbl_test;
CREATE DATABASE LINK tmp_dbl_test
  CONNECT TO my_user
  IDENTIFIED BY my_pwd
  USING 'my_db_source2';


Step 4.再次刷新实体化视图:
BEGIN
    DBMS_MVIEW.REFRESH(
         list => 'my_mv'
    );
END;


第一次尝试加注:
ORA-04062: signature of package "SYS.DBMS_SNAPSHOT_UTL" has been changed
ORA-06512: at line 1


第二次和随后的尝试引发了:
ORA-06550: line 1, column 9:
PLS-00306: wrong number or types of arguments in call to 'VERIFY_LOG'
ORA-06550: line 1, column 9:
PL/SQL: Statement ignored


除了重新创建物化视图之外,还有任何想法如何避免错误?重新创造实际上是有效的。问题的原因是什么?

谢谢!

专家解答

你不能只改变数据库链接的定义!这将物化的观点指向了一个新的来源。

如果你想将物化视图指向一个新的数据库,那么是的,你必须重新创建它。

您可以创建一个新的数据库链接和MV以及现有的链接。你不能给MV重命名。但是,如果要保留原始名称,则可以在其位置创建同义词。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论