注册
达梦数据库参数类型及修改方式
专栏/培训园地/ 文章详情 /

达梦数据库参数类型及修改方式

DM_067718 2024/04/25 3208 1 0
摘要

达梦数据库参数的参数分为手工、静态、和动态三种类型,动态参数又分为系统级和会话级:手工参数(READ ONLY),不能通过SQL命令或函数修改,只能通过修改dm.ini文本修改(需要重启数据库生效);静态参数(IN FILE),不能修改内存中的值,只能修改参数文件中的值,可以通过SQL命令或者函数修改(需要重启数据库生效);动态参数(SYS),数据库运行中可以直接修改(可以修改内存中的值,也能修改参数文件中的值);动态参数(SESSION),数据库运行中可以直接修改(可以修改内存中的值,也能修改参数文件中的值,还可以修改当前会话的值)

可通过动态视图v$parameter或者v$dm_ini查看参数类型,v$parameter是为兼容oracle使用习惯,v$dm_ini是达梦本身的,两者基本一致。

SQL> select distinct type from v$parameter;

行号     TYPE     
---------- ---------
1          READ ONLY
2          SYS
3          IN FILE
4          SESSION

SQL> select distinct PARA_TYPE from v$dm_ini;

行号     PARA_TYPE
---------- ---------
1          READ ONLY
2          SYS
3          IN FILE
4          SESSION

参数修改的4种方法:
1、系统函数修改,可以用来修改静态和动态参数,但静态参数需重启生效

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 参数的值。

2、使用alter system/session set方式修改

1、通过查看动态视图,得知参数的类型
select name,type,value,sys_value,file_value from v$parameter t where name='UNDO_RETENTION';
select name,type,value,sys_value,file_value from v$parameter t where name='COMPATIBLE_MODE';

1、修改系统参数,语法格式如下。
ALTER SYSTEM SET ‘<参数名称>’ =<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
例如:
alter system set 'COMPATIBLE_MODE'=2 spfile;  #为静态参数,修改参数文件中的值,重启后生效
alter system set 'UNDO_RETENTION'=90 both;     #为动态参数,可修改修改会话值,内存中的值,参数文件中的值

2、修改会话参数,语法格式如下。
ALTER SESSION SET ‘<参数名称>’ =<参数值> [PURGE];
例如:
ALTER SESSION SET ‘HAGR_HASH_SIZE’ =2000000;

3、console控制台工具(修改的是dm.ini,需要重启后生效)

4、直接编辑参数文件dm.ini文件,需要重启实例生效

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服