27_SH43-0144-00 (1038594), страница 94
Текст из файла (страница 94)
Если команда запускается на одномсервере раздела базы данных, и нужно, чтобы она выполнялась на всех серверах,воспользуйтесь командой db2_all. Исключение - команда db2trc, котораявыполняется на всех логических узлах (серверах разделов базы данных) накомпьютере. Чтобы выполнить db2trc на всех логических узлах всехкомпьютеров, используйте команду rah.КомандыКоманды можно запускать последовательно на одном сервере раздела базыданных после другого или же параллельно.
При параллельном выполнениикоманд на платформах на основе UNIX можно также по своему выборунаправлять выходные данные в буфер и накапливать их там для вывода на экран(поведение по умолчанию) или выводить их на экран на компьютере, где введенакоманда. В Windows NT при параллельном выполнении команд выходныеданные выводятся на экран на том компьютере, где введена команда.Чтобы запустить команду rah, введите:rah командаЧтобы запустить команду db2_all, введите:© Copyright IBM Corp. 1993, 2000455db2_all командаЧтобы получить справку по синтаксису rah, введите:rah "?"В качестве команды можно ввести практически все, что допускается вприглашении командной строки, включая, например, несколькопоследовательно выполняемых команд.
На платформах на основе UNIXпоследовательные команды разделяются точкой с запятой (;). В Windows NTкоманды разделяются знаком амперсанд (&). За последней командой символразделения не ставится.В следующем примере показано, как с помощью команды db2_all изменитьконфигурации баз данных на всех серверах разделов баз данных, заданные вфайле конфигурации узлов.
Поскольку символ ; помещен в двойные кавычки,требование будет выполняться параллельно:db2_all ";UPDATE DB CFG FOR sample USING LOGFILSIZ=100"Описания командМожно использовать следующие команды:КомандаОписаниеrahЗапускает команду на всех компьютерах.db2_allЗапускает команду на всех указанных вами серверах разделовбаз данных.db2_killПринудительно останавливает все процессы, запущенные нанескольких серверах разделов баз данных и освобождает всересурсы на всех серверах разделов баз данных.
Эта командаоставляет ваши базы данных в несогласованном состоянии. Еене следует использовать, кроме тех случаев, когда этого требуетцентр обслуживания IBM.db2_call_stack На платформах на основе UNIX заставляет все процессы,запущенные на всех серверах разделов баз данных, записыватьтрассировку вызовов в системный журнал.В Windows NT заставляет все процессы, запущенные на всехсерверах разделов баз данных, записывать трассировку вызововв файл Pxxxx.nnn в каталоге экземпляра, где Pxxxx - ID процесса,а and nnn - номер узла.На платформах на основе UNIX эти команды выполняют rah со следующиминеявно заданными параметрами:v Выполнять параллельно на всех компьютерах456Руководство администратора: Реализацияv Буферизовать вывод команд, соответственно, в /tmp/$USER/db2_kill и/tmp/$USER/db2_call_stack.В Windows NT эти команды отправляются на выполнение rah параллельно навсех компьютерах.Задание выполняемой командыКоманду можно задать:v Из командной строки в качестве параметраv В ответ на приглашение, если никаких параметров не было задано.Метод приглашения используется, если команда содержит следующиеспециальные символы:| & ; < > ( ){ } [ ] и сам символ $ (не в качестве символа подстановки)Если команда задается как параметр в командной строке, при наличии в нейлюбого из перечисленных здесь специальных символов ее следует заключить вдвойные кавычки.Примечание: На платформах на основе UNIX эта команда будет добавлена вваш хронологический список команд сразу после ее ввода в ответна приглашение.Все специальные символы, кроме \, можно вводить в команде обычнымспособом (то есть не заключая в кавычки).
Если в команду требуется включить \,надо ввести его дважды (\\).Примечание: На платформах на основе UNIX, если не используется оболочкаKorn, все специальные символы, кроме ", \, символа $, неиспользуемого как символ подстановки, и одиночных кавычек ('),можно вводить в команде обычным способом (не заключая вкавычки). Если в команду требуется включить один изперечисленных символов, надо ввести перед ним три обратныхкосых черты (\\\). Например, если в команду нужно включитьсимвол \, нужно ввести его четыре раза (\\\\).Если в команду нужно включить двойные кавычки ("), перед ними надопоставить три обратных косых черты \\\".Примечания:|||1. На платформах на основе UNIX в команду нельзя включить одиночныекавычки ('), если ваша командная оболочка не допускает какой-либо способвведения этого символа в строку, взятую в одиночные кавычки.2.
В Windows NT в команду нельзя включить одиночные кавычки ('), если вашекомандное окно не допускает какой-либо способ введения этого символа встроку, взятую в одиночные кавычки.Приложение D. Выдача команд нескольким серверам разделов баз данных457Параллельное выполнение команд на платформах на основе UNIXПримечание: Информация в этом разделе относится только к платформам наоснове UNIX.По умолчанию команда запускается последовательно на каждом компьютере,но можно задать параллельное выполнение команд с помощью фоновыхr-оболочек, введя перед командой определенные префиксныепоследовательности. Если r-оболочка запущена в фоновом режиме, каждаякоманда помещает вывод в файл буфера на своем удаленном компьютере. Этотпроцесс возвращает вывод в виде двух частей:1.
После завершения выполнения удаленной команды.2. После завершения работы r-оболочки, которое может произойти позднее,если некоторые процессы еще выполняются.Имя файла буфера по умолчанию - /tmp/$USER/rahout, но его можно изменитьс помощью переменных среды $RAHBUFDIR/$RAHBUFNAME.Если задано, что команды должны по умолчанию выполняться параллельно, вэтом сценарии к команде, направляемой всем хостам, присоединяется спередидополнительная команда, проверяющая, можно ли использовать переменныесреды $RAHBUFDIR и $RAHBUFNAME для файла буфера.
При этом создаетсяпеременная $RAHBUFDIR. Чтобы подавить этот процесс, экспортируйтепеременную среды RAHCHECKBUF=no. Это позволит сэкономить время, еслиизвестно, что каталог существует и пригоден для использования.Прежде, чем использовать rah для параллельного выполнения какой-либокоманды на нескольких компьютерах, убедитесь, что:v Каталог /tmp/$USER для вашего ID пользователя существует на каждомкомпьютере.
Если такого каталога еще нет, создайте его при помощикоманды:rah ")mkdir /tmp/$USER"v Добавьте следующую строку к вашему файлу .kshrc (для синтаксисаоболочки Korn) или .profile, введя ее также в свой текущий сеанс:export RAHCHECKBUF=nov На каждом компьютере, где выполняется удаленная команда, в файле.rhosts должна быть запись с ID компьютера, где запущена команда rah, а накомпьютере, где запущена rah, в файле .rhosts должны быть записи c IDкаждого компьютера, где выполняется удаленная команда.Мониторинг процессов rah на платформах на основе UNIXПримечание: Информация в этом разделе относится только к платформам наоснове UNIX.458Руководство администратора: РеализацияКогда выполняются какие-либо удаленные команды или накапливаетсябуферизованный вывод, процессы, запущенные rah, отслеживают действиясистемы:v Записывают сообщения на терминал, указывая, какие команды не былизапущеныv Получают буферизованный вывод.Информационные сообщения записываются через интервал времени, которыйзадает переменная среды RAHWAITTIME.
Подробности задания этогоинтервала смотрите в справке. Можно полностью подавить выводинформационных сообщений, экспортировав RAHWAITTIME=0.Первичный процесс мониторинга - это команда с именем (как показываеткоманда ps) rahwait>or. Первое информационное сообщение содержит pid(идентификатор процесса) для этого процесса. Все остальные процессымониторинга будут видны как команды ksh, запускающие сценарий rah (илиимя символической связи). Если нужно, все процессы мониторинга можноостановить с помощью команды:kill <pid>,где <pid> - ID процесса для первичного процесса мониторинга.
Номер сигналазадавать не следует. Оставьте значение по умолчанию 15. Это никак не повлияетна удаленные команды, но предотвратит автоматический вывод на экранбуферизованных выходных данных. Обратите внимание на то, что во времявыполнения rah может в различные моменты выполняться два или болееразличных наборов процессов мониторинга. Однако если остановить в любоймомент выполнение текущего набора, другие наборы не будут запущены.Если вы не используете Korn в качестве обычной оболочки регистрации(например, /bin/ksh), использовать rah можно, но в этом случае будутнесколько другими правила ввода команд, содержащих следующие специальныесимволы:" $ (без подстановки) 'Чтобы получить дополнительную информацию, введите rah "?".