Буферы на уровне сервера приложений SAP (его AS ABAP части) играют важную роль в производительности системы (рис. 1). Буферы недостаточного размера могут существенно замедлять скорость выполнения транзакций и считывания данных, а также увеличивать время отклика при работе в системе. Не так давно, в постах (ссылка 1, ссылка 2) на реальном примере я показал как можно проанализировать и внести корректировки в настройки областей памяти и буферов SAP инстанции. В результатах невооружённым взглядом видно, что правильно настроенные области могут ускорить работу системы.
![]() |
Рис. 1. Пример списка буферов SAP инстанции, отображаемых в транзакции ST02. |
Сегодня хотел бы поговорить про ошибки в работе буферов. Любая программа, особенная такая сложная как SAP система, в некоторых ситуациях может давать сбои. И работа с буферами не исключение. Иногда, в буферах могут "застревать" некорректные данные. И система по какой-то причине, вместо обновления из таблиц, будет пытаться использовать некорректные данные из буферов. Например, старую версию программы (программный буфер), данные из таблиц, экранов и так далее.
Решением таких проблем часто может быть рестарт SAP инстанции. Так как все буферы хранятся в оперативной памяти, то при останове инстанции они теряются. А при старте пустые наполняются данными из таблиц базы данных. Но полный рестарт инстанции не всегда возможен. Например, работает долгое фоновое задание, которое при рестарте будет остановлено и его придётся запускать заново.
Поэтому в случаях возникновения таких ошибок или сбоев в работе буферов существует вариант принудительно сбросить их через специальные команды. В этом случае буферы будут очищены, как при рестарте инстанции.
Данные команды я уже упоминал в этом посте, но решил вынести их в отдельный пост. Так будет легче найти их в блоге. Вот эти команды:
- /$SYNC - сброс всех буферов, кроме Program Buffer,
- /$CUA - сброс CUA buffer,
- /$TAB - сброс TABLE buffer (в зависимости от версии системы: двух или одного),
- /$TAB <table_name> - сброс буферов только для таблицы <table_name>,
- /$NAM - сброс Nametab buffer,
- /$DYN - сброс Screen buffer,
- /$ESM - сброс Exp./ Imp. Shared Memory Buffer,
- /$PXA - сброс Program Buffer (PXA),
- /$OBJ - сброс Shared Buffer.
![]() |
Рис. 2. Ввод команды для сброса табличных буферов SAP инстанции. |
При принятии решения о сбросе буферов инстанции помните, что:
- Сброс буферов резко снижает производительность работы данной инстанции.
- Сброс буферов (также как и рестарт инстанции) может помочь привести систему в порядок, но первопричину сбоя таким способом вы не решите.
- Делайте сброс только понимая что вы делаете.
- Постарайтесь выявить конкретный буфер и сбросить только его, а не все буферы сразу (/$SYNC).
Дополнительно существует возможность сбросить буфер полномочий для пользователя. Вот в этом посте я рассказывал про то, как с помощью транзакции SU53 проанализировать каких полномочий не хватает пользователю в SAP системе. А вот тут рассказывал про буфер полномочий, который хранится в контексте пользователя. В SU53 можно сбросить этот буфер: выберете пункт меню "Значения полномочий (Authorization values) -> Сбросить буфер пользователя (Reset User Buffer)" и буфер текущего пользователя сбросится (рис. 3).
![]() |
Рис. 3. Сброс буфера полномочий для пользователя. |
Автор: Шиболов Вячеслав Анатольевич
P.S. Я понимаю, что я могу знать далеко не всё. Если у вас есть дополнения по этой теме, то напишите в комментарии. Спасибо.
Комментариев нет:
Отправить комментарий