Попробуйте просто выполнить очень дешевую операцию, которая должна работать независимо от того, к какой схеме вы подключены, например,
SELECT 1
(этот оператор работает на MS SQL и MySQL ...должен работать и на Oracle, но я не могу этого подтвердить).
Если вы получите ожидаемый результат (в данном случае одна строка с одним столбцом, содержащим «1»), то соединение допустимо.
Как минимум один менеджер пулов соединений использует эту стратегию для периодической проверки соединений.
ОБНОВЛЕНИЕ:
Вот версия вашего метода для SQL Server.Вы, вероятно, можете просто заменить «Sql» на «Oracle».
static public bool IsConnectionAlive(string connectionString)
{
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT 1", conn))
{
int result = (int)cmd.ExecuteScalar();
return (result == 1);
}
}
}
catch (Exception ex)
{
// You need to decide what to do here... e.g. does a malformed connection string mean the "connection isn't alive"?
// Maybe return false, maybe log the error and re-throw the exception?
throw;
}
}