25 декабря 2019 г.

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


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

Оглядываясь назад, могу сказать, что уходящий год был для меня очень продуктивным. Я участвовал в проекте, который очень долго ждал, к которому готовился и всеми силами способствовал его старту. И вот этот проект позади. Выполнена миграция систем заказчика со старой, не поддерживаемой и устаревшей платформы на новое современное и производительное аппаратное обеспечение. Ещё один заказчик ушел с платформы HP-UX/PA-RISC+Itanium на Linux/x86_64. Всё прошло трудно, но точно в срок, который я и условия договора установили в начале. Это был проект, который мне подарил неоценимый опыт и бороду. :)

Что касается свободного времени, то в этом году я прочитал 33 книги и посмотрел порядка 60 фильмов и сезонов сериалов.

Из книг в этом году открыл для себя Юрия Германа:
  • "Россия молодая" (2 книги); 
  • "Дело, которому ты служишь"; 
  • "Дорогой мой человек"; 
  • "Я отвечаю за всё".

Также рекомендую книгу Дмитрия Соколов-Митрича "Яндекс.Книга", в которой рассказана не только история компании "Яндекс", но и становления всего ИТ в России. И если сравнивать с сериалом "Холивар. История Рунета", который я просмотрел до этого, то книга просто бальзам на душу. Сериал после 2-х более или менее интересных серий скатился в политику, однобоко навязывая либеральные взгляды автора проекта. Причем, сюжеты серий далеко ушли от ИТ. Итог: сериал не рекомендую, книгу же, напротив, рекомендую.

Еще прочитал "Как закалялась сталь" Николая Островского. В школьные годы я осилил только первую часть, забуксовав на второй. Книга местами удивляет не вполне литературным стилем, скупостью языка, но в конце всё встаёт на свои места: книга это автобиография человека далекого от литературы.

Ещё одно открытие - книга Александра Чудакова "Ложится мгла на старые ступени". Мне очень понравилось. Но наверное, тут надо сделать скидку на мой возраст и то, что моё детство пришлось на конец 80-х, начало 90-х и провёл я эти годы в деревне. Я слушал в аудио-формате, но для этой книги этот формат не рекомендую, лучше читать.

Еще прочитал Юваль Ной Харари "Sapiens. Краткая история человечества". Книга спорная, но читается легко и для общего развития можно ознакомиться.

Ну и напоследок могу еще посоветовать Всеволода Овчинникова и его "Ветка сакуры: рассказ о том, что за люди японцы" и "Корни дуба: впечатления и размышления об Англии и англичанах". Сказать, что понравилось, это не сказать ничего. :) Хотел найти что-то подобное, например, про Германию. Но не нашёл.

Из сериалов:
  • "Кремниевая долина" закончился на 6-м сезоне. Очень слабый последний сезон, много претензий, натянутости, нестыковок, но последняя серия очень хороша. Кто не смотрел, теперь можно просмотреть все серии сразу;
  • "Любовь, смерть и роботы" - мультсборник разных авторов, оценка: серии 3 и 14 на 5 баллов; 1, 7, 8 и 18 на 4,5; а 13 на 4. Остальные особо не выделились;
  • "Семейный брак" - очень легко и интеллектуально по-британски о проблемах брака и долгой совместной жизни между мужчиной и женщиной.

Из отечественных фильмов:

Из зарубежных фильмов:
  • "Одарённая" - есть небольшие претензии к сценарию, но в целом очень качественный фильм;
  • "Статус Брэда" - та же проблема кризиса среднего возраста у мужчин, молодым, наверное, не зайдёт;
  • "Светская жизнь" - классический Вуди Аллен;
  • "Чудо" - качественный фильм, можно и нужно смотреть с детьми;
  • "Как отмыть миллион" - на удивление приятный фильм, при этом затрагивающий вполне определённые проблемы жизни при капитализме.

Ну вернёмся к нашему 2020-му. :)

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

Ну и какой Новый Год без подарков. Вот вам ссылочка, где можно скачать свежие материалы SAP курсов. Спасибо за неё щедрому человеку, который не смог один наслаждаться таким богатством. :)


До встречи в 2020 году! 


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


24 октября 2019 г.

Саповские секретики - VII

Секретик 1.

Транзакция SM50 отображает список рабочих процессов, которые сконфигурированы в текущей SAP инстанции. Количество рабочих процессов разного назначения настраивается через набор SAP параметров вида rdisp/wp_no_*. Нехватка рабочих процессов, в зависимости от типа, приводит к увеличению заданий в очереди ABAP-диспетчера, "зависанию" во время диалоговой работы, задержкам при запуске фоновых заданий и т.п. При чрезмерном количестве рабочих процессов происходит не оптимальное использование ресурсов сервера. Для мониторинга при настройке оптимального количества рабочих процессов инстанции помогут возможности транзакции SM50. На основном экране транзакции на верхней панели есть кнопка "CPU" (рис. 1).

