2

我在同名的预建表上有一个物化视图。当尝试使用DBMS_METADATA.GET_DDL()获取物化视图的 DDL 时,我得到ORA-01427: single-row subquery returns more than one row from inside DBMS_METADATA。这是一个最小的例子:

SQL> create table mv_test as select * from dual;

Table created.

SQL> create materialized view mv_test
  2   on prebuilt table
  3   refresh force on demand as
  4  select *
  5    from dual;

Materialized view created.

SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW', 'MV_TEST', user) from dual;
ERROR:
ORA-01427: single-row subquery returns more than one row
ORA-06512: at "SYS.DBMS_METADATA", line 5746
ORA-06512: at "SYS.DBMS_METADATA", line 8333
ORA-06512: at line 1



no rows selected

SQL>

直接分配给 PL/SQL 中的变量以及在 PL/SQL 中使用 SQL 时会发生同样的错误。

这不是特别理想...我假设发生错误是因为表和物化视图具有相同的名称并且GET_DDL()将多行返回到我的 SELECT 中。

我只想要一行 - 物化视图的行。我在对GET_DDL(). 我不想返回表的 DDL。

进一步的几点:

我怎样才能获得物化视图的 DDL。

4

1 回答 1

0

针对物化视图引发的此错误存在一些错误,我认为表和物化视图上的相同名称无关紧要。我认为你必须:

  • 在 Oracle Metalink 上查找错误;
  • 针对甲骨文关于 Metalink 的说明进行调查;
  • 如有必要,向 Oracle 支持打开和管理 SR;
  • 找到此错误/问题的解决方法/补丁。
于 2017-05-16T13:18:42.497 回答