客户端如何取消活动的Oracle查询?

时间:2012-07-19 18:31:47

标签: sql oracle

我有一个活跃的Oracle操作,这需要太长时间。如何在不终止会话的情况下以编程方式取消操作?

1 个答案:

答案 0 :(得分:4)

OCI库提供此功能。典型的例子是客户在长时间运行期间按下control-C,重新控制程序 信号处理程序,然后取消长时间运行的操作。

在内部,客户端将通过TCP连接发送紧急消息, 并且服务器端将通过SIGURG处理程序处理终止。该 客户端操作将获得此状态。

ORA-01013 ("user requested cancel of current operation")
  • C / C ++:

OCIBreak()

http://docs.oracle.com/cd/B10500_01/appdev.920/a96584/oci16m96.htm

http://docs.oracle.com/cd/A97630_01/appdev.920/a96584/oci02bas.htm (在“取消通话”)

  • Python(cx_Oracle):

conn.cancel()

http://cx-oracle.sourceforge.net/html/connection.html