31 декабря 2010 г.

С наступащим Новым Годом!

С наступающим Новым Годом, друзья!

Желаю Вам смелее планировать следующий год и пусть в действительности Вы сможете реализовать еще больше, чем запланировали и станете еще лучше!

Я очень ценю, что Вы читаете мой блог. Спасибо Вам большое. 

Буду стараться писать в него в следующем году и не разочаровывать Вас отсутствием интересной информации.



Желаю весело отметить Новый Год и с пользой провести праздники.
Пусть в следующем году у Вас все сложится! Удачи!

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


Logical Volume Manager (LVM) своими руками. Часть I

Logical Volume Manager (LVM) - система позволяющая управлять распределением дискового пространства с помощью логических томов. Я делаю памятку прежде всего для HP-UX. В других операционных системах могут быть свои особенности и нюансы, но основа, безусловно, одна.

Структура LVM: один или несколько дисков объединены в Volume Group, внутри которой можно создать один или несколько Logical Volume, между которыми распределить дисковое пространство входящих в Volume Group дисков. На Logical Volume создать файловые системы или swap-области и указать точки монтирования.


Диск, входящий в LVM, имеет определенную структуру и содержит служебную информацию.


Полезные директории и файлы:
  • /dev/dsk/cXtXdX и /dev/rdsk/cXtXdX - файлы устройств (block и raw) жестких дисков в системе,
  • /dev/vgXXX/group - файл устройств для Volume Group vgXXX,
  • /dev/vgXXX/lvXXX и /dev/vgXXX/rlvXXX - файлы устройств (block и raw) Logical Volumes из Volume Group vgXXX,
  • /etc/lvmtab - бинарный файл, который содержит список Volume Groups системы и список входящих в них жестких дисков (физических томов). Часть информации из файла можно просмотреть командой strings,
  • /etc/lvmconf - директория с бэкапом конфигурационных файлов Volume Group. Обновляется командами изменения Volume Group или Logical Volume или отдельно командой - vgcfgbackup,
  • /etc/fstab - список файловых систем и точек монтирования, используется для автоматического монтирования файловых систем при старте ОС,
  • /etc/mnttab - список того, что и куда смонтировано в данный момент. Информация используется командами mount/umount и df/bdf.

Продолжение следует... :)

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


1 декабря 2010 г.

Подружить кластер и brbackup/brarchive

Исходные данные:
  • ленточная библиотека на 2 устройства записи на ленту,
  • библиотека подключена по оптической сети (FC),
  • система SAP работает в отказоустойчивом кластере (HP MC/ServiceGuard), состоящем из 2-х нод,
  • бэкапы базы данных и журналов ORACLE делаются стандартными средствами SAP (brbackup/brarchive).

Вывод команды # ioscan -fnC tape на первой и второй ноде выдает несколько отличную картину:
первая нода кластера:


вторая нода кластера:


Программы brbackup/brarchive информацию для своей работы берут из профиля /oracle/<SID>/<ora_vers>/dbs/init<SID>.sap и из планировщика заданий в SAP - транзакции DB13. В профиле помимо всего прочего прописаны и файлы устройств ленточной библиотеки. Из выше показанных скриншотов видно, что необходимо создавать 2 профиля инстанции для каждой ноды. И обновлять содержимое профиля init<SID>.sap из этих профилей при переходе кластерного пакета на ту или иную ноду.

Есть более изящное решение. Создаем линки к файлам устройств на каждой ноде с одинаковыми именами. Прописываем их в профиль и всё. Профиль один на две ноды.


параметры профиля:


Здесь ltm и rtm - это left type и right tape. Названия выбраны для удобства использования и для несовпадения с возможными реальными.
Так, мне кажется, жить удобнее. :)

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


30 ноября 2010 г.

SAP GUI for Windows, patches and hotfixes

На данный момент SAP поддерживает следующие версии SAP GUI for Windows:
  • SAP GUI 6.20 - окончание поддержки 31.12.2010,
  • SAP GUI 7.10 - окончание поддержки 12.04.2011,
  • SAP GUI 7.20 - окончание поддержки 09.04.2013.

