13 августа 2010 г.

Команды для просмотра журналов в UNIX


Для просмотра журналов (логов) различных процессов в UNIX системах я пользуюсь следующим набором команд:
  • # more log.log - позволяет просматривать журнал постранично с начала файла. Переход на следующую страницу по нажатии клавиш "Пробел" или "F". Переход на страницу назад - клавиша "B". Можно просматривать построчно вперед - клавиша "Enter". Выход из просмотра лога - "Q".
  • # tail -n log.log - просмотреть последние "n" строк журнала. Если количество необходимых строк больше размера страницы, то удобно использовать так: # tail -n log.log | more. Клавиши управления - такие же, как у команды more.
  • # tail -f log.log - выводить строки журнала по мере их появления в реальном времени. Эта команда очень помогает, когда необходимо мониторить процесс загрузки/установки и так далее. Или держать такой экранчик в фоне, чтобы всегда быть в курсе событий. Выход - "Ctrl + C".



6 августа 2010 г.

Файл-пустышка

Хочу поделится одним трюком. Не помню кто и когда им поделился со мной, может быть сам придумал. Не суть. ;) Главное, что он помогает в работе администратора.

Я его использую так. Как Вы знаете, база данных ORACLE использует журналы. Журналы бывают онлайн и оффлайн. Если база данных работает в ARCHIVELOG режиме, то онлайн журналы, прежде чем СУБД сможет их использовать повторно, копируются в специальную директорию (saparch, oraarch). Если в NOARCHIVELOG режиме, то онлайн журналы просто перезаписываются. Нам интересен первый вариант, в котором работают все продуктивные системы.

Естественно, вышеуказанная директория имеет ограниченный размер. Если директория переполняется, то ORACLE не может создать копию очередного онлайн журнала, и база, грубо говоря, начинает работать в режиме "только на чтение", что в реальности приводит к "зависанию" системы SAP. Такая ситуация нередко возникает при усиленной загрузке данных в SAP-систему, при сбое в работе ленточной библиотеки или при не отлаженном процессе создания резервных копий оффлайн журналов. Задача сводится к выделению свободного места в директории saparch (oraarch), причем сделать это надо быстро.

Я использую такой приём: до попадания в такую ситуацию, создаю в этой директории файл-пустышку, размером примерно 1 Гб и называю его "remove.me":


Если переполняется директория saparch, я (или другой администратор системы) могу спокойно удалить этот файл, и система сразу начнет работать, выйдя из "подвешенного состояния". А я смогу спокойно решить вопрос, что делать с оффлайн журналами в директории. Скорее всего запущу процесс копирования их на магнитную ленту с удалением из директории. Этот простой прием позволяет не впадать в панику, судорожно удаляя оффлайн журналы, которые могут в будущем пригодиться, а потом держать скрещенным пальцы на ногах, молясь, чтобы система не упала до следующего оффлайн бэкапа. Всегда важно, как говорил Карлсон, "спокойствие, только спокойствие". :)

Если у Вас нет большого файла, в Unix-системах его легко создать из маленьких (из тех же оффлайн журналов ORACLE), используя команду cat и перенаправление результата в файл:
# touch remove.me
# cat small_file >> remove.me
Последнюю команду надо выполнять до тех пор, пока размер файла remove.me не достигнет нужного Вам размера.
А (с подсказки пользователя laskavy) можно сделать проще:
# dd if=/dev/zero of=remove.me bs=1024x1024 count=1024
В Windows системе Вы можете таким образом спрятать свой любимый порно-фильм. Это будет мотивировать Вас не доводить ситуацию до сбоя и усердно следить за директорией. :-D
Приём можно использовать не только для директории saparch (oraarch), а везде где это может быть актуально.

Автор: Шиболов Вячеслав Анатольевич


30 июля 2010 г.

С днем системного администратора - 2010

Ну вот и прошел еще один год. Еще один год, который можно прибавить к нашим резюме, к нашему опыту, к опыту системного администратора. 


Поздравляю всех системных администраторов с этим праздником!
Желаю, чтобы следующий год прошел еще продуктивнее, чтобы было поменьше сбоев и аварий и чтобы то, чем Вы занимаетесь, радовало Вас и кормило! ;)

