Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Перезапуск listener, если время подключения занимает больше 2 секунд : Oracle

23.04.2024 17:17


08.09.2022 17:11
OlegON
 
У меня есть инсталляция базы Oracle в одной... организации, где никак не могут наладить то ли сеть, то ли виртуалки, в общем, проблема в том, что сетка моргает таким образом, что листенеру сильно плохеет и он начинает тормозить на подключениях. База тестовая, доступа к металинку нет, потому решил эти достаточно редкие случаи лечить простым убийством листенера, запуском и последующией регистрацией базы, если подключение к базе занимает больше двух секунд (в нормальном состоянии оно меньше секунды, а при сбоях клинит и на полминуты иногда). Скрипт запускается раз в минуту кроном. Есть кое-что лишнее, но оставил все целиком.
Код:
#!/bin/bash
. /home/oracle/.bashrc
export ORACLE_SID=БАЗА_DEV
function rebdb () {
lsnrctl stop
pkill -f -9 tnslsnr
sleep 1
lsnrctl start
sqlplus / as sysdba <<EOF
startup force
exit
EOF
}
pgrep -f pmon &>/dev/null || /home/oracle/opt/run.sh
pgrep -f tnslsnr &>/dev/null || /home/oracle/opt/run.sh

# Проверка времени подключения листенера
st_time=`date +%s`
lsnrctl status &>/dev/null
fin_time=`date +%s`
sum_time=`expr $fin_time - $st_time`
if [ $sum_time -gt 2 ];
then
killall -9 tnslsnr
sleep 1
lsnrctl start
sqlplus / as sysdba <<EOF
alter system register;
exit
EOF
/home/oracle/opt/run.sh
fi
Часовой пояс GMT +3, время: 17:17.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.