Я использую Oracle 11g.Столбцовый стол для большего количества транзакций
Я пытаюсь реализовать сценарий одновременной загрузки в таблицу с восстановлением индекса. У меня мало потоков, которые пытаются реализовать этот сценарий: 1. загрузить данные из источника, 2. преобразовать данные, 3. отключить индекс таблицы DWH, 4. загружать данные в DWH, 5. rebuild индекс на таблице DWH. Я выключаю и восстанавливаю индексы для лучшей производительности, бывают ситуации, когда один поток перестраивает индекс, а другой пытается отключить его. То, что мне нужно сделать, это разместить некоторую блокировку между точками 2 и 3, которые будут выпущены после точки 5.
Недостаточно механизма Oracle, построенного в LOCK TABLE
, поскольку блокировка освобождается по окончании транзакции, поэтому любой ALTER
Заявление освобождает замок.
Вопрос в том, как решить проблему?
Это потребует довольно серьезных изменений в текущей архитектуре, мне нужно решить эту проблему, используя блокировки. – WojtusJ
Можете ли вы создать таблицу состояний. Некоторые процедуры/SQL не будут выполняться, если предыдущий шаг еще не закончен. Возможно, у вас есть таблица с журналами? Все будет хорошо. –
Вы можете создавать задания динамически, не мешая «архитектуре». 1) создать работу. 2) запустите его. 3) Бросьте задание. –