powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Конфигурация FAILOVER в TNSNAMES
22 сообщений из 22, страница 1 из 1
Конфигурация FAILOVER в TNSNAMES
    #39636188
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Необходимо сконфигурировать failover, в tnsnames написано:
MY_FAILOVER =
(DESCRIPTION=
(ADDRESS_LIST=
(LOAD_BALANCE=OFF)
(FAILOVER=ON)
(ADDRESS=(PROTOCOL=TCP)(PORT=1525)(HOST=DBHOST1))
(ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=DBHOST2))
)
(CONNECT_DATA=
(SERVICE_NAME=MDM)
(INSTANCE_NAME=mdm)
(GLOBAL_NAME=mdm)
)
)

Работает отлично когда один из хостов в принципе недоступен, но иногда случается такая неприятность:

sqlplus my_user/my_password@MY_FAILOVER

SQL*Plus: Release 12.1.0.2.0 Production on Thu Apr 19 10:12:25 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
Process ID: 0[/b]
Session ID: 0 Serial number: 0
Enter user-name:


Т.е. первый хост в списке не совсем недоступен, и failover'а на другой хост не происходит.
Что здесь можно сделать, существует ли какая-либо опция считать стартующий или закрывающийся инстанс недоступным?
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39636257
KoTTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно просто гасить/стартовать сервис на нужном узле.
Триггерами или софтом grid infrastructure.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39636613
Alexei S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAF?
https://docs.oracle.com/database/121/NETAG/advcfg.htm#NETAG348

sales.us.acme.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
(RETRIES=20)
(DELAY=15))))
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39636761
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei S,
Спасибо за ссылку - как раз то, что нужно.
К моему сожалению добавление
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic))

не помогает - всё равно получаю
ORA-01033: ORACLE initialization or shutdown in progress
и никакого failover :(
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39637211
Alexei S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параметры retries/delay не помогают?
https://docs.oracle.com/database/121/NETAG/advcfg.htm#NETAG347
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39637239
Фотография kinky cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMp,
авторТ.е. первый хост в списке не совсем недоступен, и failover'а на другой хост не происходит.
Т.е. первый в похоже mount?
Не юзай default service ( тот где service name = db name ), создай свой с нормальными failover параметрами. Для дефолтного бд в mount это не fail.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39637485
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei S,
C retries/delay то же самое, с точки зрения клиента первая база в списке жива.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39637498
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kinky catIgorMp,
авторТ.е. первый хост в списке не совсем недоступен, и failover'а на другой хост не происходит.
Т.е. первый в похоже mount?
Не юзай default service ( тот где service name = db name ), создай свой с нормальными failover параметрами. Для дефолтного бд в mount это не fail.
kinky cat,
Я не базист, и не совсем понимаю что тут имеется ввиду.
Что происходит с первой базой в списке мне до конца неизвестно - это внешняя для меня система, всё что я вижу это
ORA-01033: ORACLE initialization or shutdown in progress
Скорее всего да, в Mount, - одна из баз в активном, другая в пассивном состоянии, с какой-то репликацией между ними, но это всё вне моего контроля.

Ты предлагаешь настроить listener на стороне БД "с нормальными failover параметрами"?
Если можно - пример конфигурации или ссылку на доку?

Спасибо
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39637749
Фотография Alexey Zhidkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMpAlexei S,
Спасибо за ссылку - как раз то, что нужно.
К моему сожалению добавление
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic))

