私は愚かな問題に直面していますが、オンライン検索と実験をしてから、
私はDataguardのおかげで、レプリカになるように設定された2つのOracle DBを持っています。私のような、私のDBに接続するためのJDBC TNSのURLを使用してい
Oracle:JDBC TNS URL接続は、リスナーがまだ応答しているためにフェールオーバーしません。
:私はスイッチオーバーを実行すると
jdbc:oracle:thin:@ (DESCRIPTION_LIST= (FAILOVER=on) (LOAD_BALANCE=off) (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=DB1) primary (PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SID=MySID)) ) (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=DB2) secondary (PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SID=MySID)) ) )
は、役割が交換されます:DB1は、二次になり、DB2がプライマリになります。 DB1はマウント状態です。
これまでのところ、とても良いです。
私の接続URLでは、DB2からの接続はプライマリになりますが、DB1リスナーがまだ起動しているので、すべてが正常であるかのように動作し、取得しようとします次のエラーにつながるDB1の接続、:
ORA-01033: ORACLE initialization or shutdown in progress
私はその後、リスナー、フェールオーバーの作品を殺すと私はDB2からの接続を得た場合。
しかし、dataguardの全ポイントは自動フェールオーバーを実行することです。
しかし、私は、リスナーを殺すために強制していた場合:
- それはない、私はそうであれば
を行うために、リスナーを使っているよう
ありがとうございます。
プログラム的に実装することができますが、これは非常に簡単です。例外をキャッチし、他のsidを試してみてください。それは1つのアイデアです。 –
提案していただきありがとうございます。私はアプリケーションサーバーにいるので接続プールメカニズムを使用しているので、コード化する必要はありません。コーディングはコードのオーバーロードを意味し、おそらくサポートを失います。私は何かを完全に夢中にしようとはしていないし、私は現在のツールでそれを達成する簡単な方法がないことに驚いている。 – mbutton77