1

Hibernateを使用してOracle10gで実行されているアプリケーションがあります。Oracle RACを使用して、アプリケーション側でコードを変更することなく、データベース障害に関してアプリケーションの高可用性を実現できるかどうか疑問に思っています。

アプリケーション用に2つのOracleRACノードがあり、理想的には、ノードの1つでプラグをプルして、アプリケーションコードに到達する例外なしにアプリケーションを実行し続けることができるようにしたいと考えています。

私のアプリケーションは、select、insert、update、deleteクエリをデータベースに送信します。

透過的なアプリケーションフェイルオーバーについて読んでいますが、私が見つけたサイトは、選択したクエリのみが透過的にフェイルオーバーでき、他のすべてのタイプのクエリでは例外がスローされ、クエリを再実行する必要があることを示唆しています。データベースクエリを作成するコードベースのすべての部分に余分な例外処理を追加したくないので、これは避けたいと思います。

4

1 に答える 1

3

申し訳ありませんが、そうではありません。透過的なアプリケーション フェイルオーバー (TAF) を検討していますが、Oracle は現在、SELECT ステートメント以外の TAF をサポートしていません。DML を再起動する必要があります。この記事を参照して、RAC (および TAF) で何ができるかを詳しく説明してください。

いずれにせよ、トランザクションの失敗を処理できる必要があります。これが、トランザクションを使用する大きな理由です...失敗したものを適切に処理できるようにするためです。同様に、ハードウェア障害 (RAC が保護するもの) は、トランザクションが失敗する可能性がある無数の理由の 1 つにすぎないことも認識してください。

頑張って、コーディングをお楽しみください!

于 2009-09-30T17:15:48.457 に答える