Рис. 1. Начальный экран транзакции SM50.

После нажатия на данную кнопку напротив каждого рабочего процесса появится время, в течении которого соответствующий процесс операционной системы реально использовал ресурсы центрального процессора (рис. 2).


Рис. 2. Отображение реального времени работы рабочего процесса.

Если данное число после 2-4 недель работы инстанции равно 0, значит ABAP-диспетчер ни разу не давал задания данному рабочему процессу. Если вы обнаружили много таких процессов одного типа, то часть из них можно смело удалить. 

Главное не принимайте такое решение на основании короткого времени работы инстанции. Особенно, если у вас есть редкие кратковременные пиковые дни работы системы, а инстанция не пережила такой день после своего старта.

В последних версиях SAP систем, после обновления транзакции SM50, данные временные значения отображаются постоянно.


Секретик 2.

В транзакции SM04 отображается список пользователей, которые выполнили вход в систему на текущей SAP инстанции. Дополнительно, используя данную транзакцию можно проводить мониторинг версии клиентского программного обеспечения SAP GUI, которое использовал пользователь, а так же IP адрес, с которого был выполнен вход в систему. Для этого на панели на основном экране транзакции необходимо войти в настройки варианта просмотра (рис. 3).

Рис. 3. Настройки варианта просмотра экрана в транзакции SM04.

В диалоговом окне добавить поля "Версия GUI" и "IP-адрес" и нажать кнопку "Скопировать" (рис. 4). 

Рис. 4. Настройка видимых полей транзакции SM04.

После этого в соответствующих полях отобразится информация по пользователям, выполнившим вход в систему (рис. 5).

Рис. 5. Информация по версиям SAP GUI и IP-адресам пользователей.

Секретик 3.

Если SAP система работает на операционной системе UNIX-like, Linux в том числе, то будет полезно знать, что у пользователя операционной системы <sid>adm есть ряд настроенных псевдонимов (aliases) для команд. Например,
  • cdexe - переход в директорию с SAP Kernel.
  • cdpro - переход в директорию с профилями SAP.
  • cdDi - переход в директорию текущей инстанции.

Рис. 6. Пример использования alias для пользователя <sid>adm.

Все активные псевдонимы можно посмотреть выполнив команду alias (рис. 7).



Псевдонимы настраиваются в профайлах пользователя операционной системы. Найти их можно набрав команду в домашней директории пользователя:
grep alias .*

Хотите попробовать администрирование SAP системы в операционной системе Linux?
Посмотрите мои новые обучающие пакеты практических заданий.


Предыдущие выпуски:
Саповские секретики - I,
Саповские секретики - II,
Саповские секретики - III,
Саповские секретики - IV,
Саповские секретики - V,
Саповские секретики - VI.


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


2 октября 2019 г.

Когда возникает системный дамп TIME_OUT

Работа пользователей в ABAP-части SAP системы возможна в двух режимах:
  • диалоговый режим,
  • фоновый режим.

Первый режим является основным. В этом случае пользователь работает с системой в интерактивном режиме, вводя информацию в поля транзакций и получая результаты на экране SAP GUI. За обработку запросов от диалоговых пользователей отвечают отдельные процессы SAP инстанции – диалоговые рабочие процессы (DIA).

Второй режим, фоновый (background), служит для запуска долгих тяжелых отчетов или стандартных периодических заданий для обслуживания SAP системы (задания, собирающие различную статистику, проводящие очистку и т.п.). Фоновые задания не требуют постоянного коннекта пользователя с системой посредством SAP GUI, поэтому пользователь может запланировать задание и выйти из системы. Просмотреть результаты работы задания можно после его окончания через систему спула. За выполнение фоновых заданий в системе отвечает другой вид рабочих процессов - фоновые рабочие процессы (тип BTC).

Количество рабочих процессов для диалоговой и фоновой обработки настраивается через следующие SAP параметры:
  • rdisp/wp_no_dia,
  • rdisp/wp_no_btc.

Напоминаю, что про параметры SAP системы у меня уже была серия статей (часть 1, часть 2).

Вышеуказанные параметры являются статическими и считываются системой только при старте ABAP инстанции. Количество рабочих процессов в работающей системе можно просмотреть в транзакции SM50.

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

