Skip to content

DM 监控工具

监控体系架构

DM数据库提供了多层次的监控体系,包括:

  • 数据库级监控:监控数据库实例的整体运行状态
  • 会话级监控:监控当前活跃会话的活动情况
  • 对象级监控:监控数据库对象(如表、索引)的使用情况
  • 性能级监控:监控数据库的性能指标和瓶颈

1.2 监控工具分类

  • 图形化工具:DM管理工具、DM性能监控工具
  • 命令行工具:disql、dmcmd
  • 系统视图:V$系列视图
  • 日志文件:数据库日志、审计日志
  • 第三方集成:支持与Zabbix、Prometheus等集成

DM 管理工具

2.2 安装与配置

2.2.1 安装

  • DM管理工具随DM数据库服务器一起安装
  • 也可以单独安装在客户端机器上
  • 支持Windows和Linux平台

2.2.2 连接配置

  1. 启动DM管理工具
  2. 点击"新建连接"
  3. 输入连接信息:
    • 连接名:自定义名称
    • 主机名/IP:数据库服务器地址
    • 端口号:数据库服务端口(默认5236)
    • 用户名/密码:数据库用户凭据
  4. 点击"测试连接"验证连接
  5. 点击"确定"保存连接

2.3 监控功能

2.3.1 实例监控

  • 实例状态:查看数据库实例的运行状态、版本信息
  • 会话管理:查看和管理当前活跃会话
  • 锁管理:查看和释放锁资源
  • 内存使用:监控数据库内存分配和使用情况
  • 磁盘使用:监控数据库文件的磁盘空间使用

2.3.2 性能监控

  • 性能概览:实时显示数据库的关键性能指标
  • SQL监控:监控执行中的SQL语句和执行计划
  • 等待事件:查看会话等待事件和资源争用情况
  • 性能趋势:查看历史性能数据和趋势图表

2.3.3 备份恢复监控

  • 备份历史:查看备份任务的历史记录
  • 恢复历史:查看恢复操作的历史记录
  • 备份进度:监控当前备份任务的进度

2.4 使用示例

2.4.1 查看实例状态

  1. 连接到目标数据库实例
  2. 在左侧导航树中选择"实例"
  3. 查看右侧面板中的实例状态信息,包括:
    • 实例名称和状态
    • 数据库版本和启动时间
    • 连接数和会话数
    • 内存和磁盘使用情况

2.4.2 监控活跃会话

  1. 连接到目标数据库实例
  2. 在左侧导航树中选择"会话"
  3. 查看当前活跃会话列表,包括:
    • 会话ID和用户
    • 客户端地址和程序名
    • 执行状态和等待事件
    • 执行时间和SQL语句
  4. 可以对会话进行终止、阻塞等操作

DM 性能监控工具

3.2 主要功能

3.2.1 实时性能监控

  • 仪表盘:显示关键性能指标的实时数据和趋势图
  • Top SQL:识别消耗资源最多的SQL语句
  • 会话性能:监控每个会话的资源消耗情况
  • 锁等待:分析锁等待链和死锁情况

3.2.2 性能历史分析

  • 历史数据查询:查看过去一段时间的性能数据
  • 性能报告:生成详细的性能分析报告
  • 趋势分析:分析性能指标的变化趋势
  • 告警历史:查看历史告警记录

3.2.3 性能调优建议

  • 基于性能数据自动生成调优建议
  • 提供SQL优化建议
  • 提供参数调整建议

3.3 使用方法

3.3.1 启动性能监控工具

  1. 在DM安装目录下找到性能监控工具可执行文件
    • Windows:dmperf.exe
    • Linux:dmperf
  2. 启动工具并连接到目标数据库实例

3.3.2 配置监控指标

  1. 在性能监控工具中,点击"配置"->"监控指标"
  2. 选择需要监控的指标类别:
    • 实例指标
    • 会话指标
    • SQL指标
    • 等待事件
  3. 选择具体的监控指标
  4. 设置采样间隔和保留时间
  5. 点击"确定"保存配置