А в дополнение, чтобы тема зря не пропадала, расскажу про кнопочку "ТОС" на серверах компании HP. Для удаленного администрирования сервера HP снабжаются управляющим процессором, который именуется MP (в старых моделях GSP). Отсюда есть такое понятие, как MP console или GSP console. На неё можно попасть локально, через терминальную консоль, или удаленно по telnet, если настроен удаленный доступ. MP console имеет свой набор команд, с помощью которых можно посмотреть логи сервера, подать сигналы "перезагрузка", "останов" серверу и так далее. Иногда возникает ситуация, когда сервер не хочет грузится, ну ни в какую, и причину не называет. Вот тогда может прийти на помощь кнопочка "Reset MP", она обычно выполняется в виде утопленной в корпус "пипочки" на задней части сервера. Нажимаете кнопочку, например, карандашом, и сервер производит "глубокую перезагрузку". Очень часто после этого начинает работать. ;)
Так вот, на днях точно в такой же "нокаут" ушла машинка RX2620. Исследование задней стороны сервера показало, что MP console на данную машине не установлена, а есть загадочная кнопка "TOC". Схожесть строения с "Reset MP" навела меня на мысль, что и функциональность она имеет схожую. Нажатие её помогло реанимировать сервер, а поиск информации показал, что "кнопка TOC посылает MP команду tc (Resets through transfer of control)", а "Trancfer of control" = TOC. В общем, кнопка работает также. :)

Вывод. Если сервер не хочет грузиться по непонятной причине, не торопитесь звонить в службу поддержки, нажмите "Reset MP", "Reset GSP" или "TOC". Может помочь. :)

Автор: Шиболов Вячеслав Анатольевич


28 июля 2010 г.

Ключ инсталляции/апгрейда

При установке системы SAP, основанной на SAP NetWeaver, программа установки (SAPINST) на одном из этапов запрашивает ключ инсталляции/апгрейда.


Подробности про этот ключ описаны в SAP note # 805390.

Существует 2 способа получить ключ:
  • официальный, который описан в SAP note # 811923. Он подразумевает, что у Вас установлена система SAP Solution Manager, в которой Вы можете сгенерировать ключ для установки новой системы. Подробности данного способа описаны мной в небольшой инструкции (zip-архив, 139 Кб).
  • неофициальный, почти хакерский. ;) Если под рукой нет системы SAP Solution Manager и, не смотря на пропаганду компании SAP AG, нет желания включать её в ландшафт, можно обойти проверку в программе установки системы (SAPINST). Процедура следующая: 
  1. После того, как программа установки выдаст экран с запросом ключа инсталляции/апгрейда, необходимо остановить программу установки;
  2. Войти в директорию установки (обычно это путь типа: C:\Program Files\sapinst_instdir\ERP\SYSTEM\ORA\CENTRAL\AS) и найти файл control.xml;
  3. Открыть файл на редактирование (например, программой MS Word) и найти в тексте блок следующего вида:
     var retval = eval(installer.invokeModuleCall(call));
     Trace("Installer", "Installer.checkSolManKey() done: ", retval);
     return retval;

     заменить последнюю строчку на return true;
      и сохранить файл control.xml;

  4. Запустить программу установки системы (SAPINST) и продолжить предыдущую инсталляцию:

  5. На экране запроса ключа инсталляции/апгрейда ввести любой набор цифр и продолжить установку:

Автор: Шиболов Вячеслав Анатольевич

23 июля 2010 г.

Старые журналы событий SAP и ORACLE

Сегодня мы поговорим о старых записях в журналах событий процессов SAP и ORACLE.