Дело в том, что в любой SAP системе количество диалоговых рабочих процессов инстанции всегда меньше количества пользователей. Так же как и в любой операционной системе количество ядер центрального процессора всегда меньше количества работающих процессов. Поэтому, если найдётся группа упорных пользователей, в которой каждый запустит по тяжёлому долгому отчёту (а то и по 2-3), а отчёты займут на длительный промежуток времени большинство диалоговых рабочих процессов, то остальные пользователи будут "курить в сторонке". Для них система перестанет реагировать на любые шаги диалога, даже, если они работают в лёгких, нересурсоёмких транзакциях. Чтобы пресекать такие ситуации у ABAP инстанции есть параметр rdisp/max_wprun_time. Значение параметра - время в секундах. А если после числа добавить букву M или H, то система воспримет значение, как указанное в минутах или часах (рис. 1).

Рис. 1. Параметр инстанции rdisp/max_wprun_time.

Если диалоговый рабочий процесс работает над одним шагом диалога и интервал времени больше, чем значение, указанное в ограничивающем параметре, то система прервёт выполнение данного шага. В этом случае работающая программа останавливается, диалоговый рабочий процесс освобождается, а в системе генерируется ABAP-дамп с именем TIME_OUT. При этом в разделе "Анализ ошибки" будет подсказка с именем вышеуказанного параметра и его текущего значения в системе (рис. 2).

Рис. 2. Пример системного дампа TIME_OUT.

При долгом ожидании рабочим процессом данных от базы данных также произойдёт сброс и дамп. Для того, чтобы избежать этого, необходимо при обновлении данных периодически вставлять в код программы "COMMIT WORK". После каждой такой команды счётчик обнуляется, хотя шаг диалога продолжает работать на том же рабочем процессе.

Данное ограничение по времени работы одного шага диалога в рабочем процессе можно настраивать на разных инстанциях в рамках одной системы по разному. То есть на одной диалоговой инстанции установить значение в "60M", а на второй и все "3H", если этого требует бизнес. Так же стоит отметить, что параметр динамический, а следовательно может быть изменён во время работы системы в любой момент времени без рестарта ABAP инстанции.

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

Для ориентира следует брать значение по умолчанию, которое равно 10 минутам ("600"). А дальше уже изменять в зависимости от загруженности системы и решаемых задач.

В системах основанных на SAP NetWeaver 7.40 и выше появилась возможность более глубокой настройки данного ограничения, используя следующие 3 параметра:
  • rdsip/scheduler/prio_high/max_runtime,
  • rdsip/scheduler/prio_normal/max_runtime,
  • rdsip/scheduler/prio_low/max_runtime.

Назначение параметров такое же - задание максимального времени работы диалогового рабочего процесса, обрабатывающего запросы разного приоритета (high, normal, low). 
Причём, параметр rdisp/max_wprun_time в системе остался. И при явной его установке перезаписывает значение выше-указанных трёх параметров. Поэтому его рекомендуется из профайлов удалить, а пользоваться новыми параметрами (рис. 3).

Рис. 3. Новые параметры ограничения максимального времени работы одного шага диалога.

Дополнительную информацию по теме можно найти в SAP note 25528 - Configuration of maximum work process runtime - parameter rdisp/max_wprun_time.


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


26 сентября 2019 г.

Видео-лекция Fibre Channel SAN

В посте "Как стать SAP BASIS администратором" я попробовал объединить в одну схему все знания, которые я считаю необходимыми хорошему администратору SAP систем.

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

Возьмём для примера аппаратное обеспечение. За установку, настройку и поддержку оборудования обычно отвечают отдельные специализированные инженеры-администраторы. Но понимать, как устроено серверное оборудование, как строится всё решение, какие виды коммутации используются, как работают современные системы хранения данных или резервного копирования необходимо и администратору SAP. Не все в своё время получили добротное высшее образование по той специализации, которая на данный момент кормит и поит. Да, и мир информационных технологий не стоит на месте - изменяются скорости, протоколы, решения. Нужно постоянно держать руку на пульсе и наверстывать какие-то вещи отдельно. 

Сегодня хочу поделиться хорошей видео-лекцией про основы построения сетей хранения данных (SAN) на основе протокола Fibre Channel. Лекцию читает инженер компании Brocade Григорий Никонов. Лекция построена вокруг оборудования данной компании, но учитывая, что решения в области SAN от разных компаний идентичны, информацию можно принять как общие знания по данной теме. 

Лекция состоит из двух частей. Язык: русский. Смотрится нормально на скорости х1,25.




Ещё один совет по поводу изучения новых технологий: не изучайте всё подряд, особенно не хватайтесь за то, с чем может быть никогда не столкнётесь. Изучайте со всей тщательностью то, что используется у вас и есть под рукой. Те технологии, решения тех компаний, которые используются у вас на проекте или которые собираются в ближайшее время внедрять. Потому что теория, без закрепления на практике как шапка без головы: слова красивые есть, а понимания и практических навыков нет. А если учесть, что в информационных технологиях редко когда появляются технологии максимально новые, а часто что-то на что-то похоже или является развитием старой технологии. И в будущем, зная досконально старую технологию, легче понять новое. 


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


