Сеансы Oracle остаются открытыми после закрытия соединения - PullRequest
0 голосов
/ 02 ноября 2011

При тестировании нового приложения мы столкнулись с проблемой, что иногда хранимый процесс выполняется более 1 минуты и приводит к тайм-ауту.Это был не 1 хранимый процесс, в частности, это может быть любой.

Пытаясь воспроизвести проблему, я создал небольшой (локальный) testapp, который вызывает один и тот же хранимый процесс в разных потоках (код ниже).

Теперь кажется, что Oracle-сессии все еще там.Неактивный.И процессор Oracle-сервера поражает 100%.Я использую System.Data.OracleClient

Я не уверен, связано ли одно с другим, но это замедляет время, необходимое для получения ответа из базы данных.

for (int index = 0; index < 1000; ++index)
{
    ThreadPool.QueueUserWorkItem(GetStreet, index);
    _runningThreads++;
    WriteThreadnumber(_runningThreads);
}

private void GetStreet(object nr)
{
    const string procName = "SPCK_ISU.GETPREMISESBYSTREET";
    DataTable dataTable = null;
    var connectionstring = ConfigurationManager.ConnectionStrings["CupolaDB"].ToString();
    try
    {
        using (var connection = new OracleConnection(connectionstring))
        {
            connection.Open();
            using (var command = new OracleCommand(procName, connection))
            {
                //Fill parameters
                using (var oracleDataAdapter = new OracleDataAdapter(command))
                {
                    //Fill datatable
                }
            }
        }
    }
    finally
    {
        if (dataTable != null)
            dataTable.Dispose();
    }
}

EDIT: Я просто позволил dba подсчитать количество открытых сессий, и есть 105 сессий, которые остаются открытыми-неактивными.После закрытия моей заявки сеансы удаляются.

1 Ответ

1 голос
/ 24 ноября 2011

Проблема решена.

Мы наняли эксперта Oracle, чтобы взглянуть на это, и проблема была вызвана некоторыми базовыми хранимыми процедурами, которые потребовали некоторое время для выполнения и потребляли много ресурсов ЦП.

Посленеобходим тюнинг, все работает без сбоев.

...