每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项,主要的配置模块包括:控制文件相关、实例名、内存相关、线程相关等。

        当 dm.ini 中的某参数值设置为非法值时,若设置值与参数类型不兼容,则参数实际取值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参数取值范围的最大值,则实际取值为最大值。参数属性分为三种:手动、静态和动态。

环境:DM8

程序安装路径:/home/dmdba/dm/dmdbms

数据初始化路径:/home/dmdba/dm/dbdata/dmdata

一、手动

手动(READ ONLY),不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启数据库才能生效。即只能在服务器通过vim命令修改dm.ini配置文件。

比如“控制文件路径”参数

操作系统查看:

[dmdba@db4 DAMENG]$ cd /home/dmdba/dm/dbdata/dmdata/DAMENG

[dmdba@db4 DAMENG]$ cat dm.ini | grep CTL_PATH

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_数据库

客户端查询:

select para_name,para_value,para_type from v$dm_ini where para_name='CTL_PATH'

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_数据库_02

二、静态

静态(IN FILE),可以被动态修改,修改后重启服务器才能生效。

既可以在服务器通过vim修改dm.ini配置文件,也可以通过调用系统过程函数修改,但是修改之后,重启数据库生效。

比如“最大连接数”参数

操作系统查看:

[dmdba@db4 DAMENG]$ cd /home/dmdba/dm/dbdata/dmdata/DAMENG

[dmdba@db4 DAMENG]$ cat dm.ini | grep MAX_SESSIONS

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_03

客户端查询:

select para_name,para_value,para_type from v$dm_ini where para_name='MAX_SESSIONS'

调用系统函数修改,将最大连接数从500调整到1000:

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_04

sp_set_para_value(2,'MAX_SESSIONS',1000); --2表示静态参数

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_配置文件_05

再次查看,即操作系统中配置文件参数已经从500变成了1000,但是内存中依旧还是500,需要重启数据库生效。

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_06

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_07

重启验证:

[dmdba@db4 DAMENG]$ /home/dmdba/dm/dmdbms/bin/dmserverd restart

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_数据库_08

内存中的值变成了1000

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_配置文件_09

三、动态

动态,可以被动态修改,修改后即时生效(这里的修改指的调用函数去修改,不是直接编辑文件修改)。

动态参数又分为会话级(SESSION)和系统级(SYS)两种。会话级参数被修改后,新参数值只会影响当前会话和新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。

比如“语句句柄最大数”参数

操作系统查看:

[dmdba@db4 DAMENG]$ cat dm.ini | grep MAX_SESSION_STATEMENT

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_10

客户端查询:

select para_name,para_value,para_type from v$dm_ini where para_name='MAX_SESSION_STATEMENT'

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_数据库_11

调用系统函数修改,将句柄数从1000调整为20000

sp_set_para_value(1,'MAX_SESSION_STATEMENT',20000); --1表示动态参数

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_12

再次查看,即操作系统中配置文件参数已经从1000变成了20000,内存中也变成了20000。

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_配置文件_13

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_14

四、一些常用的参数修改

select * from v$dm_ini where para_name='XX'

##1.修改密码策略

sp_set_para_value(1,'PWD_POLICY',7); --即时生效

PWD_MIN_LEN =9

PWD_POLICY =7

数据库默认的参数设的值是2,即密码长度不小于9。

0:无策略

1:禁止与用户名相同

2:口令长度不小于9

4:至少包含一个大写字母(A-Z)

8:至少包含一个数字(0-9)

16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

7= 1+2+4 ,即禁止与用户名相同,口令长度不小于9,至少包含一个大写字母(A-Z)

##2.修改数据库兼容模式

sp_set_para_value(2,'COMPATIBLE_MODE',2); --兼容ORACLE,重启数据库生效

修改静态参数:只会修改参数文件中的值,重启数据库生效

是否兼容其他数据库模式。

0:不兼容,

1:兼容SQL92 标准,

2:部分兼容ORACLE,

3:部分兼容MS SQL SERVER

4:部分兼容MYSQL,

5:兼容DM6,

6:部分兼容TERADATA,

7:部分兼容POSTGRES修改数据库的兼容模式为兼容ORACLE 数据库。

##3.修改数据库状态

sp_set_oguid 453331; --设置集群组ID

sp_set_para_value(1,'alter_mode_status',1); --允许手动修改数据库状态

alter database standby; --数据库改成备

sp_set_para_value(1,'alter_mode_status',0);--禁止手动修改数据库状态

##4.修改句柄数

sp_set_para_value(1,'MAX_SESSION_STATEMENT',20000);--即时生效

mysql修改innodb_buffer_pool_size 不生效 mysql修改内存参数_重启_15

##5.修改HASH表空间

SP_SET_PARA_VALUE(1,'HJ_BUF_GLOBAL_SIZE',10000);--即时生效

这个值是HASH 连接操作符的数据总缓存大小,默认是500M,如果hash连接的数据超过了这个值,就会报hash空间不足。一个sql设计的表比较多,数据量比较大时,容易发生。

##6.修改数据库最大连接数

sp_set_para_value(2,'MAX_SESSIONS',1000); --重启数据库生效

PS:当前设置连接数上限为1000,基本满足业务需求,如出现连接数不够情况建议从业务方连接排查,业务程序异常导致则不建议修改参数,业务程序正常就是随着使用人员增多,则可以适当调大。

客户端查询哪个ip占用链接最多

select clnt_ip,count(1) from v$sessions group by clnt_ip order by count(1) desc

服务器查询哪个ip占用连接最多

netstat -tuanl |grep 5236 | awk -F'[: ]+' '{print $6}' | sort | uniq -c

仅供参考,如有不足,欢迎斧正。