データベースを有効にした後、C#.netCoreがOracleに再接続します

イゴールコバ

問題は、トラブル後にデータベースOracleに再接続する方法です

Dockerに.netCore web-apiプロジェクトがあり、そこでOracleデータベースに接続します。接続には、ナゲットパッケージoracleClientCoreを使用します

stotedプロシージャを接続して呼び出す方法:

string cs = "Data Source = 172.10.200.100:1521/dev;PERSIST SECURITY INFO=True;USER ID=test; Password=devtest;";
using (OracleConnection connection = new OracleConnection(cs)){
  connection.Open();
  using (OracleCommand cmd = connection.CreateCommand()) {
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "sp_check_db";
    cmd.ExecuteNonQuery();
    connection.Close();
  }
}

ストアドプロシージャsp_check_dbでは、insert into table

データベースへの接続が切断され、例外が発生することがありましたORA-03114: not connected to ORACLEデータベースを再度有効にした後、ORA-03114: not connected to ORACLEプロジェクトを再構築して再デプロイするまで、同じエラーが発生し続けます

この状況で私は何ができますか、それは正しい行動ではありませんか?コードまたは接続文字列に問題がありますか?

マーカス・ヘグルンド

アプリケーションが外部統合(この場合はデータベース)に依存している場合、パッチやネットワーク障害などが原因で短期間到達できない可能性があるため、再試行ポリシーを実装するのに適しています。再試行ロジックは、構成方法に応じて、特定の例外が発生した場合に一定時間コードを再実行します。

これは、フレームワークPollyを使用して単純な再試行ロジックを実装する方法の例です。このロジックは、例外が発生した場合に10秒のスパンでコードを3回再実行しますORA-031143回目以降もコードが同じ例外をスローする場合、例外はスローされます。

var retryTimes = 3;
var waitBetweenExceptions = TimeSpan.FromSeconds(10);

var retryPolicy = Policy
    .Handle<OracleException>(e => e.Message.Contains("ORA-03114"))
    .WaitAndRetry(retryTimes, i => waitBetweenExceptions);

