在 DM8 的日常运维中,除了掌握 SQL 和数据库对象管理外,还需要重点理解实例参数、归档日志以及 SQL 日志配置。实际工作中最常接触的几个配置文件是 dm.ini、dmarch.ini 和 sqllog.ini。
其中:
dmarch.ini:归档日志配置文件;sqllog.ini:SQL 跟踪日志配置文件。本文重点整理这三个部分,以及如何利用 SQL 日志定位和整理慢 SQL。
dm.ini 是 DM 数据库实例最重要的配置文件之一,数据库启动时会读取其中的参数。
实例目录通常类似:
/dm8/data/DAMENG/
目录中常见:
dm.ini
dmarch.ini
sqllog.ini
具体位置取决于初始化数据库时指定的数据目录。
日常排查参数时,不建议第一时间直接打开 dm.ini,可以先通过动态视图查看。
SELECT *
FROM V$dm_ini;
查询指定参数:
SELECT *
FROM V$dm_ini where para_name='SVR_LOG';
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)
参数调整的基本原则可以概括为:
先确认当前值,再确认参数类型;先测试,再修改;能够动态生效的参数,不要为了修改参数随意重启数据库。
日常比较常见的参数包括:
| 参数 | 作用 |
|---|---|
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 数据库备份恢复、数据保护和主备环境中的重要组成部分。
数据库运行过程中会不断产生 Redo 日志。如果没有开启归档,联机日志循环使用后,旧日志会被覆盖。
开启归档后,需要保存的日志会被写入归档目录,从而形成较完整的日志链。
先将数据库切换到 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
实际大小需要根据业务日志产生量、备份周期和磁盘空间规划。
另一种方式是通过配置文件管理归档。
首先在 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
生产环境最重要的不是“是否成功开启归档”,而是后续有没有持续监控归档空间。
建议重点关注:
归档是否正常产生
归档目录是否可写
磁盘剩余空间
归档产生速度
备份是否正常
历史归档是否有清理策略
归档目录空间不足可能直接影响数据库正常运行,因此归档空间监控是数据库日常巡检的重要内容。
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 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 =
修改完成后执行:
SP_REFRESH_SVR_LOG_CONFIG();
查看当前 SQL 日志配置:
SELECT *
FROM V$DM_SQLLOG_CONFIG;
也可以查看配置文件中的内容:
SELECT *
FROM V$DM_SQLLOG_INI;
这样可以判断配置文件和当前实际运行配置是否一致。
开启日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
解压工具包并配置工具参数:
[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下填写正常路径即可。
执行jar包命令
[root@localhost DMLOG8.3]# java -jar Dmlog_DM_8.7.jar
运行过程如下图所示,会按当前时间生成对应RESULT_$DATE目录并将所有统计信息都存放改目录中。
生成的结果目录下有根据配置的执行时间和执行次数上限值命名的excel文件(xls),报错的SQL和长度超过30000的SQL会另外生成txt文件(txt),echart散点图,QPS折线图及90%平均次数和平均耗时的SQL统计图(html):
两个excel分别是按照最大执行时间和执行次数进行降序排序:
优化方法和优化后时间这两列空置,方便SQL优化人员进行优化后的整理和对比。
echarts_scatter_loading10.html为echart散点图每个点的SQL信息可以显示和拷贝
散点图支持
1 筛选SEL/DDL/INS/CAL等分类,只用点击去除或者选择对应类别,即可显示对应sql在图形上分布点;
2 支持散点图区域放大功能,鼠标指定位置,进行滚轮缩放,可以对语句进行方便放大。
3 点击每个点,可获得每个点的SQL详细信息。
4 右上角,可以点击进行保存图片。
echarts_scatter_Statistics.html为散点图基础上生成的按照执行90%平均次数和平均耗时的SQL统计图。
echarts_qps.html为QPS折线图。
文章
阅读量
获赞