3.3.3 查看性能报告

  1. 在性能监控工具中,点击"报告"->"生成报告"
  2. 选择报告类型:
    • 实时报告
    • 历史报告
    • 对比报告
  3. 设置报告参数,如时间范围、指标等
  4. 点击"生成"按钮
  5. 查看和导出生成的性能报告

命令行监控工具

4.1 disql 工具

4.1.2 监控相关命令

sql
-- 查看实例状态
SELECT STATUS$ FROM V$INSTANCE;

-- 查看活跃会话
SELECT * FROM V$SESSION WHERE STATUS = 'ACTIVE';

-- 查看锁信息
SELECT * FROM V$LOCK;

-- 查看等待事件
SELECT * FROM V$SESSION_WAIT;

-- 查看Top SQL
SELECT * FROM V$LONG_EXEC_SQL;

-- 查看性能指标
SELECT * FROM V$SYSSTAT;

4.2 dmcmd 工具

4.2.2 常用监控命令

bash
# 启动dmcmd
dmcmd

# 连接到数据库实例
CONN SYSDBA/SYSDBA@localhost:5236

# 查看实例状态
STATUS

# 查看会话信息
SESSIONS

# 查看锁信息
LOCKS

# 查看内存使用情况
MEMORY

# 查看磁盘使用情况
DISK

# 退出dmcmd
EXIT

系统视图监控

5.2 主要系统视图

5.2.1 实例级视图

视图名说明
V$INSTANCE实例基本信息和状态
V$PARAMETER数据库参数信息
V$SYSSTAT系统统计信息
V$VERSION数据库版本信息

5.2.2 会话级视图

视图名说明
V$SESSION会话信息
V$SESSION_WAIT会话等待事件
V$SQLSQL语句信息
V$LONG_EXEC_SQL长时间执行的SQL

5.2.3 锁和等待视图

视图名说明
V$LOCK锁信息
V$LOCK_HISTORY锁历史记录
V$WAIT_EVENT等待事件信息
V$DEADLOCK_HISTORY死锁历史记录

5.2.4 性能视图

视图名说明
V$BUFFERPOOL缓冲池信息
V$DISK_SPACE磁盘空间使用
V$SEGMENT_STATISTICS段统计信息
V$SQL_STATISTICSSQL统计信息

5.3 常用查询示例

5.3.1 监控实例状态

sql
SELECT INSTANCE_NAME, STATUS$, START_TIME, VERSION FROM V$INSTANCE;

5.3.2 监控活跃会话

sql
SELECT SID, USERNAME, CLIENT_IP, PROGRAM, STATUS, SQL_TEXT 
FROM V$SESSION 
WHERE STATUS = 'ACTIVE' 
ORDER BY LOGON_TIME DESC;

5.3.3 监控锁情况

sql
SELECT L.SID, S.USERNAME, L.TYPE$, L.MODE$, L.TABLE_ID, T.NAME 
FROM V$LOCK L 
JOIN V$SESSION S ON L.SID = S.SID 
JOIN SYSOBJECTS T ON L.TABLE_ID = T.ID 
WHERE L.TYPE$ = 'OBJECT';

5.3.4 监控SQL性能

sql
SELECT SQL_TEXT, EXEC_COUNT, ELAPSED_TIME/1000 AS EXEC_TIME_MS, 
       BUFFER_GETS, DISK_READS, ROWS_PROCESSED 
FROM V$SQL_STATISTICS 
ORDER BY ELAPSED_TIME DESC 
LIMIT 10;

日志监控

6.1 数据库日志

  • 联机日志:记录数据库的所有修改操作
  • 归档日志:联机日志的归档文件
  • 错误日志:记录数据库运行中的错误信息
  • 事件日志:记录数据库的重要事件

6.1.2 日志位置

  • 默认日志路径:$DM_HOME/log
  • 可通过参数SVR_LOGERR_LOG等配置

6.1.3 日志分析

