服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > oracle错误库 > 查看文档

oracle 11g解决oracle 10g中bug

  在oracle10.2.0.3下,如果设置了cursor_sharing为similar,则可能造成远端数据库物化视图刷新失败……

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

  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。

扫描关注微信公众号