При каких обстоятельствах Oracle 11g с Jython JDBC не может вернуть * все * поля из запроса? - PullRequest
0 голосов
/ 05 января 2019

Мы пытаемся отладить прерывистую, непоследовательную и (пока что) ненадежно повторяемую ошибку при получении базы данных.

Мы загружаем и обрабатываем сотни миллионов строк данных.

Мы запрашиваем Oracle 11g через Jython и извлекаем 100 строк за раз из запроса с помощью этой команды:

  rows = cur.fetchmany(100)

Запрос указывает имя каждого столбца, который мы хотим получить, как в этом шаблоне:

 SELECT person_id, encounter_id, last_name, first_name, age 

Как правило, в файле, который мы получаем, есть все нужные строки. Как это:

 12341 | 432341 | Smith | Jack | 75

Но иногда мы получаем ошибку, и в некоторых строках пропускаются несколько значений, подобных этому:

 12341 | 432341 | Smith 

Наиболее необычно, если мы повторно запустим наш точно такой же код , ошибка извлечения базы данных исчезнет, ​​и все пропущенные значения будут записаны.

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

Что может привести к таким пропущенным значениям? Это известное поведение, если база данных перегружена - или известная ошибка в перегруженных соединениях JDBC?

Как мы можем отладить причину этого?

...