23 сентября 2019 г.

Расширение функциональности транзакции SM04

В статье "Мониторинг рабочих процессов SAP системы" я описывал транзакцию SM50. Данная транзакция используется для мониторинга рабочих процессов ABAP инстанции. Так же в статье упоминалось, что начиная с релиза системы SAP NetWeaver 7.40 SP08, транзакция получила расширенную функциональность и позволяет просматривать рабочие процессы всех инстанций текущей SAP системы. Таким образом, произошла замена функциональности транзакции SM66. При запуске транзакции SM66 в новых релизах SAP систем вызывается транзакция SM50 с расширенным отображением рабочих процессов по всем инстанциям. Запуск старой версии транзакции SM66 возможен через код транзакции SM66_OLD. И в прошлом посте я объяснил, чем она может быть интересна и полезна. 

Теперь хочу рассказать о том, что такие же изменения произошли и в паре транзакций SM04 - AL08. Первая транзакция (SM04) служит для просмотра списка пользователей, выполнивших вход в текущую ABAP инстанцию. В транзакции можно просмотреть список открытых режимов каждого пользователя. Можно закрыть режим пользователя или все режимы, принудительно выбросив пользователя из SAP системы. Это бывает необходимо, например, перед ручным удалением блокировок из таблицы блокировок SAP, о чём я писал тут. Также в транзакции можно просмотреть количество памяти SAP системы выделенной пользователю. Начальный экран транзакции знаком всем тем, кто в той или иной степени приобщён к делу администрирования SAP системы (рис. 1).

Рис. 1. Список пользователей, выполнивших вход в ABAP инстанцию.

Как вы знаете, SAP система поддерживает горизонтальное масштабирование. Производительность уровня сервера приложений SAP может быть увеличена через установку дополнительных диалоговых инстанций, или как их сейчас называют Additional Application Server (AAS). В этом случае для просмотра пользователей, выполнивших вход во все ABAP инстанции текущей SAP системы, необходимо пользоваться транзакцией AL08 (рис. 2).

Рис. 2. Просмотр пользователей по всей системе в транзакции AL08.

В новых версиях SAP систем, основанных на SAP NetWeaver 7.40 SP08 и выше, ситуация немного изменилась. В транзакции SM04 появилась возможность перейти в режим просмотра пользователей по всей системе. Для этого необходимо перейти в пункт меню "Перейти к -> Список по всем системам" (рис. 3).

Рис. 3. Переход к просмотру пользователей по всем инстанциям в транзакции SM04.

После этого в списке появятся пользователи других ABAP инстанций, а в таблицу добавится столбец с именами инстанций серверов приложений (рис. 4).

Рис. 4. Просмотр пользователей по всем инстанциям в транзакции SM04.

И именно этот экран отображается в свежих релизах SAP систем при вызове кода транзакции AL08. 

Для вызова же старой версии транзакции AL08 служит отдельная транзакция - AL08_OLD
Кто-то может быть к ней очень сильно привык. :) 

Отличается она от новой версии, например, тем, что список всех инстанций системы с распределением пользователей по ним отображается сразу в верхней части экрана транзакции (рис. 5). Но каких-то функциональных особых "фишек" я в ней не знаю.

Рис. 5. Отображение ABAP инстанций SAP системы и пользователей в них в транзакции AL08_OLD.

Официально об этом в SAP note 2445935 - AL08 new layout as of EHP7.




16 сентября 2019 г.

Развитие SAP NetWeaver. Структура директорий

SAP NetWeaver 7.0 - SAP NetWeaver 7.0 EHP3

Начиная с первых версий SAP NetWeaver 7.0 (первоначальное название версии 2004s), компания SAP для систем, работающих на Unix-like операционных системах, внедрила новую структуру директорий и файловых систем (рис. 1).

Рис. 1. Структура директорий для систем на базе SAP NetWeaver 7.0.

Файловых систем, монтирование которых необходимо выполнить при подготовке операционной системы к установке SAP системы, только две:
  • /sapmnt
  • /usr/sap

Первая файловая система является хранилищем общих файлов для всех инстанций SAP системы:
  • общие файлы, например, журналы фоновых процессов (директория global), 
  • файлы профилей (директория profile), 
  • ядро SAP системы (директория exe).

Вторая файловая система содержит отдельную директорию для транспортной системы (trans), общую логическую директорию (SYS) и директории для каждой инстанции SAP системы:
  • DVEBMGS<No> - директория для центральной инстанции (CI),
  • D<No> - директория для дополнительной инстанции (DI),
  • ASCS<No> - директория для инстанции центральных сервисов,
  • ERS<No> - директория для Enqueue Replication Server (ERS) инстанции, используемой в отказоустойчивых инсталляциях.

