27_SH43-0144-00 (1038594), страница 96
Текст из файла (страница 96)
Это можно переопределить:v Задав полное имя файла, содержащего список компьютеров, с помощьюэкспорта (на платформах на основе UNIX) или задания значения (в WindowsNT) переменной среды RAHOSTFILE.v Задав список явным образом как строку имен через пробелы с помощьюэкспорта (на платформах на основе UNIX) или задания значения (в WindowsNT) переменной среды RAHOSTLIST.Примечание: Если заданы обе эти переменные среды, приоритет имеетRAHOSTLIST.Примечание: В Windows NT во избежание внесения несогласованности в файлконфигурации узлов не редактируйте его вручную. Получитьсписок компьютеров в экземпляре можно с помощью командыdb2nlist.
Подробности смотрите в руководстве DB2 Enterprise Extended Edition for Windows Quick Beginnings.Удаление повторений из списка компьютеровЕсли DB2 Enterprise - Extended Edition запускается с несколькими логическимиузлами (серверы разделов баз данных) на одном компьютере, в файлеdb2nodes.cfg для этого компьютера будет содержаться несколько записей. Вэтой ситуации команде rah требуется знать, должна ли ваша командавыполняться только один раз на каждом компьютере или один раз для каждогологического узла, заданного в файле db2nodes.cfg. Чтобы задать компьютеры,воспользуйтесь командой rah.
Чтобы задать логические узлы, воспользуйтеськомандой db2_all.Примечание: На платформах на основе UNIX, если заданы компьютеры, rahбудет, как правило, удалять повторы из списка компьютеров. Естьследующее исключение: если заданы логические узлы, db2_allдобавит перед вашей командой следующее назначение:export DB2NODE=nnn (в синтаксисе оболочки Korn)где nnn - номер узла, взятый из соответствующей строки файлdb2nodes.cfg, что позволяет направить команду на нужный серверраздела базы данных.При задании логических узлов можно ограничить список, включив в него вселогические узлы, кроме одного, или же только один сервер раздела базы данныхпри помощи префиксных последовательностей <<−nnn< и <<+nnn<.
Это может464Руководство администратора: Реализацияпонадобиться, если сначала нужно запустить команду на узле каталога, а послеэтого - на всех остальных серверах разделов баз данных, возможно, впараллельном режиме. Обычно это требуется при запуске команды db2 restartdatabase. Для этого вам надо знать номер узла каталога. Информацию опрефиксных последовательностях смотрите в разделе “Префиксныепоследовательности” на стр. 461.При выполнении db2 restart database с помощью команды rah повторныезаписи удаляются из списка компьютеров. Однако если задать префикс ”,повторы не будут удаляться, так как предполагается, что использованиепрефикса ” означает отправку данных каждому серверу раздела базы данных, ане каждом компьютеру.Управление командой rahДля управления командой rah можно использовать перечисленные нижепеременные среды.Таблица 20.ИмяЗначениеПо умолчанию$RAHBUFDIRПримечание: Доступнатолько на платформах наоснове UNIX.каталог для буфера/tmp/$USER$RAHBUFNAMEПримечание: Доступнатолько на платформах наоснове UNIX.имя файла для буфераrahout$RAHOSTFILE (наплатформах на основеUNIX); RAHOSTFILE (вWindows NT)файл, содержащий список хостовdb2nodes.cfg$RAHOSTLIST (наплатформах на основеUNIX); RAHOSTLIST (вWindows NT)список хостов в виде строкиизвлекается из $RAHOSTFILE$RAHCHECKBUFПримечание: Доступнатолько на платформах наоснове UNIX.при значении ″no″ пропустить проверкине задан$RAHSLEEPTIME (наплатформах на основеUNIX); RAHSLEEPTIME(в Windows NT)время в секундах, в течение которогоданный сценарий будет дожидатьсяначального вывода от выполняемыхпараллельно команд86400 секунд для db2_kill, 200 длявсех остальныхПриложение D.
Выдача команд нескольким серверам разделов баз данных465Таблица 20.(продолжение)ИмяЗначениеПо умолчанию$RAHWAITTIME (нав Windows NT интервал в секундах между 45 секундпоследовательными проверками,платформах на основеUNIX); RAHWAITTIME (в выполняются ли еще удаленные задания.Windows NT)На платформах на основе UNIX интервалв секундах между последовательнымипроверками, выполняются ли еще вданный момент удаленные задания, исообщениями rah: waiting for <pid>....На любой платформе можно указатьлюбое целое положительное число.Задание значения, начинающегося с нуля,например, export RAHWAITTIME=045,подавляет вывод сообщений.Задавать низкое значение нетнеобходимости, так как rah приобнаружении завершения заданий неопирается на результаты этих проверок.$RAHENVПримечание: Доступнотолько на платформахUNIX.задает имя выполняемого файла, если$RAHDOTFILES=E или K или PE или B$ENV$RAHUSER (наплатформах на основеUNIX); RAHUSER (вWindows NT)$USERНа платформах на основе UNIX - IDпользователя, под которым должна бытьвыполнена удаленная команда.В Windows NT - учетная записьрегистрации, связанная со службой DB2Remote Command Service.Примечание: На платформах на основе UNIX используется значение $RAHENVсистемы, где запущена rah, а не значение, заданное удаленнойоболочкой (если оно есть).$RAHDOTFILES на платформах на основе UNIXПримечание: Информация в этом разделе относится только к платформам наоснове UNIX.Ниже приводятся ·-файлы, которые выполняются, если префикснаяпоследовательность не задана:P466.profileРуководство администратора: РеализацияEФайл, указанный в $RAHENV (обычно .kshrc)KЭквивалентно EPE.profile, а затем файл, указанный в $RAHENV (обычно .kshrc)BЭквивалентно PENНикакойПримечание: Если вы не используете в качестве оболочки Korn, любые .-файлы,назначенные вами к выполнению, будут выполняться в процессеоболочки Korn и поэтому должны соответствовать ее синтаксису.Поэтому, если используется, например, оболочка регистрации C,чтобы настроить вашу среду .cshrc на команды, выполняемыеrah, необходимо также создать INSTHOME/.profile оболочки Korn,эквивалентный вашему .cshrc и задать в вашем INSTHOME/.cshrc:setenv RAHDOTFILES Pили же создать INSTHOME/.kshrc оболочки Korn, эквивалентныйвашему .cshrc и задать в вашем INSTHOME/.cshrc:setenv RAHDOTFILES Esetenv RAHENV INSTHOME/.kshrcСущественно также, что ваш файл .cshrc не записывается в stdout,если нет tty (как при вызове командой rsh).
Это можно обеспечить,вставив все строки, которые записывают в stdout, например, вследующие команды:if { tty -s } then echo "executed .cshrc";endifЗадание профиля среды по умолчанию в Windows NTПримечание: Информация в этом разделе относится только к Windows NT.Задать профиль среды по умолчанию для команды rah можно при помощифайла db2rah.env, который должен быть создан в каталоге экземпляра. Этотфайл должен иметь следующий формат:; Это строка комментарияDB2INSTANCE=имя_экземпляраDB2DBDFT=имя_базы_данных; Конец файлаМожно задать все переменные среды, которые требуются для инициализациисреды для rah.Приложение D.
Выдача команд нескольким серверам разделов баз данных467Диагностика ошибок при работе с rah на платформах на основе UNIXПримечание: Информация в этом разделе относится только к платформам наоснове UNIX.Ниже приводятся советы относительно некоторых ошибок, которые могутиметь место при выполнении команды rah:1. rah зависает (или выполняется слишком долго)Причина этой ошибки может заключаться в том, что:v rah определила, что ей требуется буферизовать вывод, а вы неэкспортировали значение RAHCHECKBUF=no.
Поэтому, прежде чемвыполнять вашу команду, rah посылает команду всем компьютерампроверить существование каталога буфера и создать его, если такойкаталог не существует.v Один или несколько компьютеров, которым была послана ваша команда,не отвечает. Срок ожидания для команды rsh в конце концов истечет, ноон достаточно велик, обычно около 60 секунд.2. Вы получили сообщения:v Неверное имя при регистрацииv В разрешении отказаноЛибо ID компьютера, где запущена rah, не задан правильно в файле ·hostsодного из компьютеров, либо на компьютере, где запущена rah, в файле·rhosts не задан правильно один из компьютеров.3. При параллельном выполнении команд при помощи фоновых r-оболочек,хотя команды запускаются и выполняются на компьютерах в течениеожидаемого затраченного времени, rah требуется много времени, чтобыобнаружить это и выдать приглашение оболочки.На компьютере, где запущена команда rah, в файле ·rhosts не заданправильно один из компьютеров.4.
Хотя rah хорошо запускается из командной строки оболочки, если запуститьrah удаленным образом с помощью, например, rsh,rsh somewher -l $USER db2_killrah никогда не завершается.Это нормальная ситуация. rah запускает процессы фонового мониторинга,которые продолжаются и после ее завершения. Эти процессы обычнопродолжаются до завершения всех процессов, связанных с выполняемойвами командой. Для команды db2_kill это означает завершение работы всехменеджеров баз данных.
Процессы мониторинга можно завершить, отыскавпроцесс с командой rahwait>or и введя команду kill <id_процесса>. Номерсигнала задавать не следует. Вместо этого используйте значение поумолчанию (15).468Руководство администратора: Реализация5. Вывод rah показан неверно или при выдаче нескольких команд rah пододним и тем же $RAHUSER rah ошибочно сообщает, что переменная среды$RAHBUFNAME не существует.Это связано с тем, что при одновременном выполнении нескольких rah онипытаются использовать для буферизации вывода один и тот же файл буфера(например, $RAHBUFDIR/$RAHBUFNAME).
Чтобы предотвратить этуошибку, используйте разные $RAHBUFNAME для каждой из одновременновыполняемых команд rah, например, в следующей ksh:export RAHBUFNAME=rahoutrah ";$command_1" &export RAHBUFNAME=rah2outrah ";$command_2" &или воспользуйтесь методом автоматического выбора уникального имени,например:RAHBUFNAME=rahout.$$ db2_all "....."Какой бы метод ни использовался, если пространство на диске ограничено,необходимо в какой-то момент обеспечить очистку файлов буфера. rah нестирает файл буфера в конце выполнения, хотя она стирает и затемиспользует повторно существующий файл в следующий раз, когда задаетсятот же файл буфера.6. Вы ввелиrah '"print from ()'и получили сообщение:ksh: syntax error at line 1 : (' unexpectedДля подстановки () и ## необходимо:v Использовать команду db2_all, а не rah.v Задать для переменной среды RAHOSTFILE значение вашего файла/sqllib/db2nodes.cfg путем экспорта RAHOSTFILE или сохранениязначения по умолчанию.