powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / start-stop ohasd под systemd
8 сообщений из 8, страница 1 из 1
start-stop ohasd под systemd
    #39519504
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 сервиса.

Код: plsql
1.
2.
3.
oratest56:~ # systemctl list-units | grep oha
ohasd.service                                                                             loaded active exited    LSB: Start and Stop Oracle High Availability Service
oracle-ohasd.service                                                                      loaded active running   Oracle High Availability Services



Oracle по ним прекрасно стартует. А вот при reboot всё аварийно валится. Не могу никак добиться чтобы был последовательный останов как под старым initrd. Как добиться нормального останова как было?

Код: plsql
1.
/etc/init.d/ohasd stop



авторoratest56:~ # systemctl cat oracle-ohasd.service
# /etc/systemd/system/oracle-ohasd.service
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
# Oracle OHASD startup

[Unit]
Description=Oracle High Availability Services
After=network.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
Type=simple
Restart=always
TimeoutStopSec=5min

[Install]
WantedBy=multi-user.target graphical.target
oratest56:~ #

авторoratest56:~ # systemctl cat ohasd.service
# /run/systemd/generator.late/ohasd.service
# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/ohasd
Description=LSB: Start and Stop Oracle High Availability Service
Before=multi-user.target graphical.target lockgcstartup.service
After=network-online.target remote-fs.target open_iscsi.service raw.service
Wants=network-online.target remote-fs.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/init.d/ohasd start
ExecStop=/etc/init.d/ohasd stop
oratest56:~ #

Руками конечно всё останавливается нормально.
Код: plsql
1.
2.
3.
4.
oratest56:~ # systemctl stop ohasd.service
oratest56:~ # systemctl stop oracle-ohasd.service
oratest56:~ # systemctl start oracle-ohasd.service
oratest56:~ # systemctl start ohasd.service
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39519506
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Suse Sles Linux 12SP2
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39520103
ivan78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дядя Жора,

Криворукий индус писал эти скрипты инициализации и забыл указать зависимость между ними.
Нужно в файлике oracle-ohasd.service в секции [Unit] добавить строчку: Before=ohasd.service
Тогда все будет корректно останавливаться.
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39520261
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivan78[Unit] добавить строчку: Before=ohasd.service
Тогда все будет корректно останавливаться.

Тут проблема глубже, и, как я почитал по форумам, оказывается касается не только Oracle, но и других служб, которые при рибуте надо корректно остановить. Before=ohasd.service действительно укажет servised дать команду на останов ohasd.service перед oracle-ohasd.service. Но вся проблема в том, что Linux не ждёт остановки ohasd.service перед остановкой oracle-ohasd.service. И получается, что обе службы вылетают просто аварийно. В итоге мы имеем

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Wed Sep 13 10:01:56 2017
Errors in file /u01/app/grid/diag/asm/+asm/+ASM/trace/+ASM_gmon_3478.trc:
ORA-29710: Current operation aborted by Cluster Synchronization Services
GMON (ospid: 3478): terminating the instance due to error 29710
Wed Sep 13 10:01:56 2017
System state dump requested by (instance=1, osid=3478 (GMON)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/grid/diag/asm/+asm/+ASM/trace/+ASM_diag_3462_20170913100156.trc
Dumping diagnostic data in directory=[cdmp_20170913100156], requested by (instance=1, osid=3478 (GMON)), summary=[abnormal instance termination].
Instance terminated by GMON, pid = 3478



initrd как и положено останавливал всё последовательно и честно ждал пока ohasd.service остановится перед тем как приступить к остановке следующей службы во время рибута. Теперь же с агрессивной политикой параллелизма systemd добиться от него ожидания остановки никак не удаётся. И я вообще стал сомневаться возможно ли это в принципе. Конечно же можно перед рибутом просто остановить ohasd.service руками, а потом уже уходить на перезагрузку, но в жизни бывают разные ситуации и хотелось бы чтобы простой рибут был корректным.
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39520276
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно кстати опять перейти на initrd. Но во-первых я нигде не нашёл в документации Oracle требований отказаться от systemd. А во-вторых в дефолтных настройках initrd (во всяком случае у Suse Sles 12) отсутствует добрая половина необходимых скриптов в /init.d (например network) Т.е. чтобы даже просто перейти на initrd надо ещё доработать его напильником.
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39520277
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использовании initrd подобная проблема наблюдалась при включённом параллелизме. Потому в Doc ID 464061.1
даже есть указание отключать параллелизм

Код: plsql
1.
Change RUN_PARALLEL=no in /etc/sysconfig/boot. The startup will not be much slower and Oracle Clusterware will work just fine as usual. 



В systemd (как я понимаю) параллелизм невозможно отключить в принципе.
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39521293
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После апгрейда на Oracle 12.2 проблема решилась! Они поправили oracle-ohasd.service так, что при рибуте теперь Linux таки стал ждать нормального останова. Не понятно только почему они не поправили в 11.2.0.4 (с учётом того что у меня был августовкий патчсет)

Вот так он теперь стал выглядеть

авторoratest56:~ # systemctl cat oracle-ohasd.service
# /etc/systemd/system/oracle-ohasd.service
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
#
# Oracle OHASD startup

[Unit]
Description=Oracle High Availability Services
After=syslog.target network-online.target remote-fs.target

[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null
ExecStop=/etc/init.d/init.ohasd stop >/dev/null 2>&1 </dev/null
TimeoutStopSec=60min
Type=simple
Restart=always

# Do not kill any processes except init.ohasd after ExecStop, unless the
# stop command times out.
KillMode=process
SendSIGKILL=yes

[Install]
WantedBy=multi-user.target graphical.target
oratest56:~ #



Как видно появилась секция ExecStop. Увеличился After и появились KillMode=process SendSIGKILL=yes
Непонятно только на кой они увеличили TimeoutStopSec с 5 минут на 60.
...
Рейтинг: 0 / 0
start-stop ohasd под systemd
    #39536216
Фотография Дядя Жора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению коррекция oracle-ohasd.service под 11.2.0.4 не решила этой проблемы и дело тут вовсе не в нём.
Может кому-нибудь понадобится.
После 2-х недельной переписки в оракловым саппортом они наконец-то выдали решение.

Код: plsql
1.
2.
3.
4.
Issue seems to be same as the bug #23607800 has been superseded by fix #25606616. This fix#25606616 takes care of multiple issues. 

Unfortunately patch is available on top 11.2.0.4.160719OCW. 
And you are on OCW Patch Set Update : 11.2.0.4.170814. 



Т.е. чтобы эта хрень нормально заработала выходит надо ставить 11.2.0.4.160719 (это июль 2016) и только его, а дальше ставить патч 11.2.0.4.160719OCW
При такой хитровы$$%й комбинации действительно ohasd стал корректно завершаться.
Дальше они мне предложили начать процедуру сбора информации для выпуска патча под последний патчсет 170814 (который за август 2017).
Прикольные чувачки. Ещё год назад знали про баг, а в новые патчи его почему-то не включали.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / start-stop ohasd под systemd
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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