各位大侠,两个不同的DB位于同一台Server上,有时候需要做的操作是一个DB需要用到另外一个的数据,我的做法是建一个DBLINK,然后透过DBLink取得需要的数据,但是有时候会报那个异常,有时候不会报,不知道上面原因,高手拍砖,以及如何解决,TKS!!

解决方案 »

  1.   

    这个是oracle内部错误,原因是有同一个会话没有完成,其操作还在数据缓冲区中,这时该会话并没有退出。
    可以查出它的spid,然后kill掉就可以了
      

  2.   

    我在网上搜的也是这么说的,关键是如何Kill掉,我不是DBA,而且这样的异常发生肯定是有原因的,如何避免??
      

  3.   

    SELECT s.username,s.osuser,s.sid,s.serial#,p.spid FROM v$session s,v$process p WHERE s.paddr = p.addr AND s.username IS NOT NULL;ALTER SYSTEM KILL SESSION 'sid,serial#';
      

  4.   

    alter system kill session 'sid,serial#'; 
      

  5.   

    ORA-02046: distributed transaction already begun 
    Cause: internal error or error in external transaction manager. A server session received a begin_tran RPC before finishing with a previous distributed tran.
     
    Action: none 
    建议:
    1. 检查下alert.log文件,看看里面有什么错误提示
    2. 用3楼的方法试试,最好用Toad或者PL/SQL developer,上面能直接看到对应的session和里面的信息,这样kill就不会出错了
    3. 删除dblink,重新创建一个看看.