не помогает - всё равно получаю
ORA-01033: ORACLE initialization or shutdown in progress
и никакого failover :(
Как я понял, один из хостов - это стендбай.
КоТТТ дал верный ответ, остальные вообще не читатели.
имя сервиса по дефолту, которое совпадает с именем инстанса, в данном случае использовать нельзя.
для этого создается отдельный сервис. его имя и прописывается в TNS.
а поднимается он триггером... он стартап. праймари - значит поднимаем.
а так клиент ломится - сервис сесть - ну и ок. а там облом - база в маунте.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39638093
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Zhidkov,
Спасибо за развёрнутый ответ - всё становится более-менее понятно.
Дополнительный вопрос - нельзя ли таким образом (через триггеры) сконфигурировать сервисы так,
чтобы со стороны клиента обе базы были представлены одним логическим соединением?
Т.е. при наличии двух баз по адресам
DB_HOST_1:1521/ORCL
DB_HOST_2:1521/ORCL
клиент соединялся с
SOME_HOST:SOME_PORT/SERVICE_NAME
и единый сервис SERVICE_NAME выдавал бы соединение с активной базой?
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39638142
KoTTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMpчтобы со стороны клиента обе базы были представлены одним логическим соединением?
Этого вы можете достичь просто через алиасы TNS и настройку сервисов в БД.
А вот если хочется именно через единый "SOME_HOST:SOME_PORT/SERVICE_NAME", тогда вам в Grid Infrastructure и SCAN. Или может быть удастся провернуть такое через CMAN в середине, не уверен.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39638429
Фотография Alexey Zhidkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMpДополнительный вопрос - нельзя ли таким образом (через триггеры) сконфигурировать сервисы так,
чтобы со стороны клиента обе базы были представлены одним логическим соединением?
Т.е. при наличии двух баз по адресам
DB_HOST_1:1521/ORCL
DB_HOST_2:1521/ORCL
клиент соединялся с
SOME_HOST:SOME_PORT/SERVICE_NAME
и единый сервис SERVICE_NAME выдавал бы соединение с активной базой?
именно так и работает TAF.
требуемый сервис поднимается только на праймари.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641596
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Zhidkov,
Просветите плз - TAF это не только клиентская технология - конфигурация на стороне клиента в tnsnames но также и серверная - конфигурация сервиса на стороне базы? Я правильно понимаю?

Нагуглил вот такую статью - http://dominicgiles.com/blog/files/859a2dd3f34b49a43e5a39380d39b680-7.html
Это примерно о том, что здесь рекомендуют?

Спасибо!
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641624
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KoTTTIgorMpчтобы со стороны клиента обе базы были представлены одним логическим соединением?
Этого вы можете достичь просто через алиасы TNS и настройку сервисов в БД.
А вот если хочется именно через единый "SOME_HOST:SOME_PORT/SERVICE_NAME", тогда вам в Grid Infrastructure и SCAN. Или может быть удастся провернуть такое через CMAN в середине, не уверен.

Подход с Grid Infrastructure или SCAN может быть реализован без RAC?
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641628
Kamael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMp,
Код: plsql
1.
2.
3.
(SERVICE_NAME=MDM)
(INSTANCE_NAME=mdm)
(GLOBAL_NAME=mdm)


Уж больно сервис MDM знакомый....

Как уже сказал KoTTT, настроить можно ездящий сервис через grid, создаётся сервис на primary и standby, который регистрирует бд в прослушивателе если сменилась роль бд(речь идёт о single instance, primary->standby, без scan и cman).
Например:
Код: plsql
1.
srvctl add service -db Имя_базы -s ИмяСервиса -l PRIMARY -q TRUE -e SESSION -m BASIC -w 10 -z 150 --12c


Работает очень надёжно.

Но возникнет другая проблема, если хост станет в принципе не доступен(ping не проходит), но не такая критичная как ORA-01033, и соединения будут проходить на резерв.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641629
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Zhidkovимя сервиса по дефолту, которое совпадает с именем инстанса, в данном случае использовать нельзя.
для этого создается отдельный сервис. его имя и прописывается в TNS.
а поднимается он триггером... он стартап. праймари - значит поднимаем.
Alexey Zhidkov,
Вы имеете ввиду, что на одном из хостов базы нужно поднять 2 сервиса с одинаковым именем? И по тригеру один из сервисов гасится, а другой поднимается?
Так реализуемо?
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641630
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot IgorMp]KoTTTпропущено...
вам в Grid Infrastructure и SCAN.
Ну можно и на коленках соорудить что-нибудь.
К примеру, сделать выдачу актуального ip из DNS. Для начала - тупо раунд-робином и настроить retry.
Потом автоматизировать управление DNS-ом при переключении :)
Кроме того, можно пристроить к делу remote listener.
Тут есть точка отказа в форме самого remote listener, но раунд-робин из DNS и retry позволят ее обойти.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641640
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KamaelIgorMp,
Код: plsql
1.
2.
3.
(SERVICE_NAME=MDM)
(INSTANCE_NAME=mdm)
(GLOBAL_NAME=mdm)


Уж больно сервис MDM знакомый....

Как уже сказал KoTTT, настроить можно ездящий сервис через grid, создаётся сервис на primary и standby, который регистрирует бд в прослушивателе если сменилась роль бд(речь идёт о single instance, primary->standby, без scan и cman).
Например:
Код: plsql
1.
srvctl add service -db Имя_базы -s ИмяСервиса -l PRIMARY -q TRUE -e SESSION -m BASIC -w 10 -z 150 --12c


Работает очень надёжно.

Но возникнет другая проблема, если хост станет в принципе не доступен(ping не проходит), но не такая критичная как ORA-01033, и соединения будут проходить на резерв.
Kamael,
Спасибо за ответ.
Буду с этим разбираться.
Как я понимаю - это будут 2 сервиса на разных хостах, которые поднимаются в случае, если роль primary, и гасятся если роль сменилась. Всё верно?
Я не специалист в Oracle, так что прошу прощения за наивный вопрос -
а нельзя ли таким образом сконфигурировать 2 сервиса с одинаковым именем на одном хосте? Чтобы для клиента было прозрачно соединение в primary инстансом?
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39641749
Фотография Alexey Zhidkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMpВы имеете ввиду, что на одном из хостов базы нужно поднять 2 сервиса с одинаковым именем? И по тригеру один из сервисов гасится, а другой поднимается?
Так реализуемо?
не поднять а создать. а по триггеру он поднимается или гасится в зависимости от роли сервера.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39648126
IgorMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Со многими деталями разобрался, спасибо всем.
Остался, наверное, самый интересный вопрос -
Возможность конфигурации с Remote listener и двумя базами, Primary и Standby, одна из которых (та, которая Primary) зарегистрирована на Remote listener, а другая нет.

Цель: предоставить единый connection в виде <remote_listener_host>:1521/prime_db

Уже реализован подход, при котором база триггером стартует сервис, когда она Primary - примерно так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR REPLACE TRIGGER primaryService after startup on database
DECLARE
  db_role VARCHAR(30);
BEGIN
  SELECT DATABASE_ROLE INTO db_role FROM V$DATABASE;
  IF db_role = 'PRIMARY' THEN DBMS_SERVICE.START_SERVICE('prime_db'); END IF;
END;
/ 


Таким образом мы регистрируем службу на локальном Listener, а хотелось бы зарегистрировать её на Remote.
Возможно ли это? Самостоятельно я не смог найти подходящий пакет с операциями регистрации на Remote listener.
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39648195
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMp...
Таким образом мы регистрируем службу на локальном Listener, а хотелось бы зарегистрировать её на Remote.
Возможно ли это? Самостоятельно я не смог найти подходящий пакет с операциями регистрации на Remote listener.

Код: plsql
1.
alter system register;
...
Рейтинг: 0 / 0
Конфигурация FAILOVER в TNSNAMES
    #39648199
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Конфигурация FAILOVER в TNSNAMES
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]