2 つのサーバーで高可用性を実現するために Oracle データベースに datagaurd を実装し、Jboss アプリケーション サーバーに接続してプライマリ データベース インスタンスに常に接続するように jdbc 設定を構成しました。
次の文字列を使用する場合:
<connection-url>
jdbc:oracle:thin:@(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=<ip1>)(PORT=<port>))(ADDRESS=(PROTOCOL=TCP)(HOST=<ip2>)(PORT=<port>)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME
= MYDB)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))))</connection-url>
スイッチオーバー/ファイルオーバーを実行すると、ip1 がダウンし、ip2 がアップします。リストで最初に ip2 を指定すると、接続が確立されます (ip2 に接続しようとした場合と同じように)。ただし、最初に ip1 を配置すると、直接接続しようとした場合と同じエラーが発生します
java.util.concurrent.ExecutionException: java.lang.RuntimeException:
java.sql.SQLException: ORA-01033: ORACLE initialization or shutdown
in progress