Очистить пул соединений в devart? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть приложение-служба Windows, которое подключается к базе данных каждую минуту. Иногда я получаю эту ошибку:

ORA-20110: ORA-06508: PL / SQL: не удалось найти вызываемый программный модуль

Решение близко и переподключение базы данных в plsql, но я хочу сделать это на стороне приложения.

Так что мне нужно отключить все пулы соединений и попытаться переподключить базу данных. Как я могу сделать это, используя devart?

Это моя связь

this.ConnectMode = OracleConnectMode.Default;
this.Direct = true;
this.Close();
this.Server = ConfigurationManager.AppSettings["db_hostname"];
this.Port = Convert.ToInt32(ConfigurationManager.AppSettings["db_port"]);
if (db_connection_type == "SID")
   this.Sid = ConfigurationManager.AppSettings["db_sid"];
else
   this.ServiceName = ConfigurationManager.AppSettings["db_sid"];
this.UserId = db_username;
this.Password = db_password;
this.Open();

1 Ответ

0 голосов
/ 20 ноября 2018

Я нашел clearPool oracleconnection собственного класса

// C#
// Sample demonstrating the use of ClearPool API in OracleConnection class

using System;
using Oracle.DataAccess.Client;

class ClearPoolSample
{
  static void Main()
  {
    Console.WriteLine("Running ClearPool sample..." );
    // Set the connection string
    string strConn = "User Id=scott;Password=tiger;Data Source=oracle;" +
                     "Min pool size=5;";
    OracleConnection conn = new OracleConnection(strConn);

    // Open the connection
    conn.Open();

    // Clears the connection pool associated with connection 'conn'
    OracleConnection.ClearPool (conn);

    // This connection will be placed back into the pool
    conn.Close ();

    // Open the connection again to create additional connections in the pool
    conn.Open();

    // Create a new connection object
    OracleConnection connNew = new OracleConnection(strConn);

    // Clears the pool associated with Connection 'connNew'
    // Since the same connection string is set for both the connections,
    // connNew and conn, they will be part of the same connection pool.
    // We need not do an Open() on the connection object before calling
    // ClearPool
    OracleConnection.ClearPool (connNew);

    // cleanup
    conn.Close();
    Console.WriteLine("Done!");
  }
}
...