不是bug的bug?

我们先看如下的一系列执行:

SQL> create or replace view v_bmw_pay_online_new as
  2  select *
  3  from taobao.bmw_pay_online_new@lnk_db215;
 
SQL> create or replace procedure sp_v_test is
  2  v_id number;
  3  begin
  4     select id into v_id from v_bmw_pay_online_new where id=1;
  5  end;
  6  /

Procedure created

SQL> create or replace synonym s_bmw_pay_online_new
  2        for taobao.bmw_pay_online_new@lnk_db215;

Synonym created

SQL> create or replace procedure sp_s_test is
  2  v_id number;
  3  begin
  4     select id into v_id from s_bmw_pay_online_new where id=1;
  5  end;
  6  /

Warning: Procedure created with compilation errors

SQL> show error
Errors for PROCEDURE TAOBAO.SP_S_TEST:

LINE/COL ERROR
-------- ------------------------------------------------------------------------------------
4/29     PL/SQL: ORA-00600: 内部错误代码,参数: [17069], [0x57E77854], [], [], [], [], [], []
4/4      PL/SQL: SQL Statement ignored


可以看到,在同样一个远程对象上面,我可以通过创建视图,然后在该视图上创建存储过程,是没有任何问题的,但是如果我对该远程操作做一个同义词,再在同义词上创建存储过程,则报出了Ora-00600。跟踪也无果,看产生的日志文件也不能看出来什么,上metalink,搜索"ora-00600 17069",发现查出现的东西一大堆,大致是library cache错误,但是到底怎么会产生这个错误呢,online联系上一个oracle在线技术支持,聊了一会儿,问题是解决了,但是他就是不承认是bug,呵呵。

以下是聊天的总结:
ORA-00600 [17069] reorted on compiling a procedure.

Invalid lock in library cache.
Unable to pin the object and hence the Error.

"Failed to pin a library cache object after 50 attempts"

Clearing the shared memory will help to get rid of inconsistant information in memory which is causing the error.

The inconsistency was suspected to be in the remote site. But flushing the shared pool in remote location didnt help.
Tried recreation of the procedure after dropping and recreating the synonym in the local database. But the same failed.
Flushed the shared pool in local database abd successfully created the procedure.

你可能感兴趣的:(技术,library,compilation,sql,object,cache,database)