Oracle: 设置查询超时时间

4

我有一个PL/SQL程序,通过透明网关对AS400数据库进行查询。有时候AS400无法响应查询(可能是网络问题),导致PL/SQL程序挂起。

是否有一种方法可以设置Oracle查询的超时时间,以便在经过一定时间后引发异常?


请查看http://linuxtechres.blogspot.com/2012/10/how-to-limit-data-warehouse-db-query-to.html 以了解如何限制数据仓库数据库查询结果。 - Vadzim
1个回答

4

您尝试过在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文档在这方面真的很好-首先,请阅读以下内容: 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 这是那些在企业管理器中更容易使用的功能之一,但是在以下PL / SQL示例中提供了快速的示例: http://www.dba-oracle.com/job_scheduling/resource_manager.htm

我该如何在透明网关配置中设置这些参数? - Telcontar
是的 - 没错。我不知道AS400文件的名称。对于SQL Server,它将在inittg4msql.ora中,因此我猜类似于inittg4as400.ora。 - Nick Pierpoint
我没有DBA权限,我已经通知了DBA您的解决方案,当他实施它时,我会告诉您并接受答案。无论如何,我在一个旧的Oracle数据库上拥有DBA权限,我将尝试启动系统(它已停止),并自己尝试您的解决方案。 - Telcontar
我在旧系统上尝试过,但无效。我认为问题可能是我们在旧系统中使用HS_ODBC通过ODBC连接到AS400,而您的参数可能仅适用于透明网关。等现在的数据库管理员(有点懒...)尝试后我再通知您。 - Telcontar
非常感谢,我会学习这些链接和文档,我们使用的是Oracle 9.2(明年我们将迁移到Oracle 11)。我有Oracle 9.2库,我会查看其中的内容,因为版本之间可能会有变化。我接受你的答案,这是我能做的最少的。 - Telcontar
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接