Здесь <No> - номер инстанции, который используется в нумерации портов для доступа к процессам инстанции.
По умолчанию эти директории не создаются. Директория инстанции будет присутствовать в структуре, только если данная инстанция была установлена. 

Вернёмся к директории /usr/sap/<SAPSID>/SYS. Данная директория является в большей степени логической структурой, так как содержит ссылки на реальные директории файловой системы /sapmnt. То есть директории global, profile, run это символьные ссылки на физические директории в другой файловой системе (фиолетовые пунктирные линии на рисунке). На центральную логическую директорию с ядром SAP (/usr/sap/<SAPSID>/SYS/exe/run) указывает параметр SAP системы с именем DIR_CT_RUN. Данная директория является лишь хранилищем для исполняемых файлов ядра, запуска процессов из неё не происходит. Для каждой инстанции системы есть собственная директория с исполняемыми файлами ядра SAP. Например, для центральной инстанции это директория - /usr/sap/<SAPSID>/DVEBMGS<No>/exe. И на эту директорию указывает уже другой параметр - DIR_EXECUTABLE. Вот эти файлы и создают рабочие процессы текущей инстанции.

Зачем же нужно центральное хранилище SAP ядра? Для упрощения поддержки и обновления. Дело в том, что при старте каждой инстанции SAP системы в первую очередь запускается процесс sapcpe, который актуализирует локальные файлы ядра из центрального хранилища. Таким образом, при обновлении SAP ядра системы достаточно только сменить файлы в центральном хранилище (/sapmnt/<SAPSID>/exe), а остальную работу за вас выполнит программа sapcpe. При работы программы создаётся журнал sapcpe.log, который можно найти в локальных work-директориях инстанций. Процесс актуализации ядра SAP инстанций на рисунке 1 отображён пунктирными стрелками черного цвета.


SAP NetWeaver 7.10 - SAP NetWeaver 7.40

Начиная с версии SAP NetWeaver 7.10, структура директорий изменилась. Основная цель изменений - упрощение поддержки гетерогенных установок, когда в системе используются SAP ядра для различных платформ (рис. 2).

Рис. 2. Структура директория для систем на базе SAP NetWeaver 7.10.

Изменения коснулись лишь директории с SAP ядром. В ней появились следующие поддиректории:
  • jvm - содержит файлы виртуальной машины JAVA от SAP (используется с 2011 года),
  • uc/<platform> - содержит исполняемые файлы для Unicode ядра конкретной платформы (например, linuxx86_64),
  • nuc/<platform> - содержит исполняемые файлы для Non-Unicode ядра конкретной платформы.

Количество символических ссылок из директории /usr/sap/<SAPSID>/SYS тоже увеличилось. Концепция при этом осталась прежней: центральное хранилище исполняемых файлов в файловой системе - /sapmnt, а /usr/sap/<SAPSID>/SYS лишь логическая структура с ссылками.

В SAP note # 1104735 - Upgrade to the new instance-specific directory on UNIX описана процедура перевода системы на новую структура директорий при обновлении с ранних версий SAP NetWeaver.



SAP NetWeaver 7.5

Здесь нововведений не так много. Если вы читали пост "Развитие SAP NetWeaver. ASCS инстанция", то помните, что c версии SAP NetWeaver 7.3 произошло переименование инстанций. Это и отразилось в структуре директорий, начиная с версии SAP NetWeaver 7.5 (рис. 3).

Рис. 3. Структура директорий для систем на базе SAP NetWeaver 7.50.

Теперь директории D<No> могут содержать файлы или Primary Application Server (PAS) или Additional Application Server (AAS).

Реальный пример структуры директорий на системе SAP ERP 6.0 EHP8 (основана на SAP NetWeaver 7.50) можно посмотреть на рисунке 4.

Рис. 4. Пример структуры директорий на системе SAP ERP 6.08.


Предыдущие статьи рубрики:
- "Развитие SAP NetWeaver. ASCS инстанция".
- "Развитие SAP NetWeaver. Start profile".
- "Развитие SAP NetWeaver. Мандант 066".


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

9 сентября 2019 г.

Блокировка объектов SAP репозитория в транспортных запросах

При внедрении своих систем компания SAP рекомендует использовать трёхсистемный ландшафт, в который обычно объединены:
  • система разработки и настройки (DEV),
  • система тестирования или контроля качества (QAS),
  • продуктивная система или система промышленной эксплуатации (PRD).

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