Список поддерживаемых ОС начинается с Windows XP/Windows 2003 Server (состояние de-support, что означает - поддерживаем, но предлагаем сделать апгрейд), заканчивается Windows 7. Windows 2000 не поддерживается с 13.07.2010.

Получается, что в качестве оптимальной рабочей станции необходим компьютер под управлением Windows 7 или Windows Vista (окончание основной поддержки в 2012 году и выход на de-support со сроком до 2017 года) с SAP GUI 7.20. В крайнем случае Windows XP (Windows 2003 Server).
У меня на работе и дома стоит связка Windows XP + SAP GUI 7.10 last SP.

Теперь еще один новый нюанс. Для SAP GUI 7.20 вышел уже 3-й SP, который можно скачать с SAP Support Portal. Так как частота выхода SP для SAP GUI составляет 6-8 недель SAP ввел такое понятие как HotFix для SP. Это пакеты поддержки, которые выходят между основными SP для SAP GUI и содержат критические исправления. Относятся к конкретным SP (PL в описании) и устанавливаются так же как SP для SAP GUI (закрываем все окна SAP Logon и запускаем *.exe файл с пакетом поддержки). Подробности по поводу HotFix для SP для SAP GUI можно прочитать в SAP note # 1489891 - Hotfixes for SAP GUI for Windows 7.20.


Еще две полезные нотки:

Держите нос по ветру. ;)

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


18 ноября 2010 г.

ORACLE 8i, ORA-01555


В ORACLE 8i используются сегменты отката (ROLLBACK SEGMENTS) и ручное управление информацией отката. В табличном пространстве, обычно это PSAPROLL, находятся сегменты отката (типичные имена PRS_0, PRS_1, ...). Данные сегменты используются для отката/восстановления транзакций, обеспечения целостности чтения из базы (блоков данных, которые в данный момент времени изменяются) и для команд чтения данных на предыдущий момент времени. Количество сегментов отката можно посмотреть через транзакцию DB02. Все сегменты отката прописаны в профиле init<SID>.ora. Если меняете их количество, то не забудьте внести изменения в профиль.

Если возникает дамп в системе, который ссылается на ошибку СУБД ORA-01555 (ORA-01555: snapshot too old: rollback segment number <rbs_nr> with name "<rbs>" too small), то это про них, родимых.

Привожу список полезных SAP note по этой теме:


Если возникает именно ORA-01555, то стоит обратить внимание на параметр OPTIMAL у ROLLBACK SEGMENTS. Мне правильное выставление его позволило увеличить время хранения информации в ROLLBACK SEGMENTS с 3 до 6 часов. Частота дампов с ошибкой ORA-01555 резко уменьшилась. Порядок и SQL-запросы для пересоздания сегментов отката можно найти в вышеуказанных нотах.

Начиная с ORACLE 9i, сегменты отката (ROLLBACK SEGMENTS) переименованы в сегменты отмены (UNDO SEGMENTS) и появилось автоматическое управление данными сегментами. Задача администратора в этом случае сводится к активации/мониторингу этого режима и создании/поддержании UNDO табличного пространства достаточного размера.

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


17 ноября 2010 г.

Буферы ORACLE

Продуктивная система SAP R/3 4.6C с ORACLE 8.1.7.4.0 в качестве СУБД. В системе ежедневно порядка 600 активно работающих пользователей. Размер базы данных около 400 Гб. Были проблемы с производительностью. Среднее время отклика системы в среднем по диалоговым инстанциям стало 3000 мс. На наиболее загруженных серверах приложений доходило до 13000 мс!
После анализа ситуации было решено увеличить параметры памяти ORACLE (профайл init<SID>.ora):


После этого (параметры вступают в силу только после перезагрузки базы данных) картина загрузки дисков на дисковом массиве стала выглядеть иначе.
  • было:


  • стало:

Первый график (синяя кривая) - загрузка дисков в процентах. Второй график (красная кривая) - время ожидания запросов в очереди к дискам в мс. Графики взяты за рабочий день с высокой нагрузкой.

Среднее время отклика системы в среднем по диалоговым инстанциям стало 1000-1200 мс, уменьшение произошло за счет "Времени БД". На наиболее загруженных серверах приложений доходит лишь до 1500-2000 мс.

