达梦数据库(DM8)版本数据库初始化参数修改方法
达梦8中的参数文件为dm.ini, 就是达梦数据库的初始化参数文件,数据库 dmserver 必须依靠这个参数启动,
该文件可以手动编辑,也可以在数据库中修改后自动同步,类似集成了oracle的pfile加spfile的功能。
查看参数可以使用v$dm_ini或v$parameter视图,其中可以查询到参数值、文件中的值、session中的值以及参数的类型,当然也可以使用DM8提供的函数包查询SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE、SF_GET_PARA_STRING_VALUE。
在达梦8中参数可以分为以下几中类型:
1、READ ONLY:手动参数,表示服务器运行过程中不可修改;
2、IN FILE:静态参数,只可修改ini文件;
3、SYS和SESSION:动态参数,ini文件和内存同时可修改,其中,SYS系统级参数;
静态:可以被动态修改,修改后重启服务器才能生效。
动态:可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。
手动:不能被动态修改,必须手动修改dm.ini参数文件,然后重启才能生效。
一、修改参数的方法:
1、SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)
该过程用于修改整型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数
2、SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187), value double)
该过程用于修改浮点型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数
3、SP_SET_PARA_STRING_VALUE()
该过程用于修改字符串型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数
4、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文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。
5、SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint)
设置某个会话级INI参数的值,设置的参数值只对本会话有效。
6、ALTER SYSTEM SET ‘参数名称’ =‘参数值’ [DEFERRED] [MEMORY|BOTH|SPFILE];
参数名称:可以是静态参数、系统参数sys、会话参数session;DEFERRED只能用于动态参数。指定DEFERRED后,参数值延迟生效,对当前session不生效,只对新创建的会话生效。默认为立即生效,对当前会话和新创建的会话都生效。[MEMORY|BOTH|SPFILE] 指定生效的位置。其中,MEMORY只对内存中的值做修改;SPFILE则只对file_value中的值做修改;BOTH则都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。
7、ALTER SESSION SET ‘参数名称’ =‘参数值’ [PURGE];
参数名称指动态会话级参数名字.[PURGE] 指是否清理执行计划。设置后的值只对当前会话有效。当包含 PURGE 选项时会清除服务器保存的所有执行计划。
总结
虽然DM8的修改参数的方法较多,DM8本身的参数也比较多,但在日常运维中经常需要修改的参数并不多。
READ ONLY和IN FILE的参数完全可以直接编辑dm.ini文件进行修改,然后重启数据库生效。这样就不用考虑应该使用哪个函数包了。
对于sys的参数,可以使用SF_SET_SESSION_PARA_VALUE函数包,避免考虑整型、浮点、字符型的问题。
对于session的参数一般使用SF_SET_SESSION_PARA_VALUE函数来修改当前session。
大多数情况下,使用SP_SET_PARA_VALUE就可以应对日常的运维工作了。
当然习惯兼容ORACLE运维的同学来说,使用alter system/session 也是个不错的选择。
更多资讯请上达梦技术社区了解: https://eco.dameng.com