配置文件
前言
每创建一个DM数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项,当然还有其它参数配置文件,归档参数文件dmarch.ini及配置集群的参数文件dmmal.ini、dmwatcher.ini、dmmpp.ini、dmtimer.ini、dmwmon.ini。达梦数据库的参数文件dm.ini是必须的,其它均可选择配置。且除了实例参数文件dm.ini外,其它参数文件按照部署规范配置好后,基本上无须做任何修改。
主要配置文件
说明
参数文件 | 说明 |
---|---|
dm.ini | 达梦数据库启动所必须的配置文件,通过配置该文件可以设置达梦数据库服务器的各种功能和性能选项。达梦数据库是否读参数文件dmarch.ini、dmmal.ini、dmmpp.ini、dmtimer.ini,均有dm.ini参数文件中的相应参数(MAL_INI、ARCH_INI、MPP_INI、TIMER_INI)来控制。 |
dmarch.ini | 用于配置REDO日志的本地归档和远程归档。所谓远程归档指这台实例的REDO日志发送到集群中另外一个实例(该实例为这台实例的备机)。 |
dmmal.ini | 达梦数据库集群间MAL系统的配置文件,通过该文件配置达梦集群中每个实例的IP地址、端口号等信息。 |
dmwatcher.ini | 守护进程的配置文件。 |
dmmpp.ini | MPP集群的配置文件。 |
dmtimer.ini | 异步备机的配置文件。 |
dmmonitor.ini | 数据守护系统的监视器配置文件。 |
查看各项功能的配置文件
select name from sysobjects where name like 'V$DM_%INI';
参数分类
实例参数文件dm.ini中参数主要分为两类:功能配置参数、性能调优参数。
参数名 | 说明 |
---|---|
CTL_PATH | 必配,实例控制文件路径。 |
SYSTEM_PATH | 必配,系统表空间路径。 |
TEMP_PATH | 必配,临时表空间路径。 |
BAK_PATH | 必配,数据库备份默认路径。 |
INSTANCE_NAME | 必配,数据库实例名称。 |
ARCH_INI | 选配项,REDO本地归档开关,如不配置,无法进行数据库备份。 |
MAL_INI | 集群必配项,MAL通信开关。 |
DW_PORT | 集群必配项,数据库和守护进程的TCP通信端口。 |
TIMER_INI | 选配,异步备机开关,配置异步备机必须要配置该项。 |
MPP_INI | 选配,MPP集群开关,配置MPP集群必须要配置该项。 |
其它参数均为选配项,包括功能参数、性能调优参数、监控参数等。
参数属性
INI 参数属性分为静态、动态和手动三种类型,分别对应动态性能视图V$PARAMETER
中的TYPE类型IN FILE、READ ONLY、SYS和SESSION。
- 静态参数(IN FILE):只能修改 ini 文件,修改后重启DB才能生效,为系统级参数,生效后会影响所有的会话
- 动态参数(SYS和SESSION):ini 文件和内存同时可修改,修改后即时生效。
- 动态参数又分为会话级和系统级。
- SESSION: 会话级参数被修改后,新参数值只会影响新创建的会话
- SYS: 系统级参数修改后,将会影响所有的会话
- 动态参数又分为会话级和系统级。
- 手动参数(READ ONLY):在运行过程中不能被修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
参数查看
查看方式
-
直接查看参数文件,如:dm.ini
-
通过动态性能视图
v$PARAMETER
,该视图显示ini参数和dminit建库参数的类型及参数值信息(当前会话值、系统值及dm.ini文件中的值)select top 5 name, type, value, sys_value, file_value from v$parameter;
其中,VALUE表示当前会话值,SYS_VALUE表示系统值,FILE_VALUE表示dm.ini文件中值。
-
通过动态性能视图
v$DM_INI
,该视图可以查看所有ini参数和dminit建库参数信息。同时,也提供了分类的视图查看相关的配置,如:V$DM_ARCH_INI
select top 5 para_name, para_value from v$dm_ini; select * from V$DM_ARCH_INI;
-
通过相应函数查看参数值,其中SCOPE参数值为1:表示获取INI 文件中配置参数的值,值为2:表示获取内存中配置参数的值
- SF_GET_PARA_VALUE(scope int, paraname varchar(256)) :配置参数的值类型为数值类型时使用该函数来获取当前值
- SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187)):配置参数的值类型为浮点型时使用该函数来获取当前值
- SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187)):配置参数的值为字符串类型时用该系统函数来获取当前值
- SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)):获得当前会话的某个会话级 INI 参数的值
调整配置参数
修改参数的方式
- 直接编辑参数配置文件,如:dm.ini
- 通过SQL语句修改参数
- 通过系统函数修改参数
通过SQL语句修改参数
修改全局参数
通过ALTER SYSTEM
语法修改静态或动态(系统级、会话级)参数值,使修改之后的参数值能够在全局范围内起作用。
语法
ALTER SYSTEM SET '<参数名称>'=<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
- DEFERRED: 只适用于动态参数。指定DEFERRED时,参数值延迟生效,对当前session不生效,只对新创建的会话生效;缺省为立即生效,即对当前会话和新创建的会话都生效。
示例
-- 设置当前系统动态、会话级参数 SORT_BUF_SIZE 参数值为 200
ALTER SYSTEM SET 'SORT_BUF_SIZE'=200 DEFERRED MEMORY;
修改会话级参数
通过 ALTER SESSION 语法修改动态会话级参数(即 TYPE 为 SESSION 的参数),使修改之后的 INI 参数值只对当前会话起作用,不会影响其他会话或系统的 INI 参数值。
语法
ALTER SESSION SET '<参数名称>'=<参数值> [PURGE];
- PURGE: 是否清理执行计划
示例
-- 设置当前会话的 HAGR_HASH_SIZE 参数值为 2000000
ALTER SESSION SET 'HAGR_HASH_SIZE'=2000000;
通过系统函数修改参数
在 DM 数据库中,很多参数都是动态的,会自动响应各种负载,但是 DBA 仍然可以调用系统过程来改变 DM 实例的运行参数,从而获得更佳的性能体验。DBA 可以在 DM 数据库运行过程中执行 SF_GET_PARA_VALUE 、 SF_GET_PARA_DOUBLE_VALUE 和SF_GET_PARA_STRING_VALUE 这三个函数来获取系统的当前配置参数,并且可以使用SP_SET_PARA_VALUE 和 SP_SET_PARA_DOUBLE_VALUE 过程来修改静态/动态配置参数。
查看配置参数当前值
其中,函数的SCOPE参数值为1:表示获取INI 文件中配置参数的值,值为2:表示获取内存中配置参数的值
-
SF_GET_PARA_VALUE(scope int, paraname varchar(256)) :配置参数的值类型为数值类型时,使用该函数来获取当前值
-- 获得 dm.ini 文件中 BUFFER 参数值 SELECT SF_GET_PARA_VALUE (1, 'BUFFER');
-
SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187)):配置参数的值类型为浮点型时,使用该函数来获取当前值
-
SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187)):配置参数的值为字符串类型时,用该系统函数来获取当前值
-
SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)):获得整数类型的会话级 INI 参数的值
-
SF_GET_SESSION_PARA_DOUBLE_VALUE (paraname varchar(8187) ):获得浮点型的会话级 INI 参数的值
修改参数当前值
SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为 2 表示只在 INI 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。只有具有 DBA 角色的用户才有权限调用SP_SET_PARA_VALUE,SP_SET_PARA_DOUBLE_VALUE和SF_SET_SYSTEM_PARA_VALUE。
- SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64):该过程用于修改整型静态配置参数和动态配置参数
- SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187),value double):该过程用于修改浮点型静态配置参数和动态配置参数
- SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value int64doublevarchar(256),deferred int, scope int64)
该过程用于修改 int、double、varchar 类型的静态配置参数或动态配置参数。当DEFERRED 参数值为 0 表示当前 session 修改的参数立即生效;值为 1 表示当前 session不生效,后续再生效,默认为 0。 - SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187)):设置字符串型参数值
- SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint):设置某个会话级 INI 参数的值,设置的参数值只对本会话有效
- SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)):重置某个会话级INI参数的值,使得这个INI参数的值和系统INI参数的值保持一致
- SF_SET_SQL_LOG (svrlog int,svrmsk varchar(1000)):设置服务器日志相关 INI 参数 SVR_LOG 和 SQL_TRACE_MASK
示例
-- 查看参数值
select SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE');
select para_name,para_value from v$dm_ini where para_name='SORT_BUF_SIZE';
-- 设置当前系统动态、会话级参数 SORT_BUF_SIZE 参数值为 200,延迟生效
ALTER SYSTEM SET 'SORT_BUF_SIZE' =200 DEFERRED MEMORY;
-- 将 dm.ini 文件中 HFS_CACHE_SIZE 参数值设置为 320
SP_SET_PARA_VALUE (1,'HFS_CACHE_SIZE',320);
select SF_GET_PARA_VALUE(2,'HFS_CACHE_SIZE');