Увеличение параметров происходило в 2 этапа. Это видно на первом скриншоте. Второй этап имел меньшую эффективность, поэтому дальнейшее увеличение параметров пока не планируется.

Начиная с версии ORACLE 9.2 параметры немного изменились, их стало меньше.

Полезная SAP note на эту тему:
Note # 789011 - FAQ: Oracle memory areas.

Вывод: не зажимайте ORACLE, дайте ему тоже поработать.

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


13 ноября 2010 г.

Spool в системе SAP R/3 4.6C и поддержка со стороны SAP

Имеем систему - SAP R/3 4.6C, Oracle - 8.1.7.4.0, SAP_BASIS - SAPKB46C57, sap kernel 46D - 2364 patch level.
Система, мягко говоря, не первой свежести, но я думаю, что используется такая версия еще часто. Так вот, после 01.2008 sap kernel 46D не поддерживается компанией SAP и обновления для ядра не выпускаются. Предлагается переход на ядра 46D_EXT или 46D_EX2, которые требуют версию ORACLE не ниже 9.2. На днях на ландшафте клиента было обнаружено, что запросов в spool хранится больше, чем обычно. Разбор полетов показал, что стандартное фоновое задание SAP_REORG_SPOOL работает в холостую и ни одного запроса в spool не удаляет.


Данное задание запускает в фоне программу RSPO0041 (SAP note # 41547) с вариантом SAP&001. Вариант представляет из себя следующее:


То есть фоновое задание запускается ежедневно и удаляет "Устаревшие запросы в спул". У каждого запроса в spool (spool request) есть "Дата удаления" (Delete data), которая формируется по формуле: дата создания + 8. Число 8 берется из параметра инстанции rspo/req_lifetime, который можно установить в значения от 1 до 8. Анализ запросов в spool показал, что совершенно у всех запросов в поле "Дата удаления" стоит - 01.01.2100!
Была найдена SAP note # 1422843 - Wrong deletion date in spool request, в которой описана проблема, возникающая после 23.12.2009. Данная проблема исправляется ручными манипуляциями + установкой новой версии sap kernel. Но так как в данной системе без апдейта ORACLE обновление sap kernel невозможно, решено было удалить фоновое задание SAP_REORG_SPOOL и запланировать периодическое (ежедневно) выполнение программы RSPO0041 со следующими опциями:


"Пора-пора делать upgrade...", - шепчет компания SAP на ушко своим клиентам. ;)

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


20 октября 2010 г.

Установка SAP ERP 6.0 SR3, опять в картинках


Ну вот дошла очередь и до третьей системы в великолепной команде на подопытном сервере, который я собрал своими мозолистыми руками в кризисном, 2009, году. Ей стала SAP ERP 6.0 SR3. Скачал последние версии установочных дисков для системы на Windows/ORACLE x64 с SAP Support Portal. Инструкции по установке взял тут.

Как всегда, стараясь для будущих поколений SAP администраторов, сделал инструкцию по установке. База данных после установки, апдейта и начальной настройки занимает - 100 Гб.

Смело качаем инструкцию по установке SAP ERP 6.0 SR3 (zip-архив, 1813 Кб) и используем во благо. :)

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


16 октября 2010 г.

Файл блокировки brbackup/brarchive


Если для создания резервных копий базы данных используются стандартные утилиты системы SAP (brbackup/brarchive), то стоит учитывать, что при старте эти программы создают файл блокировки. Данный файл служит для защиты от одновременного запуска нескольких программ резервного копирования. Файл имеет имя .lock.brb или .lock.bra соответственно для блокировки brbackup и brarchive процессов. Располагается файл в директории, заданной параметром stage_root_dir или archive_stage_dir соответственно, по умолчанию, /oracle/<SID>/sapbackup.

После сбоя утилиты brbackup или brarchive файл блокировки может остаться в вышеуказанной директории и препятствовать последующему запуску процесса резервного копирования. В данной ситуации требуется ручное удаление файла блокировки администратором. Старайтесь не забывать об этом.

