Настройте размер выборки Oracle из domain.xml или persistence.xml.

У меня есть приложение JavaEE, работающее на Payara 5 (начальный выпуск), и я пытаюсь настроить размер выборки драйвера JDBC Oracle (версия 12.1.0.1.0). Я могу изменить размер выборки для отдельных запросов с помощью подсказки запроса, однако я не знаю, как установить значение размера выборки по умолчанию для всего приложения. Согласно документации Oracle, этого можно добиться, установив свойство defaultRowPrefetch JDBC, но я не вижу способа установить это из domain.xml или persistence.xml. Не сработало следующее:

  • настройка свойства eclipselink.jdbc.property.defaultRowPrefetch в файле persistence.xml не влияет
  • настройка свойства connectionAttributes со значением ;defaultRowPrefetch=100 или :100 в пуле соединений также не влияет
  • настройка свойства connectionProperties в пуле вызывает различные исключения при запуске - я пробовал другой синтаксис из разных ответов SO для значения свойства, но это только изменило тип исключения, которое я получил

Каким будет правильный способ настроить размер выборки по умолчанию?


person l4mpi    schedule 10.12.2019    source источник
comment
Я только что добавил -Doracle.jdbc.defaultRowPrefetch=N к параметрам запуска JVM Apache Drill, и я думаю, что это помогло. Моя проблема со скоростью передачи больших результатов с тех пор исчезла, во всяком случае.   -  person Dzamo Norton    schedule 17.05.2020


Ответы (1)


Согласно этой странице [1] это не работает только по конфигурации.

Вы не можете установить defaultRowPrefetch в качестве свойства JVM. Чтобы это работало, его нужно было бы назвать oracle.jdbc.defaultRowPrefetch. Вы можете использовать это свойство, только загрузив его в объект Properties в коде, а затем вызвав getConnection с объектом Properties.

Причина:

defaultRowPrefetch — это свойство соединения, а не источника данных.

Может быть, если вы нашли правильное место в исходном коде в Payara, которое действительно вызывает getConnection(), вы можете проверить, есть ли возможность передать это через domain.xml.

[1] https://www.ibm.com/support/pages/configuring-defaultrowprefetch-oracle-jdbc-driver

person Christoph John    schedule 10.12.2019
comment
Спасибо за ответ, но эта ссылка кажется довольно специфичной для веб-сферы. Согласно документации Oracle, я должен иметь возможность настроить его с помощью метода setConnectionProperties драйвера JDBC, и я могу передать что-то этому методу, установив свойство connectionProperties пула, но это вызывает исключение (поскольку метод ожидает объект Properties, а стеклянная рыба, похоже, передает строку или ноль независимо от того, что я делаю). Вывод о том, что это невозможно сделать, может быть правильным, но я бы не стал рассматривать ссылку IBM как доказательство этого... - person l4mpi; 10.12.2019
comment
Есть ли трассировка стека исключений? Если да, то можете выложить? - person Christoph John; 10.12.2019
comment
Я получаю разные трассировки стека в зависимости от того, как я пытаюсь установить значение, но ни одно из них не имеет значения. За value=";defaultRowPrefetch=100" я получаю ResourceException: Arguments are wrong for the method : setConnectionProperties; что, как я предполагаю, связано с тем, что payara пытается передать аргумент String методу, который принимает объект Properties. Попытка опустить атрибут value и использовать пружинный синтаксис с подэлементами props приводит к сообщению error.creating.jdbc.pool, за которым следует NameNotFoundException для поиска пула. - person l4mpi; 10.12.2019
comment
Почему вы ставите точку с запятой перед свойством? Вы также пытались установить свойства через веб-консоль администратора? - person Christoph John; 11.12.2019
comment
Начальная точка с запятой взята из таких примеров, как свойство connectionAttributes в пуле таймеров, где пары ключ-значение передаются в значении свойства; его отсутствие не имеет значения. Веб-консоль администратора бесполезна, так как она имеет только поле String для значения, и установка свойства там аналогична созданию элемента <property> с соответствующими атрибутами name и value вручную. - person l4mpi; 11.12.2019