powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / shell скрипт, проверяющий статус listener'а Oracle
15 сообщений из 15, страница 1 из 1
shell скрипт, проверяющий статус listener'а Oracle
    #37006644
Nick Chervov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветствую!

Подскажите, как написать условие проверки в shell скрипте, которое проверяет статус listener'а БД Oralce?

Что то вроде:

Код: plaintext
1.
2.
3.
4.
5.
LISTENER_STATUS=`lsnrctl status SID | grep ... | awk ...`
if [ "${LISTENER_STATUS}" == "UP (?)" ]; then
	echo "Listener is running"
else
	echo "Listener is not running"  
fi


т.е. по какому полю лучше искать и существуют ли штатные скрипты, выдающие значение работы листенера типа "UP", "DOWN" и т.п.?
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37007215
Пухлый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nick Chervov,

lsnrctl status
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37007429
Nick Chervov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПухлыйNick Chervov,

lsnrctl status

А если серьезно?
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37007449
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно проверяют сразу и листенер и базу, не так давно здесь обсуждали что чекер нагиоса пытается соединится с неправильным паролем и ловит отклик invalid password. Я zabbix+zabora проверяю:
$ ./zabora version
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
на это триггер nodata(600)=1
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37007611
Nick Chervov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня задача в скрипте быстро проверить работает ли листенер, и, исходя из этого либо продолжать выполнение скрипта либо завершать скрипт, написав соответствующий лог.
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37008101
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick Chervov,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ps -eaf | grep tnslsnr | grep-v 'grep tnslsnr'" > /dev/null

if [ $? -ne 0 ]
then
  return 0
else
  echo "At least one Oracle Listener is running on host"
  return  1 
fi
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37010552
Nick Chervov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic Hunter,

Спасибо!

Вот такой еще вариант есть:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LISTENER_ALIAS=`lsnrctl status TEST4 | grep Alias | awk '{ print $2 }'`
if [ "${LISTENER_ALIAS}" != "${SID}" ]; then
	echo "Script fails, because status of listener is [${LISTENER_ALIAS}]"
	#exit  0 
else
	echo "Listener is running"
	echo "Alias:       `lsnrctl status TEST4 | grep Alias | awk '{ print $2 }'`"
	echo "Start Date:  `lsnrctl status TEST4 | grep Start | awk '{ print $3,$4 }'`"
	echo "Uptime:      `lsnrctl status TEST4 | grep Uptime | awk '{ print $2,$3,$4,$5,$6,$7,$8,$9 }'`"
fi

Выдает следующее:

Код: plaintext
1.
2.
3.
Listener is running
Alias:       LISTENER
Start Date:   29 -NOV- 2010   21 : 00 : 21 
Uptime:       13  days  11  hr.  34  min.  15  sec
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37055047
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick Chervov
Код: plaintext
1.
2.
3.
	echo "Alias:       `lsnrctl status TEST4 | grep Alias | awk '{ print $2 }'`"
	echo "Start Date:  `lsnrctl status TEST4 | grep Start | awk '{ print $3,$4 }'`"
	echo "Uptime:      `lsnrctl status TEST4 | grep Uptime | awk '{ print $2,$3,$4,$5,$6,$7,$8,$9 }'`"


Это получается оболочка 3 раза делает вызов
Код: plaintext
lsnrctl status TEST4
или она кэширует результат? в чем сильно сомневаюсь.

Подскажите как оптимизировать?! Чтобы один раз выполнить
Код: plaintext
1.
lsnrctl status TEST4
получить результат и уже потом к нему обращаться

что-то типа
Код: plaintext
1.
2.
3.
4.
LSNR_INFO=`lsnrctl status TEST4`
LSNR_ALIAS=`$LSNR_INFO | grep Alias | awk '{ print $2 }'`"
LSNR_STARTDATE=...
...
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37055292
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGruПодскажите как оптимизировать?! Чтобы один раз выполнить
Код: plaintext
1.
lsnrctl status TEST4
получить результат и уже потом к нему обращаться[/src]
Код: plaintext
1.
$ lsnrctl status > myfile.tmp
$ cat myfile.tmp | grep Uptime
)))
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37055557
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lsnrctl status|awk '{if($1=="Alias"){print "alias="$2}}{if($1=="Start"){print $3,$4}}{if($1=="Uptime"){print $0}}'
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37055849
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо

Relic HunterAlexGruПодскажите как оптимизировать?! Чтобы один раз выполнить
Код: plaintext
1.
lsnrctl status TEST4
получить результат и уже потом к нему обращаться[/src]
Код: plaintext
1.
$ lsnrctl status > myfile.tmp
$ cat myfile.tmp | grep Uptime
)))
Это же отдельный файл создаётся, наверное не оптимально.

Журавлев Денисlsnrctl status|awk '{if($1=="Alias"){print "alias="$2}}{if($1=="Start"){print $3,$4}}{if($1=="Uptime"){print $0}}'

Это близко, но надо раскидать по локальный переменным bash скрипта.
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37056023
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGruЭто близко, но надо раскидать по локальный переменным bash скрипта.

$ stat=`lsnrctl status`
$ echo "$stat"|awk '{if($1=="Alias"){print $2}}'
LISTENER
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37057061
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,
спасибо.

Делаю так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#--------------------------------------------
LS_ALIAS="123456"
lsnrctl status | while read LINE
do	
ROW="`echo ${LINE} | awk '{print $1}'`"
 case "$ROW" in 
  Alias)  echo 'Alias: ['"`echo ${LINE} | awk '{print $2}'`"']'
          $LS_ALIAS="`echo ${LINE} | awk '{print $2}'`" ;;
  Start)  echo 'Start: ['"`echo ${LINE} | awk '{print $3,$4}'`"']' ;;
  Uptime) echo 'Uptime:['"`echo ${LINE} | awk '{print $2,$3,$4,$5,$6,$7,$8,$9}'`"']' ;;
  *) ;;
 esac
done
echo $LS_ALIAS; 
#--------------------------------------------

выдаёт 123456, и так
Код: plaintext
LS_ALIAS="`echo ${LINE} | awk '{print $2}'`" ;;
тоже.

Как будто переменная является глобальной для цикла. Если её определять внутри, то выводит.
Хочу распарсить алиас, старт, и аптайм в 3 переменные.
...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37057274
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из-за |
while read LINE
выполняется в другом процессе, и там вы меняете переменную

IFS - это разделитель , в нашем случае конец строки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
LS_ALIAS="123456"
IFS=$(echo -en "\n\b")
stat=`lsnrctl status`
for LINE in $stat
do
ROW="`echo ${LINE} | awk '{print $1}'`"
 case "$ROW" in
  Alias)  echo 'Alias: ['"`echo ${LINE} | awk '{print $2}'`"']'
          LS_ALIAS=`echo ${LINE} | awk '{print $2}'` ;;

  Start)  echo 'Start: ['"`echo ${LINE} | awk '{print $3,$4}'`"']' ;;
  Uptime) echo 'Uptime:['"`echo ${LINE} | awk '{print $2,$3,$4,$5,$6,$7,$8,$9}'`"']' ;;
  *) ;;
 esac
done
echo $LS_ALIAS

...
Рейтинг: 0 / 0
shell скрипт, проверяющий статус listener'а Oracle
    #37057309
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,
Спасибо огромное.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / shell скрипт, проверяющий статус listener'а Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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