Подробности в SAP note # 153902 - Flexible processing of BR program locks.

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


8 октября 2010 г.

Процессы SAP, ORACLE, HP-UX


Сегодня поговорим о рабочих процессах системы SAP. Основными "пчелками" в ABAP-части системы являются рабочие процессы, которые исполняют ABAP-код программы, запускаемой пользователем, осуществляют печать из системы, обновление данных в базе данных и т.д. Выделяют следующие типы процессов:
  • DIA - диалоговые процессы, которые выделяются для работы пользователей с системой в режиме диалога;
  • BTC - фоновые процессы, которые обрабатывают запланированные фоновые задания системы и пользователей;
  • ENQ - процесс блокировки, всегда один и всегда на центральной инстанции;
  • UPD(VB), UP2 - процессы обновления данных в базе данных;
  • SPO - процессы спула, которые обрабатывают запросы на печать.
Количество тех или иных процессов задается параметрами в профиле инстанции. Посмотреть что и в каком количестве сконфигурировано в системе можно в транзакции SM50. У "пчелок" есть "матка" - диспетчер. Данный процесс системы организует очередь к рабочим процессам, раздает им задания, управляет их запуском и остановкой. Рабочие процессы являются дочерними процессами родительского процесса диспетчера на уровне ОС Unix. Таким образом, стоит понимать, что рабочий процесс системы SAP это отдельный процесс на уровне ОС. Каждому рабочему процессу SAP соответствует shadow-процесс ORACLE, который в свою очередь представляет отдельный процесс на уровне ОС Unix (на платформе Windows ситуация несколько иная).
Любой процесс требует определенный набор ресурсов (оперативная память, такты процессора, место в таблице процессов и т.д.). Поэтому держать неограниченное количество процессов, что со стороны SAP, что со стороны ORACLE или UNIX, не целесообразно. Есть определенный ряд параметров, которые ограничивают количество процессов, прежде всего максимальное. И чтобы SAP, ORACLE и UNIX не вели себя как лебедь, рак и щука, необходимо учитывать эти параметры и согласовывать между собой их значения.
И так, есть общее количество рабочих процессов системы SAP. При этом, если установлены дополнительные сервера приложений, то количество рабочих процессов дополнительных серверов приложений надо учитывать. Количество рабочих процессов SAP задаётся параметрами rdisp/wp_no_* в профиле инстанции системы. В профайле ORACLE (init<SID>.ora) есть 2 параметра: PROCESSES и SESSIONS.
Формулы расчета можно найти в SAP note # 384839 (пункт 2)(для ORACLE версий 8i и 9i) или SAP note # 830576 (для ORACLE версий 10i). В наиболее общем виде формулы выглядят так:
  • PROCESSES = #ABAP work processes * 2 + #J2EE server processes * <max-connections> + PARALLEL_MAX_SERVERS + 40
  • SESSIONS = 2 * PROCESSES
Если установлена только ABAP-часть, то формула очень проста - удвоенное количество рабочих процессов SAP плюс запас для служебных процессов ORACLE. Например, в системе сконфигурировано 50 рабочих процессов SAP, следовательно, надо выставить PROCESSES = 140, SESSIONS = 280.
На уровне HP-UX есть параметр ядра nfile. Этот параметр задается формулой, которая зависит от параметров nproc и max_users. Если в системе много процессов ORACLE, которые работают с большой базой данных (состоящей из большого количества дата файлов), то можно "схлопотать" ошибку ОС:
Error: 23: File table overflow
Чтобы такого "безобразия" не было. Необходимо чтобы параметр nfile удовлетворял условию:
  • nfile > #File descriptors = #Data files * PROCESSES
Для подробной информации стоит заглянуть в SAP notes # 546006 и # 172747. Для установки параметра в HP-UX используйте команду kmtune (kctune) или SAM.

Вышесказанное поможет добавить дополнительный сервер приложений, дополнительные рабочие процессы в систему SAP и при этом согласовать работу базы данных ORACLE и ОС HP-UX, не получив лишних проблем. ;)