await retryPolicy.Execute(() =>
{
    string cs = "Data Source = 172.10.200.100:1521/dev;PERSIST SECURITY INFO=True;USER ID=test; Password=devtest;";
    using (OracleConnection connection = new OracleConnection(cs)){
      connection.Open();
      using (OracleCommand cmd = connection.CreateCommand()) 
      {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "sp_check_db";
        cmd.ExecuteNonQuery();
        connection.Close();
      }
    }
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AndroidStompがActiveMQに再接続します

分類Dev

SpringBoot-再起動後にデータベースに再接続します

分類Dev

Oracle:切断された場合はデータベースリンクに再接続します

分類Dev

接続プールの設定。データベースに再接続します

分類Dev

データベースに再接続した後、JDBC でステートメントをどのように再利用しますか?

分類Dev

UCanAccess-keepMirrorを使用した後、Accessデータベースに再接続できません

分類Dev

データベース監査と脅威検出を有効にした後、Azure SqlServerデータベースを抽出できません

分類Dev

Rのプールパッケージを使用してPostgreSQLデータベースに再接続します

分類Dev

プロセスを再接続するときにWebSocketがデータをキャッチしますか?

分類Dev

MySQL Workbench:「MySQLサーバーがなくなった」ときにデータベースに再接続しますか?

分類Dev

MySQL Workbench:「MySQLサーバーがなくなった」ときにデータベースに再接続しますか?

分類Dev

C#コードを使用してOdooに接続またはログインする方法は?そして、Odooに接続した後、C#からOdooデータベースにカスタムフィールドを追加する方法は?

分類Dev

再接続時にログアウトした後、Firebaseはオフラインデータを同期しますか?

分類Dev

OracleデータベースをSQLclに接続します

分類Dev

MsAccess + C#はデータベースに接続します

分類Dev

インターネットに再接続した後、Firestoreがデータの取得に失敗する

分類Dev

DockerpythonはOracleデータベース接続にODPI-Cを使用します

分類Dev

C#を使用してMYSQLで接続が確立された後にデータベースを定義する方法

分類Dev

デバイスを再接続した後、USBOnDataReceivedが呼び出しています

分類Dev

Oracleデータベースに接続するとnullpointerexceptionが発生します

分類Dev

データベースに保存した後、mongoose node.js接続を閉じる必要がありますか?

分類Dev

Nhibernate(C#)を使用したOracleデータベースのマッピング(データベースにはPKが含まれていません)

分類Dev

Springboot 2.0-データベースへの再接続を無効にする

分類Dev

SQL Server LocalDB:データベースを同じコンピューター(マシン、同じパス)にデタッチして再接続した後、データベースをバックアップできません

分類Dev

キューを再作成し、rabbitMQに再接続します

分類Dev

継続的にWifiに再接続する必要があります

分類Dev

Google CloudPlatformターミナルに再接続します

分類Dev

RDP後にセッションをローカルディスプレイに再接続します

分類Dev

一時停止後にsshに自動的に再接続します

Related 関連記事

  1. 1

    AndroidStompがActiveMQに再接続します

  2. 2

    SpringBoot-再起動後にデータベースに再接続します

  3. 3

    Oracle:切断された場合はデータベースリンクに再接続します

  4. 4

    接続プールの設定。データベースに再接続します

  5. 5

    データベースに再接続した後、JDBC でステートメントをどのように再利用しますか?

  6. 6

    UCanAccess-keepMirrorを使用した後、Accessデータベースに再接続できません

  7. 7

    データベース監査と脅威検出を有効にした後、Azure SqlServerデータベースを抽出できません

  8. 8

    Rのプールパッケージを使用してPostgreSQLデータベースに再接続します

  9. 9

    プロセスを再接続するときにWebSocketがデータをキャッチしますか?

  10. 10

    MySQL Workbench:「MySQLサーバーがなくなった」ときにデータベースに再接続しますか?

  11. 11

    MySQL Workbench:「MySQLサーバーがなくなった」ときにデータベースに再接続しますか?

  12. 12

    C#コードを使用してOdooに接続またはログインする方法は?そして、Odooに接続した後、C#からOdooデータベースにカスタムフィールドを追加する方法は?

  13. 13

    再接続時にログアウトした後、Firebaseはオフラインデータを同期しますか?

  14. 14

    OracleデータベースをSQLclに接続します

  15. 15

    MsAccess + C#はデータベースに接続します

  16. 16

    インターネットに再接続した後、Firestoreがデータの取得に失敗する

  17. 17

    DockerpythonはOracleデータベース接続にODPI-Cを使用します

  18. 18

    C#を使用してMYSQLで接続が確立された後にデータベースを定義する方法

  19. 19

    デバイスを再接続した後、USBOnDataReceivedが呼び出しています

  20. 20

    Oracleデータベースに接続するとnullpointerexceptionが発生します

  21. 21

    データベースに保存した後、mongoose node.js接続を閉じる必要がありますか?

  22. 22

    Nhibernate(C#)を使用したOracleデータベースのマッピング(データベースにはPKが含まれていません)

  23. 23

    Springboot 2.0-データベースへの再接続を無効にする

  24. 24

    SQL Server LocalDB:データベースを同じコンピューター(マシン、同じパス)にデタッチして再接続した後、データベースをバックアップできません

  25. 25

    キューを再作成し、rabbitMQに再接続します

  26. 26

    継続的にWifiに再接続する必要があります

  27. 27

    Google CloudPlatformターミナルに再接続します

  28. 28

    RDP後にセッションをローカルディスプレイに再接続します

  29. 29

    一時停止後にsshに自動的に再接続します

ホットタグ

アーカイブ