注册
DM8 数据库配置:dm.ini、归档日志与慢 SQL 分析
专栏/技术分享/ 文章详情 /

DM8 数据库配置:dm.ini、归档日志与慢 SQL 分析

Kira 2026/08/25 185 0 0
摘要

DM8 数据库配置:dm.ini、归档日志与慢 SQL 分析

在 DM8 的日常运维中,除了掌握 SQL 和数据库对象管理外,还需要重点理解实例参数、归档日志以及 SQL 日志配置。实际工作中最常接触的几个配置文件是 dm.inidmarch.inisqllog.ini

其中:

  • dm.ini`:数据库实例核心参数文件;
  • dmarch.ini:归档日志配置文件;
  • sqllog.ini:SQL 跟踪日志配置文件。

本文重点整理这三个部分,以及如何利用 SQL 日志定位和整理慢 SQL。


一、dm.ini 核心配置

dm.ini 是 DM 数据库实例最重要的配置文件之一,数据库启动时会读取其中的参数。

实例目录通常类似:

/dm8/data/DAMENG/

目录中常见:

dm.ini
dmarch.ini
sqllog.ini

具体位置取决于初始化数据库时指定的数据目录。

1. 查看数据库参数

日常排查参数时,不建议第一时间直接打开 dm.ini,可以先通过动态视图查看。

SELECT * FROM V$dm_ini;

查询指定参数:

SELECT * FROM V$dm_ini where para_name='SVR_LOG';

2. 参数修改原则

DM 参数并不是所有参数修改后都会立即生效。

常见参数属性包括:

SYS        系统级动态参数
SESSION    会话级参数
IN_FILE    需要修改配置文件,通常重启后生效
READ ONLY  运行过程中不能动态修改

因此修改参数前,首先应该确认:

SELECT NAME, VALUE, TYPE FROM V$PARAMETER WHERE NAME = '参数名';

对于支持动态修改的参数,可以使用系统过程:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);

例如关闭 SQL 日志:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);

对于静态参数,则需要修改 dm.ini,并根据参数要求重启实例。

例如:

ARCH_INI = 1 SVR_LOG = 1

生产环境修改配置文件前建议先备份:

cp dm.ini dm.ini.bak_$(date +%Y%m%d_%H%M%S)

参数调整的基本原则可以概括为:

先确认当前值,再确认参数类型;先测试,再修改;能够动态生效的参数,不要为了修改参数随意重启数据库。


3. 常见 dm.ini 参数

日常比较常见的参数包括:

参数 作用
INSTANCE_NAME 数据库实例名称
PORT_NUM 数据库监听端口
CTL_PATH 控制文件路径
BAK_PATH 默认备份目录
ARCH_INI 是否启用归档配置
SVR_LOG 是否启用 SQL 跟踪日志
MAX_SESSIONS 最大会话连接数相关参数
MEMORY_POOL 内存池相关参数
MEMORY_TARGET 数据库内存管理相关参数
MAL_INI 是否启用 MAL 配置,主备环境较常见

这些参数不能简单照抄其他数据库环境。

特别是内存、连接数、缓存、线程等参数,必须结合:

服务器 CPU
物理内存
业务并发量
数据库规模
SQL 类型
实际性能瓶颈

进行调整。

数据库调优中最容易出现的问题之一,就是误认为“参数越大,性能越好”。实际上参数配置超过服务器承载能力后,反而可能造成内存不足、交换空间使用增加甚至实例异常。


二、配置 DM 归档日志

归档日志是 DM 数据库备份恢复、数据保护和主备环境中的重要组成部分。

数据库运行过程中会不断产生 Redo 日志。如果没有开启归档,联机日志循环使用后,旧日志会被覆盖。

开启归档后,需要保存的日志会被写入归档目录,从而形成较完整的日志链。

1. 使用 SQL 开启归档

先将数据库切换到 MOUNT 状态:

ALTER DATABASE MOUNT;

开启归档:

ALTER DATABASE ARCHIVELOG;

添加本地归档配置:

ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=102400';

最后打开数据库:

ALTER DATABASE OPEN;

完整过程:

ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=102400'; ALTER DATABASE OPEN;

其中:

DEST         归档目录
TYPE         归档类型
FILE_SIZE    单个归档文件大小,单位通常为 MB
SPACE_LIMIT  归档空间上限,单位通常为 MB

实际大小需要根据业务日志产生量、备份周期和磁盘空间规划。


2. 使用 dmarch.ini 配置归档

另一种方式是通过配置文件管理归档。

首先在 dm.ini 中开启:

ARCH_INI = 1

然后配置 dmarch.ini

[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmarch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400

配置完成后,根据当前实例状态和参数生效方式,使新的配置生效。

检查归档状态:

SELECT * FROM V$ARCH_STATUS;

操作系统中也可以直接查看归档目录:

ls -lh /dmarch

生产环境最重要的不是“是否成功开启归档”,而是后续有没有持续监控归档空间。

建议重点关注:

归档是否正常产生
归档目录是否可写
磁盘剩余空间
归档产生速度
备份是否正常
历史归档是否有清理策略

归档目录空间不足可能直接影响数据库正常运行,因此归档空间监控是数据库日常巡检的重要内容。


三、配置 sqllog.ini 收集 SQL 日志

DM 可以通过 sqllog.ini 对数据库执行的 SQL 进行跟踪。

SQL 日志常用于:

慢 SQL 分析
性能问题排查
业务 SQL 跟踪
SQL 执行时间分析
特定用户 SQL 行为分析

但需要注意:

sqllog.ini 需要在 dm.ini 中开启 SVR_LOG 后才能生效。

开启 SQL 日志:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);

关闭:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);

查看状态:

SELECT NAME, VALUE, TYPE FROM V$PARAMETER WHERE NAME = 'SVR_LOG';

1. 修改sqllog.ini配置文件

1 BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000) 2 BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600) 3 BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100) 4 [SLOG_ALL] 5 FILE_PATH = ..\log #sqllog存放位置 6 PART_STOR = 0 7 SWITCH_MODE = 2 #0代表不切换 2代表按照文件大小切换 8 SWITCH_LIMIT = 100 #文件大小100M 9 ASYNC_FLUSH = 1 #异步刷日志 10 FILE_NUM = 100 #生成的SQLLOG个数 11 ITEMS = 0 12 SQL_TRACE_MASK = 1 #全部类型的sql 13 MIN_EXEC_TIME = 0 14 USER_MODE = 0 #0为记录所有的用户 15 USERS =

2. 修改 sqllog.ini 后生效sqllog配置文件

修改完成后执行:

SP_REFRESH_SVR_LOG_CONFIG();

查看当前 SQL 日志配置:

SELECT * FROM V$DM_SQLLOG_CONFIG;

也可以查看配置文件中的内容:

SELECT * FROM V$DM_SQLLOG_INI;

这样可以判断配置文件和当前实际运行配置是否一致。


3. 开启sqllog日志

开启日志:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);

4. 下载sqllog日志到本地进行进行分析


四、使用 Dmlog 进行日志分析

解压工具包并配置工具参数:

[root@localhost /]# unzip DMLOG8.3_20211012.zip
[root@localhost /]# cd DMLOG8.3/
[root@localhost DMLOG8.3]# vi dmlog.properties

注意:dmlog.properties配置文件中log路径sqlpath参数,注意windows下,使用”\”代替”\”,liunx下填写正常路径即可。

image.png

执行jar包命令

[root@localhost DMLOG8.3]# java -jar Dmlog_DM_8.7.jar

运行过程如下图所示,会按当前时间生成对应RESULT_$DATE目录并将所有统计信息都存放改目录中。

image.png

image.png
image.png

生成的结果目录下有根据配置的执行时间和执行次数上限值命名的excel文件(xls),报错的SQL和长度超过30000的SQL会另外生成txt文件(txt),echart散点图,QPS折线图及90%平均次数和平均耗时的SQL统计图(html):

image.png

两个excel分别是按照最大执行时间和执行次数进行降序排序:

image.png
image.png

优化方法和优化后时间这两列空置,方便SQL优化人员进行优化后的整理和对比。

echarts_scatter_loading10.html为echart散点图每个点的SQL信息可以显示和拷贝
image.png
散点图支持

1 筛选SEL/DDL/INS/CAL等分类,只用点击去除或者选择对应类别,即可显示对应sql在图形上分布点;

2 支持散点图区域放大功能,鼠标指定位置,进行滚轮缩放,可以对语句进行方便放大。

3 点击每个点,可获得每个点的SQL详细信息。

4 右上角,可以点击进行保存图片。

echarts_scatter_Statistics.html为散点图基础上生成的按照执行90%平均次数和平均耗时的SQL统计图。

image.png

echarts_qps.html为QPS折线图。

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服