Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 OracleException: Connection request timed out  [new]
igor_dev
Member

Откуда:
Сообщений: 253
Есть система (код не мой, что усложняет для меня ситуацию) в которой мне нужно срочно решить прблему..
Итак в системе есть несколько потоков (в данном частном случае 3, но может быть и больше) интенсивно обращающихся к Oracle (записи в журналы событий, вызовы хранимок и.т.д).
Через несколько часов НЕПРЕРЫВНОЙ и ИНТЕНСИВНОЙ работы с частыми обращениями к Oracle
ф-я OracleConnection.Open() выдает Connection request timed out.
Интерестно, то как организован коннект к БД
Итак есть класс

public class DatabaseConnection()
{
        //Статический коннект для записи в логи.
        //Один для всех. Инициализируется единажды
        //и закрывается при выходе из системы.
        private static OracleConnection ConnForLogs;

        //Коннект для вызова хранимок
        private OracleConnection Conn;

        public void StoredProcedure1()
       {
              try
              {
                      Conn.Open()

                       ....
              }
              finally
              {
                      if (con.State == ConnectionState.Open) 
                                Conn.Close();
              }
       }

      ...
       public void StoredProcedureN(){...}
}

И так в хаждой хранимке. Т.е при том что идет постоянный интенсивный вызов разных
хранимок постоянно осуществляется реконнект!!!

ВОПРОСЫ:


1) В чем может быть причина исключения Connection request timed out???
И прав ли я полагая, что причина в частых реконнектах?

2) Как в данной ситуации (постоянного интенсивного взаимодействия с Oracle) лучше
организовать открытие и закрытие соединений? Може Conn также сделать статическим как и
ConForLogs? Если да, то как насчет потокобезопасности? lock(Conn)????
13 мар 08, 19:08    [5407836]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
-----
Guest
ну загрузил ты проц своей интенсивной и непрерывной работой так, что оракл вовремя не отвечает
13 мар 08, 19:14    [5407859]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
igor_dev
Member

Откуда:
Сообщений: 253
Ну это логично...
Но , а насчет ВОПРОС №2??? Можно ли в данном случае использовать одно статическое соединение? Потокобезопасность?

lock(Conn)
{
...
\\\ExecuteSomeCmd
...

} ???
13 мар 08, 20:04    [5407950]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
ГостЪ
Guest
igor_dev
Ну это логично...
Но , а насчет ВОПРОС №2??? Можно ли в данном случае использовать одно статическое соединение? Потокобезопасность?
???

Это ты о чем? Oracle сериализует запросы через один коннект, пока запрос из первого потока крутится второй будет ждать.
13 мар 08, 20:10    [5407959]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
igor_dev
Member

Откуда:
Сообщений: 253
ГостЪ

Вы имеете в виду второй поток будет ждать
в этом случае

lock(Conn)
{
...
\\\ExecuteSomeCmd
...

} ???

или вообще???
13 мар 08, 20:14    [5407968]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
ГостЪ
Guest
igor_dev
ГостЪ

Вы имеете в виду второй поток будет ждать
в этом случае

lock(Conn)
{
...
\\\ExecuteSomeCmd
...

} ???
или вообще???

или
13 мар 08, 20:44    [5408032]     Ответить | Цитировать Сообщить модератору
 Re: OracleException: Connection request timed out  [new]
-----
Guest
Так смотришь, и пул коннектов нарисуем :)
14 мар 08, 00:20    [5408318]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить