Нам нужна возможность аварийного переключения с одного хоста базы данных на другой в случае, если тот, к которому мы сейчас подключены, выходит из строя.Из того, что мы прочитали, «Прозрачное переключение приложений (TAF)» и «Быстрое переключение соединений (FCF)» доступны только в Oracle 10 и выше.Но в нашей среде есть Oracle 9.2.0.8.
Что было бы лучшим решением Java для обеспечения отработки отказа соединений с базой данных?Использование драйвера oci кажется лучшим решением, чем тонкий драйвер, однако мы продолжаем получать сообщение «Ошибка неудовлетворенной связи: ocijdbc11.dll отсутствует в java.library.path».У нас нет ocijdbc11.dll, но у нас есть ocijdbc10.dll в $ {ORACLE_HOME} / bin
Среда:
- База данных = Oracle 9.2.0.8 с RAC, поддерживающим два сервера
- Сервер = Solaris 10
- Клиенты = Windows XP, пакет обновления 3
- JDK = 1.6.0_20
- Библиотека= ojdbc6.jar
- На клиентах установлен толстый клиент Oracle 10.1.0.2.Это дает им файл ocijdbc10.dll в каталоге оракулов
Наша строка подключения в tnsnames.ora:
MY_SID =
(ОПИСАНИЕ =
(FAILOVER = вкл)
(ADDRESS = (PROTOCOL = tcp) (HOST = host1) (PORT = 1521))
(ADDRESS = (PROTOCOL = tcp) (HOST = host2) (PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = db.fully.qualified.name)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic))))
Мы создаем источник данных следующим образом:
- BasicDataSource ds = new
- BasicDataSource ();
- ds.setUsername («имя пользователя»);
- ds.setPassword («пароль»));
- ds.setUrl ("jdbc: oracle: oci: @MY_SID");
- ds.setDriverClassName ("oracle.jdbc.driver.OracleDriver");