Этот сайт посвящается администрированию баз данных OpenEdge Progress.
Не корысти ради, а познания для!

С уважением,
Валерий Башкатов
Сайт разработан при участии компании Progress Technologies, официального дистрибьютора Progress Software Corp. на территории стран СНГ и Латвии.

RSS RSS подписка на обновления сайта

Поиск по сайту

Лучшие материалы

Orphus System
На сайте функционирует система коррекции ошибок. Обнаружив неточность в тексте, выделите её и нажмите Ctrl+Enter



Результаты опроса: Нужны ли книги по Progress OpenEdge на русском языке? (опрос проводился с мая 2009 по ноябрь 2010)

Да, нужны. Потому что будет легче понять материал - 268
Нет, не нужны. Достаточно материалов на английском языке - 10
Не знаю, мне всё равно - 6

А знаете ли вы что..



DSRUTIL STATUS



Команда DSRUTIL STATUS подходит для написания контролирующих сценариев. Синтаксис команды следующий:

dsrutil db-name -C status agentname [-detail]

Параметр status возвращает числовой код, по которому можно определить состояние сервера или агента репликации. Добавление параметра <-detail> позволяет получить код, более детально отображающий, что происходит с сервером или агентом репликации. Параметр agentname - это имя агента репликации, по которому нужно получить информацию. Этот параметр не является обязательным и может не использоваться, т.к. его применение имеет смысл только тогда, когда сервер репликации работает с двумя агентами, и когда команда выполняется на стороне сервера репликации. Если команда выполняется на стороне агента репликации или на стороне сервера репликации, когда он работает только с одним агентом, то использование имени агента не требуется.

Возвращаемый код командой DSRUTIL STATUS без параметра <-detail> состоит из четырех цифр. При этом первая цифра может принимать только три значения, как представлено в таблице:

Первые цифры кода Значение
1ххх Сервер репликации (Source-база данных)
2ххх Контрольный (критичный) агент репликации (Target-база данных)
3ххх Обычный агент репликации (Target-база данных)

Значения оставшихся трех цифр описаны в следующей таблице. Таблица составлена так, чтобы показать соответствие возвращаемых кодов, когда команда DSRUTIL STATUS выполняется без параметра <-detail> и с этим параметром.

Обычный код Значение Детализированный код Значение
100 Connecting 1001 Initial connection.
100 Connecting 1002 Initializing.
100 Connecting 6001 Server Initialization.
100 Connecting 6002 Connecting to Agents.
100 Connecting 6003 Configuring Agent(s).
101 Processing is taking place. 3048 Startup Synchronization.
101 Processing is taking place. 3049 Normal Processing.
101 Processing is taking place. 3050 Recovery Synchronization.
101 Processing is taking place. 6004 Recovery Processing.
101 Processing is taking place. 6005 Startup Synchronization.
101 Processing is taking place. 6021 Normal Processing.
102 Activity is halted 3051 Online backup of the Target Database.
102 Activity is halted 3052 Target Database in Quiet Point.
102 Activity is halted 3053 Target Database is in a BI stall.
102 Activity is halted 3054 Target Database is in an AI stall.
103 Pre-transition state. 2080 Pre-transition.
103 Pre-transition state. 2081 Applying After-image Extent.
104 Agent is listening. 2083 Listening.
105 Transition. 2082 Transitioning.
199 Inactive. 1032 Initial Connection Failed.
199 Inactive. 1033 Recovery Failed.
199 Inactive. 1034 Invalid Target Database Configuration.
199 Inactive. 1035 Agent Failed.
199 Inactive. 1036 Agent is Ignored.
199 Inactive. 1037 Agent is Stopped.
199 Inactive. 1038 Agent is Terminated.
199 Inactive. 1063 Agent is Ended.
199 Inactive. 6060 Server is ended.
255 Unknown. 0 Unknown.

Пример части кода из скрипта, использующего команду DSRUTIL STATUS для идентификации состояния процесса репликации:

RETCODE=`dsrutil $a -C status -detail` 
MESS="Replication error!" 
STS="High" 
case $RETCODE in 
	0) MESS=" Unknown!" STS="High";; 
	1001) MESS=" Initial connection." STS="Low";; 
	1037) MESS=" Agent is Stopped!" STS="High";; 
	3048) MESS=" Startup Sychronization." STS="Low";; 
	3049) MESS=" Normal Processing." STS="Normal";; 
	2080) MESS=" Pre-transition!" STS="High";; 
	6005) MESS=" Startup Synchronization." STS="Low";; 
	6060) MESS=" Server is ended!" STS="High";; 
esac  

Используя этот небольшой пример можно написать простую программу слежения за процессом репликации, которая будет автоматически запускаться через некоторые интервалы времени и сообщать администратору базы данных о состоянии сервера и агентов.

Помимо возвращаемых кодов, относящихся к репликации, команда DSRUTIL STATUS имеет код завершения, значение которого можно получить после выполнения команды с помощью специальной переменной $?. Существует три кода завершения, означающие следующее:

  • 0 – команда завершила работу корректно, результат ее работы отправлен в stdout ;
  • 2 – произошла ошибка при подключении к базе данных;
  • 3 – подключение к базе данных было выполнено, но в этой базе не включен механизм OE Replication.

Следующий пример демонстрирует использование кода завершения ($?) команды DSRUTIL STATUS в скрипте repluptime.sh, который по результатам работы команды DSRUTIL MONITOR определяет отставание target-базы от source-базы данных в секундах и в блоках:

$DLC/bin/dsrutil $1 -C status &>/dev/null
case $? in
   0)
     echo "a" > $HOME/repl_zadan
     echo "" >> $HOME/repl_zadan
     echo "q" >> $HOME/repl_zadan
     echo "q" >> $HOME/repl_zadan
     cat $HOME/repl_zadan | $DLC/bin/dsrutil $1 -C monitor /
                          2>/dev/null  1>$HOME/list2
     TEXT=`cat $HOME/list2 | grep second | grep -v seconds`
     SB=`cat $HOME/list2 | grep "Source RDBMS" |  awk '{print $9}'`
     TB=`cat $HOME/list2 | grep "Last Processed" |  awk '{print $9}'`
     DELTA=`expr $SB - $TB`
     echo $TEXT "," $DELTA "blok(s)"
     if [ -f $HOME/list2 ] 
     then
        rm -f $HOME/list2
     fi
     if [ -f $HOME/repl_zadan ]
     then
        rm -f $HOME/repl_zadan
     fi
   ;;
   2) echo "База данных сейчас НЕДОСТУПНА!" ;;
   3) echo "В базе данных не включен OE Replication" ;;
esac

Результат работы этого скрипта выглядит следующим образом:

Repl Server behind Source DB by: 0 second(s) , 0 blok(s)

В данном случае это сообщение говорит об отсутствии отставания target-базы данных от source-базы как по времени, так и по количеству блоков.


Previous pageReturn to chapter overviewNext page




Главная |  Статьи |  Книги |  Гостевая |  Ссылки |  От автора |  Download ProKb


������ ᠩ� pr Online ProKB Blogger Welcome to Russian Progress Users Group at Facebook Welcome to Russian Progress Users Group at LinkedIn
© 2009 - 2011 Все права на материалы, находящиеся на сайте www.openedge.ru, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
При любом использовании материалов сайта ссылка на источник обязательна.