Ubuntu系统如何监控Oracle运行状态
导读:Ubuntu系统监控Oracle运行状态的方法 1. 命令行工具监控(基础且实时) SQL*Plus:通过sqlplus / as sysdba登录数据库,执行SELECT status FROM v$instance;确认实例状态(返回...
Ubuntu系统监控Oracle运行状态的方法
1. 命令行工具监控(基础且实时)
- SQL*Plus:通过
sqlplus / as sysdba
登录数据库,执行SELECT status FROM v$instance;
确认实例状态(返回OPEN
表示运行中);还可查询v$session
(当前会话)、v$sql
(执行SQL)、v$waitstat
(等待事件)等视图获取详细性能信息。 - 操作系统工具:
top/htop
:实时查看Oracle进程的CPU、内存占用(按Shift+P
按CPU排序,Shift+M
按内存排序);vmstat 2
:每2秒输出系统虚拟内存、进程、CPU使用情况(关注si/so
列判断磁盘I/O瓶颈);iostat -x 2
:监控磁盘I/O负载(关注%util
列,接近100%表示磁盘繁忙);sar -u 2 3
:查看CPU使用率历史趋势(-u
表示CPU,2
为间隔,3
为次数)。
- 日志分析:
tail -f $ORACLE_BASE/diag/rdbms/< db_name> /< instance_name> /trace/alert_< instance_name> .log
:实时查看数据库错误、警告信息;tail -f $ORACLE_HOME/network/log/listener.log
:监控监听器状态(如连接请求、错误)。
2. 第三方开源监控工具(可视化与自动化)
- Prometheus + Grafana + Oracle Exporter:
- 安装Oracle Instant Client(
sudo apt install libaio1
,下载并解压Oracle Instant Client Basic Lite包,设置LD_LIBRARY_PATH
环境变量); - 下载并编译
oracledb_exporter
(git clone https://github.com/iamseth/oracledb_exporter.git & & cd oracledb_exporter & & go build
); - 配置
config.yml
(添加Oracle数据库的用户名、密码、服务名等信息); - 运行
oracledb_exporter
(./oracledb_exporter
),默认监听9161
端口; - 配置Prometheus(在
prometheus.yml
中添加scrape_configs
,指向oracledb_exporter
的地址); - 在Grafana导入Oracle监控仪表板(如社区提供的模板ID:12345),实现CPU、内存、SGA/PGA命中率、慢SQL等指标的可视化。
- 安装Oracle Instant Client(
- Zabbix:
- 安装Zabbix Server和Agent(参考官方文档);
- 导入Oracle监控模板(社区模板如“Oracle Database Monitoring”);
- 配置Zabbix Agent的
zabbix_agentd.conf
文件(添加Oracle监控的自定义参数,如UserParameter=oracle.status[*],sqlplus -s / as sysdba @$1
); - 通过模板自动发现Oracle表空间使用率、连接数、DML语句变化趋势等指标,并设置告警规则(如表空间剩余空间低于10%时发送邮件)。
3. Oracle专用监控工具(全面且专业)
- Oracle Enterprise Manager (OEM):
- 安装OEM(Oracle Database安装介质中包含,或通过
opatch auto
部署); - 配置OEM与Oracle数据库的连接(通过
emca
命令创建管理仓库); - 登录OEM Web界面(默认端口
7803
),实现数据库实例的实时监控(性能指标、空间使用、资源分配)、自动修复(如重启失败的进程)、备份恢复管理及性能优化建议。
- 安装OEM(Oracle Database安装介质中包含,或通过
- OSWatcher:
- 下载Oracle提供的
oswatcher
工具包(oswatcher.tar.gz
); - 解压后执行
./oswatcher.sh -o /tmp/osw -t 60 -d 1
(-o
指定输出目录,-t
为采集间隔秒数,-d
为采集持续时间天); - 收集系统性能数据(CPU、内存、磁盘I/O、网络流量),用于离线分析Oracle性能问题(如CPU瓶颈是否由系统进程引起)。
- 下载Oracle提供的
4. SQL脚本监控(针对性强)
- 编写SQL脚本监控活跃SQL:
该脚本可监控当前活跃SQL的执行时间、等待事件(如I/O等待、锁等待),帮助定位性能瓶颈。SET LINESIZE 200; COL inst_sid HEADING "INST_ID|:SID" FORMAT A7; COL username FORMAT A10; COL machine FORMAT A12; COL sql_exec_start HEADING "SQL START TIME" FORMAT A20; COL sql_id FORMAT A13; COL sql_text FORMAT A40; COL event FORMAT A33; COL wait_sec HEADING "WAIT (SEC)" FORMAT 99999; SELECT ses.inst_id || ':' || ses.sid AS inst_sid, ses.username, ses.machine, TO_CHAR(ses.sql_exec_start, 'YYYY-MM-DD HH24:MI:SS') AS sql_exec_start, ses.sql_id, SUBSTR(sql.sql_text, 1, 40) AS sql_text, SUBSTR( CASE WHEN ses.time_since_last_wait_micro = 0 THEN CASE ses.wait_class WHEN 'Idle' THEN 'IDLE: ' || ses.event ELSE ses.event END ELSE 'ON CPU' END, 1, 33 ) AS event, CASE WHEN ses.time_since_last_wait_micro = 0 THEN ses.wait_time_micro / 1000000 ELSE ses.time_since_last_wait_micro / 1000000 END AS wait_sec FROM gv$session ses LEFT JOIN gv$sql sql ON ses.sql_id = sql.sql_id WHERE ses.status = 'ACTIVE' AND ses.username IS NOT NULL AND ses.inst_id = SYS_CONTEXT('USERENV', 'INSTANCE') ORDER BY ses.sql_exec_start, ses.username, ses.sid;
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu系统如何监控Oracle运行状态
本文地址: https://pptw.com/jishu/720560.html