通过 pl/sql developer 工具通过DBLINK去查询一个表。为什么commit,rollback按钮会被激活。怎么去解决呢?

解决方案 »

  1.   

    这个是因为 DBLINK 会起一个新的事务处理的。 所以哪怕你是SELECT ROLLBACK和COMMIT都会亮的。 
    每次使用db_link查询时释放连接,调用dbms_session包中的关闭函数即可
        例:dbms_session.close_database_link(CONN_MY_LINK);
          或使用dblink的时候,即使是select文也要进行commit,或者是rollback,
          否则时间长了会阻碍其他进程。
      

  2.   


    是本地数据库的事务加上set transaction read only;
      

  3.   

      如果使用dblink,我们需要及时显示的关闭dblink。以下提供两种方式,因为并不会在你建立的以后就自动的关闭和远程服务器建立的session,如果session太多,会0.+造成查询失败
    alter session close database link <dblink_name>;
    dbms_session.close_database_link(<dblink_name>);
      

  4.   


    你的程序是JAVA或者其他,不都一样,可以写个存储过程,然后用动态sql实现5楼的显示关闭