Linux环境下监控Oracle数据库资源的常用方法
top -u oracle可过滤出Oracle用户进程,快速识别资源消耗高的进程(如%CPU、%MEM列);htop是top的增强版,提供更直观的界面和排序功能。vmstat 1 5(每1秒刷新1次,共5次),输出包括进程状态(runnable/阻塞)、内存使用(free/buffer/cache)、CPU利用率(us/user、sy/system、wa/wait)等,可判断系统是否存在内存瓶颈(如%wa过高表示I/O等待严重)。iostat -xm 1 5显示每个磁盘的读写速度(tps、kB_read/s、kB_wrtn/s)、平均响应时间(await)、设备利用率(%util)等。若%util接近100%,说明磁盘饱和,需优化I/O布局。free -h以人类可读格式(GB/MB)显示,重点关注“available”列(可用内存=free+buffers/cached),判断是否需调整Oracle内存配置。sqlplus / as sysdba),执行SELECT instance_name, status FROM v$instance;,确认实例是否处于OPEN状态(正常运行)。SELECT tablespace_name, SUM(bytes)/1024/1024 AS used_mb, SUM(maxbytes)/1024/1024 AS max_mb, (SUM(maxbytes)-SUM(bytes))/1024/1024 AS free_mb FROM dba_data_files GROUP BY tablespace_name;,查看各表空间的已用/最大容量/剩余空间,避免表空间满导致数据库无法写入。SELECT ROUND(SUM(value)/1024/1024, 2) || 'M' AS sga_size FROM v$sga;SELECT ROUND(SUM(value)/1024/1024, 2) || 'M' AS pga_size FROM v$pgastat WHERE name = 'total PGA allocated';SELECT sid, serial#, username, status, machine, program FROM v$session WHERE status = 'ACTIVE';,查看当前活跃会话(如用户连接、后台进程),识别异常会话(如长时间闲置的会话)。@?/rdbms/admin/awrrpt.sql(AWR报告)和@?/rdbms/admin/ashrpt.sql(ASH报告)生成详细报告,分析SQL执行慢、等待事件(如db file sequential read)、资源消耗等问题。oratop启动后,可按CPU、内存排序,快速定位高消耗进程。mail命令将结果发送给DBA;监控实例状态的脚本可结合crontab每天定时运行。cx_Oracle库连接Oracle数据库,通过Python脚本获取性能指标(如SQL执行时间、等待事件),并将数据存储到数据库或发送到监控平台(如Prometheus)。适合需要定制化监控的场景(如监控特定SQL的执行情况)。