0

Oracle データベースへの接続のタイムアウトを制限するにはどうすればよいですか? 私はデータ アクセス層で devart dotConnect Express Edition を使用しています。接続文字列に追加しようとConnection timeout=30;しましたが、正しい結果が得られません (少し奇妙ですが、最初は実際には 30 秒に制限されていますが、すべての接続試行ではありません)。それから私はそれを見つけます

接続タイムアウト 接続の確立を試みている間、試行を終了してエラーを生成する前に待機する時間 (秒単位)。値 0 は制限がないことを示します。デフォルト値は 15 秒です。Direct モードでのみ使用できます。

Devart サイトより

Express Edition を使用しているため、ダイレクト モードを使用できません。次に、このパラメーターを設定しようとしましたTNSNAMES.ORA

DB1 =
  (DESCRIPTION =
    (CONNECT_TIMEOUT=11)
    (TRANSPORT_CONNECT_TIMEOUT=10)
    (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.100.8)(PORT = 1521)
       )
    )
    (CONNECT_DATA =
       (SERVICE_NAME = DB1)
    )
  )

まだ正しく動作しません。OK、ダウンして、接続タイムアウトを設定してみてくださいSQLNET.ORA

SQLNET.INBOUND_CONNECT_TIMEOUT = 5

もう一つ失敗!DB1に接続する時間を制限するタイムアウトを設定する方法を知っている人はいますか? 約 20 秒間、接続を終了します (接続に失敗します)。

4

2 に答える 2

0

Devart の dotConnect ライブラリを使ったことはありませんが、OracleConnectionクラスを見ると、一定時間後に を呼び出すことで接続を閉じることができるはずですOracleConnection.Close()Openこれにより、接続しようとしている間、ブロック状態から抜け出すことができます。

これはタイムアウトの設定とまったく同じではありませんが、機能する場合があります。さらに、ConnectionTimeoutタイムアウトが適切に設定されていることを確認するために、このコードをデバッグするときにプロパティを確認してください。

于 2011-11-10T21:16:50.653 に答える
0

OracleConnection.ConnectionTimeoutDirect モードでのみ機能します。この場合、接続を管理する Oracle クライアント経由で接続が確立された場合は無視されます。

于 2011-11-11T13:09:19.037 に答える