代码之家  ›  专栏  ›  技术社区  ›  Telcontar

Oracle:设置查询超时

  •  4
  • Telcontar  · 技术社区  · 15 年前

    我有一个pl/sql程序,它通过透明网关对AS400数据库进行查询。有时AS400不响应查询(可能是网络问题),而PL/SQL程序挂起。

    是否有任何方法可以设置Oracle查询的超时,以便在经过一定时间后,异常会上升?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Nick Pierpoint    15 年前

    你试过设置 HS_FDS_CONNECT_PROPERTIES AS400透明网关初始化文件中的参数?

    超时2分钟:

    HS_FDS_CONNECT_PROPERTIES="timeout='120'"
    

    设置查询超时的另一个更通用的选项是创建 轮廓 并将其分配给运行查询的用户。

    资源配置文件可用于设置任何特定会话中所有类型使用的限制-一个可用的资源限制是连接时间。

    例如,您可以创建一个配置文件 as400_tg_profile 并为其分配最长2分钟的连接时间:

    create profile as400_tg_profile limit connect_time 2;
    

    …然后您可以将此配置文件分配给运行查询的用户:

    alter user as400_tg_user profile as400_tg_profile;
    

    创建概要文件有很多选项,有很多方法可以将概要文件分配给特定用户,因此您应该阅读文档。

    如果需要动态分配特定的资源限制,您还可以使用Oracle资源管理器创建资源组和资源配置文件—这使您可以对单个会话的资源进行细粒度控制。

    这个 Oracle documentation 这方面真的很好-首先,请阅读:

    http://www.oracle.com/technology/products/manageability/database/pdf/twp03/twp_oracle%20database%2010g%20resource%20manager.pdf

    有关详细信息:

    http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/dbrm.htm#ADMIN027

    这是EnterpriseManager中易于使用的功能之一,但下面给出了一个快速的PL/SQL示例:

    http://www.dba-oracle.com/job_scheduling/resource_manager.htm