甲VB 6程序正在处理的记录和在临时表中插入,则这些记录是从该临时表来实际的表移动时实际作业之前的Oracle并行查询返回完成
connection.Execute "INSERT INTO MAIN_TABLE SELECT * FROM TEMP_TABLE"
临时表随后当记录移动时截断
connection.Execute "TRUNCATE TABLE TEMP_TABLE"
这是工作正常,直到我使用PARALLEL提示INSERT查询。我收到此错误的TRUNCATE
ORA-00054:资源忙,并与指定NOWAIT或超时 收购过期
它看起来对我说,在完成工作之前,并行查询返回和truncate命令发出造成锁定。
我检查了如下插入的记录数,发现它比记录临时表
connection.Execute "INSERT /*+ PARALLEL */ INTO MAIN_TABLE SELECT * FROM TEMP_TABLE", recordsAffected
数量远不如有没有办法等待INSERT完成?
什么是您的连接字符串?你能指定更长的超时时间吗? – dbmitch
做一个'Delete'而不是'Truncate'。但如果这只是一个临时表,为什么你需要删除呢? '在提交{删除| PRESERVE} ROWS'将在每次提交|后清空表格会话。 – topshot
@dbmitch它不是关于TIMEOUT,而是connection.Execute返回,这会导致下一个查询在第一个查询被执行时仍然处于执行状态 – bjan