注册
02 达梦数据库体系结构-参数管理
技术分享/ 文章详情 /

02 达梦数据库体系结构-参数管理

让世界为你转身 2022/11/17 2212 1 3

2.数据库参数

2.1 参数分类

手动,静态和动态三种类型。分别对应 v$parameter 视图中 type 的 read only,in file,sys 和 session.
手动参数(read only):不能通过 SQL 命令或函数修改,只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
静态参数(IN FILE):不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
动态参数(SYS 和SESSION ):ini 文件和内存可同时修改, 修改后即时生效。其中,SYS为动态系统级参数,修改后会影响所有的会话;SESSION 为动态会话级参数,修改后只针对当前会话生效。

-- v$parameter和v$dm_ini均可以查询dm数据库的参数 SQL> desc v$parameter; 行号 NAME TYPE$ NULLABLE ---------- ------------- ------------- -------- 1 ID INTEGER Y 2 NAME VARCHAR(80) Y 3 TYPE VARCHAR(200) Y 4 VALUE VARCHAR(4000) Y 5 SYS_VALUE VARCHAR(4000) Y 6 FILE_VALUE VARCHAR(4000) Y 7 DESCRIPTION VARCHAR(255) Y 8 DEFAULT_VALUE VARCHAR(256) Y 9 ISDEFAULT INTEGER Y 9 rows got 已用时间: 2.155(毫秒). 执行号:1605 SQL> desc v$dm_ini; 行号 NAME TYPE$ NULLABLE ---------- ------------- ------------ -------- 1 PARA_NAME VARCHAR(128) Y 2 PARA_VALUE VARCHAR(256) Y 3 MIN_VALUE VARCHAR(256) Y 4 MAX_VALUE VARCHAR(256) Y 5 DEFAULT_VALUE VARCHAR(256) Y 6 MPP_CHK CHAR(1) Y 7 SESS_VALUE VARCHAR(256) Y 8 FILE_VALUE VARCHAR(256) Y 9 DESCRIPTION VARCHAR(256) Y 10 PARA_TYPE VARCHAR(200) Y 10 rows got 已用时间: 10.981(毫秒). 执行号:1604. --查询参数类型 SQL> select distinct type from v$parameter; 行号 TYPE ---------- --------- 1 READ ONLY 2 SYS 3 IN FILE 4 SESSION

2.2 查看数据库参数

2.2.1 通过dm.ini文件查看

达梦的ini参数文件在实例路径中,文件名为dm_ini,可以直接查看该文件,获取具体ini的参数信息。

[dmdba@dmserver ECARD]$ pwd /home/dmdba/dmdbms/data/ECARD [dmdba@dmserver ECARD]$ head dm.ini #DaMeng Database Server Configuration file #this is comments #file location of dm.ctl CTL_PATH = /home/dmdba/dmdbms/data/ECARD/dm.ctl #ctl file path CTL_BAK_PATH = /home/dmdba/dmdbms/data/ECARD/ctl_bak #dm.ctl backup path CTL_BAK_NUM = 10 #backup number of dm.ctl, allowed to keep one more backup file besides specified number. SYSTEM_PATH = /home/dmdba/dmdbms/data/ECARD #system path CONFIG_PATH = /home/dmdba/dmdbms/data/ECARD #config path TEMP_PATH = /home/dmdba/dmdbms/data/ECARD #temporary file path

2.2.2 通过参数动态视图查看

相关视图有V$PARAMETER和V$DM_INI。 同时系统视图查看参数对比查看dm.ini文件的优点是,如果要重新配置参数,可以知道参数配置的值的范围、参数类型,及其配置生效的条件和范围等。视图有V$PARAMETER和V$DM_INI,内容比dm.ini文件多一些。

通过v$parameter查看:

SQL> select name,type,value from v$parameter limit 5; 行号 NAME TYPE VALUE ---------- ------------ --------- ------------------------------------- 1 CTL_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD/dm.ctl 2 CTL_BAK_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD/ctl_bak 3 CTL_BAK_NUM SYS 10 4 SYSTEM_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD 5 CONFIG_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD

通过v$dm_ini查看:

SQL> select PARA_NAME,PARA_VALUE from v$dm_ini limit 5; 行号 PARA_NAME PARA_VALUE ---------- ------------ ------------------------------------- 1 CTL_PATH /home/dmdba/dmdbms/data/ECARD/dm.ctl 2 CTL_BAK_PATH /home/dmdba/dmdbms/data/ECARD/ctl_bak 3 CTL_BAK_NUM 10 4 SYSTEM_PATH /home/dmdba/dmdbms/data/ECARD 5 CONFIG_PATH /home/dmdba/dmdbms/data/ECARD

2.2.3 通过系统函数查看

在DM达梦数据库中,有3个系统函数可以查看参数配置情况。

分别是SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE三个函数,分别对应参数值为数值类型、浮点类型、字符串类型的参数时使用。

语法格式:

-- 其中,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))

使用示例:

--查看数据库实例最大连接数,在文件和内存中的配置 SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS'); 行号 SF_GET_PARA_VALUE(1,'MAX_SESSIONS') ---------- ----------------------------------- 1 1500 已用时间: 4.974(毫秒). 执行号:1405. SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS'); 行号 SF_GET_PARA_VALUE(2,'MAX_SESSIONS') ---------- ----------------------------------- 1 1500 已用时间: 0.770(毫秒). 执行号:1406.

2.3 修改数据库参数

