Oracle 11g解决Oracle 10g中bug
2018-06-11 来源:
重现一下错误。
会话一:
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。
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:调查:一半的Wi-Fi连接不安全
下一篇:赛门铁克11月垃圾邮件报告