Родоначальницей транспортных запросов в ландшафте является система разработки и настройки. Когда разработчик изменяет или создаёт новый объект SAP репозитория (например, программу или функциональный модуль), то для объекта автоматически создаётся транспортный запрос с типом "запрос инструментальных средств" (Worbench request). Так как разработчиков, работающих в системе, обычно больше одного, то для сохранения целостности и безопасности необходим механизм, гарантирующий, что с одним объектом репозиториия одновременно может работать только один разработчик. И до тех пор, пока он не закончит разработку-изменение и не деблокирует запрос (released), объекты привязанные к запросу будут не доступны для изменения со стороны других разработчиков. 

На уровне SAP системы (сервера приложений ABAP) этот механизм реализован с помощью двух таблиц:
  • E071 - хранит записи всех объектов в запросах/задачах,
  • TLOCK - таблица блокировок объектов в открытых запросах.

Таким образом, пока запрос открыт, его объекты должны присутствовать в таблице TLOCK. При попытке других разработчиков (отличных от владельца запроса)  внести изменения в объект репозитория, система проверяет записи в таблице TLOCK. Если запись с объектом есть, то разработчик получает отказ на изменение объекта.

В посте "Использование транзакции SE03 для поиска запросов/задач" (рис. 7) я описывал возможность снять блокировку с объекта транспортного запроса. При использовании этой функции как раз и происходит удаление соответствующей строки из таблицы TLOCK.

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

Иногда в работе данного механизма SAP системы происходит сбой. В результате чего объект SAP репозитория может быть блокирован ошибочно (остались строки в таблице TLOCK) или не блокирован вовсе (нет записей в таблице TLOCK). Второе возможно при использовании вышеуказанного функционала транзакции SE03.

Для отслеживания соответствия объектов в транспортных запросах и их блокировок в SAP системе существует ABAP-программа RDDIT049. У программы нет привязанной транзакции, поэтому запуск осуществляется через транзакцию SE38 (рис. 1).

Рис. 1. Запуск программы RDDIT049.

На начальном экране программы необходимо галочками выбрать необходимые проверки и нажать на панели кнопку "Выполнить" (F8) (рис. 2).

Рис. 2. Запуск проверок блокировок в транспортных запросах.

Первая проверка проверяет все ли блокировки в таблице TLOCK принадлежат открытым запросам. А вторая часть - проверяет все ли блокировки корректны. Результат проверок выводится на экран (рис. 3).

Рис. 3. Результаты проверок.

Текущие блокировки можно просмотреть, просто щелкнув дважды левой клавишей мыши на строку с объектами на экране с результатами.

Если вы столкнётесь с ситуацией, когда транспортная система ругается на блокировки объектов, а открытых запросов с данными объектами в системе нет, то теперь вы знаете где искать корни проблемы и как её исправить.


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


1 сентября 2019 г.

Полезные видео-лекции к дню знаний

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

Академия Яндекса

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

Данный курс хорош тем, что курировал его и читал Виктор Ашик. Я уже в свое время натыкался в сети на его видео. Человек очень увлечен концепцией Unix/Linux, знает как глубокие основы, так и много нюансов работы с Linux. Люблю слушать увлечённых своей работой людей.

Рис. 1. Виктор Ашик.



Курс состоит из 7 лекций, записанных в 2011 году. Плейлист из всех 7-ми лекций доступен по ссылке.


Лекториум

Еще один просветительский проект в сети Интернет - Лекториум. На портале есть онлайн-курсы и медиатека с записями уже проведенных курсов. Вот в записях я и обнаружил курс "Архитектура ЭВМ и основы ОС". Читают курс на пару Кирилл и Михаил Кринкины (как я подозреваю, отец и сын).

Рис. 2. Кирилл Кринкин и Михаил Кринкин.

Курс ориентирован на будущих системных программистов, но из 12-ти лекций, только пара была не так интересна и близка мне, как системному администратору. Это там где много про ассемблер, который я с института "не брал в руки". Остальные лекции прекрасны.


Курс из 12 лекции выложен на YouTube, дата записи 2014 год. Весь плейлист можно получить по этой ссылке

Понравилась манера и наглядность изложения материала. Сразу видно, что лектор в теме. Строгой привязки к конкретной операционной системы нет, но периодически автор соскальзывает на нюансы Linux или Windows.


Кому это будет интересно? Прежде всего начинающим специалистам, погружающимся в секреты компьютерных технологий и операционных систем. Отличные лекции по базовым и, часто, практическим вещам. Опытным будет полезно просмотреть в "свободное время". Я начал и так увлёкся, что никаких сериалов не надо. :) 

Полезный совет: лекции легко смотрятся на скорости 1,5х от базовой, а Кирилла Кринкина даже на 2х легко можно понять. 




