У меня есть командный файл, который запускает несколько файлов .sql с помощью команды sqlplus. Я сталкиваюсь с проблемой, когда один из файлов .sql зависает и заставляет меня завершить пакетную работу.
Я не обнаружил код ошибки, но я позволил пакетному файлу работать более 12 часов на этой части безуспешно. Когда я вручную запускаю этот файл .sql в sqldeveloper, он заканчивается примерно через 2 минуты. SQL-код - это оператор вставки, который вставляет менее 400 тыс. Строк с 5 столбцами. Первоначально этот код был частью большого файла .sql, в который было вставлено 4 оператора вставки в одну и ту же таблицу, но я разделил каждый оператор вставки в отдельный файл и шаг в пакетном файле, чтобы попытаться устранить проблему. Остальные 3 файла запускаются без проблем и во время, аналогичное запуску вручную.
Я попытался изменить порядок запуска и сделать этот код отдельным отдельным пакетным файлом, но это не помогло.
Код начинается с оператора объявления с несколькими переменными, а затем:
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 );
Для «SUBQUERIES» он имеет вложенные подзапросы, которые оставляются присоединенными и внутренне объединенными с другими подзапросами. Я считал, что этот шаг может быть слишком сложным и вызывать ошибку, но не уверен.
Завершает IF-THEN оператором COMMIT, после которого следует:
ELSE
NULL;
END IF;
END;
Единственное, что изменяется между 4 файлами - это операторы вставки. Как устранить неполадки, чтобы выяснить, что вызывает их зависание в командном файле, а не в sqldeveloper.