Skip to content

Oracle 数据库级别指标

文档目的

本文档详细介绍 Oracle 数据库级别的关键指标,包括性能指标、健康状态指标、资源使用指标等,为数据库运维人员提供全面的监控参考,帮助及时发现和解决数据库问题。

指标分类

性能指标

  • 响应时间指标:数据库操作的响应时间
  • 吞吐量指标:数据库处理的事务量和查询量
  • 并发指标:数据库的并发连接和会话数
  • 资源使用率指标:CPU、内存、I/O 等资源的使用情况

健康状态指标

  • 实例状态指标:数据库实例的运行状态
  • 存储状态指标:表空间、数据文件的状态
  • 日志状态指标:重做日志、归档日志的状态
  • 备份状态指标:数据库备份的完整性和时效性

安全指标

  • 用户活动指标:用户登录、权限变更等活动
  • 审计指标:审计记录的数量和类型
  • 安全配置指标:安全相关参数的配置状态

配置指标

  • 参数配置指标:数据库参数的配置值
  • 资源限制指标:数据库资源的限制设置
  • 服务质量指标:数据库服务的质量保证

核心性能指标

响应时间指标

数据库响应时间

指标名称描述查询方法标准值监控频率
平均响应时间数据库操作的平均响应时间SELECT * FROM v$sysmetric WHERE metric_name = 'Database Time Per Second';< 10ms分钟级
会话响应时间单个会话的响应时间SELECT * FROM v$session_wait WHERE wait_class != 'Idle';< 5ms分钟级
SQL 执行时间SQL 语句的执行时间SELECT * FROM v$sqlstats ORDER BY elapsed_time DESC;< 1s分钟级

等待事件时间

指标名称描述查询方法标准值监控频率
平均等待时间等待事件的平均等待时间SELECT event, AVG(wait_time) FROM v$session_wait GROUP BY event;< 10ms分钟级
主要等待事件占比最高的等待事件SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;无 idle 等待分钟级
I/O 等待时间I/O 操作的等待时间SELECT * FROM v$system_event WHERE event LIKE '%I/O%';< 5ms分钟级

吞吐量指标

事务吞吐量

指标名称描述查询方法标准值监控频率
事务量每秒处理的事务数SELECT * FROM v$sysmetric WHERE metric_name = 'Transactions Per Second';根据业务需求分钟级
提交量每秒提交的事务数SELECT * FROM v$sysmetric WHERE metric_name = 'User Commits Per Second';根据业务需求分钟级
回滚量每秒回滚的事务数SELECT * FROM v$sysmetric WHERE metric_name = 'User Rollbacks Per Second';< 1% of commits分钟级

查询吞吐量

指标名称描述查询方法标准值监控频率
SQL 执行量每秒执行的 SQL 语句数SELECT * FROM v$sysmetric WHERE metric_name = 'SQL Execution Per Second';根据业务需求分钟级
解析量每秒解析的 SQL 语句数SELECT * FROM v$sysmetric WHERE metric_name = 'Parse Count Per Second';根据业务需求分钟级
硬解析量每秒硬解析的 SQL 语句数SELECT * FROM v$sysmetric WHERE metric_name = 'Hard Parse Count Per Second';< 10% of parses分钟级

并发指标

连接数指标

指标名称描述查询方法标准值监控频率
活跃会话数当前活跃的会话数SELECT COUNT(*) FROM v$session WHERE status = 'ACTIVE';< 80% of processes分钟级
总会话数当前总会话数SELECT COUNT(*) FROM v$session;< 80% of sessions分钟级
连接数趋势连接数的变化趋势SELECT TO_CHAR(logon_time, 'YYYY-MM-DD HH24:MI'), COUNT(*) FROM v$session GROUP BY TO_CHAR(logon_time, 'YYYY-MM-DD HH24:MI');稳定小时级

锁指标

指标名称描述查询方法标准值监控频率
锁数量当前的锁数量SELECT COUNT(*) FROM v$lock WHERE type != 'None';< 100分钟级
锁等待时间锁等待的时间SELECT * FROM v$lock WHERE lmode = 0;< 1s分钟级
死锁数量死锁的数量SELECT * FROM v$lock WHERE block = 1 AND request > 0;0分钟级

资源使用率指标

CPU 使用率