А еще у меня есть вопрос знатокам. ;) Почему в формуле расчета параметра PROCESSES для ORACLE количество рабочих процессов SAP умножается на 2? В документации говорится, что одному рабочему процессу SAP соответствует один рабочий процесс ORACLE. Зачем брать ИМЕННО двойное количество. Кто знает - отпишитесь в комментариях. Очень интересно. :)

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


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-систему. И все это без просиживания администратором ночи на работе. Можете придумать свои случаи применения. :) 

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


3 июня 2010 г.

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

Запуск процессов-демонов (фоновые процессы, работающие всё время работы системы) в операционной системе HP-UX удовлетворяет стандарту System V. Сначала стартует процесс инициализации системы - init. /etc/inittab - файл настройки процесса init. В нем указан уровень старта системы по умолчанию (3). Процесс инициализации системы (init) запускает скрипт /sbin/rc, который в зависимости от уровня старта системы запускает соответствующие скрипты из директорий /sbin/rcX.d/, где X=0,1,2,3. В данных директориях лежат не скрипты, а линки, начинающиеся на "S" или "K", в зависимости от того, что необходимо на данном уровне сделать с подсистемой - запустить (start) или остановить (kill). Сами скрипты находятся в директории /sbin/init.d/. Файлы настройки подсистем хранятся в директории /etc/rc.config.d/.


Если необходимо "поднять" систему на уровень 3, то процесс /sbin/rc выполняет последовательно скрипты начинающиеся символом "S" из директорий /sbin/rc1.d/, /sbin/rc2.d/, /sbin/rc3.d/, поднимаясь сначала на уровень 1, затем 2, а потом уже 3.
Останов системы происходит в обратной последовательности: выполнение процессом /sbin/rc скриптов начинающихся на символ "K" из директорий /sbin/rcX.d/ (где X=1,2,3) и переход на уровень 2, затем 1 и 0.
Скрипты одни и для того и для другого, просто выполняются с параметром start или stop соответственно. Есть еще параметры start_msg и stop_msg. С этими параметрами скрипты подсистем выдают сообщения, которые можно лицезреть на консоли при старте/останове системы.


Это была матчасть. Теперь перейдем к практике. Как заставить стартовать и останавливаться нашу SAP систему, установленную на сервер под управлением HP-UX. Причем, делать это автоматически при старте/останове ОС.
Для начала надо скачать архив (3 Кб). Выложить его на сервер с HP-UX и установленной системой SAP, например, в директорию /tmp/. Далее последовательность команд на самом сервере под пользователем root такова:
  1. Распаковать архив: # gunzip -c /tmp/start_stop_SAP.tar.gz > /tmp/start_stop_SAP.tar
  2. # cd /tmp; tar -xvf /tmp/start_stop_SAP.tar
  3. Открыть текстовым редактором, например, vi, и подкорректировать последовательно файлы из директории /tmp/start_stop_SAP/etc/rc.config.d/. В данных файлах задаются следующие параметры: oracleVAR, instanceVAR, saposcolVAR, listenerVAR - параметры запуска скриптов, 0 - не запускать, 1- запускать (установив значение в "0", можно на время отключить автостарт/автостоп системы SAP на данном сервере). DATABASE_NAME и INSTANCE_NAME - это SID базы данных и SAP-системы соответственно. В примере - SID = TTM. ORA_SID и SAP_SID - пользователь <sid>adm. В примере - ttmadm. COMMAND_START и COMMAND_STOP - команды запуска и останова SAP-системы. В примере - startsap_tsap_00 и stopsap_tsap_00, здесь tsap - hostname, 00 - номер системы. Аккуратно прописать эти параметры, сохранить файлы.
  4. Копируем файлы раз: # cp -p /tmp/start_stop_SAP/etc/rc.config.d/* /etc/rc.config.d/
  5. Копируем файлы два: # cp -p /tmp/start_stop_SAP/sbin/init.d/* /sbin/init.d/
  6. Копируем файлы три: # cp -p /tmp/start_stop_SAP/sbin/rc2.d/* /sbin/rc2.d/
  7. Копируем файлы и четыре: # cp -p /tmp/start_stop_SAP/sbin/rc3.d/* /sbin/rc3.d/