bash
# 查看错误日志
cat $DM_HOME/log/dm_DMSERVER.err

# 查看事件日志
cat $DM_HOME/log/dm_DMSERVER.log

# 实时监控日志
tail -f $DM_HOME/log/dm_DMSERVER.err

6.2 审计日志

6.2.2 配置审计

sql
-- 启用审计
SP_SET_PARA_VALUE(1, 'ENABLE_AUDIT', 1);

-- 配置审计规则
AUDIT SELECT, INSERT, UPDATE, DELETE ON TABLE HR.EMPLOYEES BY ACCESS;

6.2.3 查看审计日志

sql
SELECT * FROM SYS.AUDITRECORDS ORDER BY AUDIT_TIME DESC;

性能监控最佳实践

7.1 监控指标选择

7.1.1 核心指标

  • 实例状态:确保实例正常运行
  • 会话数:监控连接数是否接近上限
  • 锁等待:及时发现和解决锁争用
  • SQL性能:识别慢SQL和性能瓶颈
  • 资源使用:内存、CPU、磁盘IO使用率

7.1.2 监控频率

  • 实时监控:关键指标每1-5秒采样
  • 定期监控:非关键指标每1-5分钟采样
  • 历史数据:保留7-30天的历史数据

7.2 告警配置

7.2.1 告警级别

  • 紧急:需要立即处理的问题,如实例宕机
  • 严重:影响业务运行的问题,如锁超时
  • 警告:潜在的问题,如资源使用率接近阈值
  • 信息:一般通知信息

7.2.2 告警方式

  • 图形化工具弹窗
  • 邮件通知
  • 短信通知
  • 第三方系统集成(如Zabbix)

7.3 性能基线建立

7.3.1 建立基线

  1. 在业务正常运行期间,收集2-4周的性能数据
  2. 分析数据,确定各指标的正常范围
  3. 建立性能基线文档

7.3.2 基线使用

  • 对比当前性能数据与基线,识别异常
  • 根据基线调整告警阈值
  • 用于性能优化效果评估

监控数据管理

8.1 数据存储

  • 实时监控数据:存储在内存中,定期刷新
  • 历史监控数据:存储在数据库表或外部文件中
  • 日志数据:存储在文件系统中

8.2 数据清理

  • 定期清理过期的监控数据
  • 根据数据重要性设置不同的保留期限
  • 建议保留策略:
    • 实时数据:7天
    • 历史数据:30天
    • 重要数据:180天

8.3 数据备份

  • 定期备份重要的监控数据和日志
  • 备份方式:
    • 数据库备份
    • 文件系统备份
    • 归档到离线存储

版本差异说明

9.1 DM 7 与 DM 8 的差异

特性DM 7DM 8
管理工具功能相对简单功能更丰富,界面更友好
性能监控工具基础版本增强版,支持更多指标和分析功能
系统视图约100个视图约200个视图,提供更详细的监控数据
监控粒度实例级、会话级实例级、会话级、对象级、SQL级
第三方集成有限支持全面支持,提供标准接口

9.2 不同版本的注意事项

  • DM 7.6 之前的版本不支持部分性能视图
  • DM 8.0 开始支持自动性能基线
  • 升级数据库版本后,建议重新配置监控工具

常见问题与解决方案

10.1 监控工具连接问题

10.1.1 问题:无法连接到数据库实例

解决方案

  • 检查数据库实例是否正常运行
  • 检查网络连接和防火墙设置
  • 验证连接参数(主机名、端口号、用户名/密码)
  • 检查数据库监听状态

10.1.2 问题:连接超时

解决方案

  • 检查网络延迟
  • 增加连接超时时间
  • 优化数据库性能,减少响应时间

10.2 监控数据问题

10.2.1 问题:监控数据不完整

解决方案

  • 检查监控工具配置
  • 确保监控服务正常运行
  • 检查数据库权限设置
  • 验证系统视图访问权限

10.2.2 问题:监控数据延迟

解决方案

  • 调整监控采样间隔
  • 优化监控工具性能
  • 增加监控服务器资源