指标名称描述查询方法标准值监控频率
数据库 CPU 使用率数据库使用的 CPU 百分比SELECT * FROM v$sysmetric WHERE metric_name = 'CPU Usage Per Sec';< 70%分钟级
系统 CPU 使用率系统整体的 CPU 百分比SELECT * FROM v$osstat WHERE stat_name = 'BUSY_TIME';< 80%分钟级
CPU 等待时间CPU 等待的时间SELECT * FROM v$system_event WHERE event = 'CPU time';< 5%分钟级

内存使用率

指标名称描述查询方法标准值监控频率
SGA 使用率SGA 的使用百分比SELECT * FROM v$sga_resize_ops;< 90%分钟级
PGA 使用率PGA 的使用百分比SELECT * FROM v$pgastat WHERE name = 'total PGA allocated';< 90%分钟级
共享池使用率共享池的使用百分比SELECT * FROM v$sgastat WHERE name = 'free memory' AND pool = 'shared pool';> 10%分钟级
缓冲区缓存命中率缓冲区缓存的命中百分比SELECT name, value FROM v$sysstat WHERE name LIKE '%buffer cache hit ratio%';> 95%分钟级

健康状态指标

实例状态指标

实例运行状态

指标名称描述查询方法标准值监控频率
实例状态数据库实例的运行状态SELECT status FROM v$instance;OPEN分钟级
数据库状态数据库的运行状态SELECT status FROM v$database;ACTIVE分钟级
启动时间实例的启动时间SELECT startup_time FROM v$instance;-小时级
运行时间实例的运行时间SELECT SYSDATE - startup_time FROM v$instance;-小时级

进程状态

指标名称描述查询方法标准值监控频率
PMON 进程状态进程监控进程的状态SELECT * FROM v$process WHERE program LIKE '%PMON%';运行中分钟级
SMON 进程状态系统监控进程的状态SELECT * FROM v$process WHERE program LIKE '%SMON%';运行中分钟级
DBWn 进程状态数据库写入进程的状态SELECT * FROM v$process WHERE program LIKE '%DBW%';运行中分钟级
LGWR 进程状态日志写入进程的状态SELECT * FROM v$process WHERE program LIKE '%LGWR%';运行中分钟级
ARCH 进程状态归档进程的状态SELECT * FROM v$process WHERE program LIKE '%ARCH%';运行中分钟级

存储状态指标

表空间状态

指标名称描述查询方法标准值监控频率
表空间使用率表空间的使用百分比SELECT tablespace_name, ROUND((used_space/total_space)*100, 2) AS used_percent FROM (SELECT tablespace_name, SUM(bytes) AS total_space, SUM(bytes - NVL(free_bytes, 0)) AS used_space FROM (SELECT tablespace_name, bytes, 0 AS free_bytes FROM dba_data_files UNION ALL SELECT tablespace_name, 0 AS bytes, bytes AS free_bytes FROM dba_free_space) GROUP BY tablespace_name);< 85%小时级
表空间增长率表空间的增长速率SELECT tablespace_name, (SUM(bytes) - LAG(SUM(bytes)) OVER (PARTITION BY tablespace_name ORDER BY snap_id))/1024/1024/1024 AS growth_gb FROM dba_hist_tbspc_space_usage GROUP BY tablespace_name, snap_id;< 5%/week天级
表空间状态表空间的状态SELECT tablespace_name, status FROM dba_tablespaces;ONLINE小时级

安全指标

用户活动指标

用户登录活动

指标名称描述查询方法标准值监控频率
登录失败次数用户登录失败的次数SELECT COUNT(*) FROM dba_audit_trail WHERE action_name = 'LOGON' AND returncode != 0;< 5/min小时级
异常登录异常时间或位置的登录SELECT * FROM dba_audit_trail WHERE action_name = 'LOGON' AND TO_CHAR(timestamp, 'HH24') NOT BETWEEN '08' AND '18';0小时级
权限变更用户权限的变更SELECT * FROM dba_audit_trail WHERE action_name LIKE '%GRANT%' OR action_name LIKE '%REVOKE%';有审批记录小时级

审计指标

审计记录

指标名称描述查询方法标准值监控频率
审计记录数量审计记录的数量SELECT COUNT(*) FROM dba_audit_trail WHERE timestamp > SYSDATE - 1;根据业务活动天级
审计记录增长率审计记录的增长速率SELECT TO_CHAR(timestamp, 'YYYY-MM-DD'), COUNT(*) FROM dba_audit_trail GROUP BY TO_CHAR(timestamp, 'YYYY-MM-DD');稳定天级

