При использовании Oracle.ManagedDataAccess (ODP.Net) я обнаружил, что файл TNS_NAMES.ora кэшируется, поэтому любые изменения в записи или в самом файле не вступят в силу до перезапуска приложения.Я нашел сообщение на сайте Сообщества Oracle, в котором говорится, что дело обстоит именно так, и должен быть параметр для удаления кэша, но в нем не указано, как называется параметр (https://community.oracle.com/thread/3961566). Любая помощь приветствуется.
Шаги для воспроизведения:
База данных запросов
using (var con = new OracleConnection({connection string here}))
using (var oracleCmd = new OracleCommand())
{
try
{
con.Open();
oracleCmd.Connection = con;
oracleCmd.CommandText = @"SELECT 'DUH' FROM DUAL";
oracleCmd.CommandType = CommandType.Text;
string duh = "";
using (var r = oracleCmd.ExecuteReader())
{
while (r.Read())
{
duh = r["DUH"].ToString();
}
}
return duh;
}
catch (Exception ex)
{
return null;
}
}
Измените файл TNS_NAMES.ORA так, чтобысоединение не устанавливается.
Запрос по-прежнему возвращает «duh», поскольку соединение кэшируется.