ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-12028错误

ORA-12028错误

原创 Linux操作系统 作者:yangtingkun 时间:2008-08-10 23:57:22 0 删除 编辑

在建立物化视图中碰到了这个错误,经过分析发现,导致错误的原因并非这个错误描述的原因。

 

 

首先看一下错误的发生:

SQL> CONN YANGTK/YANGTK@192.25.1.101/TEST101
已连接。
SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE    10.1.0.2.0      Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production

SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY);

表已创建。

SQL> CREATE MATERIALIZED VIEW LOG ON T;

实体化视图日志已创建。

SQL> CONN YANGTK/yangtk@192.25.1.103/ORA11G_P.YTK_THINKPAD
已连接。
SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL> CREATE DATABASE LINK TEST101.YTK
  2  CONNECT TO YANGTK
  3  IDENTIFIED BY YANGTK
  4  USING '192.25.1.101/TEST101';

数据库链接已创建。

SQL> CREATE MATERIALIZED VIEW MV_T
  2  REFRESH FAST
  3  AS SELECT * FROM T@TEST101.YTK;
CREATE MATERIALIZED VIEW MV_T
*
第 1 行出现错误:
ORA-12028:
主体站点 @TEST101.YTK 不支持实体化视图类型

下面看看错误的详细描述:

ORA-12028: materialized view type is not supported by master site string
Cause: Pre-Oracle8 master sites are not able to support primary key or subquery materialized views that are able to perform. a fast refresh.
Action: Create a ROWID materialized view or use a master table from an Oracle8 site.

这是一个再简单不过的物化视图,没有任何特殊的语法,而出现这个错误显得十分的奇怪。根据错误信息描述,似乎造成问题的原因是源数据库版本太低。但是源数据库的版本是10.1,对于如此高的版本是不可能不支持简单的主键物化视图的。

那么肯定是其他原因导致了这个错误的产生。

下面尝试建立基于ROWID的物化视图:

SQL> CONN YANGTK/YANGTK@192.25.1.101/TEST101
已连接。
SQL> ALTER MATERIALIZED VIEW LOG ON T ADD ROWID;

实体化视图日志已更改。

SQL> CONN YANGTK/yangtk@192.25.1.103/ORA11G_P.YTK_THINKPAD
已连接。
SQL> CREATE MATERIALIZED VIEW MV_T
  2  REFRESH FAST
  3  WITH ROWID
  4  AS SELECT * FROM T@TEST101.YTK;
CREATE MATERIALIZED VIEW MV_T
*
第 1 行出现错误:
ORA-04052:
在查找远程对象 SYS.DBMS_SNAPSHOT@TEST101.YTK 时出错
ORA-00604:
递归 SQL 级别 2 出现错误
ORA-06544: PL/SQL:
内部错误, 参数: [55916], [], [], [], [], [], [], []
ORA-06553: PLS-801:
内部错误 [55916]
ORA-02063:
紧接着 2 lines (起自 TEST101.YTK)

这个错误在前面的文章中已经介绍过了,是由于11g访问10g的远端过程造成的,关于这个错误更详细的描述可以参考:http://yangtingkun.itpub.net/post/468/468506

根据这种情况,其实可以推断出第一个错误ORA-12028的产生原因。第一次建立物化视图的时候,Oracle出现的错误应该也是找不到远端的对象,而Oracle内部可能做了相应的异常处理,认为这种找不到对应的包或过程的情况,是由于远端数据库的版本太低所致,因此出现了上面的ORA-12028错误。

因此实际上这个错误和上面链接中描述的错误是由于同一个bug造成的,只不过由于语法的区别,导致Oracle内部处理的不同,所产生的最终的现象也不同罢了。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-422906/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ORA-2083错误
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11076556