外观
DM 监控工具
监控体系架构
DM数据库提供了多层次的监控体系,包括:
- 数据库级监控:监控数据库实例的整体运行状态
- 会话级监控:监控当前活跃会话的活动情况
- 对象级监控:监控数据库对象(如表、索引)的使用情况
- 性能级监控:监控数据库的性能指标和瓶颈
1.2 监控工具分类
- 图形化工具:DM管理工具、DM性能监控工具
- 命令行工具:disql、dmcmd
- 系统视图:V$系列视图
- 日志文件:数据库日志、审计日志
- 第三方集成:支持与Zabbix、Prometheus等集成
DM 管理工具
2.2 安装与配置
2.2.1 安装
- DM管理工具随DM数据库服务器一起安装
- 也可以单独安装在客户端机器上
- 支持Windows和Linux平台
2.2.2 连接配置
- 启动DM管理工具
- 点击"新建连接"
- 输入连接信息:
- 连接名:自定义名称
- 主机名/IP:数据库服务器地址
- 端口号:数据库服务端口(默认5236)
- 用户名/密码:数据库用户凭据
- 点击"测试连接"验证连接
- 点击"确定"保存连接
2.3 监控功能
2.3.1 实例监控
- 实例状态:查看数据库实例的运行状态、版本信息
- 会话管理:查看和管理当前活跃会话
- 锁管理:查看和释放锁资源
- 内存使用:监控数据库内存分配和使用情况
- 磁盘使用:监控数据库文件的磁盘空间使用
2.3.2 性能监控
- 性能概览:实时显示数据库的关键性能指标
- SQL监控:监控执行中的SQL语句和执行计划
- 等待事件:查看会话等待事件和资源争用情况
- 性能趋势:查看历史性能数据和趋势图表
2.3.3 备份恢复监控
- 备份历史:查看备份任务的历史记录
- 恢复历史:查看恢复操作的历史记录
- 备份进度:监控当前备份任务的进度
2.4 使用示例
2.4.1 查看实例状态
- 连接到目标数据库实例
- 在左侧导航树中选择"实例"
- 查看右侧面板中的实例状态信息,包括:
- 实例名称和状态
- 数据库版本和启动时间
- 连接数和会话数
- 内存和磁盘使用情况
2.4.2 监控活跃会话
- 连接到目标数据库实例
- 在左侧导航树中选择"会话"
- 查看当前活跃会话列表,包括:
- 会话ID和用户
- 客户端地址和程序名
- 执行状态和等待事件
- 执行时间和SQL语句
- 可以对会话进行终止、阻塞等操作
DM 性能监控工具
3.2 主要功能
3.2.1 实时性能监控
- 仪表盘:显示关键性能指标的实时数据和趋势图
- Top SQL:识别消耗资源最多的SQL语句
- 会话性能:监控每个会话的资源消耗情况
- 锁等待:分析锁等待链和死锁情况
3.2.2 性能历史分析
- 历史数据查询:查看过去一段时间的性能数据
- 性能报告:生成详细的性能分析报告
- 趋势分析:分析性能指标的变化趋势
- 告警历史:查看历史告警记录
3.2.3 性能调优建议
- 基于性能数据自动生成调优建议
- 提供SQL优化建议
- 提供参数调整建议
3.3 使用方法
3.3.1 启动性能监控工具
- 在DM安装目录下找到性能监控工具可执行文件
- Windows:
dmperf.exe - Linux:
dmperf
- Windows:
- 启动工具并连接到目标数据库实例
3.3.2 配置监控指标
- 在性能监控工具中,点击"配置"->"监控指标"
- 选择需要监控的指标类别:
- 实例指标
- 会话指标
- SQL指标
- 等待事件
- 选择具体的监控指标
- 设置采样间隔和保留时间
- 点击"确定"保存配置
3.3.3 查看性能报告
- 在性能监控工具中,点击"报告"->"生成报告"
- 选择报告类型:
- 实时报告
- 历史报告
- 对比报告
- 设置报告参数,如时间范围、指标等
- 点击"生成"按钮
- 查看和导出生成的性能报告
命令行监控工具
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$SQL | SQL语句信息 |
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_STATISTICS | SQL统计信息 |
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_LOG、ERR_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.err6.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 建立基线
- 在业务正常运行期间,收集2-4周的性能数据
- 分析数据,确定各指标的正常范围
- 建立性能基线文档
7.3.2 基线使用
- 对比当前性能数据与基线,识别异常
- 根据基线调整告警阈值
- 用于性能优化效果评估
监控数据管理
8.1 数据存储
- 实时监控数据:存储在内存中,定期刷新
- 历史监控数据:存储在数据库表或外部文件中
- 日志数据:存储在文件系统中
8.2 数据清理
- 定期清理过期的监控数据
- 根据数据重要性设置不同的保留期限
- 建议保留策略:
- 实时数据:7天
- 历史数据:30天
- 重要数据:180天
8.3 数据备份
- 定期备份重要的监控数据和日志
- 备份方式:
- 数据库备份
- 文件系统备份
- 归档到离线存储
版本差异说明
9.1 DM 7 与 DM 8 的差异
| 特性 | DM 7 | DM 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: 可以使用以下方法:
- 使用DM性能监控工具查看实时性能指标
- 通过系统视图查询实时性能数据
- 使用命令行工具执行实时监控命令
- 配置告警规则,实时接收性能异常通知
Q3: 如何识别DM数据库的性能瓶颈?
A3: 可以通过以下步骤识别:
- 查看等待事件,识别资源争用
- 分析Top SQL,识别低效SQL
- 监控资源使用率,查看CPU、内存、磁盘IO等是否达到瓶颈
- 检查锁信息,识别锁争用情况
- 使用性能监控工具生成性能报告,分析瓶颈
Q4: 如何监控DM数据库的锁情况?
A4: 可以通过以下方法:
- 使用DM管理工具的"锁管理"功能
- 查询V$LOCK和V$SESSION_WAIT视图
- 使用dmcmd工具的LOCKS命令
- 配置锁等待告警规则
Q5: 如何监控DM数据库的SQL执行情况?
A5: 可以通过以下方法:
- 使用DM性能监控工具的"SQL监控"功能
- 查询V$SQL、V$LONG_EXEC_SQL视图
- 启用SQL审计功能
- 使用数据库提供的SQL追踪功能
Q6: 如何配置DM数据库的告警?
A6: 可以通过以下方法:
- 在DM管理工具中配置告警规则
- 在DM性能监控工具中设置告警阈值
- 配置第三方监控系统的告警规则
- 编写自定义脚本监控并发送告警
Q7: 如何备份和恢复监控数据?
A7: 可以通过以下方法:
- 对于存储在数据库中的监控数据,可以使用数据库备份功能
- 对于日志文件,可以使用文件系统备份
- 对于第三方监控系统的数据,使用其自带的备份功能
- 恢复时,根据备份类型选择相应的恢复方法
Q8: 如何优化DM数据库的监控性能?
A8: 可以通过以下方法:
- 选择关键监控指标,避免监控过多指标
- 调整监控采样间隔,平衡实时性和性能开销
- 优化监控查询语句,减少对数据库的影响
- 考虑使用只读副本进行监控,减少对主库的影响
- 定期清理过期监控数据,保持监控系统高效运行
Q9: DM数据库支持哪些第三方监控系统?
A9: DM数据库支持与多种第三方监控系统集成,包括:
- Zabbix
- Prometheus + Grafana
- Nagios
- 阿里云云监控
- 华为云监控
- 其他支持JDBC或ODBC的监控系统
Q10: 如何使用系统视图进行监控?
A10: 系统视图是DM数据库提供的监控数据来源,可以通过SQL查询获取各种监控指标。常用的系统视图包括:
- V$INSTANCE:实例状态
- V$SESSION:会话信息
- V$LOCK:锁信息
- V$SQL:SQL执行信息
- V$SYSSTAT:系统统计信息
可以编写自定义脚本或工具,定期查询这些视图并生成监控报告或告警。
