環境
- Oracle は Active/Standby の HA 構成。
- Virtual IP は使っていない。
- スイッチオーバーする際は、DNS を書き換えるので、アプリケーション側の接続文字列は変更不要。
- 本現象が発生する少し前に、Standby 側にスイッチオーバーしており、本現象が発生した時点では元に戻していた。
現象
- ETL ツールから Oracle に FQDN で接続できない。
- ETL ツールで接続テストを行うと以下のエラーが発生する。
java.sql.SQLException: I/O例外です。: The Network Adapter could not establish the connection
- Standby側のリスナーを起動して、リスナーログを監視しながら、ETLツールから Oracle に接続すると接続要求が届いた。
$ lsnrctl start
$ cd $ORACLE_HOME/network/log
$ tail -f listener.log
...
04-MAY-2010 11:10:40 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.11)(PORT=4222)) * establish * orcl * 0
- また、ETLツールで表示されるエラーが以下の内容に変わった。
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No shuch file or directory
- FQDN に ping すると、無問題。Primary 側に ping が通る。
- sqlplus で FQDN に接続すると、データベースにログインできる。
- JDBC Thin Driver を使ってログインするだけのテストプログラムで FQDN にログインできる。
原因
- Standby 側に切替えていた時の DNS 情報を ETL ツールがキャッシュしていた。
解決策
- スイッチオーバー、スイッチバックを行う際は、ETL ツールの再起動を行う。