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 (?,?);
Другие вопросы по тегам