首页主机资讯Ubuntu系统如何监控Oracle运行状态

Ubuntu系统如何监控Oracle运行状态

时间2025-10-04 21:16:03发布访客分类主机资讯浏览550
导读: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_exportergit 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等指标的可视化。
  • 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),实现数据库实例的实时监控(性能指标、空间使用、资源分配)、自动修复(如重启失败的进程)、备份恢复管理及性能优化建议。
  • OSWatcher
    • 下载Oracle提供的oswatcher工具包(oswatcher.tar.gz);
    • 解压后执行./oswatcher.sh -o /tmp/osw -t 60 -d 1-o指定输出目录,-t为采集间隔秒数,-d为采集持续时间天);
    • 收集系统性能数据(CPU、内存、磁盘I/O、网络流量),用于离线分析Oracle性能问题(如CPU瓶颈是否由系统进程引起)。

4. SQL脚本监控(针对性强)

  • 编写SQL脚本监控活跃SQL
    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;
        
    
    该脚本可监控当前活跃SQL的执行时间、等待事件(如I/O等待、锁等待),帮助定位性能瓶颈。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu系统如何监控Oracle运行状态
本文地址: https://pptw.com/jishu/720560.html
在Ubuntu上如何升级Oracle版本 Ubuntu中Oracle数据备份方法有哪些

游客 回复需填写必要信息