在sqldeveloper中运行但放入批处理文件时从未完成的.sql代码的疑难解答
我有一个批处理文件,它使用sqlplus命令运行多个.sql文件。我遇到一个问题,其中一个.sql文件挂起,导致我退出批处理作业 我没有遇到错误代码,但我让批处理文件在这一部分上运行了12个多小时,但没有成功。当我在sqldeveloper中手动运行这个.sql文件时,它大约在2分钟内完成。sql代码是一个insert语句,它插入的行数少于400k,包含5列。最初,这段代码是一个更大的.sql文件的一部分,该文件有4个insert语句插入到同一个表中,但我将每个insert语句分离到自己的文件中,并在批处理文件中执行步骤以尝试修复该问题。其他3个文件运行时没有问题,运行时间与手动运行类似 我尝试过改变它的运行顺序,并将此代码作为自己的单独批处理文件,但没有任何帮助 代码以包含多个变量的declare语句开始,然后执行以下操作:在sqldeveloper中运行但放入批处理文件时从未完成的.sql代码的疑难解答,sql,oracle,batch-file,cmd,oracle-sqldeveloper,Sql,Oracle,Batch File,Cmd,Oracle Sqldeveloper,我有一个批处理文件,它使用sqlplus命令运行多个.sql文件。我遇到一个问题,其中一个.sql文件挂起,导致我退出批处理作业 我没有遇到错误代码,但我让批处理文件在这一部分上运行了12个多小时,但没有成功。当我在sqldeveloper中手动运行这个.sql文件时,它大约在2分钟内完成。sql代码是一个insert语句,它插入的行数少于400k,包含5列。最初,这段代码是一个更大的.sql文件的一部分,该文件有4个insert语句插入到同一个表中,但我将每个insert语句分离到自己的文件中
BEGIN
SELECT VARIABLE INTO DECLARED VARIABLE
FROM TABLE;
etc...
它对批处理文件中的所有sql文件执行此操作。
然后它有一个IF语句(与其他sql文件具有相同的测试),后跟:
THEN
INSERT INTO TABLE (
SELECT VAR1,
VAR2,
CASE WHEN COLUMN1 IS NOT NULL AND COLUMN2 IN (VALUE)
THEN COLUMN1 || 'D' || RNK
ELSE COLUMN1
END AS VAR3
FROM( SUBQUERIES );
对于“子查询”,它有嵌套的子查询,这些子查询与其他子查询左连接和内连接。我认为这一步可能太复杂并导致错误,但不确定
它以COMMIT语句结束IF-THEN,后跟:
ELSE
NULL;
END IF;
END;
这4个文件之间唯一的变化是insert语句。如何对此进行故障排除,以找出是什么原因导致它挂起在批处理文件中,而不是在sqldeveloper中。它没有完成的原因之一,特别是如果它运行的时间比预期的长得多,可能是另一个会话阻止它完成。查询该问题的解决方案如下: 您还可以检查查询是否由于某种原因仍在运行。不过,如果您已经在sqldev中测试了完全相同的脚本,那么这似乎不太可能 此外,还可以删除
ELSE NULL
案例。它不执行任何操作,并且如果不需要ELSE
子句,则执行操作