外观
DM 日志类型
日志的重要性
- 数据恢复:确保数据在故障发生后能够恢复
- 故障诊断:帮助定位和分析数据库故障
- 性能调优:提供性能瓶颈分析的依据
- 安全审计:记录数据库的安全相关操作
- 合规要求:满足企业和行业的合规需求
1.2 日志分类
DM数据库的日志可以分为以下几类:
- 重做日志:记录数据库的所有修改操作
- 归档日志:重做日志的归档文件
- 错误日志:记录数据库运行中的错误信息
- 事件日志:记录数据库的重要事件
- 审计日志:记录数据库的安全相关操作
- SQL日志:记录执行的SQL语句
- 性能日志:记录数据库的性能数据
重做日志(Redo Log)
2.1 概念与作用
重做日志是DM数据库最重要的日志类型,用于记录数据库的所有修改操作,确保数据的一致性和可恢复性。
2.2 重做日志特点
- 循环写入,满了自动切换
- 顺序写入,性能高效
- 包含所有数据修改的详细信息
- 用于实例崩溃恢复和介质恢复
2.3 重做日志配置
2.3.1 配置参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
RLOG_SIZE | 256 | 重做日志文件大小(MB) |
RLOG_BUF_SIZE | 10 | 重做日志缓冲区大小(MB) |
RLOG_POOL_SIZE | 10 | 重做日志池大小(MB) |
RLOG_SEND_APPLY_MON | 0 | 日志发送和应用监控开关 |
2.3.2 查看重做日志
sql
-- 查看重做日志组信息
SELECT * FROM V$LOGFILE;
-- 查看当前重做日志状态
SELECT * FROM V$RLOG;
-- 查看重做日志缓冲区信息
SELECT * FROM V$RLOG_BUFFER;2.4 重做日志管理
2.4.1 添加重做日志组
sql
-- 添加重做日志组
ALTER DATABASE ADD LOGFILE GROUP 3 '/opt/dmdbms/data/DAMENG/redo03.log' SIZE 512;2.4.2 修改重做日志大小
sql
-- 修改重做日志大小(需要先删除再添加)
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE ADD LOGFILE GROUP 3 '/opt/dmdbms/data/DAMENG/redo03.log' SIZE 1024;2.4.3 切换重做日志
sql
-- 手动切换重做日志
ALTER SYSTEM SWITCH LOGFILE;归档日志(Archive Log)
3.1 概念与作用
归档日志是重做日志的归档文件,用于长期保存数据库的修改记录,支持时间点恢复和异机恢复。
3.2 归档模式
3.2.1 归档模式类型
- 非归档模式:重做日志满了直接覆盖,不保存历史记录
- 归档模式:重做日志满了后归档保存,支持完整恢复
3.2.2 归档模式配置
sql
-- 查看当前归档模式
SELECT ARCH_MODE FROM V$INSTANCE;
-- 切换到归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- 切换到非归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE NOARCHIVELOG;
ALTER DATABASE OPEN;3.3 归档配置
3.3.1 归档参数配置
| 参数名 | 默认值 | 说明 |
|---|---|---|
ARCH_INI | 0 | 是否使用归档配置文件 |
ARCH_BUF_SIZE | 10 | 归档缓冲区大小(MB) |
ARCH_WAIT_APPLY | 0 | 归档等待应用开关 |
ARCH_SEND_DELAY | 0 | 归档发送延迟时间(秒) |
3.3.2 归档配置文件
归档配置文件 dmarch.ini 示例:
ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204803.4 归档日志管理
3.4.1 查看归档日志
sql
-- 查看归档日志信息
SELECT * FROM V$ARCHIVED_LOG;
-- 查看归档统计信息
SELECT * FROM V$ARCHIVE_STATUS;3.4.2 手动归档
sql
-- 手动归档
ALTER SYSTEM ARCHIVE LOG CURRENT;3.4.3 清理归档日志
bash
# 使用dmrman清理归档日志
dmrman
BACKUP ARCHIVE LOG ALL DELETE INPUT;
# 或手动删除归档文件
rm -f /opt/dmdbms/data/DAMENG/arch/ARCHIVE_LOG_*;错误日志(Error Log)
4.1 概念与作用
错误日志记录数据库运行中的错误信息,包括系统错误、语法错误、权限错误等,用于故障诊断和问题定位。
4.2 错误日志位置
- 默认路径:
$DM_HOME/log/dm_DMSERVER.err - 可通过参数
ERR_LOG配置
4.3 错误日志内容
- 错误时间
- 错误级别
- 错误代码
- 错误描述
- 错误位置
4.4 查看错误日志
bash
# 查看错误日志
tail -f $DM_HOME/log/dm_DMSERVER.err
# 搜索特定错误
grep "ERROR" $DM_HOME/log/dm_DMSERVER.err4.5 错误日志配置
| 参数名 | 默认值 | 说明 |
|---|---|---|
ERR_LOG | ./log/dm_DMSERVER.err | 错误日志文件路径 |
SVR_LOG | ./log/dm_DMSERVER.log | 服务器日志文件路径 |
LOG_LEVEL | 0 | 日志级别(0-6,级别越高,日志越详细) |
事件日志(Event Log)
5.1 概念与作用
事件日志记录数据库的重要事件,包括实例启动、关闭、参数变更、用户登录等,用于监控数据库的运行状态和重要操作。
5.2 事件日志位置
- 默认路径:
$DM_HOME/log/dm_DMSERVER.log - 可通过参数
SVR_LOG配置
5.3 事件日志内容
- 事件时间
- 事件级别
- 事件类型
- 事件描述
- 相关用户和会话信息
5.4 查看事件日志
bash
# 查看事件日志
tail -f $DM_HOME/log/dm_DMSERVER.log
# 搜索特定事件
grep "STARTUP" $DM_HOME/log/dm_DMSERVER.log5.5 事件日志配置
| 参数名 | 默认值 | 说明 |
|---|---|---|
SVR_LOG | ./log/dm_DMSERVER.log | 事件日志文件路径 |
LOG_LEVEL | 0 | 日志级别 |
LOG_FILE_SIZE | 2048 | 日志文件大小(MB) |
LOG_SPACE_LIMIT | 0 | 日志空间限制(0表示无限制) |
审计日志(Audit Log)
6.1 概念与作用
审计日志记录数据库的安全相关操作,包括用户登录、权限变更、敏感数据访问等,用于安全审计和合规要求。
6.2 审计日志类型
- 系统审计:记录系统级别的操作
- 语句审计:记录特定类型的SQL语句
- 对象审计:记录对特定对象的操作
6.3 审计配置
6.3.1 启用审计
sql
-- 启用审计
SP_SET_PARA_VALUE(1, 'ENABLE_AUDIT', 1);6.3.2 配置审计规则
sql
-- 审计用户登录操作
AUDIT CONNECT BY ACCESS;
-- 审计表的DML操作
AUDIT SELECT, INSERT, UPDATE, DELETE ON TABLE HR.EMPLOYEES BY ACCESS;
-- 审计存储过程的执行
AUDIT EXECUTE ON PROCEDURE HR.PROC_UPDATE_SALARY BY ACCESS;6.4 查看审计日志
sql
-- 查看审计日志
SELECT * FROM SYS.AUDITRECORDS ORDER BY AUDIT_TIME DESC;
-- 查看审计配置
SELECT * FROM SYS.AUDITRULES;6.5 审计日志管理
6.5.1 清理审计日志
sql
-- 清理审计日志(保留最近7天)
DELETE FROM SYS.AUDITRECORDS WHERE AUDIT_TIME < SYSDATE - 7;
COMMIT;6.5.2 导出审计日志
sql
-- 导出审计日志到文件
SELECT * FROM SYS.AUDITRECORDS INTO OUTFILE '/opt/dmdbms/data/DAMENG/audit.log' FORMAT TEXT;SQL日志(SQL Log)
7.1 概念与作用
SQL日志记录执行的SQL语句,包括语句内容、执行时间、影响行数等,用于性能分析和SQL优化。
7.2 SQL日志类型
- 慢SQL日志:记录执行时间超过阈值的SQL语句
- 全SQL日志:记录所有执行的SQL语句
- 错误SQL日志:记录执行失败的SQL语句
7.3 SQL日志配置
7.3.1 慢SQL日志配置
sql
-- 启用慢SQL日志
SP_SET_PARA_VALUE(1, 'SLOW_SQL', 1);
-- 设置慢SQL阈值(毫秒)
SP_SET_PARA_VALUE(1, 'SLOW_SQL_TIME', 1000);
-- 设置慢SQL日志路径
SP_SET_PARA_VALUE(1, 'SLOW_LOG_PATH', '/opt/dmdbms/data/DAMENG/slow_sql.log');7.3.2 全SQL日志配置
sql
-- 启用全SQL日志
SP_SET_PARA_VALUE(1, 'SQL_TRACE', 1);
-- 设置SQL日志路径
SP_SET_PARA_VALUE(1, 'SQL_TRACE_PATH', '/opt/dmdbms/data/DAMENG/sql_trace.log');7.4 查看SQL日志
bash
# 查看慢SQL日志
tail -f /opt/dmdbms/data/DAMENG/slow_sql.log
# 查看全SQL日志
tail -f /opt/dmdbms/data/DAMENG/sql_trace.log7.5 SQL日志分析
7.5.1 使用系统视图查看
sql
-- 查看慢SQL
SELECT * FROM V$LONG_EXEC_SQL;
-- 查看SQL统计信息
SELECT * FROM V$SQL_STATISTICS ORDER BY EXEC_COUNT DESC;7.5.2 使用DM性能监控工具
- 启动DM性能监控工具
- 连接到目标数据库实例
- 点击"SQL监控"查看SQL执行情况
- 分析慢SQL,优化执行计划
性能日志(Performance Log)
8.1 概念与作用
性能日志记录数据库的性能数据,包括CPU使用率、内存使用率、IO性能等,用于性能分析和优化。
8.2 性能日志类型
- 系统性能日志:记录系统级别的性能数据
- 会话性能日志:记录会话级别的性能数据
- SQL性能日志:记录SQL级别的性能数据
8.3 性能日志配置
8.3.1 启用性能监控
sql
-- 启用性能监控
SP_SET_PARA_VALUE(1, 'ENABLE_MONITOR', 1);
SP_SET_PARA_VALUE(1, 'MONITOR_TIME', 1);8.3.2 配置性能视图
sql
-- 启用性能视图
SP_SET_PARA_VALUE(1, 'ENABLE_VIEW', 1);8.4 查看性能日志
sql
-- 查看系统性能统计
SELECT * FROM V$SYSSTAT;
-- 查看会话性能统计
SELECT * FROM V$SESS_STAT;
-- 查看SQL性能统计
SELECT * FROM V$SQL_STATISTICS;
-- 查看等待事件
SELECT * FROM V$SESSION_WAIT;8.5 性能日志分析
8.5.1 使用DM性能监控工具
- 启动DM性能监控工具
- 连接到目标数据库实例
- 查看性能仪表盘
- 分析性能瓶颈
- 生成性能报告
8.5.2 使用AWR报告
sql
-- 生成AWR报告
CALL DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
SELECT * FROM DBA_HIST_WR_CONTROL;其他日志类型
9.1 备份日志
- 记录数据库备份和恢复的操作
- 默认路径:
$DM_HOME/log/dm_<工具名>.log - 例如:
dm_dmrman.log、dm_backup.log
9.2 集群日志
- 记录集群相关的操作和事件
- 包括DMDSC、DMDataWatch、DMRAC等集群架构的日志
- 默认路径:
$DM_HOME/log/
9.3 守护进程日志
- 记录守护进程的运行状态和事件
- 默认路径:
$DM_HOME/log/dm_watcher.log
9.4 监听日志
- 记录数据库监听的连接信息
- 默认路径:
$DM_HOME/log/dm_listener.log
日志管理最佳实践
10.1 日志配置最佳实践
10.1.1 重做日志配置
- 建议设置为至少3组重做日志
- 每组重做日志大小建议为256MB-1GB
- 重做日志文件应分布在不同的磁盘上,提高IO性能
10.1.2 归档日志配置
- 生产环境建议启用归档模式
- 归档日志应存储在与数据文件不同的磁盘上
- 配置合理的归档文件大小和空间限制
- 定期清理过期的归档日志
10.1.3 错误日志配置
- 设置合适的日志级别,避免日志过于冗余
- 配置日志文件大小限制,自动轮转
- 定期备份和清理错误日志
10.2 日志监控最佳实践
10.2.1 实时监控
- 监控重做日志切换频率
- 监控归档日志生成速度
- 监控错误日志中的严重错误
- 监控慢SQL日志
10.2.2 定期分析
- 定期分析错误日志,提前发现潜在问题
- 定期分析慢SQL日志,优化SQL语句
- 定期分析性能日志,调整系统参数
- 定期审计安全日志,确保安全合规
10.3 日志备份与恢复
10.3.1 日志备份
- 定期备份归档日志
- 备份审计日志和安全相关日志
- 备份重要的事件日志
10.3.2 日志恢复
- 确保归档日志的完整性,用于数据恢复
- 建立日志恢复测试机制
- 定期测试日志恢复流程
10.4 日志安全
10.4.1 访问控制
- 限制日志文件的访问权限
- 只有授权用户可以查看和修改日志
- 审计日志的访问操作
10.4.2 加密保护
- 对敏感日志进行加密存储
- 加密传输日志数据
- 保护日志文件的完整性
版本差异说明
11.1 DM 7 与 DM 8 的差异
| 日志类型 | DM 7 | DM 8 |
|---|---|---|
| 重做日志 | 基本功能 | 增强了日志管理和监控功能 |
| 归档日志 | 基本归档功能 | 支持更灵活的归档配置和管理 |
| 审计日志 | 基础审计功能 | 增强了审计粒度和性能 |
| SQL日志 | 基本的慢SQL日志 | 支持更详细的SQL日志和分析 |
| 性能日志 | 有限的性能视图 | 提供更丰富的性能监控视图和工具 |
| 集群日志 | 基础集群日志 | 增强了集群日志的详细程度和可用性 |
11.2 不同版本的注意事项
- DM 7.6 之前的版本审计功能相对简单
- DM 8.0 开始支持更丰富的日志监控和分析功能
- 升级数据库版本后,建议重新配置日志参数
- 不同版本的日志文件格式可能有所不同
常见问题与解决方案
12.1 重做日志问题
12.1.1 问题:重做日志频繁切换
解决方案:
- 增加重做日志文件大小
- 增加重做日志组数量
- 优化应用程序,减少频繁提交
- 检查是否有大量的DML操作
12.1.2 问题:重做日志损坏
解决方案:
- 使用归档日志进行恢复
- 如果没有归档日志,可能需要重建数据库
- 定期备份数据库,避免数据丢失
12.2 归档日志问题
12.2.1 问题:归档日志空间不足
解决方案:
- 清理过期的归档日志
- 增加归档日志存储空间
- 调整归档文件大小和空间限制
- 考虑使用压缩归档
12.2.2 问题:归档日志生成速度过快
解决方案:
- 分析应用程序,减少不必要的数据修改
- 优化数据库性能,减少日志生成量
- 考虑使用增量备份策略
- 增加归档日志的处理能力
12.3 错误日志问题
12.3.1 问题:错误日志过大
解决方案:
- 调整日志级别,减少冗余日志
- 配置日志文件大小限制和自动轮转
- 定期清理和归档错误日志
12.3.2 问题:错误日志中出现大量警告
解决方案:
- 分析警告原因,是否需要调整参数
- 检查应用程序,是否有不合理的操作
- 考虑调整日志级别,过滤不重要的警告
12.4 审计日志问题
12.4.1 问题:审计日志影响性能
解决方案:
- 调整审计策略,只审计必要的操作
- 考虑使用异步审计
- 定期清理审计日志,保持合理的大小
12.4.2 问题:审计日志丢失
解决方案:
- 配置审计日志的备份策略
- 考虑使用外部审计系统
- 定期验证审计日志的完整性
12.5 SQL日志问题
12.5.1 问题:慢SQL日志中没有记录
解决方案:
- 检查慢SQL日志是否启用
- 检查慢SQL阈值设置是否合理
- 检查慢SQL日志路径是否正确
12.5.2 问题:全SQL日志过大
解决方案:
- 只在必要时启用全SQL日志
- 配置SQL日志的大小限制和自动轮转
- 考虑使用抽样日志
常见问题(FAQ)
Q1: 如何查看DM数据库的所有日志文件?
A1: 可以通过以下方法查看:
- 查看默认日志路径
$DM_HOME/log/ - 使用
dmctl命令查看日志配置 - 查询系统视图
V$PARAMETER中的日志相关参数
Q2: 如何优化重做日志性能?
A2: 优化方法:
- 增加重做日志文件大小(建议256MB-1GB)
- 增加重做日志组数量(建议至少3组)
- 将重做日志文件分布在不同的磁盘上
- 调整重做日志缓冲区大小
- 优化应用程序,减少频繁提交
Q3: 如何启用和配置DM数据库的归档模式?
A3: 启用步骤:
- 关闭数据库:
./DmServiceDMSERVER stop - 以mount模式启动:
./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount - 启用归档:
ALTER DATABASE ARCHIVELOG; - 配置归档参数
- 打开数据库:
ALTER DATABASE OPEN; - 验证归档模式:
SELECT ARCH_MODE FROM V$INSTANCE;
Q4: 如何监控DM数据库的慢SQL?
A4: 监控方法:
- 启用慢SQL日志:
SP_SET_PARA_VALUE(1, 'SLOW_SQL', 1); - 设置慢SQL阈值:
SP_SET_PARA_VALUE(1, 'SLOW_SQL_TIME', 1000); - 查看慢SQL日志文件
- 使用系统视图
V$LONG_EXEC_SQL - 使用DM性能监控工具
Q5: 如何管理和清理DM数据库的审计日志?
A5: 管理方法:
- 启用审计:
SP_SET_PARA_VALUE(1, 'ENABLE_AUDIT', 1); - 配置审计规则
- 定期清理审计日志:
DELETE FROM SYS.AUDITRECORDS WHERE AUDIT_TIME < SYSDATE - 7; - 导出审计日志到外部存储
- 考虑使用外部审计系统
Q6: 如何分析DM数据库的性能日志?
A6: 分析方法:
- 启用性能监控:
SP_SET_PARA_VALUE(1, 'ENABLE_MONITOR', 1); - 使用系统视图分析:
V$SYSSTAT,V$SESS_STAT,V$SQL_STATISTICS - 使用DM性能监控工具生成性能报告
- 分析等待事件:
V$SESSION_WAIT - 生成AWR报告进行深入分析
Q7: 如何确保DM数据库日志的安全性?
A7: 安全措施:
- 限制日志文件的访问权限
- 对敏感日志进行加密存储
- 定期备份日志文件
- 审计日志的访问操作
- 考虑使用外部日志管理系统
Q8: 如何处理DM数据库的日志风暴?
A8: 处理方法:
- 识别日志风暴的来源
- 临时调整日志级别,减少日志生成
- 优化应用程序,减少不必要的操作
- 增加日志处理能力
- 分析根本原因,采取长期解决方案
Q9: 如何备份DM数据库的日志?
A9: 备份策略:
- 定期备份归档日志
- 备份重要的错误日志和事件日志
- 备份审计日志和安全相关日志
- 考虑使用增量备份策略
- 验证备份的完整性
Q10: 如何恢复DM数据库的日志?
A10: 恢复方法:
- 使用dmrman工具进行日志恢复
- 使用归档日志进行时间点恢复
- 使用重做日志进行实例恢复
- 验证恢复结果
- 定期测试日志恢复流程