10.3 性能问题

10.3.1 问题:监控工具运行缓慢

解决方案

  • 减少监控指标数量
  • 增加监控采样间隔
  • 优化监控工具所在机器的性能
  • 考虑使用分布式监控架构

10.3.2 问题:监控影响数据库性能

解决方案

  • 减少监控频率
  • 优化监控查询语句
  • 避免在业务高峰期执行复杂监控查询
  • 使用只读副本进行监控

常见问题(FAQ)

Q1: DM管理工具和DM性能监控工具的区别是什么?

A1: DM管理工具是综合性的数据库管理工具,包含监控、备份恢复、用户管理等功能,适合日常管理操作。DM性能监控工具是专门用于性能监控和分析的工具,提供更详细的性能指标和分析功能,适合性能调优和故障诊断。

Q2: 如何实时监控DM数据库的性能?

A2: 可以使用以下方法:

  1. 使用DM性能监控工具查看实时性能指标
  2. 通过系统视图查询实时性能数据
  3. 使用命令行工具执行实时监控命令
  4. 配置告警规则,实时接收性能异常通知

Q3: 如何识别DM数据库的性能瓶颈?

A3: 可以通过以下步骤识别:

  1. 查看等待事件,识别资源争用
  2. 分析Top SQL,识别低效SQL
  3. 监控资源使用率,查看CPU、内存、磁盘IO等是否达到瓶颈
  4. 检查锁信息,识别锁争用情况
  5. 使用性能监控工具生成性能报告,分析瓶颈

Q4: 如何监控DM数据库的锁情况?

A4: 可以通过以下方法:

  1. 使用DM管理工具的"锁管理"功能
  2. 查询V$LOCK和V$SESSION_WAIT视图
  3. 使用dmcmd工具的LOCKS命令
  4. 配置锁等待告警规则

Q5: 如何监控DM数据库的SQL执行情况?

A5: 可以通过以下方法:

  1. 使用DM性能监控工具的"SQL监控"功能
  2. 查询V$SQL、V$LONG_EXEC_SQL视图
  3. 启用SQL审计功能
  4. 使用数据库提供的SQL追踪功能

Q6: 如何配置DM数据库的告警?

A6: 可以通过以下方法:

  1. 在DM管理工具中配置告警规则
  2. 在DM性能监控工具中设置告警阈值
  3. 配置第三方监控系统的告警规则
  4. 编写自定义脚本监控并发送告警

Q7: 如何备份和恢复监控数据?

A7: 可以通过以下方法:

  1. 对于存储在数据库中的监控数据,可以使用数据库备份功能
  2. 对于日志文件,可以使用文件系统备份
  3. 对于第三方监控系统的数据,使用其自带的备份功能
  4. 恢复时,根据备份类型选择相应的恢复方法

Q8: 如何优化DM数据库的监控性能?

A8: 可以通过以下方法:

  1. 选择关键监控指标,避免监控过多指标
  2. 调整监控采样间隔,平衡实时性和性能开销
  3. 优化监控查询语句,减少对数据库的影响
  4. 考虑使用只读副本进行监控,减少对主库的影响
  5. 定期清理过期监控数据,保持监控系统高效运行

Q9: DM数据库支持哪些第三方监控系统?

A9: DM数据库支持与多种第三方监控系统集成,包括:

  1. Zabbix
  2. Prometheus + Grafana
  3. Nagios
  4. 阿里云云监控
  5. 华为云监控
  6. 其他支持JDBC或ODBC的监控系统

Q10: 如何使用系统视图进行监控?

A10: 系统视图是DM数据库提供的监控数据来源,可以通过SQL查询获取各种监控指标。常用的系统视图包括:

  • V$INSTANCE:实例状态
  • V$SESSION:会话信息
  • V$LOCK:锁信息
  • V$SQL:SQL执行信息
  • V$SYSSTAT:系统统计信息

可以编写自定义脚本或工具,定期查询这些视图并生成监控报告或告警。