在oracle数据库中终止查询执行

时间:2014-04-09 13:57:22

标签: c# oracle ado.net odp.net

我有asp.net页面,允许用户在oracle数据库上运行select查询。然后结果在网页上显示为数据表。

由于长而深的查询执行,用户有时可能会输入对数据库造成严重影响的查询。

是否有可能为DB上的每个查询提及超时。如果查询运行时间超过指定时间,则必须在数据库上停止执行。

1 个答案:

答案 0 :(得分:0)

您可以在应用程序或数据库端解决此问题:

应用程序端:SQLQueryTimeout 您可以通常为驱动程序上的所有语句设置SQLQueryTimeout,或者为CommandMutitout单独设置某个命令。如果查询花费的时间比调用TRAP的时间长,那么您将获得一个可以处理的异常。

第二种可能性是为Oracle用户设置超时。如果您的Web应用程序通过共享用户(应该是)连接到数据库,您可以使用ALTER USER设置一个用户配置文件,该用户配置文件将强制执行MAX CPU LIMIT,这实际上是对所有SQL Statments发布的时间限制该用户。

第二种解决方案的优点在于数据库强制执行规则,因此您不必担心您的应用程序代码可能会错过一行......