手动,静态和动态
三种类型。分别对应 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
达梦的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
相关视图有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
在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.
查看数据库参数之后,通常需要根据应用系统和业务及数据库运行情况对参数进行修改。DM达梦数据库修改参数的方法一般有四种。
图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效
通常在linux系统里,使用VI工具对dm.ini文件进行参数修改,然后对数据库进行重启,使得参数值生效。
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.
通常使用较多的有以下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');
文章
阅读量
获赞