JMeter: Как бороться с неявным результатом в Oracle 12C? ORA-20999: Oracle ERROR :: ORA-29478: неявный результат не может быть возвращен с помощью этого оператора - PullRequest
0 голосов
/ 14 января 2019

При вызове хранимой процедуры через JMeter в базе данных Oracle я получаю следующую ошибку:
ORA-20999: Oracle ERROR:: ORA-29478: Implicit result cannot be returned through this statement

У меня нет 10 репутации, поэтому я не могу публиковать изображения. Я опишу конфигурацию.

Это моя информация о соединении JDBC:

Max Number of Connections:0  
Max Wait (ms):10000  
Time Between Eviction Runs (ms): 60000  
Auto Commit: True  
Transaction Isolation:TRANSACTION_READ_COMMITTED  
Test While Idle: True  
Soft Min Evictable Idle Time (ms): 5000  
Validation Query: select 1 from dual  
JDBC Driver Class: oracle.jdbc.OracleDriver  

Это моя информация об образце запросов JDBC:

Query Type: Callable Statement  
Procedure: call office_hierarchy() 

Это ошибка, которую я получаю:

ORA-20999: Oracle ERROR:: ORA-29478: Implicit result cannot be returned through this statement  
ORA-06512: at 'XXXX.UTILS", line 2019  
ORA-06512: at "XXXX.OFFICE_HIERARCHY", line 39  

Я специально заменил своего пользователя на XXXX.

Я настраиваю тестовый скрипт JMeter, в котором я вызываю хранимые процедуры в нашей базе данных Oracle. База данных Oracle находится на версии 12C. Я использую последнюю версию ojdbc8.jar с веб-сайта Oracle. Я также пробовал ojdbc6.jar и ojdbc7.jar, также с веб-сайта Oracle. У меня Jmeter на 5.0 r1840935. Моя версия Java 1.8.0_191.

Я подтвердил, что соединение с базой данных может быть установлено, для запроса на выбор можно сделать без проблем.

Неявные результаты (или неявные курсоры) были введены в Oracle 12c. Кто-нибудь сталкивался с этой проблемой до сих пор? Должен ли я что-то изменить в способе вызова хранимой процедуры? Или это все еще возможно проблема с драйверами? Или же JMeter пока не поддерживает эту функцию?

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Похоже, вы все еще используете 11g версию драйвера ojdbc.
Проверьте user.classpath значение свойства в JMETER_HOME/bin/user.properties, чтобы убедиться, что вы правильно используете версию ojdbc7.jar для Oracle 12c в JMETER_HOME/lib

0 голосов
/ 15 января 2019

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

Итак, мой оригинальный синтаксис был:

call _stored_procedure_()  
call office_hierarchy()

Однако правильный синтаксис:

BEGIN  
_stored_procedure_();  
END;  

BEGIN  
office_hierarchy();  
END;  

Это решит эту проблему, JMeter теперь возвращает наборы результатов без каких-либо проблем.

Спасибо всем за вашу помощь. Я приму ответ моего владельца через 48 часов согласно правилам сайта. Другие входные данные всегда приветствуются!

0 голосов
/ 14 января 2019
  1. Вам необходимо скачать ojdbc7.jar для Oracle 12c и поместить его в JMeter Classpath . Удалите все предыдущие драйверы JDBC и перезапустите JMeter
  2. Обязательно используйте Callable Statement в качестве Типа запроса в JDBC Request sampler

    enter image description here

  3. Вам также потребуется изменить «Запрос проверки» на select 1 from dual в конфигурации соединения JDBC

    enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...