Вызов Oracle из C #: обнаружена ошибка Oracle ORA-12571

#c# #oracle #.net-core

#c# #Oracle #.net-ядро

Вопрос:

Я использую Oracle.Управляемый доступ к данным.Ядро для доступа к базе данных Oracle из C #. Цель состоит в том, чтобы прочитать довольно большой набор данных — он содержит около 500 тыс. записей. Я делаю это с помощью программы чтения данных:

 await using var reader = await command.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
  // Do Stuff
}
 

С локальным сервером все работает нормально. Но когда я выполняю ее на удаленном сервере, через некоторое время (около 1 минуты) Я получаю

Система.Исключение: ‘Oracle.Управляемый доступ к данным.Клиент.Исключение OracleException (0x80004005): обнаружена ошибка Oracle ORA-12571 —> OracleInternal.Сеть.Исключение NetworkException (0x80004005): обнаружена ошибка Oracle ORA-12571 —> System.Net.Sockets.Исключение SocketException (10053): установленное соединение было прервано программным обеспечением на вашем хост-компьютере. в OracleInternal.Сеть.TcpTransportAdapter.Отправьте (или создайте OB) в OracleInternal.Сеть.TcpTransportAdapter.Отправьте (или создайте OB) в OracleInternal.Сеть.Поток записи.Write(OraBuf OB)

Это какая-то проблема с таймаутом? Кто-нибудь знает, как это решить? Может быть, можно читать данные не через reader, а целиком?

Что я пробовал: OracleConnection имеет параметры KeepAlive, keepAliveTime — ни один из них не помог. OracleCommand имеет параметр CommandTimeout — также не помогает.

Комментарии:

1. что делать, если вы выполняете SQL вне C # — например, из sqlplus?