Я запускаю один SQL-запрос для извлечения записей из таблицы с несколькими потоками.Первоначально все потоки переходят в состояние НЕАКТИВНО, и постепенно он начинает переходить в состояние АКТИВНО.
Я создал раздел HASH для своей таблицы на основе loc.
Также я создал индекс для Item, loc столбцы.
select item || ',' || loc || ',' || stock_on_hand || ',' || on_order_qty || ',' || 0 || ',' || in_transit_qtyAS csv
from makro_m_oplcom_stg
where loc = ${loc} and ITEM_INV_IND = 0;
Когда я запускаю этот запрос в своей БД для одного местоположения, для извлечения записей требуется всего одна секунда, но когда я запускаю его из сценария оболочки в многопоточном режиме, я сталкиваюсь с сеансом, переходящим в НЕАКТИВНЫЙmode.
Это мой скрипт-обертка.В этом я вызываю другой сценарий оболочки, который имеет вышеупомянутый запрос.
while [ $thread -le $SLOTS ] do
sleep 1
LOG_MESSAGE "$pgm_name Started by batch_makro_oplcom_process for thread $thread out of $SLOTS by ${USER}"
( ksh $pgm_name.ksh $UP $SLOTS $thread
if [ $? -ne 0 ]; then
LOG_MESSAGE "$pgm_name failed for thread: $thread, check the $pgm_name error file."
exit 1
else
LOG_MESSAGE "$pgm_name executed successfully for thread: $thread." fi )
& let thread=thread+1
done