达梦数据库如何修改参数

工作中总会遇到修改参数这种问题,那么达梦数据库的参数该如何修改呢,我们先了解下达梦数据库都有什么种类的参数。

SQL> select para_type,count(*) from v$dm_ini group by para_type order by 2;

行号       PARA_TYPE COUNT(*)            
---------- --------- --------------------
1          READ ONLY 98
2          IN FILE   201
3          SYS       213
4          SESSION   248

已用时间: 5.171(毫秒). 执行号:1202.

参数属性分为三种:手动、静态和动态。

手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
静态,可以被动态修改,修改后重启服务器才能生效。
动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话
级参数被修改后,新参数值只会影响当前会话和新创建的会话,之前创建的会话不受影响;
系统级参数的修改则会影响所有的会话。

参数若设置值与参数类型不兼容,则参数实际取值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参数取值范围的最大值,则实际取值为最大值。

那么修改的方式有三种

第一种:

使用alter system/session set方式修改

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

both:表示修改内存和参数文件中的值;
spfile修改参数文件;
memory修改内存;

对于静态参数只能使用spfile,对于动态参数皆可使用。

SQL> select para_name,para_type,para_value from v$dm_ini where para_name='ENABLE_LOCAL_OSAUTH';

行号       PARA_NAME           PARA_TYPE PARA_VALUE
---------- ------------------- --------- ----------
1          ENABLE_LOCAL_OSAUTH READ ONLY 1

已用时间: 4.291(毫秒). 执行号:1230.

SQL> alter system set 'ENABLE_LOCAL_OSAUTH' = 0 spfile;
DMSQL 过程已成功完成
已用时间: 1.299(毫秒). 执行号:1231.

SQL> alter system set 'ENABLE_LOCAL_OSAUTH' = 0 memory;
alter system set 'ENABLE_LOCAL_OSAUTH' = 0 memory;
[-839]:不能修改静态配置参数的内存值.
已用时间: 0.527(毫秒). 执行号:0.

SQL> alter system set 'ENABLE_LOCAL_OSAUTH' = 0 both; 
alter system set 'ENABLE_LOCAL_OSAUTH' = 0 both;
[-839]:不能修改静态配置参数的内存值.
已用时间: 0.435(毫秒). 执行号:0.

SQL> select para_name,para_type,para_value from v$dm_ini where para_name='MTAB_MEM_SIZE';

行号       PARA_NAME     PARA_TYPE PARA_VALUE
---------- ------------- --------- ----------
1          MTAB_MEM_SIZE SYS       8

已用时间: 7.405(毫秒). 执行号:1205.

SQL> alter system set 'MTAB_MEM_SIZE' = 12 both;
DMSQL 过程已成功完成
已用时间: 5.165(毫秒). 执行号:1206.
SQL> alter system set 'MTAB_MEM_SIZE' = 8 spfile;
DMSQL 过程已成功完成
已用时间: 4.049(毫秒). 执行号:1207.
SQL> alter system set 'MTAB_MEM_SIZE' = 12 memory;
DMSQL 过程已成功完成
已用时间: 3.741(毫秒). 执行号:1208.

第二种:

使用达梦数据库过程函数进行修改

达梦数据库提供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 参数的值。
第三种:

编辑dm.ini文件

这个非常简单,不过只有重启才可以生效。

社区地址:https://eco.dameng.com

猜你喜欢

转载自blog.csdn.net/duanpian_dba/article/details/126582442