当前位置:首页 > 技术与方案 > 数据库技术相关

Oracle 11g解决Oracle 10g中bug

(2012-09-26 14:45:00)

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

重现一下错误。

会话一:

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 行。

 

 

 

 

 

 

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。

 

更多
关闭窗口 打印 
网站首页    -    联系我们    -   收藏本站    -    网站地图                                                               客户服务热线:0571-85023000
本网站所有网页信息已申请知识产权和著作权保护,版权归四海光纤公司所有,未经授权禁止任何人复制或镜像,违者必究。
公司主营:杭州光纤光缆视频会议系统,是专业的通信网络工程、视频会议系统建设专家

中华人民共和国备案号:浙ICP备10018243号