Oracle напрямую загружает INSERT через JDBC?
Можно ли сделать INSERT с прямой загрузкой в Oracle через JDBC?
В настоящее время я использую пакетные подготовленные операторы (через Spring JDBC), есть ли способ сделать так, чтобы они обходили журналы повторов в таблице NOLOGGING?
Это с Oracle 11g.
5 ответов
Есть подсказка APPEND_VALUES, введенная в 11gR2 для вставок с прямым путем с INSERT...VALUES.
Нет экземпляра 11gR2, чтобы проверить, работает ли он с пакетными вставками JDBC. Хотя стоит попробовать.
Прямая вставка пути возможна только в insert into x as select * from y
сценарий. Это можно сделать с помощью jdbc, без проблем. Это не может быть сделано с помощью вставки и значений. Этого также нельзя сделать, когда база данных находится в режиме принудительного ведения журнала. В большинстве случаев, когда резервная база данных подключена, основная база данных будет в режиме принудительного ведения журнала.
Как отметил Гэри Майерс, начиная с 11gR2 есть подсказка APPEND_VALUES. Как и в случае со "старой" подсказкой к добавлению, ее следует использовать только для массовых вставок.
Надеюсь, это поможет, Рональд.
Мне удалось использовать подсказку APPEND_VALUES с Oracle 12c с пакетной обработкой JDBC. Я подтвердил, что прямая вставка пути произошла через менеджер Oracle Enterprise, где план объяснения показывает Load As Select
Есть ли
insert /*+ append */ into desttab select * from srctab
не работает в JDBC?
Использование:
INSERT /*+ APPEND_VALUES */ INTO table_name (column1, column2) values (?,?);