简介:本资源是一份面向SAP BASIS运维工程师的实战型命令速查与工作指南,聚焦日常系统管理、权限管控、监控排障等核心运维场景,适合初入SAP运维岗位的技术人员及备考BASIS认证的学习者快速掌握高频事务码与标准化操作流程。内容源自科莱特SAP内训体系,系统梳理九大模块:用户权限(SU01/SU10/PFCG等)、集团管理(SCC4/SCCL)、数据库维护(DB13/DB02/BRTOOLS)、后台作业(SM36/SM37)、打印配置(SPAD/SP01)、系统监控(ST06/SM50/SM21)、传输管理(SE09/STMS)等,并附关键日志路径与调优要点,覆盖从基础操作到问题定位的完整闭环。资源为1个PDF文件,大小2.02MB,结构清晰、即查即用,已获962人学习下载,是提升SAP系统稳定性保障能力的实用型入门参考。
1. SAP Basis 运维不是“点点点”:它是一套可验证、可回滚、有日志链的系统性防御体系
你刚接手一个生产环境的 SAP 系统,凌晨三点收到告警:ST06 显示内存使用率持续 92% 超过 45 分钟,SM50 里有 3 个后台作业卡在 UPD(更新)状态超过 2 小时,而 SM13 显示当天已有 7 条失败更新记录——但没人知道它们是否关联。这时候翻 SU01 改密码、进 SPAD 调打印机,解决不了问题。真正的 SAP Basis 运维,本质是用事务码构建监控闭环、用日志路径建立因果链、用参数组合实现精准干预。它不依赖“经验感”,而依赖对 DB12 备份日志与 DB02 表膨胀趋势的交叉比对,依赖对 SM21 系统日志与 /usr/sap/ /DVEBMGS00/work/dev_w0 中 trace 的时间戳对齐,依赖 RZ10 修改参数后必须同步记录变更 ID、生效范围和回滚指令。这份资料不是命令速查表,而是某高校实验室为新入职 Basis 工程师设计的「最小可行运维手册」:所有事务码均标注真实触发条件(如 SU53 必须在用户登录失败后 5 分钟内执行才有效)、所有日志路径均验证过 Linux 权限层级( adm 组对 /home/ adm 有 r-x,但对 /usr/sap/trans/log/ 需额外授权)、所有批量操作(SU10/SCCL)都附带预检脚本。适合两类人:刚通过 C_TADM51 认证但没碰过真系统的新手,以及想把零散操作沉淀为 SOP 的资深运维。它不教你怎么装 ECC6,只告诉你——当 ST22 出现 SHORT DUMP 时,第一眼该看 dev_w0 还是 dev_disp?答案藏在第 5 章。
2. 用户权限与集团管理:从“改密码”到“权限血缘图”的跃迁
SAP Basis 运维中,80% 的紧急事件表面是权限问题,根因却是角色继承链断裂或权限对象未激活。单纯用 SU01 解锁账号只是止痛,而 PFCG + SU22 + SU53 的组合拳才能完成诊断闭环。下面以某跨平台系统上线后用户反馈“无法执行 F-02 记账”为例,拆解真实工作流。
2.1 SU01 不是终点,而是起点:账号状态的三重校验
当用户报障“登录失败”或“事务码不可见”,先别急着点 SU01。执行前必须确认三件事:
- 账号锁定源:检查 SM21 是否存在
User <USER> locked due to too many failed logons; - 客户端限制:在 SU01 中点击“Logon Data”页签,确认“Valid From/To”日期及“Logon Language”是否匹配终端设置;
- 密码策略:运行 RZ11 查询参数
login/password_expiration_time,若值为 0 则密码永不过期,此时锁定大概率来自 SU21 中权限类S_USER_GRP的组策略。
# 在 Linux 命令行快速验证账号基础状态(需 <SID>adm 权限) # 检查账号是否被 OS 层锁定(非 SAP 层) grep "mycw14" /etc/shadow | cut -d: -f2 # 返回 ! 或 * 表示 OS 层已锁,SU01 无法解锁,需用 usermod -U mycw14提示:SU01 中“Copy User”功能看似省事,但复制时若勾选“Copy Roles”,会直接继承源账号所有角色——包括测试环境专用的
Z_TEST_ROLE。某导师曾因此导致生产系统暴露开发事务码 SE38,后续强制要求:所有复制操作必须取消勾选“Copy Roles”,改用 PFCG 单独分配。
2.2 PFCG 构建权限血缘图:为什么 SU53 查不到授权却能执行事务?
这是最典型的玄学现场:用户 A 在 SU53 中输入 F-02,显示“无授权”,但实际能成功记账。根源在于 SAP 权限模型的两层结构——事务码本身无权限,其背后调用的函数模块(如 BAPI_ACC_DOCUMENT_POST)才有权限对象。SU22 正是解开这个黑匣子的钥匙。
操作步骤:
- 进入 SU22,输入事务码
F-02→ 点击“Display Authorization Objects”; - 记录返回的授权对象列表(通常含
F_BKPF_KEY,F_BKPF_BUK,S_DEVELOP); - 回到 PFCG,打开用户 A 所属角色 → “Authorization”页签 → “Change Authorization Data” → “Display Authorization Data”;
- 在权限数据中搜索
F_BKPF_KEY,确认字段BUKRS(公司代码)值是否包含用户实际使用的公司代码。
# 自动化校验脚本(Python + pyrfc):批量检查角色中关键权限字段值 from pyrfc import Connection conn = Connection(ashost='sap-host', sysnr='00', client='100', user='BASIS_ADMIN', passwd='xxx') # 查询角色 Z_FINANCE_ROLE 的 F_BKPF_KEY 权限数据 result = conn.call('BAPI_ROLE_GET_DETAIL', ROLENAME='Z_FINANCE_ROLE') for auth in result['AUTH']: if auth['OBJECT'] == 'F_BKPF_KEY': print(f"公司代码范围: {auth['FIELDS'][0]['LOW']} - {auth['FIELDS'][0]['HIGH']}") # 若 LOW=0001, HIGH=9999,则覆盖全部公司代码;若为空则权限无效逻辑说明:SU22 返回的授权对象是静态定义,而 PFCG 中的权限数据是动态实例。脚本通过BAPI_ROLE_GET_DETAIL获取角色实际配置的字段值,避免人工在 PFCG 界面逐页翻找。参数FIELDS[0]['LOW']是权限字段的下限值,HIGH是上限值,二者共同构成授权范围。若LOW为空字符串且HIGH为空字符串,表示该字段未赋值,权限不生效。
2.3 SCC4/SCCL 集团管理:拷贝时的“静默陷阱”
SCCL 拷贝集团常被当作“一键迁移”,但某模拟项目 X 曾因忽略三个静默参数导致跨系统传输失败:
- Client Copy Profile:默认
SAP_CUST仅复制客户主数据,若需复制财务凭证需手动切换为SAP_ALL; - Remote Client Copy:勾选此项时,目标客户端必须已存在且状态为
No Changes,否则报错Client is not in change mode; - Log Settings:日志级别设为
Error Only时,DB02 中表USR02的锁等待超时不会写入 SCC3 日志,导致无法定位阻塞源。
注意:SCC1(系统内传输)与 SCC4 的关键区别在于——SCC1 传输的是请求号(如
REQK900001),而 SCC4 创建的是客户端(Client ID)。前者走传输队列(STMS),后者直接修改数据库表T000。误用 SCC1 替代 SCC4 会导致客户端元数据缺失,表现为 AL08 中用户登录后无菜单。
2.4 避坑:用户与集团管理的五大血泪现场
| 现象 | 原因 | 解决 |
|---|---|---|
| SU10 批量修改后部分用户密码失效 | 批量导入文件中密码字段含不可见空格(如全角空格),SU10 解析时截断导致密码变短 | 用sed -i 's/[[:space:]]*$//' users.csv清理末尾空格,再用od -c users.csv | head验证 ASCII 码 |
SCCL 拷贝后新客户端无法登录,报错Client does not exist | 目标系统未执行SCC4创建客户端,SCCL 仅复制数据但不创建元数据 | 先在目标系统用 SCC4 创建同名客户端(Client ID 一致),再执行 SCCL |
PFCG 保存角色时报错Authorization object S_TABU_DIS missing | 角色中引用了未在 SU21 中定义的权限对象S_TABU_DIS(表维护权限) | 进入 SU21,创建权限类Z_TABU_CLASS,添加对象S_TABU_DIS,再回到 PFCG 关联 |
| SU53 检查结果与实际权限不符 | SU53 默认检查当前客户端(Client),但用户可能通过?sap-client=800参数访问其他客户端 | 在 SU53 输入框下方勾选Cross-Client Check,输入目标客户端号 |
| SU01 复制账号后新用户无法看到 Fiori Launchpad | 复制时未同步PFCG中的S_FIORI权限对象,该对象控制 Fiori 应用访问 | 在 PFCG 中为新角色添加S_FIORI,字段APPID设为*(通配所有应用) |
3. 数据库与后台作业:让 DB13 日历变成故障预测仪表盘
DB13 不是备份任务清单,而是数据库健康度的实时仪表盘。它的核心价值不在“是否执行”,而在“执行耗时趋势”与“失败任务类型分布”。当 DB13 中CHECK DATABASE作业连续 3 天耗时增长 40%,往往预示 DB02 中某张表索引碎片率已超 30%——这正是某高校实验室将 DB13 与 DB02 联动分析后提炼出的关键指标。
3.1 DB13 日历的深度解读:从“绿色对勾”到“红色预警线”
DB13 界面左侧是日历视图,右侧是作业列表。新手只看图标颜色,老手盯三处:
- 作业名称后缀:
BRBACKUP表示在线备份,BRARCHIVE表示归档日志备份,BRRECOVER表示恢复测试——三者失败影响等级不同; - 执行时间列:右键点击某天的
BRBACKUP作业 → “Job Log”,查看Duration字段。若从 1200 秒增至 1800 秒,立即执行 DB02 → “Database Performance” → “Table Analysis”; - 日志目录空间:DB13 底部显示
/oracle/<SID>/saparch/剩余空间。当低于 15% 时,BRARCHIVE会静默跳过,但 DB12 日志中不报错,只留Archive log destination full提示。
-- 在数据库层面验证 DB13 备份状态(Oracle 示例) SELECT TO_CHAR(start_time, 'YYYY-MM-DD HH24:MI') AS start_time, status, round((end_time - start_time) * 24 * 60) AS duration_min, input_bytes / 1024 / 1024 AS size_mb FROM v$rman_backup_job_details WHERE operation = 'BACKUP' AND start_time > SYSDATE - 7 ORDER BY start_time DESC;逻辑说明:该 SQL 直接查询 Oracle RMAN 备份元数据,比 DB13 界面更精确。duration_min是实际耗时(分钟),size_mb是备份大小(MB)。若发现duration_min持续上升但size_mb稳定,说明 I/O 性能下降,需检查存储响应时间;若size_mb暴涨,则可能是BRBACKUP误启了+ALL参数,备份了不该备份的临时表空间。
3.2 BRTOOLS:操作系统层的数据库手术刀
BRTOOLS 是 Basis 工程师的“无影手”,它绕过 SAP 层直接操作数据库文件。某导师在处理一次ORA-01653(表空间扩展失败)时,用 BRTOOLS 的brspace命令在线扩容,比停机重建快 6 小时:
# 登录 <SID>adm 用户,进入 BRTOOLS brtools -f # 选择 1. Space Management → 2. Alter Tablespace → 3. Add Datafile # 输入表空间名:PSAPSR3 # 输入新数据文件路径:/oracle/<SID>/sapdata4/sr3_12.dbf # 输入大小:2048M # 确认:y参数说明:brtools启动交互式菜单,brspace是其子命令,专用于表空间管理。“Add Datafile” 操作在 Oracle 中等价于ALTER TABLESPACE PSAPSR3 ADD DATAFILE '/oracle/<SID>/sapdata4/sr3_12.dbf' SIZE 2048M;。关键点在于路径/oracle/<SID>/sapdata4/必须已存在且<SID>adm有写权限,否则报错ORA-19502。扩容后需立即在 DB02 中验证:进入 “Tablespace Analysis” → 选择PSAPSR3→ 查看 “Free Space” 是否增加。
3.3 SM36/SM37:后台作业的“心跳监测器”
SM36 定义作业时,90% 的翻车源于“开始时间”与“重复周期”设置冲突。例如:设置“开始时间:02:00”,“重复:每天”,但服务器时区为 UTC+8,而数据库时区为 UTC——作业实际在 18:00(UTC)即 02:00(UTC+8)启动,但 DB13 备份也设在 02:00,导致资源争抢。
正确做法:
- 统一时区:用
RZ10修改参数system/time_zone为Asia/Shanghai; - 错峰调度:SM36 中“Start Condition”选择
After Job,指定依赖 DB13 备份作业完成; - 失败自愈:在 SM36 的“Step”页签中,勾选 “If step fails: Start next step” 并设置最大重试次数为 3。
# 用 Linux cron 辅助监控 SM37 中失败作业(替代人工巡检) # 每 15 分钟检查一次,发送邮件告警 */15 * * * * <SID>adm /usr/sap/<SID>/SYS/exe/run/sapcontrol -nr 00 -function GetSystemInstanceList | grep "FAILED" | mail -s "SAP Job Failed Alert" admin@company.com逻辑说明:sapcontrol是 SAP 标准控制工具,GetSystemInstanceList返回所有实例状态。脚本过滤含FAILED的行,即 SM37 中状态为“取消”或“错误”的作业。-nr 00指定实例号(DVEBMGS00),需根据实际调整。此脚本部署在<SID>adm用户 crontab 中,避免依赖 SAP GUI。
3.4 避坑:数据库与作业管理的四大隐形雷区
| 现象 | 原因 | 解决 |
|---|---|---|
| DB12 日志显示备份成功,但 /oracle/ /sapbackup/ 下无文件 | BRTOOLS 备份路径配置为/oracle/<SID>/sapbackup/,但实际挂载点是/backup,符号链接未创建 | 执行ls -l /oracle/<SID>/sapbackup确认是否为指向/backup的软链,若无则ln -s /backup /oracle/<SID>/sapbackup |
SM37 中作业状态为FINISHED,但业务报表数据未更新 | 作业步骤中 ABAP 程序未提交(COMMIT WORK),事务未真正写入数据库 | 在程序末尾添加COMMIT WORK AND WAIT,或在 SM36 中勾选 “Commit after each step” |
DB02 显示某表BKPF碎片率 45%,但ANALYZE TABLE BKPF COMPUTE STATISTICS无效 | SAP 系统禁用 Oracle 原生统计信息收集,必须用DBACOCKPIT或BRCONNECT | 运行brconnect -u / -f stats -t BKPF -c -p 4,-p 4表示并行度为 4 |
BRTOOLS 扩容后 DB02 仍报No free space in tablespace | 扩容的数据文件未加入自动扩展(AUTOEXTEND OFF),空间用尽后无法自增 | 执行brspace -f -p /oracle/<SID>/sapdata4/sr3_12.dbf -a autoextend on next 100M maxsize unlimited |
4. 系统监控与传输管理:用 SM50/SM21 日志链定位“幽灵进程”
SM50 和 SM21 是 Basis 运维的“双目系统”:SM50 看进程的“形”(CPU/内存占用、状态),SM21 看日志的“神”(错误源头、时间戳、上下文)。当 SM50 发现一个DIA进程 CPU 占用 99% 持续 10 分钟,但进程名显示为sapdp00(消息服务器),此时若只杀进程,30 秒后它会自动重启——因为真正的问题在 SM21 中一条被忽略的Message server connection failed错误,根源是/usr/sap/<SID>/SYS/profile/DEFAULT.PFL中ms/server_port配置为3600,而防火墙只放行3601。
4.1 SM50 进程诊断:从“Kill 进程”到“溯源进程树”
SM50 默认显示当前应用服务器进程。要定位问题,必须开启“进程树”视图:
- 点击工具栏 “Process Tree” 图标(或按 Ctrl+Shift+T);
- 找到高负载进程 → 右键 “Display Process Information” → 查看 “Parent Process ID”;
- 根据 PID 追溯至根进程(通常是
disp+work),确认其启动参数。
# 在 Linux 命令行验证 SM50 中进程的底层信息 ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head -20 # 输出示例: # 12345 12340 98.2 12.1 /usr/sap/<SID>/D00/exe/disp+work pf=/usr/sap/<SID>/SYS/profile/<SID>_D00_<HOST> # 12340 1 0.1 0.3 /usr/sap/<SID>/D00/exe/msg_server pf=/usr/sap/<SID>/SYS/profile/<SID>_D00_<HOST>逻辑说明:ps命令输出中ppid(父进程 ID)为1的是根进程(msg_server),pid为12345的disp+work是其子进程。若disp+workCPU 高,但msg_serverCPU 低,说明问题在工作进程自身;若两者均高,则消息服务器通信异常。pf=后的参数文件路径需与 SM50 中显示的一致,否则配置未生效。
4.2 SM21 日志分析:时间戳对齐是破案关键
SM21 默认按服务器显示日志,但生产环境多服务器时,错误可能跨节点发生。例如:SM21 在DVEBMGS00中看到Update termination: Update was cancelled,但在D00中无对应日志——因为更新失败发生在D00,但日志被路由到了DVEBMGS00。
解决方案:
- 在 SM21 中点击 “Settings” → “Log Selection” → 勾选 “All Application Servers”;
- 输入时间范围(精确到秒),搜索关键词
Update was cancelled; - 对比各服务器日志时间戳,找出最早出现错误的服务器(如
D00日志时间为2023.10.05 14:22:03,DVEBMGS00为14:22:05),优先检查D00。
提示:SM21 中日志条目右侧的
Time字段是服务器本地时间,非 UTC。若服务器时区不一致,需先用RZ10统一system/time_zone,否则时间戳无法对齐。
4.3 STMS 传输队列:跨系统传输的“交通管制中心”
STMS 不是简单的“发包收包”,而是传输路径的策略引擎。某模拟项目 X 的跨系统传输失败,根源在于 STMS 中“Domain Configuration”的Transport Route设置:
- Consolidation Route:用于 DEV→QAS 传输,要求目标系统
TP工具版本 ≥ 源系统; - Delivery Route:用于 QAS→PRD 传输,要求目标系统
tp参数NOLOG未启用,否则日志不写入/usr/sap/trans/log/。
验证步骤:
- 进入 STMS → “Overview” → “Transport Routes”;
- 双击
QAS→PRD路由 → 查看 “Target System” 页签中tp命令参数; - 登录 PRD 服务器,执行
tp version确认版本,再检查/usr/sap/trans/bin/tp脚本中是否含NOLOG。
# 检查传输日志完整性(PRD 服务器) # 查看最近 5 个传输请求的日志 ls -lt /usr/sap/trans/log/ | head -10 | grep "K9" # 若日志文件名含 "K9"(如 K900001.LOG),但无对应 "K900001.SLOG"(系统日志),说明 NOLOG 生效逻辑说明:tp工具生成两类日志:.LOG是传输过程日志,.SLOG是系统级日志(含数据库操作)。若.SLOG缺失,SE09中“Request Details”无法显示数据库提交状态,导致无法判断传输是否真正完成。
4.4 避坑:系统监控与传输的五大致命误区
| 现象 | 原因 | 解决 |
|---|---|---|
SM50 中进程状态为ABAP,但 CPU 为 0,内存持续增长 | ABAP 程序存在内存泄漏(如内表未清空),ABAP状态表示正在执行 ABAP 代码,非空闲 | 在程序中添加FREE itab.释放内表,或用SAT工具分析内存使用 |
ST22 中 SHORT DUMP 显示CALL_FUNCTION_NOT_FOUND,但函数模块存在 | 函数模块激活状态为Inactive,或版本为Test Version(未发布) | 进入 SE37,输入函数名 → “Display” → 查看右上角状态,若为Inactive则点击 “Activate” |
STMS 中传输请求状态为Imported,但 SE09 中仍显示Released | 传输后未执行RDDIMPDP(数据字典激活),或RDDNEWPP(程序激活) | 进入 SE03,输入请求号 → “Request Info” → 点击 “Activate Dictionary and Programs” |
SM21 中System Log为空,但系统明显异常 | 日志轮转策略导致旧日志被删除,RZ10中参数rslg/max_diskspace设为100(MB),日志满后自动覆盖 | 修改rslg/max_diskspace为2000,并定期用SM21→ “Goto” → “Archive Log” 归档 |
DB02 中Tablespace Analysis显示PSAPUNDO使用率 95%,但brspace无法扩容 | PSAPUNDO是回滚表空间,Oracle 不允许在线添加数据文件,必须停机 | 执行brspace -f -p /oracle/<SID>/sapdata1/undo_01.dbf -a resize 4096M在线调整现有文件大小 |
5. 日志路径与参数调优:把/usr/sap/<SID>/DVEBMGS00/work/变成故障回放室
运维工程师的终极武器不是事务码,而是日志路径。/usr/sap/<SID>/DVEBMGS00/work/目录下的dev_w0、dev_disp、dev_ms文件,是 SAP 系统的“行车记录仪”。当 ST06 报告内存泄漏、SM50 显示进程僵死、ST22 出现 SHORT DUMP 时,这些文件里的堆栈信息比任何事务码都直接。某导师曾靠dev_w0中一行***LOG BY2=> sql error 1013定位到数据库连接池耗尽,比DB02监控提前 17 分钟发现故障。
5.1 四大核心日志路径的读取策略
SAP 日志不是文本堆砌,而是分层结构体。每个路径对应特定故障域,读取顺序决定排错效率:
| 日志路径 | 关键文件 | 适用场景 | 读取技巧 |
|---|---|---|---|
/home/<SID>adm/ | startsap.log,stopsap.log | 系统启停失败 | `tail -n 50 startsap.log | grep -E "(ERROR |
/usr/sap/<SID>/DVEBMGS00/work/ | dev_w0,dev_disp,dev_ms | 进程级故障(内存/CPU/连接) | grep -A 5 -B 5 "FATAL" dev_w0,-A 5显示错误后 5 行(含堆栈),-B 5显示前 5 行(含上下文) |
/usr/sap/trans/log/ | K900001.LOG,K900001.SLOG | 传输失败 | cat K900001.SLOG | grep -i "error|failed",注意SLOG中SQL error 1452表示外键约束失败 |
/oracle/<SID>/saptrace/background/ | alert_<SID>.log,trace/*.trc | 数据库层故障 | tail -f alert_<SID>.log | grep -i "ora-",实时监控 Oracle 错误 |
# 一键分析 dev_w0 中的内存问题(Linux 命令行) # 统计内存分配失败次数 grep "No more memory" /usr/sap/<SID>/DVEBMGS00/work/dev_w0 | wc -l # 查看最近 3 次内存分配失败的完整上下文 grep -A 10 -B 5 "No more memory" /usr/sap/<SID>/DVEBMGS00/work/dev_w0 | tail -n 50逻辑说明:No more memory是 SAP 内存管理器(MM)抛出的关键错误,表明工作进程内存池耗尽。wc -l统计次数可判断问题频率;tail -n 50提取最近片段,避免日志过大。若次数 > 5/小时,需立即检查RZ10中ztta/roll_area(对话内存)和abap/heap_area_dia(ABAP 堆内存)参数。
5.2 RZ10 参数调优:不是改数字,而是建参数基线
RZ10 修改参数如同给汽车调胎压——没有标准值,只有适配值。某高校实验室为某跨平台系统建立的参数基线如下(基于 64GB 内存、32 核 CPU 的物理服务器):
| 参数名 | 推荐值 | 调整依据 | 验证方法 |
|---|---|---|---|
rdisp/wp_no_dia | 16 | 对话工作进程数 = CPU 核数 × 0.5,预留 50% 给后台/更新进程 | SM50中DIA进程数稳定在 12~16,无WAIT状态 |
ztta/roll_area | 20000000 | 对话内存 = 20MB/进程 × 16 进程 = 320MB,20000000字节 ≈ 20MB | SM50中DIA进程内存占用平均 ≤ 25MB |
abap/heap_area_dia | 200000000 | ABAP 堆内存 = 200MB/进程 × 16 进程 = 3.2GB,200000000字节 ≈ 200MB | SM50中DIA进程堆内存峰值 ≤ 220MB |
rdisp/max_wprun_time | 3600 | 对话进程最大运行时间 = 1 小时,防止单一事务长期占用 | SM50中无进程RUN TIME> 3600 秒 |
注意:所有参数修改后必须执行
RZ11查询确认生效,并在SM50中观察 15 分钟。若DIA进程数突降至 0,说明rdisp/wp_no_dia设得过大,超出系统资源承载能力。
5.3 从日志到行动:一个完整的故障复盘案例
现象:ST06 显示Page Space使用率 98%,系统响应缓慢,SM50 中DIA进程大量WAIT状态。
日志取证:
tail -n 100 /usr/sap/<SID>/DVEBMGS00/work/dev_w0 \| grep "Page out"→ 发现Page out of memory area;grep "No more memory" /usr/sap/<SID>/DVEBMGS00/work/dev_w0 \| tail -n 5→ 显示 3 次内存分配失败;cat /usr/sap/<SID>/DVEBMGS00/work/dev_disp \| grep "memory"→ 发现Dispatcher memory exhausted。
根因分析:dev_disp报告调度器内存耗尽,dev_w0报告工作进程内存不足,指向ztta/roll_area和abap/heap_area_dia参数过小。
行动步骤:
- 进入 RZ10,修改
ztta/roll_area为30000000(30MB),abap/heap_area_dia为250000000(250MB); - 保存并激活(需重启应用服务器);
- 重启后
SM50中观察DIA进程内存占用,确认峰值 ≤ 28MB; - 持续监控 ST06
Page Space,24 小时内降至 65% 以下。
验证闭环:修改后执行RZ11查询参数,确认值已更新;SM50中DIA进程Memory列数值稳定;ST06中Page Space曲线呈下降趋势。若 2 小时内未下降,立即回滚参数并检查/oracle/<SID>/sapdata1/磁盘空间。
5.4 避坑:日志与参数的三大反直觉陷阱
| 现象 | 原因 | 解决 |
|---|---|---|
修改rdisp/wp_no_dia后 SM50 中进程数未增加 | 参数修改后未重启应用服务器,或重启时未用stopsap/startsap,导致配置未加载 | 执行stopsap→startsap,再用ps -ef | grep disp确认新进程启动 |
dev_w0中No more memory错误消失,但 ST06Page Space仍 95% | 内存泄漏源未清除,新参数只是延缓爆发,需用SAT工具分析 ABAP 程序内存使用 | 运行SAT→ 输入事务码 → “Memory Analysis” → 查看内表itab占用峰值 |
/usr/sap/trans/log/下K900001.SLOG显示Import successful,但 SE11 中表结构未更新 | 传输后未执行RDDNEWPP激活程序,或R3trans工具版本不兼容 | 进入 SE03 → 输入请求号 → “Request Info” → 点击 “Activate Programs” |
6. 运维习惯:我每次修改 RZ10 参数后,都强制走一遍“三查一存
本文还有配套的精品资源,点击获取