29 августа 2019 г.

С наступающим днём знаний! Скидки на пакеты обучения SAPADM 2.0

Поздравляю всех с наступающим днём знаний!


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

Ну и по традиции, в связи с праздником, скидка на первый обучающий пакет нового обучающего курса SAPADM 2.0. Пакет 01. Напоминаю, что курс абсолютный новый, полностью переписанный и основанный на версии SAP NetWeaver 7.50 и платформе Linux/Oracle

Тому, кто напишет мне на почтовый ящик shibolov@gmail.com до 23:59 6 сентября 2019 года я отдам его за 8 000* рублей

А тому, кто купит два первых доступных пакета, я так же сделаю скидку, и отдам их за 22 000* рублей.

Условия акции:
* - в случае покупки первого пакета или обоих пакетов со скидкой, их надо будет оплатить до конца сентября 2019 года.

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


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

26 августа 2019 г.

Век живи, век учись! - II


Данный пост продолжает серию кратких записей о моих открытиях в мире SAP систем и около них. Согласно первой части пословицы: "Век живи, век учись..." такие открытия периодически случаются и в тех областях, где казалось бы всё изучено вдоль и поперёк. 



В одном из первых постов этого блога в 2008 году был рассказ о том, как с помощью механизма отладки поменять статус транспортного запроса: из деблокированного (released) сделать его снова открытым на изменения. По прошествии стольких лет я обнаружил более простой способ изменять все атрибуты запроса, включая его статус. В системе существует программа RDDIT076. Проверял в системах основанных на SAP_BASIS от версии 4.6 до SAP NetWeaver 7.50, везде программа существует.

Указать программу RDDIT076 в SE38 (привязанной транзакции к программе нет) и запустить на выполнение (рис. 1). 

Рис. 1. Запуск программы RDDIT076.

На экране выбора в единственном поле указать транспортный запрос, атрибуты которого необходимо изменить, и нажать кнопку "Выполнить" (рис. 2).

Рис. 2. Просмотр атрибутов запроса.

Программа подтягивает не только запрос, но и все его задачи. Для просмотра атрибутов установить курсор мыши на строку с запросом (или задачей) и нажать на панели кнопку "Выбрать" (или просто дважды щелкнуть мышью по строке) (рис. 3).

Рис. 3. Открытие диалогового окна с атрибутами запроса.

Для редактирования полей нажать на кнопку "Редактирование", а после изменения необходимого параметра или параметров, - кнопку "Сохранения" (рис. 4).

Рис. 4. Изменение параметров транспортного запроса.

Таким образом можно изменить краткое описание, владельца запроса, статус - деблокировано (R) или изменяемо (D). Можно поменять целевую систему и даже исходный мандант (хотя у меня ни разу такой потребности не было). 

Какие-то моменты, например, владельца или краткое описание, можно поменять и через стандартные транзакции работы с транспортными запросами SE01/SE09/SE10 (рис. 5).

Рис. 5. Изменение атрибутов запроса в транзакции SE01.

Но некоторые задачи стандартными инструментами решить не получится. Например, запрос деблокирован, а поле "Целевая система" было не заполнено. В таком случае запрос при деблокировании не создаст физических файлов с данными на уровне файловой системы. И тут как раз поможет данная программа - RDDIT076. Открываем в ней запрос, меняем его статус на "Изменяемо", после чего указываем целевую систему и снова деблокируем.
Еще с помощью этого инструмента можно удалить деблокированный транспортный запрос: удалить файлы запроса на уровне операционной системы, после чего изменить статус запроса на "Изменяемо" и удалить транспортный запрос с уровня SAP системы.

ПРЕДУПРЕЖДЕНИЕ: Будьте внимательны! Описанный отчёт предназначен только для экспертов. Не стоит им злоупотреблять. А при работе с деблокированными запросами будьте крайне осторожны. Все последствия ложатся на Ваши плечи.

Век живи, век учись!



Предыдущие выпуски:


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


19 августа 2019 г.

Мониторинг рабочих процессов SAP системы

Как вы знаете, ядром любой ABAP инстанции SAP системы является ABAP-диспетчер, который управляет рабочими процессами (рис. 1).

Рис. 1. Архитектура ABAP части SAP NetWeaver.

Рабочие процессы разделяются по назначению:
  • диалоговые (DIA) - отвечают за работу диалоговых пользователей системы;
  • фоновые (BTC) - выполняют фоновые задания;
  • обновления (UPD, UP2) - отвечают за обновление данных в таблицах;
  • блокировки (ENQ) - управляют блокировками на уровне сервера приложений;
  • печати (SPO) - отвечают за печать из SAP системы.

Мониторинг рабочих процессов осуществляется в транзакции SM50. Классический вариант транзакции хорошо известен администраторам SAP системы (рис. 2).

