Обновить 62 миллиона записей в Oracle

Мне нужно обновить 62 миллиона записей в производственной базе данных. Это простое заявление об обновлении.

Это довольно большой стол.

Это общее количество записей в этой таблице = 1251797271.

Могу ли я использовать метод массового сбора для обновления записей?

Пожалуйста, дайте мне знать, что является лучшим подходом.

оператор обновления выглядит так,

UPDATE CASHFLOW_HIST
SET EFF_DT = '03-JAN-2019'
WHERE EFF_DT= '01-JAN-2019'

Примечание. Я не ищу этот метод, создайте новую таблицу, затем удалите исходную таблицу и переименуйте новую таблицу в исходную вместо того, чтобы обновлять таблицу с миллионами записей.


person Shivaram    schedule 24.07.2019    source источник
comment
Что не так с выполнением единственного заявления об обновлении, которое вы показали? (Хотя если предположить, что столбец eff_dt имеет тип данных DATE, вы должны использовать фактические даты вместо строк, что приведет к неявным преобразованиям на основе настроек NLS; и вы уверены, что значения eff_dt не имеют времени, отличного от полуночи?)   -  person Alex Poole    schedule 24.07.2019
comment
Просто запустите обновление. Сегодня я выполнил аналогичную задачу, обновил 5,5 миллиона строк за 45 секунд. Я знаю, наши таблицы не одинаковы, наши базы данных и серверы разные, но такое простое обновление должно быть простым.   -  person Littlefoot    schedule 24.07.2019
comment
Лучше использовать DATE литералы: DATE '2019-01-03' и DATE '2019-01-01'   -  person Kaushik Nayak    schedule 24.07.2019
comment
@KaushikNayak Спасибо. Я попробую этот.   -  person Shivaram    schedule 24.07.2019
comment
@AlexPoole Поскольку это большая таблица, обновление выполнялось в течение 2 часов, хотя оно и не было завершено. Я думаю, что проблема может заключаться в неявном преобразовании.   -  person Shivaram    schedule 24.07.2019
comment
мониторинг выполнения обновлений строк и использования UNDO в табличном пространстве. stackoverflow.com/questions/54215043/   -  person Dmitry Demin    schedule 24.07.2019