Oracle 8 11 データベースと通信するアプリケーションに単純なフェイルオーバー機能を追加しようとしています。セッションがアップしていることをテストするために、単純なクエリを発行します (デュアルから 1 を選択)。
ここで、「alter system kill session 'sid,serial';」を実行して Oracle セッションを強制終了し、ネットワークの停止をシミュレートしようとすると、このテスト クエリを実行すると、アプリケーションがそれを処理して Execute メソッドからエラーを返すまでに最大 5 分かかります (私は OCI API、C++ を使用しています)。
Tue Feb 21 21:22:47 HKT 2012: テスト クエリとの接続を確認しています...
Tue Feb 21 21:28:13 HKT 2012: 警告 - OCI_SUCCESS_WITH_INFO: 3113: ORA-03113: 通信チャネルのファイルの終わり
Tue Feb 21 21:28:13 HKT 2012: テスト接続に失敗しました。接続を再確立しようとしています...
クエリの最後に「immediate」キーワードを使用してセッションを強制終了すると、テスト クエリは即座にエラーを返します。
質問 1: クエリの実行に 5 分かかるのはなぜですか? この遅延中に何が起こっているかを明らかにできる Oracle/PMON ログはありますか?
質問 2: ネットワーク障害をシミュレートするために「alter system kill session」を使用するのは良い選択ですか? このクエリの結果は、アプリケーションと Oracle DB の間の実際のネットワーク障害にどの程度近いでしょうか?
アップデート:
オラクルのバージョン:
Oracle Database 11g Enterprise Edition リリース 11.2.0.2.0 - 64 ビット製品
パーティショニング、OLAP、データ マイニング、および Real Application Testing オプションを使用