Процессы ORACLE:
  1. Лидером в рейтинге "самый бесполезный и быстрорастущий журнал событий" является лог процесса LISTENER. :) Файл журнала располагается в директории /oracle/<SID>/<ora_version_bit>/network/log и имеет имя - listener.log. В системе с несколькими диалоговыми инстанциями всего за год файл может "распухнуть" до 1,5 Гб!


    В Unix-е очистить его очень легко. Достаточно выполнить команду # > listener.log . В Windows придется перезапускать сервис LISTENER, а во время его останова - удалять содержимое файла. Либо поиграться с программа типа unlocker, но сервис для нормальной работы перестартовать потом все равно придётся. Вот тебе и первая выгода (с) ;)

  2. Основной журнал событий базы данных ORACLE - alert_<SID>.log. Место обитания - директория /oracle/<SID>/saptrace/background/. Растет не так быстро, но при долгой работе базы данных имеет размер исчисляемый десятками Мб. Автоматически не обнуляется. Значит этим должны заниматься мы. Какие плюсы от небольшого размера файла? Они очевидны - меньшие требования к дисковому пространству, удобство в анализе. Очищать целиком, право, не стоит: записи в нем, в отличии от предыдущего лога, очень важны. В Windows процедура понятна: останавливаете СУБД, открываете файл текстовым редактором, удаляете лишние строки, сохраняете файл, запускаете СУБД. Как хорошо, что продуктивных систем на Windows все таки не так уж много. ;) В Unix можно поиграться двумя комбинациями команд: wc и split. Первая команда (# wc -l alert_<SID>.log) поможет нам понять сколько всего записей в данном файле. Хорошо бы еще знать дату первой и последней записей. После этого делите файл на части командой # split -line_count alert_<SID>.log. Результат команды - несколько файлов, содержащие по line_count строк из файла alert_SID.log. Анализируете файлы. Содержащие старые ненужные строки удаляете. Оставшийся можно делить еще. В итоге, командой mv заменяете текущий файл alert_<SID>.log полученным укороченным.
Процессы SAP:
  1. В системе SAP есть отличный автоматический процесс (задание) под названием CleanUpLogs, который можно (нужно) запланировать в транзакции DB13 с некой периодичностью (например, 1 раз в неделю). Параметры хранения журналов событий и записей указываются либо в профайле init<SID>.dba (в случае использования SAPDBA (версия системы ниже SAP 4.6С)), либо в init<SID>.sap (использование BRTOOLS). Что и как удаляется можно посмотреть в данных профайлах и в журнале выполнения задания в DB13. Информацию можно почерпнуть в нотках - # 204499 и # 403704.





  2. Если база данных находится в режиме ARCHIVELOG и для создания резервных копий используются утилиты SAP: brbackup/brarchive, то стоит обратить внимание еще на один журнал системы. Это файл /oracle/<SID>/saparch/arch<SID>.log, в котором хранятся записи о том, на какой носитель и когда был скопирован тот или иной оффлайн журнал базы данных ORACLE. Старые записи из этого файла тоже можно почистить. Использовать можно те же способы, что и для файла alert_<SID>.log. 

  3.  Ну и еще можно заглянуть в транспортную директорию - /usr/sap/trans/. Там есть директория log, которую можно проверить на предмет существования в ней старых журналов, которые можно сархивировать в другое место или просто удалить. Ну и директория /usr/sap/trans/EPS/in, в ней хранятся в распакованном виде все пакеты поддержки, которые были установлены на систему или стоят в очереди на установку. Те которые уже были установлены просятся в /dev/null. ;)



7 июня 2010 г.

Запуск/останов SAP инстанции на HP-UX. Часть II.


В первой части статьи я рассказал как запускать SAP-систему на сервере под управлением HP-UX. Теперь давайте посмотрим, что мы можем получить "с этого кролика, кроме ценного меха". :)

Самое главное, что мы получили, это то, что SAP-система без нашего участия корректно останавливается при останове ОС (например, после сигнала останова от UPS) и автоматически запускается при старте сервера. Согласитесь, что в автоматизации полезных действий и состоит основная задача администратора. Как и получение полезных привычек задача просто человека. ;)

Теперь десерт. Организация данных скриптов позволит администратору автоматизировать процесс перезапуска SAP-системы. Например, для того, чтобы вступили в силу изменения параметров инстанции SAP. Для этого необходимо набросать простенький скриптик следующего содержания:

#!/sbin/sh

# Print current date to log
echo "Current date is"
/usr/bin/date
echo "--"

# Stopping SAP system
/sbin/init.d/instance-sap stop
/sbin/init.d/saposcol stop
/sbin/init.d/listener-one stop

# Pause 30 seconds
sleep 30

# Starting SAP & ORACLE
/sbin/init.d/listener-one start
/sbin/init.d/instance-sap start

#Print end line
echo "-------------------"


И, используя утилиту cron, запланировать на ночь тихий и быстрый рестарт SAP-системы, прописав в crontab файле следующие строки:

# Shibolov Vyacheslav. SAP restart.
30 04 21 01 * /home/slava/scripts/sap_restart/start_stop_sap.sh 1>> /home/slava/scripts/sap_restart/start_stop_sap.log 2>&1


Если не хотите писать скрипт, то можно просто прописать следующие строчки в crontab файле:

# Restart SAP system. Shibolov Vyacheslav.
00 23 02 06 * /sbin/rc2.d/K009stopsap 1>> /SAPrestart.log 2>&1
30 23 02 06 * /sbin/rc3.d/S991startsap 1>> /SAPrestart.log 2>&1


Утром спокойно наблюдаете результаты работы. 
Где еще можно использовать данные скрипты? Например, для увеличения размеров файловой системы (команда extendfs). Для этого создаете скрипт, который последовательно останавливает SAP-систему и базу данных, отмонтирует раздел, расширяет его, монтирует на место и запускает SAP-систему. И все это без просиживания администратором ночи на работе. Можете придумать свои случаи применения. :) 

Автор: Шиболов Вячеслав Анатольевич