Получение исключения при одновременном использовании 2 сеансов чайника Pentaho для загрузки двух разных CSV-файлов в 2 разные таблицы с использованием sqlldr - PullRequest
0 голосов
/ 18 октября 2019

Я получаю ниже исключения в консоли, когда я вызываю два разных преобразования для загрузки двух разных наборов CSV-файлов в две разные таблицы. Между этими двумя задачами нет ничего общего. Я выполняю kitchen.bat из двух разных консолей для вызова этих преобразований.

Одна из этих двух систем чаще всего не работает при совместной работе, хотя не всегда после многократного тестирования этого сценария. Запуск их по одному не дает ошибок и выполняется успешно. Что вызывает это исключение?

tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR>SQL*Loader-951: Error calling once/load initialization
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR>ORA-00604: error occurred at recursive SQL level 1
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR>ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Error in step, asking everyone to stop because of:
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - IO exception occured: The pipe has been ended
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - The pipe has been ended
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Error while closing output
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : java.io.IOException: The pipe is being closed
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.io.FileOutputStream.writeBytes(Native Method)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.io.FileOutputStream.write(FileOutputStream.java:345)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:316)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:149)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.io.OutputStreamWriter.close(OutputStreamWriter.java:233)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.io.BufferedWriter.close(BufferedWriter.java:266)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at org.pentaho.di.trans.steps.orabulkloader.OraBulkDataOutput.close(OraBulkDataOutput.java:95)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at org.pentaho.di.trans.steps.orabulkloader.OraBulkLoader.dispose(OraBulkLoader.java:598)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at org.pentaho.di.trans.step.RunThread.run(RunThread.java:96)
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 -                at java.lang.Thread.run(Thread.java:745)
tasklist: 2019/10/04 14:27:51 - SOME_FILE_INPUT.0 - Finished processing (I=10058, O=0, R=5, W=10056, U=0, E=0)
tasklist: 2019/10/04 14:27:51 - SOME_TRANSFORMATION_NAME - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Errors detected!
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - Exit Value of sqlldr: 1
tasklist: 2019/10/04 14:27:51 - SOME_STEP_NAME.0 - Finished processing (I=0, O=54, R=55, W=54, U=0, E=1)
tasklist: 2019/10/04 14:27:51 - SOME_TRANSFORMATION_NAME - Transformation detected one or more steps with errors.
tasklist: 2019/10/04 14:27:51 - SOME_TRANSFORMATION_NAME - Transformation is killing the other steps!
tasklist: 2019/10/04 14:27:51 - SOME_TRANSFORMATION_NAME - ERROR (version 5.4.0.1-130, build 1 from 2015-06-14_12-34-55 by buildguy) : Errors detected!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Использование уникального управляющего файла в каждом экземпляре sqlldr решило проблему.

Параллельное выполнение sqlldrs из разных заданий с одним и тем же управляющим файлом приводило к тому, что один экземпляр sqlldr перезаписывал данные в управляющем файле, ранее записанные другим. экземпляр sqlldr, таким образом вызывая ошибки и блокировку.

0 голосов
/ 18 октября 2019

Похоже, что загрузчик sql блокирует больше, чем вы ожидаете, что приводит к превышению времени ожидания для других сеансов.

Убедитесь, что в таблицах нет внешних ключей, соединяющих их. Если это не так, загрузчик sql может заблокировать всю схему или другой ресурс.

Проверьте это тоже: https://martincarstenbach.wordpress.com/2019/07/25/sqlldr-direct-path-loads-and-concurrency-in-12-1-and-earlier/

...