oracle数据库在centos上的监控方法

以下是Oracle数据库在CentOS上的监控方法:

一、Oracle自带工具

  1. AWR/ASH
    • 生成AWR报告:@ORACLE_HOME/rdbms/admin/awrreport.sql
    • 查看ASH实时数据:SELECT * FROM v$active_session_history
  2. SQL查询
    • 监控会话状态:SELECT status, count(*) FROM v$session GROUP BY status
    • 检查表空间使用率:SELECT tablespace_name, ROUND(100*(total_bytes-free_bytes)/total_bytes) AS used_pct FROM (SELECT tablespace_name, SUM(bytes) AS total_bytes FROM dba_data_files GROUP BY tablespace_name) df, (SELECT tablespace_name, SUM(bytes) AS free_bytes FROM dba_free_space GROUP BY tablespace_name) fs WHERE df.tablespace_name=fs.tablespace_name
  3. 监听器管理
    • 使用lsnrctl status查看监听状态,lsnrctl start/stop控制启停。

二、操作系统工具

  • top/htop:实时查看CPU、内存占用,按Shift+P按CPU排序。
  • iostat:监控磁盘I/O性能,iostat -xz 1 5(间隔1秒,采样5次)。
  • netstat:查看监听端口状态,netstat -tlnp | grep <端口号>

三、第三方工具

  1. Zabbix
    • 通过Zabbix Agent采集数据,需安装orabbix插件,支持数据库性能、表空间等监控。
  2. Prometheus+Grafana
    • 部署oracledb_exporter暴露指标,Grafana可视化,适合云环境。
  3. Nagios
    • 通过插件(如check_oracle)监控服务状态,需配置告警规则。

四、自动化脚本

  • 编写Shell脚本定期检查实例状态、告警日志,例如:
    # 检查实例是否运行  
    ps -ef | grep pmon_$ORACLE_SID || echo "实例停止" | mail -s "Oracle告警" admin@example.com  
    # 检查告警日志  
    tail -n 50 $ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log | grep -i "ORA-"  
    

以上方法可组合使用,根据需求选择工具,实现对数据库性能、资源、状态的全面监控。