Transparent Application Failover

ODBA
Дата: 11.08.2005 19:13:14
Подскажите подалуйста следующее.

Есть 2-ва сервера. На одном Производственная БД, а на другом резервная.

в tnsnames прописал так, что при аварии все сессии переключатся на резервную БД. Это все работает отлично.

Вопрос у меня такой. При использовании TAF что делать с новыми подключениями? Как сделать так чтобы новые пользователи при такой ситуации сразу начали подключаться к резервной БД? Или это невозможно и все-таки придется ручками править?

Примечание: это все я делаю ради собственного обучения. В производственных целях я использую кластерную службу Microsoft и Oracle Fail Safe.
Ааз
Дата: 11.08.2005 20:25:07
ODBA
tnsnames прописал так, что при аварии все сессии переключатся на резервную БД. Это все работает отлично.

Вопрос у меня такой. При использовании TAF что делать с новыми подключениями?
Пропиши в tnsnames.ora :-). Если серьезно, поищи в доке упоминание про connect time failover. В двух словах - вместо одного (ADDRESS=(...., должно быть 2+.

Всего
ODBA
Дата: 12.08.2005 13:47:49
Выяснил я следующее:

- если имеем, например, две БД, и имеем при этом разные SID, то
необходимо делать так:

TAF =
(DESCRIPTION_LIST =
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 10.10.10.1)
(PORT = 1521)
)
(CONNECT_DATA =
(SID = RETAIL1)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic))
))
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 10.10.10.2)
(PORT = 1521)
)
(CONNECT_DATA =
(SID = RETAIL2)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic))
))
)

В данном примере IP-адреса являются вымышленными.

- если имеем, например, две БД, и имеем одинаковые SID, то
подойдет вариант, если указать несколько ADRESS(....)

TAF =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 10.10.10.1)
(PORT = 1521))
(ADDRESS =
(PROTOCOL = tcp)
(HOST = 10.10.10.2)
(PORT = 1521)))
(CONNECT_DATA =
(SID = RETAIL)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic))))

В данном примере IP-адреса являются вымышленными.


Кстати, LOAD_BALANCE по умолчанию ON.


Самое интересное то, что тестировал я весь этот механизм в SQL PLUS и заметил интересную особенность. Если его не перезапускать перед каждым новым тестом (например, Вы меняете IP-адреса или SID), то SQL PLUS где-то у себя в буфере запоминает первый использовавшийся вариант. Потом уже будет не важно что вы в tnsnames.ora пишите. Он до его перезапуска новые значения не примет. По крайне мере у меня такое поведение SQL PLUS. Кстати у меня установлен патчсет 9.2.0.7.

Специалистам: Если я что-то неверно написал, то поправьте меня.
Ааз
Дата: 12.08.2005 14:08:29
ODBA
Выяснил я следующее:...
Нормально нарыл. Даже (description_list=...), о чем знают немногие. Оч.хор.
ODBA
...и заметил интересную особенность.
Да, SQL*Net (он же NET8, он же Oracle Net) не утруждает себя лишний раз иниализиваться, т.е. перечитывать tnsnames.ora... Вот если пользуется Oracle Names, или LDAP, или еще что внешнее, тогда возможны варианты. Например, при отсутствии кеширования...

Всего