我有一个活跃的Oracle操作,这需要太长时间。如何在不终止会话的情况下以编程方式取消操作?
答案 0 :(得分:4)
OCI库提供此功能。典型的例子是客户在长时间运行期间按下control-C,重新控制程序 信号处理程序,然后取消长时间运行的操作。
在内部,客户端将通过TCP连接发送紧急消息, 并且服务器端将通过SIGURG处理程序处理终止。该 客户端操作将获得此状态。
ORA-01013 ("user requested cancel of current operation")
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 (在“取消通话”)
conn.cancel()