Рис. 2. Пример основного экрана транзакции SM50 в системе на SAP_BASIS 620.

Транзакция позволяет выполнять мониторинг всех рабочих процессов текущей инстанции. Процессы могут иметь различный статус - ожидать запросов (простаивать), выполнять задачу, ожидать сообщения или быть остановленными на уровне операционной системы по причине ошибки или сбоя. По каждому процессу можно:
  • просмотреть журнал (пункт меню "Процесс -> Трассировка -> Просмотреть файл"), 
  • перейти в отладку работающей программы (пункт меню "Программа/Режим -> Программа -> Отладка"), 
  • сбросить задачу, работающую на рабочем процессе (пункт меню "Процесс -> Отменить с (без) дампом"),
  • перезапустить процесс после сбоя (пункт меню "Процесс -> Перезапуск после ошибки -> Да").

Для просмотра рабочих процессов всех инстанций SAP системы (в случае использования системы с больше, чем одной ABAP инстанцией) используется транзакция SM66.

В свежих релизах SAP системы (SAP NetWeaver 7.40 SP08 и выше) дизайн и функциональность транзакции SM50 притерпели некоторые изменения (рис. 3).

Рис. 3. Пример транзакции SM50 в системе SAP NetWeaver 7.50.

Появилась возможность просматривать не только все рабочие процессы, но и получить список только активных в текущий момент времени рабочих процессов. Для переключения между этими режимами отображения служат кнопки "Активные рабочие процессы" и "Все рабочие процессы" на панели (рис. 3 и 4).

Рис. 4. Отображение только активных рабочих процессов в транзакции SM50.

Кроме того, в транзакции появилась возможность просмотра рабочих процессов всех диалоговых инстанций текущей SAP системы. Для этого необходимо в меню выбрать пункт "Перейти к -> Список по всем системам" (рис. 5).

Рис. 5. Получение списка всех рабочих процессов SAP системы в транзакции SM50.

Причем, если запустить транзакцию SM66 в новых релизах SAP NetWeaver, то можно увидеть интерфейс очень похожий на SM50 (рис. 6).

Рис. 6. Пример транзакции SM66 в системе SAP NetWeaver 7.50. 

Такая же кнопка переключения между отображением всех процессов или только активных (рис. 6 и 7).

Рис. 7. Пример транзакции SM66 в системе SAP NetWeaver 7.50 с полным списком рабочих процессов.

Дополнительно есть возможность переключить режим отображения рабочих процессов на отображение только по конкретной ABAP инстанции. Для этого в меню транзакции SM66 есть пункт "Перейти к -> Переключить на инстанцию" (рис. 8).

Рис. 8. Переключение в транзакции SM66 на отображение рабочих процессов конкретной инстанции.

Таким образом, складывается ощущение, что в новых версиях SAP NetWeaver транзакции SM50 и SM66 представляют собой практически один и тот же инструмент, с повторяющимися функциями. То есть транзакция SM50 заменяет транзакцию SM66 в старой версии системы. Но это верно только в какой-то степени. И дальше я расскажу почему.

Старая версия транзакции SM66 обладала рядом полезных функций, которых я не нашел в новой версии. 

По умолчанию транзакция отображает список активных рабочих процессов всех ABAP инстанций SAP системы. Но на панели есть полезная кнопка "Process Selection", нажав на которую появляется возможность в диалоговом окне настроить режимы отображения (рис. 9).

Рис. 9. Настройка режима отображения процессов в старой версии транзакции SM66.

В диалоговом окне можно ограничить выборку рабочих процессов:
  • по типу, 
  • по статусу, 
  • по пользователю, задачи которого обрабатывает процесс,
  • по времени работы задачи на процессе,
  • по таблице, с которой работает процесс,
  • и так далее (рис. 10).

Рис. 10. Ограничение рабочих процессов для отображения в SM66.

Таким образом, поигравшись с настройками, можно выполнять мониторинг процессов, решая разные задачи. Например:
  • отобразить все фоновые рабочие процессы в системе (рис. 11),
  • отобразить все рабочие процессы, работающие больше определённого периода времени,
  • отобразить все рабочие процессы, которые не обрабатывают в данный момент времени запросы пользователей - для того, чтобы понять сколько свободных ресурсов есть в системе (рис. 12).

Рис. 11. Список всех фоновых процессов в SAP системе.

Рис. 12. Список рабочих процессов в статусе "Ожидает".

Но для новых версий систем (SAP NetWeaver 7.40 SP08 и выше) не всё потеряно. Старая версия транзакции SM66 доступна через транзакцию SM66_OLD, за которой скрывается та же программа - SAPMSM66.




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