Скрипты очень просты в исполнении. Если Вы знаете основы shell-программирования и процесс запуска-останова SAP-системы на Unix-системах, то легко разберетесь в скриптах и сможете их модифицировать: добавить Java-инстанцию, "разрулить ситуацию" с несколькими установленными SAP-инстанциями на одном сервере. Если будут проблемы, пишите мне, помогу адаптировать скрипты.

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


30 апреля 2010 г.

SAP GUI Installation Server

Клиентское место SAP GUI можно устанавливать не только с локального CD-диска или из локальной директории, но и с удаленного сервера установки SAP GUI - SAP GUI Installation Server. Для организации такого сервера необходим файл-сервер на базе MS Windows Server, около 1 Гб дискового пространства, диск с дистрибутивом SAP GUI. На текущий момент это SAP GUI 7.10. Хочу сразу предупредить - берите свежий диск - SAP GUI 7.10 comp 4. Я сначала пытался установить с SAP GUI 7.10 comp 1, но потерял пару дней - не было возможности ставить пакеты поддержки на сервер, не было части пунктов меню. Не повторяйте моей ошибки. :)
Установка SAP GUI Installation Server:
  1. Копирование дистрибутива SAP GUI 7.10 на выделенный файл-сервер.
  2. Выделение директории, организация общего доступа к ней по локальной сети.
  3. Запуск NW_7.0_Presentation\PRES1\GUI\WINDOWS\WIN32\setup\NwCreateInstServer.exe и установка сервера SAP GUI в выделенную директорию.
После этого запускается основной инструмент конфигурации, обновления SAP GUI Installation Server - NwSapSetupAdmin.exe (SAP Installation Server Administration Tool). Данный инструмент можно запустить в дальнейшем вручную через пункт меню MS Windows Server.


Данный инструмент выглядит следующим образом:


На данный сервер можно "накатывать" пакеты поддержки для SAP GUI. Через кнопку "Patch server". Можно создать свой Package из компонент сервера, которые нужны тому или иному типу пользователей.


Перейти к списку пакетов при установке можно, выбрав пункт "Switch to a list of predefided packages", на следующем экране:


Самые интересные возможности SAP GUI Installation Server:
  • Создание установочного exe-файла из Package с последним пакетом поддержки на SAP GUI (пункт меню Packages -> Compress to Single-file Installer).
  • Самое "вкусное" - это возможность выполнения удалённо процедур удаления, установки, обновления клиентского места SAP GUI. Для этого открывается пункт меню "Remote -> Execute Process Remotely". Далее указывается host рабочей станции пользователя, строка выполнения комманд и имя пользователя/пароль с достаточными полномочиями для этой операции на рабочей станции пользователя.

     Основные строки выполнения команд следующие:
  • C:\Program Files\SAP\SAPSetup\Setup\NwSapSetup.exe /Silent /Uninstall /All - удалить клиентское место.
  • \\<server_share>\Setup\NwSapSetup.exe /Silent /Package="SAP_GUI_STANDARD"
