暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

达梦数据库参数调整方法

原创 始于脚下 2021-05-18
3842

达梦数据库初始化参数分为手动、 静态和动态三种类型,分别对应V$PARAMETER视图中 TYPE列的READ ONLY、 IN FILE、 SYS/SESSION。服务器运行过程中,手动(READ ONLY) 参数不能被修改,静态和动态参数可以修改。

静态(IN FILE)参数只能通过修改 dm.ini 文件进行修改, 修改后重启服务器才能生效,为系统级参数,生效后会影响所有的会话。

动态(SYS和SESSION)参数可在 dm.ini 文件和内存同时修改,修改后即时生效。其中, SYS为系统级参数,修改后会影响所有的会话;SESSION 为会话级参数,服务器运行过程中被修改时,之前创建的会话不受影响,只有新创建的会话会使用新的参数值。

达梦数据库参数修改参数的方法与Oracle类似,可以使用alter system/session set的方式进行修改,也可以使用达梦数据库自带的过程函数来修改。

第一种方法:使用alter system/session set方式修改

使用该方法修改参数比较简单,具体语法格式如下:

1、修改系统参数,注意与Oracle修改方法的区别,没有了“SCOPE=”,而是直接指定SPFILE、BOTH等参数。语法格式如下。

ALTER SYSTEM SET '<参数名称>' =<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];

例如:设置静态参数MTAB_MEM_SIZE 参数值为 1200。

ALTER SYSTEM SET 'MTAB_MEM_SIZE' =1200 spfile;

2、修改会话参数,PURGE关键字指是否清理执行计划。语法格式如下。

ALTER SESSION SET '<参数名称>' =<参数值> [PURGE];

例如:设置当前会话的 HAGR_HASH_SIZE 参数值为 2000000。

ALTER SESSION SET 'HAGR_HASH_SIZE' =2000000;

第二种方法:使用达梦数据库过程函数进行修改

达梦数据库提供SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE这三个函数来获取系统的当前配置参数,提供SP_SET_PARA_VALUE和SP_SET_PARA_DOUBLE_VALUE过程来修改静态/动态配置参数。

1、SF_GET_PARA_VALUE (scope int, paraname varchar(256))

配置参数的值类型为数值类型时使用该函数来获取当前值。SCOPE 参数为1表示获取INI文件中配置参数的值,为2表示获取内存中配置参数的值。

2、SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187))

配置参数的值类型为浮点型时使用该函数来获取当前值。SCOPE参数为1表示获取INI文件中配置参数的值,为2表示获取内存中配置参数的值。

3、SF_GET_PARA_STRING_VALUE(scope int, paraname varchar(8187))

配置参数的值为字符串类型时用该系统函数来获取当前值。SCOPE 参数为1表示获取INI 文件中配置参数的值,为2表示获取内存中配置参数的值。

4、SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)

该过程用于修改整型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在 INI 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。当SCOPE等于1,试图修改静态配置参数时服务器会返回错误信息。只有具有 DBA 角色的用户才有权限调用 SP_SET_PARA_VALUE。

5、SP_SET_PARA_DOUBLE_VALUE(scope int,paraname varchar(8187), alue double)

该过程用于修改浮点型静态配置参数和动态配置参数。SCOPE 参数为 1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。当SCOPE等于1,试图修改静态配置参数时服务器会返回错误信息。只有具有 DBA 角色的用户才有权限调用SP_SET_PARA_DOUBLE_VALUE。

6、SF_SET_SYSTEM_PARA_VALUE(paraname varchar(256),value int64\double\varchar(256),deferred int,scope int64)

该过程用于修改系统整型、 double、 varchar 的静态配置参数或动态配置参数。DEFERRED 参数,为0表示当前session修改的参数立即生效,为1表示当前 session不生效,后续再生效,默认为0。 SCOPE 参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。只有具有DBA角色的用户才有权限调用SF_SET_SYSTEM_PARA_VALUE。

7、SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint)

设置某个会话级 INI 参数的值,设置的参数值只对本会话有效。

8、SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187))

重置某个会话级 INI 参数的值,使得这个 INI 参数的值和系统 INI 参数的值保持一致。

9、SF_GET_SESSION_PARA_VALUE (paraname varchar(8187))

获得当前会话的某个会话级 INI 参数的值。

第三种方法:直接编辑可编辑参数文件修改,然后重启生效,不多说。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
D
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论