Это старая версия документа.
Содержание
BQRunAt - функционал bq.sh для запуска внешних команд при старте/останове брокера БД
Версия: bq.sh ver. 4.6.2
TT#: 0139423
Назначение
Обеспечение возможности запуска настраиваемых shell-команд в привязке к событиям старта и останова брокера БД. Предусмотрено до пяти команд в каждом из перечисленных временных отрезков:
- непосредственно перед моментом запуска брокера (proserve)
- после успешного запуска брокера БД
- непосредственно перед командой останова брокера базы (proshut)
- после останова базы
Синтаксис
Все управление функционалом реализуется путем установки переменных окружения (обычно в запускающем скрипте). Предусмотрены следующие переменные:
Включение функционала BQRunAt
BQRunAtEnabled=yes # включение функционала BQRunAt
Управление запуском
BQRunAtStart{05|04|03|02|01}='команда или скрипт' # ПЕРЕД стартом BQRunAtStart{1|2|3|4|5}='команда или скрипт' # ПОСЛЕ старта BQRunAtStop{5|4|3|2|1}='команда или скрипт' # ПЕРЕД остановом BQRunAtStop{01|02|03|04|05}='команда или скрипт' # ПОСЛЕ останова
Управление полномочиями
BQRunAtUUser={<unix-user>|.} # unix-user для выполнения всех команд BQRunAt bis - значение по умолчанию . - текущий пользователь (под которым выполняется bq.sh в данный момент) BQRunAt{Start|Stop}<NN>UUser={<unix-user>|.} # unix-user для выполнения конкретной команды BQRunAt{Start|Stop}<NN>
Управление сообщениями
BQRunAt{Start|Stop}<NN>Verbosе={0|1|2|3} # уровень сообщений 0 – сообщение отсутствует 1 – выводится UUser и имя соответствующей переменной (BQRunAt...) 2 - UUser, имя переменной и первое слово заданной команды 3 – UUser, имя переменной и вся команда целиком (с аргументами) по умолчанию: 2
Использование
Для включения функционала необходимо установить переменную окружения BQRunAtEnabled=yes
. Любое другое значение BQRunAtEnabled
, в т.ч. пустое или неопределенное, отключает функционал полностью.
Команды, которые необходимо привязать к событию старта брокера БД, задаются переменными вида BQRunAtStart
NN, где NN – числовое значение, определяющее порядок выполнения заданной команды. Аналогично, переменные BQRunAtStop
NN задают команды, привязанные к событию останова брокера БД.
Если NN начинается на 0
(цифру ноль), то соответствующая команда выполняется при остановленном брокере БД.
Если же NN состоит из одной цифры от 1
до 5
, то данная команда будет выполняться при запущенном брокере БД. Значение NN определяет приоритет команды: чем оно по модулю меньше, тем ближе к событию старта/останова будет выполняться команда. То есть, команды со значениями 01
и 1
будут ближе по времени к этим событиям, чем команды 05
и 5
.
Таким образом, последовательность выполнения команд будет следующая:
При старте:
BQRunAtStart05
BQRunAtStart04
BQRunAtStart03
BQRunAtStart02
BQRunAtStart01
<старт брокера БД>
<старт всех включенных batch-процессов>
<старт всех заданных логин-брокеров (as,ws,ns)>
<старт служебных процессов (APW,BIW,AIW,WDOG)>
BQRunAtStart1
BQRunAtStart2
BQRunAtStart3
BQRunAtStart4
BQRunAtStart5
Важно: блок BQRunAtStart[1-5]
выполняется только в случае успешного старта брокера БД.
При останове:
BQRunAtStop5
BQRunAtStop4
BQRunAtStop3
BQRunAtStop2
BQRunAtStop1
<останов брокера БД>
BQRunAtStop01
BQRunAtStop02
BQRunAtStop03
BQRunAtStop04
BQRunAtStop05
Важно: Все команды BQRunAtStop
NN выполняются вне зависимости от успешности выполнения команды останова брокера БД.
Никаких пауз или ожиданий при выполнении команд BQRunAt не производится.
Команды выполняются в среде, установленной скриптом bq.sh, то есть все основные переменные определены и доступны. Также следует учитывать, что в переменную PATH
к этому моменту будут добавлены каталоги $DLC/bin
и $BQ/bin
, что позволяет во многих случаях не указывать полный путь при настройке команд BQRunAt.
При использовании подстановок shell-переменных в настойке команд BQRunAt следует учитывать, что не экранированные переменные подставляются в момент определения BQRunAt, а экранированные – в момент выполнения. Например, запись:
BQRunAtStart3=”$PROEXE $BQDB -pf $BQPF –p my-procedure.p”
не приведет к желаемому результату, т.к. переменная PROEXE
определяется в самом bq.sh и на момент задания BQRunAtStart3
еще не доступна. Подстановка же переменных BQDB
и BQPF
будет успешной, если определение BQRunAtStart3
идет в запускающем скрипте после определения этих переменных.
Для описанного применения следует использовать такую запись:
BQRunAtStart3=”\$PROEXE \$BQDB -pf \$BQPF –p my-procedure.p”
Или такую:
BQRunAtStart3=’$PROEXE $BQDB -pf $BQPF –p my-procedure.p’
Во втором и третьем случае все переменные указанной команды подставляются только в момент запуска BQRunAtStart3
.
Использование: управление полномочиями
Все команды выполняются с полномочиями, определяемыми переменной BQRunAtUUser, в которой указывается имя unix-пользователя.