配置指标

参数配置指标

核心参数配置

指标名称描述查询方法标准值监控频率
SGA 大小SGA 的配置大小SELECT value FROM v$parameter WHERE name = 'sga_target';根据系统内存天级
PGA 大小PGA 的配置大小SELECT value FROM v$parameter WHERE name = 'pga_aggregate_target';根据系统内存天级
进程数限制最大进程数限制SELECT value FROM v$parameter WHERE name = 'processes';根据系统资源天级
会话数限制最大会话数限制SELECT value FROM v$parameter WHERE name = 'sessions';根据系统资源天级
归档模式归档模式的配置SELECT log_mode FROM v$database;ARCHIVELOG天级

指标监控与分析

监控工具

Oracle 内置工具

  • Oracle Enterprise Manager (OEM):提供图形化的监控界面
  • Automatic Workload Repository (AWR):自动收集性能数据
  • Automatic Database Diagnostic Monitor (ADDM):自动诊断数据库问题
  • Real-Time Monitoring:实时监控数据库状态

第三方工具

  • Nagios:开源监控工具
  • Zabbix:企业级监控解决方案
  • Prometheus + Grafana:开源监控和可视化工具
  • Datadog:云原生监控平台

监控策略

监控层次

  • 基础设施层:监控服务器、存储、网络等基础设施
  • 数据库层:监控数据库实例、存储、性能等
  • 应用层:监控应用程序对数据库的访问

监控频率

  • 实时监控:对关键指标进行实时监控
  • 分钟级监控:对性能指标进行分钟级监控
  • 小时级监控:对状态指标进行小时级监控
  • 天级监控:对趋势指标进行天级监控

最佳实践

指标选择最佳实践

  • 选择关键指标:选择对业务影响最大的指标
  • 建立基线:为关键指标建立合理的基线
  • 设置阈值:为关键指标设置合理的告警阈值
  • 定期审查:定期审查指标的相关性和有效性

监控实施最佳实践

  • 全面监控:监控数据库的各个方面
  • 分层监控:从基础设施到应用层的分层监控
  • 自动化监控:使用自动化工具进行监控
  • 集中管理:集中管理监控数据和告警

性能优化最佳实践

  • 持续优化:持续监控和优化数据库性能
  • 预防性优化:基于趋势分析进行预防性优化
  • 基准测试:定期进行基准测试,评估优化效果
  • 文档化:记录优化过程和结果

常见问题(FAQ)

Q1: 如何确定数据库性能指标的标准值?

A1: 确定数据库性能指标的标准值应考虑以下因素:

  • 系统配置:根据服务器的硬件配置确定
  • 业务需求:根据业务的性能要求确定
  • 历史数据:根据历史性能数据确定
  • 行业标准:参考行业最佳实践和标准

Q2: 如何监控数据库的长期性能趋势?

A2: 监控数据库的长期性能趋势可以通过以下方法:

  • 使用 AWR 报告:定期生成 AWR 报告,分析性能趋势
  • 建立性能数据仓库:收集历史性能数据,建立数据仓库
  • 使用趋势分析工具:使用专业的趋势分析工具
  • 设置长期监控:配置长期监控任务,定期收集数据

Q3: 如何处理数据库性能突发问题?

A3: 处理数据库性能突发问题的步骤:

  1. 快速定位:使用监控工具快速定位问题
  2. 临时缓解:采取临时措施缓解性能问题
  3. 根本分析:分析问题的根本原因
  4. 永久解决:实施永久解决方案
  5. 预防措施:采取措施防止问题再次发生

Q4: 如何优化数据库性能指标?

A4: 优化数据库性能指标的方法:

  • SQL 优化:优化 SQL 语句,提高执行效率
  • 索引优化:优化索引设计,提高查询性能
  • 参数调优:调整数据库参数,优化资源使用
  • 存储优化:优化存储配置,提高 I/O 性能
  • 架构优化:优化数据库架构,提高系统可扩展性

Q5: 如何确保数据库指标监控的可靠性?

A5: 确保数据库指标监控的可靠性的方法:

  • 冗余监控:使用多种监控工具进行冗余监控
  • 监控系统本身:监控监控系统本身的状态
  • 定期测试:定期测试监控系统的告警功能
  • 备份监控数据:备份监控数据,防止数据丢失
  • 培训人员:培训运维人员,提高监控技能