大家好,我用一个package通过dblink去读和写另一个oracle数据库,每天下午4-5点钟总是出问题,现像是有时能正常访问,有时又访问不到,感觉好像是dblink时断时续,但这个同时,我用TOAD写sql通过dblink去访问同样的表,又每次都能成功,速度也可以.
在出问题的时候,我在调用这个package的web页面上抓到这几个异常:
oracle ODBC Ora ORA-00604:error occurred at recursive sql level 1
ORA-02046:distributed transaction already begun 
ORA-02062:preceding line from XXXXLlink(DBlink的名字)这个问题困扰我几个周了,请帮忙分析一下,这个程序运行几年了,以前都没有问题
对了,我这边的oracle以前是8i,最近升到了10g.谢谢各位!!

解决方案 »

  1.   

    ORA-02046这个是oracle内部错误,原因是有同一个会话没有完成,其操作还在数据缓冲区中,这时该会话并没有退出,在UNIX就是僵尸进程,WINDOWS下就是死进程,由ORACLE后台清理程序完成退出操作。你可以在SYS用户下查找该会话的SPID,然后KILL它,然后执行就可以了,也就是在另外的会话中执行该语句。做个sql trace
    Alter session set events '10046 trace name context forever, level 4';看看根本的recursive sql的问题是哪里