- установить Package SAP_GUI_STANDARD.

  • \\<server_share>\Setup\NwSapSetup.exe /Silent /Update
  • - обновить клиентское место установленное на рабочей станции пользователя до уровня пакета поддержки сервера. Есть возможность автоматического обновления клиентского места SAP GUI на рабочей станции пользователя. Для этого надо проверить активность автоматического обновления через пункт меню "Services -> Configure Automatic Workstation Update Service" на стороне сервера.


    И на стороне пользователя выбрать пункт меню "Cofigure Update-Check", появляющийся при нажатии правой клавишей мыши на иконке SAP Logon.


    Здесь стоит проверить активность обновления и указать периодичность проверки в кликах мыши на иконку SAP Logon. Проверка происходит в момент запуска программы SAP Logon. Если программа автоматического обновления на стороне рабочей станции пользователя обнаружит, что произошло обновление SAP GUI Installation Server, она выдаст пользователю диалоговое окно с предложением обновить SAP GUI. Если выберете обновить, то программа "без вопросов" оперативно обновит версию SAP GUI. Правда, такая реакция системы некоторых пользователей может напугать. :) Поэтому есть возможность централизованно на стороне сервера отключить эту функцию. Стоит заметить, что SAP GUI будет обновляться таким образом, только если клиентское место было изначально установлено с SAP GUI Installation Server.

    Дополнительную информацию смотрите в справке по программе SAP Installation Server Administration Tool (меню Help).

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


    22 апреля 2010 г.

    Вышла новая версия SAP GUI 7.20

    Пока в России вся страна праздновала день космонавтики, вспоминая таких людей, как Юрий Гагарин, компания SAP AG без лишнего шума обновила версию клиентского места, выпустив SAP GUI for Windows 7.20 и SAP GUI for Java 7.20. Первую скачать можно здесь, вторая где-то рядом. ;)

    Я поставил себе SAP GUI for Windows 7.20 на рабочий ноутбук под управлением MS Windows 7. Процедура установки аналогична процедуре установки версии 7.10. Запускаете на выполнение файл NW_7.0_Presentation\PRES1\GUI\WINDOWS\WIN32\SetupAll.exe и проходите по серии экранчиков:


    Запускаем SAP GUI Configuraton и первое, что бросается в глаза это новая тема оформления "SAP Signature Theme". Как позже оказалось это не новшество версии 7.20, данная тема появилась и в версии 7.10 после 11 пакета поддержки.


    Полная версия SAP GUI, что я поставил, следующая:


    Основное окно программы теперь выглядит так:


    Появилась вкладка "Фавориты", куда я сразу же накидал системы, с которыми работаю наиболее часто:


    Окно входа в систему тоже претерпело некоторые изменения:


    Что сразу бросается в глаза это курсорчик в виде квадратика-мишени, который выделяет активное поле:


    С ним очень удобно работать клавиатурой. Правда, при выборе другой темы оформления этот курсорчик пропадает и вид становится отнюдь не такой симпатичный. Примерно, как у MS Windows 7 без Aero:


    При работе были замечены такие же глюки с перерисовкой и мерцанием, как у Диспетчера файлов в MS Windows 7.
    Файлы настройки были обнаружены в директории С:\Users\shibolov\AppData\Roaming\SAP\Common\ и состояли из файлов saplogon.ini (настройки соединений) и SapLogonTree.xml (хранит фавориты и указатели на файлы saplogon.ini и sapshortcut.ini).
    Основными особенностями SAP GUI for Windows 7.20 компания SAP AG отмечает:
    • поддержка MS Windows 7, MS Office 2010 (32-бит),
    • разработка на Visual Studio 2008,
    • вышеупомянутый SAP Signature Theme в качестве темы, по умолчанию.

    С полным списком изменений можно ознакомится в SAP note:


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


    12 апреля 2010 г.

    Планировщик заданий CRON


    Семейство операционных систем UNIX и их клонов (Linux, FreeBSD и т.д.) имеют прекрасный набор команд, использование которых облегчает жизнь системному администратору. Как говорится, "у нас все для людей". ;) К одной из таких команд относится программа cron, планировщик заданий пользователя. При старте системы запускается демон cron, который каждую минуту проверяет очередь заданий пользователя - crontab, расположенную в файлах в директории /var/spool/cron/crontabs/.

    Основные команды:
    • # crontab -l - просмотреть файл очереди заданий текущего пользователя,
    • # crontab -e - редактировать файл очереди заданий текущего пользователя,
    • # crontab -r - удалить файл очереди заданий текущего пользователя.

    Планирование команды я покажу на примере. Вот такие строчки планируют задания пользователя:
    30 04 10 04 * /home/slava/scripts/start_stop_sap.sh 1>> /home/slava/scripts/start_stop_sap.log 2>&1
    В 4:30 (первые два числа строки) 10 апреля (третье и четвертое числа) (* - в любой день недели) выполнится скрипт /home/slava/scripts/start_stop_sap.sh и запишет результаты своего выполнения и сообщения об ошибках в файл /home/slava/scripts/start_stop_sap.log. Можно ставить вместо чисел знаки "*". Можно указывать несколько значений через ",". Таким образом создать периодическое планирование задания. Для каждого задания своя строка. Можно вставлять строки с комментариями, начиная символом "#". Для осуществления планирования достаточно сохранить файл. Для удаления задания можно удалить строку или поставить перед ней знак комментария - "#". Вот пример периодического планирования (каждые 10 минут) выполнения скриптов:
    # 15.08.2005. System loading. Shibolov Vyacheslav.
    00,10,20,30,40,50 * * * * /opt/sys_load/bin/cpu.pl 1>> /opt/sys_load/log/cpu.pl.log 2>&1
    00,10,20,30,40,50 * * * * /opt/sys_load/bin/disk.pl 1>> /opt/sys_load/log/disk.pl.log 2>&1
    А теперь вопрос знатокам. :) Есть ли опасность в этой команде? Какой сюрприз она может преподнести администратору?

    Сегодня утром на проекте обнаружилось, что 2 диалоговые инстанции "лежат". Сервера, на которых они были запущены, функционируют в штатном режиме. В логах (/usr/sap/<SID>/<Instance_name>/work/dev_disp, /var/adm/syslog/syslog.log) информация о "шпионе", который зашел 10 апреля в 4:30 и положил обе инстанции нашим любимым пользователем <sid>adm. Всё. Никаких ошибок, дампов. База данных в этот момент совершала обряд под названием offline backup. Через систему никто остановить инстанции не мог. Почему именно эти инстанции? Почему в 4:30? Вопросы летали в голове пока я не додумался заглянуть в crontab. И что же. А ничего. Просто "я годичной давности" слал привет "себе современному". :) Не закомментировал строки останова инстанций год назад, вот они и сработали, как отлично работающий механизм.

    Если не хотите таких приветов, то комментируйте/удаляйте старые планирования.
    Подробности планирования заданий в cron смотрите в документации:
    # man 1 crontab
    # man 1M cron
    Автор: Шиболов Вячеслав Анатольевич

    8 апреля 2010 г.

    Реорганизация входящих писем в почтовом ящике системы SAP

    В любой версии ERP-системы SAP есть SAP Business Workplace (транзакция SBWP) или просто "Рабочее место SAP". Состоит оно из директорий (inbox, outbox) почтового ящика пользователя, календаря задач, личных папок с файлами и общих папок, доступных всем пользователям системы. Некий электронный органайзер. Пользователи часто используют возможности SAP-почты для обмена рабочей (и не только) корреспонденцией друг с другом.

    После бурно прожитых 3-4 лет жизни в системе SAP пользовательский почтовый ящик наполняется сообщениями и "важными" письмами, как мусорное ведро у молодой семьи с полугодовалым карапузом памперсами. :) И перед Вами может быть поставлена задача: улучшить пользование таким почтовым ящиком, увеличив скорость работы, но оставив доступ к старым письмам.


    Решение предлагается следующее. Есть прекрасная транзакция SOY9, специально созданная для организации входящей почты пользователей. На экране транзакции мы можем увидеть 3 поля - "Минимальное число документов", "Минимальный срок хранения документов", "Целевая группа" и одна галочка - "Тестовый прогон". Первые два поля позволяют установить критерии выбора старых сообщений для сохранения (лучше назвать этот процесс архивацией), третье ограничить обработку одним/группой пользователей. Галочка позволяет поиграться параметрами перед реальной обработкой почтового ящика пользователя. Принцип работы транзакции проще показать на примере. Итак, у моего тестового пользователя есть письма от 2005, 2006, 2007, 2008 и 2009 годов. Выделим все письма, кроме писем прошлого года, в отдельные директории. Для этого запустим несколько раз обработку со следующими параметрами:
    • 2005 год. Сначала тестовый прогон, потом реальный.

    В результате получим поддиректорию в директории "Личные папки", в которой лежат удаленные из папки "входящие письма" документы полученные в 2005 году.


    Переименовываем директорию в "Вход. почта 2005 год":


    • 2006 год.
    • 2007 год.

    • и 2008 год.

    После переименования всех папок в нормальный вид, получаем следующую приятную картинку:


    В директории "Личные папки" у нас хранится почта за прожитые года в аккуратном виде с сохранением даты, автора и вложений.

    SAP нот по теме не нашел, но на SAP Help информация по транзакции SOY9 есть.

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