参数属性分为三种:手动、静态和动态。
手动(READ ONLY),不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
静态(IN FILE),可以被动态修改,修改后重启服务器才能生效。
动态(SYS/SESSION),可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响当前会话和新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。
其中,动态修改是指 DBA 用户可以在数据库服务器运行期间,通过调用系统过程 SP_SET_PARA_VALUE()或alter system对参数值进行修改。
alter 语句修改
用户可以通过ALTER SYSTEM语法修改静态或动态(系统级、会话级)参数值,使修改之后的参数值能够在全局范围内起作用。
ALTER SYSTEM SET '<参数名称>' =<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
[DEFERRED] 只适用于动态参数。指定DEFERRED,参数值延迟生效,对当前会话不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效;
[MEMORY|BOTH|SPFILE] 设置INI参数修改的位置。其中,MEMORY只对内存中的INI值做修改;SPFILE则只对INI文件中的INI值做修改;BOTH则内存和INI文件都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。
例:设置静态参数 MTAB_MEM_SIZE 参数值为 1200。修改静态参数,指定SPFILE。
ALTER SYSTEM SET 'MTAB_MEM_SIZE' =1200 SPFILE;
设置当前系统动态、会话级参数 SORT_BUF_SIZE 参数值为 200,要求延迟生效,对当前的 session 不生效,对后面创建的会话才生效。并且只修改内存。
ALTER SYSTEM SET 'SORT_BUF_SIZE' =200 DEFERRED MEMORY;
系统过程方式修改
- SF_GET_PARA_VALUE
定义:
int SF_GET_PARA_VALUE ( scope int, ini_param_name varchar(256) )
功能说明: 返回 DM.INI 文件中整型的参数值
参数说明: scope: 取值为 1、2 。
1 表示从 DM.INI 文件中读取;
2 表示从内存中读 取。
ini_param_name:DM.INI 文件中的参数名
返回值: 当前 INI 文件中对应的参数值
举例说明: 获得 DM.INI 文件中 BUFFER 参数值
SELECT SF_GET_PARA_VALUE (1, 'BUFFER');
- SP_SET_PARA_VALUE
定义:
void SP_SET_PARA_VALUE ( scope int, ini_param_name varchar(256) value bigint )
功能说明: 设置 DM.INI 文件中整型的参数值。
参数说明: scope:取值为0、1、2 。
0表示修改内存中的动态配置参数值;
1表示 DM.INI 文件和内存参数都修改,不需要重启服务器;
2 表示只修改 DM.INI 文件,服务器 重启后生效。
ini_param_name:DM.INI 文件中的参数名。
value:设置的值。
返回值: 无
举例说明: 将 DM.INI 文件中 HFS_CACHE_SIZE 参数值设置为 320 。
SP_SET_PARA_VALUE (1,'HFS_CACHE_SIZE',320);
其他类型的参数值如浮点型、字符串类型也有类似的过程,详细请查阅《达梦SQL文档》。
更多文章见达梦技术社区:http://eco.dameng.com