查看数据库参数之后,通常需要根据应用系统和业务及数据库运行情况对参数进行修改。DM达梦数据库修改参数的方法一般有四种。

2.3.1 通过console 控制台工具修改

图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效

2.3.1. 通过编辑dm.ini文件修改

通常在linux系统里,使用VI工具对dm.ini文件进行参数修改,然后对数据库进行重启,使得参数值生效。

2.3.2 通过alter语句修改

1.alter system

语法:

alter system set '<参数名称>'=<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];

参数说明:

DEFERRED: 只适用于动态参数,指定 DEFERRED,参数值延迟生效,对当前 session 不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效。 MEMORY: 只对内存中的值做修改即时生效; SPFILE: 只对 INI 文件中的值做修改; BOTH: 内存和 INI 文件都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。

使用示例:

1)修改COMPATIBLE_MODE参数

# 查询服务器兼容模式设置,value当前会话,sys_value系统,file_value参数文件 SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- --------------- ------- ----- --------- ---------- 1 COMPATIBLE_MODE IN FILE 0 0 0 已用时间: 11.199(毫秒). 执行号:1702. # 修改静态参数COMPATIBLE_MODE为2,兼容oracle SQL> alter system set 'COMPATIBLE_MODE'=2 spfile; DMSQL 过程已成功完成 已用时间: 11.896(毫秒). 执行号:1704. SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- --------------- ------- ----- --------- ---------- 1 COMPATIBLE_MODE IN FILE 0 0 2

2)修改UNDO_RETENTION参数

# 系统级动态参数 SQL> select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- -------------- ---- --------- --------- ---------- 1 UNDO_RETENTION SYS 90.000000 90.000000 90.000000 SQL> select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- -------------- ---- ---------- ---------- ---------- 1 UNDO_RETENTION SYS 180.000000 180.000000 90.000000

3)修改buffer

SQL> select name,type,value,sys_value,file_value from v$parameter where name='BUFFER'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ------ ------- ----- --------- ---------- 1 BUFFER IN FILE 1000 1000 1000 已用时间: 10.933(毫秒). 执行号:1800. SQL> alter system set 'BUFFER'=2000 spfile;

2.alter session

语法:

alter session set '<参数名称>'=<参数值> [purge];

参数说明:

PURGE:指是否清理执行计划。设置后的值只对当前会话有效。当包含 PURGE 选项时会清除服务器保存的所有执行计划。

使用示例:

SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ------- ----- --------- ---------- 1 LIST_TABLE SESSION 0 0 0 已用时间: 7.494(毫秒). 执行号:1710. SQL> alter session set 'LIST_TABLE'=1; DMSQL 过程已成功完成 已用时间: 1.013(毫秒). 执行号:1711. SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ------- ----- --------- ---------- 1 LIST_TABLE SESSION 1 0 0 已用时间: 5.848(毫秒). 执行号:1712.

2.3.3 通过系统函数修改

通常使用较多的有以下5个,分别是:
SP_SET_PARA_VALUE、SP_SET_PARA_DOUBLE_VALUE、SP_SET_PARA_STRING_VALUE;
和 SF_SET_SESSION_PARA_VALUE、SF_SET_SYSTEM_PARA_VALUE;

SQL> select name,id from v$ifun t where t.name like 'SP_SET_PARA%'; 行号 NAME ID ---------- ------------------------ ----------- 1 SP_SET_PARA_DOUBLE_VALUE 2902 2 SP_SET_PARA_DOUBLE_VALUE 586 3 SP_SET_PARA_STRING_VALUE 2901 4 SP_SET_PARA_STRING_VALUE 585 5 SP_SET_PARA_VALUE 2900 6 SP_SET_PARA_VALUE 584 SQL> select * from v$ifun_arg where id=586; 行号 ID NAME SEQ DATA_TYPE LEN PREC IO_TYPE COMMENT$ ---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- -------- 1 586 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 2 586 SCOPE 0 INTEGER 4 0 IN NULL 3 586 PARANAME 1 VARCHAR 256 0 IN NULL 4 586 VALUE 2 DOUBLE 8 0 IN NULL

1.SP_SET_PARA_VALUE 函数:
作用:

设置 dm.ini 文件中非浮点和字符串类型的参数值

语法:

SP_SET_PARA_VALUE (scope int, ini_param_name varchar(256) ,value bigint)

参数说明:

SCOPE:修改范围(0:memory;1:both;2:spfile)

2.SP_SET_PARA_DOUBLE_VALUE 函数
作用:

设置 dm.ini 参数中浮点型的参数值

语法:

SP_SET_PARA_DOUBLE_VALUE (scope int, ini_param_name varchar(256),value double

3.SP_SET_PARA_STRING_VALUE 函数

作用:

设置 dm.ini 文件中的字符串型参数值

语法:

SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))

4.SF_SET_SESSION_PARA_VALUE 函数

作用:

设置会话级INI参数的值

语法:

SF_SET_SESSION_PARA_VALUE (paraname varchar(8187),value bigint)

参数说明:

paraname: 会话级 INI 参数的参数名

5.SF_SET_SYSTEM_PARA_VALUE 函数

作用:

修改系统整型、double、varchar的静态配置参数或动态配置参数。

语法:

SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value bigint/double/varchar(256),deferred int, scope int)

参数说明:

paraname:ini 参数的参数名。
value:要设置的新值。
deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前
session 不生效,后续再生效,默认为 0。
scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和 INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数

使用示例:

SQL> SP_SET_PARA_VALUE (2, 'MAX_SESSIONS', 200) SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS'); SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服