!本地库存储过程A中调用远程库的存储过程B,B过程中执行更新或插入语句,对自己库(远程的库)操作,COMMIT时发生异常:ORA-02064: 不支持分布式操作如何解决????着急啊!!!

解决方案 »

  1.   

    COMMIT 是远程存储过程中的,提交的是远程过程自己更新自己的表
    远程过程B是加在PACKAGE里的,然后PACKAGE建立了同义词,本地库通过同义词访问的远程库B过程,我刚才调试了一下,能不能是他们给的用来调用过程的用户权限不够呢?
      

  2.   

    权限够,可以更新的,就是不好使,COMMIT时发生异常;
    返回ORA-02064: 不支持分布式操作
    怎么办啊,我要疯了!
      

  3.   

    这个问题好像已经很久了啊。
    今天我也碰到了,对于出现这样的情况,主要是由于本地存储过程调用远程存储过程的时候,远程存储过程中使用了commit或者rollback。这样就产生了分布式事务的问题。   主存储过程调用子存储过程时,需要将commit或者rollback放置在主过程中,如果放在子过程中就会出错。
      

  4.   

    这种情况可以通过建立自主事务过程解决,把远程数据库过程
    CREATE [OR REPLACE] PROCEDURE procedure_name (参数)IS | AS[PRAGMA AUTONOMOUS_TRANACTION;]  --声明自主事务处理。
    之后在里面都可以执行commit或rollback,
    这时的事务范围仅在过程内
      

  5.   

    ls说的没错(tranaction少了个s)