Skip to content

DM 日志类型

日志的重要性

  • 数据恢复:确保数据在故障发生后能够恢复
  • 故障诊断:帮助定位和分析数据库故障
  • 性能调优:提供性能瓶颈分析的依据
  • 安全审计:记录数据库的安全相关操作
  • 合规要求:满足企业和行业的合规需求

1.2 日志分类

DM数据库的日志可以分为以下几类:

  • 重做日志:记录数据库的所有修改操作
  • 归档日志:重做日志的归档文件
  • 错误日志:记录数据库运行中的错误信息
  • 事件日志:记录数据库的重要事件
  • 审计日志:记录数据库的安全相关操作
  • SQL日志:记录执行的SQL语句
  • 性能日志:记录数据库的性能数据

重做日志(Redo Log)

2.1 概念与作用

重做日志是DM数据库最重要的日志类型,用于记录数据库的所有修改操作,确保数据的一致性和可恢复性。

2.2 重做日志特点

  • 循环写入,满了自动切换
  • 顺序写入,性能高效
  • 包含所有数据修改的详细信息
  • 用于实例崩溃恢复和介质恢复

2.3 重做日志配置

2.3.1 配置参数

参数名默认值说明
RLOG_SIZE256重做日志文件大小(MB)
RLOG_BUF_SIZE10重做日志缓冲区大小(MB)
RLOG_POOL_SIZE10重做日志池大小(MB)
RLOG_SEND_APPLY_MON0日志发送和应用监控开关

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_INI0是否使用归档配置文件
ARCH_BUF_SIZE10归档缓冲区大小(MB)
ARCH_WAIT_APPLY0归档等待应用开关
ARCH_SEND_DELAY0归档发送延迟时间(秒)

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 = 20480

3.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.err

4.5 错误日志配置

参数名默认值说明
ERR_LOG./log/dm_DMSERVER.err错误日志文件路径
SVR_LOG./log/dm_DMSERVER.log服务器日志文件路径
LOG_LEVEL0日志级别(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.log

5.5 事件日志配置

参数名默认值说明
SVR_LOG./log/dm_DMSERVER.log事件日志文件路径
LOG_LEVEL0日志级别
LOG_FILE_SIZE2048日志文件大小(MB)
LOG_SPACE_LIMIT0日志空间限制(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.log

7.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性能监控工具

  1. 启动DM性能监控工具
  2. 连接到目标数据库实例
  3. 点击"SQL监控"查看SQL执行情况
  4. 分析慢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性能监控工具

  1. 启动DM性能监控工具
  2. 连接到目标数据库实例
  3. 查看性能仪表盘
  4. 分析性能瓶颈
  5. 生成性能报告

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.logdm_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 7DM 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: 可以通过以下方法查看:

  1. 查看默认日志路径 $DM_HOME/log/
  2. 使用 dmctl 命令查看日志配置
  3. 查询系统视图 V$PARAMETER 中的日志相关参数

Q2: 如何优化重做日志性能?

A2: 优化方法:

  1. 增加重做日志文件大小(建议256MB-1GB)
  2. 增加重做日志组数量(建议至少3组)
  3. 将重做日志文件分布在不同的磁盘上
  4. 调整重做日志缓冲区大小
  5. 优化应用程序,减少频繁提交

Q3: 如何启用和配置DM数据库的归档模式?

A3: 启用步骤:

  1. 关闭数据库:./DmServiceDMSERVER stop
  2. 以mount模式启动:./dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
  3. 启用归档:ALTER DATABASE ARCHIVELOG;
  4. 配置归档参数
  5. 打开数据库:ALTER DATABASE OPEN;
  6. 验证归档模式:SELECT ARCH_MODE FROM V$INSTANCE;

Q4: 如何监控DM数据库的慢SQL?

A4: 监控方法:

  1. 启用慢SQL日志:SP_SET_PARA_VALUE(1, 'SLOW_SQL', 1);
  2. 设置慢SQL阈值:SP_SET_PARA_VALUE(1, 'SLOW_SQL_TIME', 1000);
  3. 查看慢SQL日志文件
  4. 使用系统视图 V$LONG_EXEC_SQL
  5. 使用DM性能监控工具

Q5: 如何管理和清理DM数据库的审计日志?

A5: 管理方法:

  1. 启用审计:SP_SET_PARA_VALUE(1, 'ENABLE_AUDIT', 1);
  2. 配置审计规则
  3. 定期清理审计日志:DELETE FROM SYS.AUDITRECORDS WHERE AUDIT_TIME < SYSDATE - 7;
  4. 导出审计日志到外部存储
  5. 考虑使用外部审计系统

Q6: 如何分析DM数据库的性能日志?

A6: 分析方法:

  1. 启用性能监控:SP_SET_PARA_VALUE(1, 'ENABLE_MONITOR', 1);
  2. 使用系统视图分析:V$SYSSTAT, V$SESS_STAT, V$SQL_STATISTICS
  3. 使用DM性能监控工具生成性能报告
  4. 分析等待事件:V$SESSION_WAIT
  5. 生成AWR报告进行深入分析

Q7: 如何确保DM数据库日志的安全性?

A7: 安全措施:

  1. 限制日志文件的访问权限
  2. 对敏感日志进行加密存储
  3. 定期备份日志文件
  4. 审计日志的访问操作
  5. 考虑使用外部日志管理系统

Q8: 如何处理DM数据库的日志风暴?

A8: 处理方法:

  1. 识别日志风暴的来源
  2. 临时调整日志级别,减少日志生成
  3. 优化应用程序,减少不必要的操作
  4. 增加日志处理能力
  5. 分析根本原因,采取长期解决方案

Q9: 如何备份DM数据库的日志?

A9: 备份策略:

  1. 定期备份归档日志
  2. 备份重要的错误日志和事件日志
  3. 备份审计日志和安全相关日志
  4. 考虑使用增量备份策略
  5. 验证备份的完整性

Q10: 如何恢复DM数据库的日志?

A10: 恢复方法:

  1. 使用dmrman工具进行日志恢复
  2. 使用归档日志进行时间点恢复
  3. 使用重做日志进行实例恢复
  4. 验证恢复结果
  5. 定期测试日志恢复流程