10203设置CURSOR_SHARING为SIMILAR导致物化视图刷新失败

Oracle10.2.0.3下,如果设置了CURSOR_SHARINGSIMILAR,则可能造成远端数据库物化视图刷新失败。


重现一下错误。

会话一:

SQL> ALTER SYSTEM SET CURSOR_SHARING = SIMILAR;

系统已更改。

SQL> CREATE TABLE T_MV (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));

表已创建。

SQL> CREATE MATERIALIZED VIEW LOG ON T_MV;

实体化视图日志已创建。

会话二:

SQL> SET SQLP 'SQL2> '
SQL2> CREATE DATABASE LINK TESTRAC.US.ORACLE.COM
2 CONNECT TO TEST IDENTIFIED BY TEST USING 'TESTRAC';

数据库链接已创建。

SQL2> CREATE MATERIALIZED VIEW MV_T_MV REFRESH FAST
2 AS SELECT * FROM T_MV@TESTRAC.US.ORACLE.COM;

实体化视图已创建。

会话一:

SQL> INSERT INTO T_MV VALUES (1, 'A');

已创建 1 行。

SQL> DELETE T_MV WHERE ID = 1;

已删除 1 行。

SQL> COMMIT;

提交完成。

会话二:

SQL2> EXEC DBMS_MVIEW.REFRESH('MV_T_MV')

PL/SQL 过程已成功完成。

会话一:

SQL> INSERT INTO T_MV VALUES (2, 'B');

已创建 1 行。

SQL> DELETE T_MV WHERE ID = 2;

已删除 1 行。

SQL> COMMIT;

提交完成。

会话二:

SQL2> EXEC DBMS_MVIEW.REFRESH('MV_T_MV')
BEGIN DBMS_MVIEW.REFRESH('MV_T_MV'); END;

* 1 行出现错误:
ORA-12008:
实体化视图的刷新路径中存在错误

ORA-01008:
并非所有变量都已绑定
ORA-02063:
紧接着 line (起自 TESTRAC.US.ORACLE.COM)
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 2254
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 2460
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 2429
ORA-06512:
line 1

出现这个错误的主要原因是由于设置了CURSOR_SHARING的值等于SIMILAR

查询了一下metalink发现10.2.0.3上和CURSOR_SHARING相关的问题还真不少,具体的描述可以参考:Doc ID: Note:457607.1。这个问题和Bug No. 5863277的描述最为接近。

解决问题的最简单的方法就是将CURSOR_SHARING设置为EXACT,否则需要打5863277的补丁。

Oracle将在11g中解决这个bug

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

转载于:http://blog.itpub.net/4227/viewspace-69503/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值