我有一个PL / SQL程序,它通过透明网关查询AS400数据库.有时AS400不响应查询(可能是网络问题)并且PL / SQL程序挂起.
是否有任何方法可以为Oracle查询设置超时,以便在经过一定时间后异常上升?
解决方法
您是否尝试在AS400透明网关初始化文件中设置HS_FDS_CONNECT_PROPERTIES参数?
超时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 Resource Manager创建资源组和资源配置文件 – 这使您可以对各个会话的资源进行细粒度控制.
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
这是在Enterprise Manager中更容易使用的功能之一,但在下面给出了一个快速的PL / SQL示例:
http://www.dba-oracle.com/job_scheduling/resource_manager.htm