zoukankan      html  css  js  c++  java
  • 过度使用DBLINK带来的问题

    通过创建DBLINK和同义词把一个数据库拆成两个数据库,所带来的问题如下:

    ORA-02068: following severe error from EDUSMS

    ORA-03113: end-of-file on communication channel

    原因:

    由于大量使用dblink远程连接未正常释放所致,也可能是bug所致。

    那么解决办法就是自然而然想到手动关闭本地数据库session的中DBlink。

    使用ALTER SESSION CLOSE DATABASE LINK dblink_name或者DBMS_SESSION.CLOSE_DATABASE_LINK('dblink_name')语句来手动关闭远程dblink session.,

    并且关闭的时候:需要先commit或者rollback,即使是select语句也需要的。

    但是又衍生出来一些问题

    -2080 PROC_1 ORA-02080: database link is in use

    -2054 PROC_2 ORA-02054: transaction 19.5.1746719 in-doubt ORA-01013: user requested cancel of current operationORA-06512: at "EDU.PROC_2", line 421

    -2050 ****ora-02050: transaction 29.16.354514 rolled back, some remote DBs may be in-doubt ORA-01013: user requested cancel of current operationORA-06512: at "EDU.PROC_CS_REC_INFO", line 407

    -1591 PROC_MSGBOARD_SAVE:ORA-01591: lock held by in-doubt distributed transaction 11.18.2527897ORA-06512: at "EDU.PROC_MSGBOARD_SAVE", line 576

    还没查出来具体的业务上实现的原因,

    总而言之

    最好不要大量使用dblink方式实时远程取数据。

    频繁对远程数据库创建连接,释放连接会有较大开销,特别是OLTP类数据库。

    此类远程dblink连接session,如本地session不退出或手动释放,此类session是不会及时自动释放的。大量耗用远程数据库资源。

    占用网络带宽。

    触发bug,此类bug很多。

    使用dblink嵌套dblink的访问方式,更是离谱。性能会非常糟糕,而且不稳定。


     


     

  • 相关阅读:
    Freemaker Replace函数的正则表达式运用
    [Android]使用Spring for Android改善数据交互流程
    [Freemarker]自定义时间戳函数
    [jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证
    [Javascript]网页链接加上时间戳防止串用户
    支付系统设计
    java设计模式-抽象工厂模式
    IDEA解决maven多module出现多root的问题
    java设计模式-工厂方法模式
    java设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/gracejiang/p/5890440.html
Copyright © 2011-2022 走看看