
oratop是什么#
oratop 是 Oracle 提供的一个类 Linux top 的文本界面工具,既能跑在 RAC 也能跑在 单实例上,用来实时观察数据库负载与热点,特别适合在“故障现场 / CPU 飙高 / 响应变慢”时快速定向问题。
命令行模式#
使用命令行方式如下:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/suptools/oratop:$PATH
oratop -h
oratop 支持类似 sqlplus 的登录方式,常见参数如下:
-i:刷新间隔(默认 5 秒)
-r:Section 3 等待事件切换为 Real-Time(默认是累计 Cumulative)
-s:Section 4 切到 SQL 模式(默认是 session/process 模式)
-f:132 列详细模式(默认 80 列标准模式)
-b -n -o:批处理模式、循环次数、输出到文件
使用详解#
登录支持类似sqlplus的登录方式,示例如下:
# 本地连接 列详细模式
oratop / as sysdba -f
# 远程连接(EZConnect / TNS 都可)
oratop username/password@tns_alias
oratop sys@172.16.8.74:1521/orcl as sysdba -f注意远程以 sysdba 连接时,需要配置
REMOTE_LOGIN_PASSWORDFILE并准备 password file。
启动后界面被固定拆成 4 块
- Database(数据库概览)
- Instance Activity(实例负载指标)
- DB Wait Events(类似 AWR 的 Top 等待/耗时事件)
- Process 或 SQL(Top 会话/Top SQL)

指标详解#
Database(数据库概览)#
up:实例已运行时间(uptime)ins:实例数(RAC 环境会 >1)sn:当前总会话数us:活跃会话数(active sessions)mt:监控运行时间(monitoring time)fra:FRA 使用率(%)er:incident/error 数(如果有)%db:数据库使用率/占用概览(某些版本显示)
Instance Activity(实例负载指标)#
CPU / Load / 并发#
%CPU:主机 CPU 使用率(整体 OS 视角)LOAD:OS Load Average(一般看它是否明显高于 CPU 核数)%DCU/%DCP:数据库实例 CPU 使用占主机 CPU 的比例- 新版里经常看到
%DCP,官方说明是“database instance cpu usage as %CPU of host”。
- 新版里经常看到
AAS 拆分(理解瓶颈的核心)#
AAS:AAS(Avg active sessions):平均活跃会话数ASC:ASC(Active sessions on CPU):在 CPU 上跑的活跃会话数ASI:ASI(Avg active sessions waiting on I/O):等待 I/O 的活跃会话数ASW:ASW(Avg active sessions waiting):其它等待导致的活跃会话数ISW:ISW(Inactive sessions waiting or sleeping):不活跃但在等/睡眠的会话数REDO:REDO(Redo created per sec):每秒 redo 产生量TEMP:TEMP(Temp space used):临时表空间使用
I/O 吞吐与延迟#
MBPS:MBPS(I/O throughput):吞吐 MB/sIOPS:IOPS(I/O requests/sec):每秒 I/O 请求数IORT:IORT(I/O Response Time):平均同步单块读延迟(single-block read latency)R/S、W/S:R/S、W/S(Physical read/write total IO request/sec):物理读/写请求速率LIO:LIO(Logical reads/sec):逻辑读速率GCPS:GCPS(GC CR+current block received/sec):RAC 跨实例块传输速率
内存/连接/业务量#
%FRE:%FRE(Shared pool free %):共享池空闲比例PGA:PGA(Total PGA allocated):总 PGA 分配NETV:NETV(Network traffic bytes/sec):网络流量UTPS:UTPS(User trans/sec):用户事务数/秒UCPS:UCPS(User calls/sec):用户调用/秒SORT:SQRT(SQL service response time/call):平均每次调用 SQL 服务响应时间DCTR:**Database CPU (%Host) **:数据库 CPU 占比(DB Time 中 CPU 占比,算力)DWTR:**Database WAIT (%Host) **:等待在主机视角的占比(DB Time 中等待占比,等待)
DCTP和DWTR这两个本质上来自 Oracle 的系统指标(V$SYSMETRIC 一类的指标体系)。
oratop 后缀表示量级/时间单位,比如:
- 容量:
k/M/G/T(KB/MB/GB/TB…) - 时间:
u/m/s/t/h/d(微秒/毫秒/秒/分钟/小时/天…)
参数快速判断#
AAS 明显上升,且 ASC 高、%CPU 高 → CPU 受限优先
AAS 上升但 ASI 高、IORT 高 → I/O 受限优先
AAS 上升且 ASW 高,但 I/O 不高 → 锁/并发/提交/集群等待优先(去看 Top 等待/耗时事件)
REDO 高 + 伴随提交相关等待 → 关注提交/日志写
GC 指标高(RAC)→ 关注跨实例热点块/全局缓存等待
DB Wait Events(Top 等待事件)#
EVENT (C):Cumulative:是“自数据库上次重启以来的累计”。EVENT (RT):Real-Time:更适合现场抓“此刻正在拖慢系统”的 Top waits(用r或启动参数-r切换)Wait event name:等待事件名SESSION:Sessions waiting:正在等待该事件的会话数WAIT:Total number of waits:等待次数TIME:Total wait time:总等待时间AVG:Avg wait time:平均等待时间%DBT:% of database time:占 DB time 的比例WAIT_CLASS:Wait class:等待分类(User I/O、System I/O、Concurrency…)
PROCESS/SQL 模式(Top 会话/Top SQL)#
SID:会话 IDSPID:OS 进程号USERNAME:数据库用户名PROGRAM:程序名(可用m切到 MODULE/ACTION)OPN:DML操作(INS、SEL、UPD、DEL…)E/T:会话已运行时间%CPU:该会话 CPU 占用%LIO:该会话逻辑读速率占用PGA:该会话 PGASQLID/BLOCKER:当前 SQL 或阻塞者STS:会话状态(ACT、INA…)STE:会话等待状态(RUN、WAI…)WAIT_CLASS:会话等待类型%CPU:该会话 CPU 占用EVENT/OBJECT NAME:当前等待事件名W/T:当前等待时长
默认是会话模式按p也可以切换成会话模式,适合定位“哪个 SID / 哪个程序 / 哪个模块”慢,影响数据库性能

按s可以切换进入到SQL模式,适合定位“哪条 SQL_ID 是罪魁祸首”

x 输入 SQL_ID 看计划:用于快速判断“全表扫/索引失效/并行过度/Join 路径异常”等方向

快速排查流程#
- 看实例负载指标CPU 高?I/O 延迟高?AAS 是“CPU 型”还是“等待型”?
- 看Top等待事件按
r切 RT抓当下 Top waits(别只看累计) - 看Top 会话/Top SQL,先定位Top 会话/Top SQL,必要时
x看执行计划否符合预期(索引、并行、Join 路径) - 按
t检查表空间,快速确认临时表空间/表空间使用
总结#
oratop 可以理解为 Oracle 的数据库版 top:用一张屏把当前负载是否异常、异常来自 CPU 还是等待、到底是谁(会话/SQL)在拖慢串起来,特别适合在故障现场快速定向,再配合 AWR/ASH、v$session / v$sql / v$active_session_history 等视图做深入验证和落地优化。
文末分享 Oracle 11g 版本 oratop 下载链接,方便读者在老版本环境快速上手。
