Я пытаюсь перейти на Oracle.ManagedDataAcess из неуправляемой версии и получать рандомы ORA-12570 TNS: сбой чтения с пакетом.
Я не знаю, почему эта ошибка начинается, но как только она начинается, каждый последующий запрос дает ту же ошибку в течение 10-30 минут, затем снова работает еще 10-30 минут и т.д.
Таким образом, это случайный случай последующих сбоев в течение некоторого времени, а затем последующий успех
Уже пробовал много вещей, чтобы возобновить:
Среда:
- Oracle.ManagedDataAcess версии 12.1.2400 (4.121.2.20150926) (nuget) (на сервере не установлена ссылка gac, которая может переопределить версию bin)
- Oracle Server Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
- Windows 2012 (Windows Update ok)
Проверено:
- Брандмауэр: это не проблема межсетевого экрана.
- Ошибка машины: та же проблема возникает на моей машине, Azure WebApp и экземпляре AWS EC2
- Вмешательство: отсутствует работающий сниффер, прозрачный прокси и т.д.
- Шифрование: я не использую какое-либо шифрование (если только по умолчанию не установлено что-то, что я не знаю)
- Строка соединений: та же строка соединения отлично работает с неуправляемой версией
Дополнительная информация:
- Это производственная база данных, она очень стабильна.
- Приложение скомпилировано для anycpu, пул приложений IIS ограничен 64 битами
- Я тестирую точно такой же запрос каждый раз (просто обновление на URL-адресе get ws, webapi), поэтому оно не связано с форматом данных
Конфигурация:
Сервер sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Приложение Web.config
<connectionStrings>
<add name="XXXX" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.com)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xxx)));User Id=xxxxx;Password=xxxxx;" />
</connectionStrings>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<!--<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />-->
</dataSources>
<settings>
<setting name="SQLNET.AUTHENTICATION_SERVICES" value="NONE"/> <!--NTS-->
<setting name="sqlnet.crypto_checksum_server" value="rejected"/>
<setting name="sqlnet.crypto_checksum_client" value="rejected"/>
<setting name="SQLNET.ENCRYPTION_SERVER" value="rejected"/>
</settings>
</version>
</oracle.manageddataaccess.client>
Некоторые ссылки:
https://community.oracle.com/thread/3634263?start=0&tstart=0
Управляемый драйвер ODP.net выбрасывает ORA-12570: Сетевой сеанс: Неожиданная ошибка чтения пакета
Управляемый клиент Oracle с расширенными параметрами безопасности Oracle
Ошибка ODP.NET в IIS: ORA-12357 Сетевой сеанс Окончание файла
ОБНОВЛЕНИЕ 1
После объединения изменений (как я описал здесь как ответ), я решил опубликовать версию, чтобы сделать настоящий тест. После 1 дня и пользователей, жалующихся на производительность, я получил еще одну ошибку: значение не может быть нулевым. Имя параметра: byteArray
Я изменил ссылку на неуправляемую версию, и все было хорошо снова, быстрее, без ошибок bytearray, лучшего управления пулами.
Итак, я просто откажу от управляемой версии на данный момент, возможно, я попробую еще раз в следующей версии Oracle.
Здесь некоторые ссылки на эту новую ошибку, как вы можете видеть, выглядят как еще одна ошибка (все равно без ответа).
https://community.oracle.com/thread/3676588?start=0&tstart=0
EF + ODP.NET + CLOB = Значение не может быть Null - Имя параметра: byteArray?
До сих пор причины не использовать:
- Ошибка управления пулом
- CLOB null/not null bytearray errors
- Снижение производительности, вероятно, связано с ошибкой объединения