DM8参数修改方法

DM 数据库中有多个参数文件,参数文件的查看,除了直接看参数文件,也可以查询相关的视图。 最主要的视图是:

1)V$PARAMETER:显示 ini 参数和 dminit 建库参数的类型及参数值信息(当前会话值、系统值及 dm.ini
文件中的值)。
2)v$dm_ini:所有 ini 参数和 dminit 建库参数信息。 但这个视图查询的内容有点多,DM提供了分类的视图,比如V$DM_ARCH_INI,查询归档的相关参数值。

SQL> select top 5 para_name,para_value from v$dm_ini;

行号     PARA_NAME    PARA_VALUE          
---------- ------------ --------------------
1          CTL_PATH     /dm8/data/DM/dm.ctl
2          CTL_BAK_PATH /dm8/data/DM/ctl_bak
3          CTL_BAK_NUM  10
4          SYSTEM_PATH  /dm8/data/DM
5          CONFIG_PATH  /dm8/data/DM

已用时间: 104.827(毫秒). 执行号:602.

INI 参数分为手动、静态和动态三种类型,分别对应 v$parameter 视图中 TYPE 中READ ONLY、IN FILE、SYS 和 SESSION。

手动参数(READ ONLY):DB在运行过程中,手动参数不能被修改,静态和动态参数可以修改。
静态参数(IN FILE):只能修改 ini 文件,修改后重启DB才能生效,为系统级参数,生效后会影响所有的会话。
动态参数(SYS 和 SESSION):ini 文件和内存同时可修改,修改后即时生效。其中,SYS为系统级参数,修改后会影响所有的会话;SESSION 为会话级参数,服务器运行过程中被修改时,之前创建的会话不受影响,只有新创建的会话使用新的参数值。

基于参数的类型,对于DM参数修改,有三种方法:

1.直接对参数文件进行修改。
2.使用SQL语句修改
3.使用函数修改。

使用SQL 修改参数

可以通过ALTER SYSTEM语法修改静态或动态(系统级、会话级)参数值,使修改之后的参数值能够在全局范围内起作用。对于静态参数,只有指定SPFILE情况下,才能修改。

语法格式

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

参数

  1. <参数名称> 指静态、动态(系统级、会话级)INI参数名字。
  2. <参数值> 指设置该INI参数的值。
  3. [DEFERRED] 只适用于动态参数。指定DEFERRED,参数值延迟生效,对当前session不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效。
  4. [MEMORY|BOTH|SPFILE] 指设置INI参数修改的位置。其中,MEMORY只对内存中的INI值做修改;SPFILE则只对INI文件中的INI值做修改;BOTH则内存和INI文件都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。

修改示例:

设置当前系统动态、会话级参数 SORT_BUF_SIZE 参数值为 200,要求延迟生效,对当前的 session 不生效,对后面创建的会话才生效。并且只修改内存。

SQL> select SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE');

行号     SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE')
---------- ------------------------------------
1          20

已用时间: 31.540(毫秒). 执行号:603.
SQL> select para_name,para_value from v$dm_ini where para_name='SORT_BUF_SIZE';

行号     PARA_NAME     PARA_VALUE
---------- ------------- ----------
1          SORT_BUF_SIZE 20

已用时间: 26.854(毫秒). 执行号:604.
SQL> ALTER SYSTEM SET 'SORT_BUF_SIZE' =200 DEFERRED MEMORY;
DMSQL 过程已成功完成
已用时间: 7.763(毫秒). 执行号:605.


# 重新开窗口查询:
dmdba@yankai-linux:/dm8/bin$ ./disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.167(ms)
disql V8
SQL> select para_name,para_value from v$dm_ini where para_name='SORT_BUF_SIZE';

行号     PARA_NAME     PARA_VALUE
---------- ------------- ----------
1          SORT_BUF_SIZE 200

已用时间: 9.541(毫秒). 执行号:700.
SQL> select SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE');

行号     SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE')
---------- ------------------------------------
1          200

已用时间: 0.276(毫秒). 执行号:701.

设置静态参数 MTAB_MEM_SIZE 参数值为 1200

SQL> ALTER SYSTEM SET 'MTAB_MEM_SIZE' =1200 spfile;
DMSQL 过程已成功完成
已用时间: 22.806(毫秒). 执行号:702.

从ini 文件中取值:

SQL> select SF_GET_PARA_VALUE(1,'MTAB_MEM_SIZE');  

行号     SF_GET_PARA_VALUE(1,'MTAB_MEM_SIZE')
---------- ------------------------------------
1          1200

已用时间: 41.559(毫秒). 执行号:704.

从内存中取值:

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

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

已用时间: 9.253(毫秒). 执行号:705.

也可以通过 ALTER SESSION 语法修改动态会话级参数(即 TYPE 为 SESSION 的参数),使修改之后的 INI 参数值只对当前会话起作用,不会影响其他会话或系统的 INI 参数值。

语法格式

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

参数

  1. <参数名称> 指动态会话级INI参数名字;
  2. <参数值> 指设置该INI参数的相应值;
  3. [PURGE] 指是否清理执行计划。

设置后的值只对当前会话有效。当包含 PURGE 选项时会清除服务器保存的所有执行计划。

设置当前会话的 HAGR_HASH_SIZE 参数值为 2000000

SQL> ALTER SESSION SET 'HAGR_HASH_SIZE' =2000000;
DMSQL 过程已成功完成
已用时间: 0.784(毫秒). 执行号:706.
SQL> select SF_GET_PARA_VALUE(2,'HAGR_HASH_SIZE');

行号     SF_GET_PARA_VALUE(2,'HAGR_HASH_SIZE')
---------- -------------------------------------
1          100000

已用时间: 0.855(毫秒). 执行号:707.

通过函数修改

DM 也提供了一些函数,可以方便的查询和设置参数

SF_GET_PARA_VALUE

返回 dm.ini 文件中非浮点和字符串类型的参数值
语法:

SF_GET_PARA_VALUE (scope int, ini_param_name varchar(256))

参数说明:

scope: 取值为 1、2 。 1 表示从 dm.ini 文件中读取;2 表示从内存中读取;
ini_param_name:dm.ini 文件中的参数名返回值:

SQL> SELECT SF_GET_PARA_VALUE (1, 'BUFFER');

行号     SF_GET_PARA_VALUE(1,'BUFFER')
---------- -----------------------------
1          1000

已用时间: 7.002(毫秒). 执行号:708.

SP_SET_PARA_VALUE

设置 dm.ini 文件中非浮点和字符串类型的参数值
语法:

SP_SET_PARA_VALUE (scope int, ini_param_name varchar(256) ,value bigint)

参数说明:

scope:取值为 1,2 。1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器;2 表示只修改 dm.ini 文件,服务器重启后生效。
ini_param_name:dm.ini 文件中的参数名。
value:设置的值。

SQL> SP_SET_PARA_VALUE (1,'HFS_CACHE_SIZE',320);
DMSQL 过程已成功完成
已用时间: 16.556(毫秒). 执行号:709.
SQL> select SF_GET_PARA_VALUE(2,'HFS_CACHE_SIZE');

行号     SF_GET_PARA_VALUE(2,'HFS_CACHE_SIZE')
---------- -------------------------------------
1          320

已用时间: 0.773(毫秒). 执行号:710.

SF_GET_PARA_DOUBLE_VALUE

作用:返回dm.ini文件中参数中浮点型的参数值
语法:

SF_GET_PARA_DOUBLE_VALUE ( scope int, ini_param_name varchar(256))

参数说明:

scope:取值为1,2 。1表示从dm.ini文件中读取;2表示从内存中读取;
ini_param_name:dm.ini文件中的参数名。

SQL> SELECT SF_GET_PARA_DOUBLE_VALUE (1, 'CKPT_FLUSH_RATE');

行号     SF_GET_PARA_DOUBLE_VALUE(1,'CKPT_FLUSH_RATE')
---------- ---------------------------------------------
1          5.000000000000000E+00

已用时间: 6.791(毫秒). 执行号:711.
SQL> SELECT SF_GET_PARA_DOUBLE_VALUE (2, 'CKPT_FLUSH_RATE');

行号     SF_GET_PARA_DOUBLE_VALUE(2,'CKPT_FLUSH_RATE')
---------- ---------------------------------------------
1          5.000000000000000E+00

已用时间: 3.685(毫秒). 执行号:800.

SP_SET_PARA_DOUBLE_VALUE

作用:设置dm.ini参数中浮点型的参数值
语法:

SP_SET_PARA_DOUBLE_VALUE (scope int, ini_param_name varchar(256),value double)

参数说明:

scope:取值为 1,2。1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器;2 表示只可修改 dm.ini 文件,服务器重启后生效。
ini_param_name:dm.ini文件中的参数名。
value:设置的值。

SQL> SP_SET_PARA_DOUBLE_VALUE(1, 'SEL_RATE_EQU', 0.3);
DMSQL 过程已成功完成
已用时间: 114.713(毫秒). 执行号:801.

SF_GET_PARA_STRING_VALUE

作用:返回 dm.ini 文件中字符串类型的参数值
语法:

SF_GET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256))

参数说明:

scope: 取值为1,2 。 1表示从dm.ini文件中读取;2表示从内存中读取;
ini_param_name:dm.ini文件中的参数名

SQL> SELECT SF_GET_PARA_STRING_VALUE (1, 'TEMP_PATH');

行号     SF_GET_PARA_STRING_VALUE(1,'TEMP_PATH')
---------- ---------------------------------------
1          /dm8/data/DM

已用时间: 8.599(毫秒). 执行号:802.

SP_SET_PARA_STRING_VALUE

作用:设置 dm.ini 文件中的字符串型参数值
语法:

SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))

参数说明:

scope:取值为 1,2 。1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器;2 表示只修改 dm.ini 文件,服务器重启后生效。
ini_param_name:dm.ini 文件中的参数名。
value:设置的字符串的值。

SQL> SP_SET_PARA_STRING_VALUE(1, 'SQL_TRACE_MASK','1'); 
DMSQL 过程已成功完成
已用时间: 17.374(毫秒). 执行号:803.

SF_SET_SESSION_PARA_VALUE

作用:设置会话级 INI 参数的值
语法:

SF_SET_SESSION_PARA_VALUE (paraname varchar(8187),value bigint)

参数说明:

paraname: 会话级 INI 参数的参数名
value:要设置的新值

SQL> SF_SET_SESSION_PARA_VALUE ('JOIN_HASH_SIZE', 2000);
DMSQL 过程已成功完成
已用时间: 0.620(毫秒). 执行号:804.

SP_RESET_SESSION_PARA_VALUE

作用:重置会话级 INI 参数的值,使得参数的值和系统级一致。
语法:

SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187) )

参数说明:

paraname:会话级 INI 参数的参数名。

SQL> SP_RESET_SESSION_PARA_VALUE ('JOIN_HASH_SIZE');
DMSQL 过程已成功完成
已用时间: 0.582(毫秒). 执行号:805.

SF_GET_SESSION_PARA_VALUE

作用:获得整数类型的会话级 INI 参数的值。
语法:

SF_GET_SESSION_PARA_VALUE (paraname varchar(8187) )

参数说明:

paraname:会话级 INI 参数的参数名。

SQL> SELECT SF_GET_SESSION_PARA_VALUE ('JOIN_HASH_SIZE');

行号     SF_GET_SESSION_PARA_VALUE('JOIN_HASH_SIZE')
---------- -------------------------------------------
1          500000

已用时间: 4.865(毫秒). 执行号:900.

SF_GET_SESSION_PARA_DOUBLE_VALUE

作用:获得浮点型的会话级 INI 参数的值。
语法:

SF_GET_SESSION_PARA_DOUBLE_VALUE (paraname varchar(8187) )

参数说明:

paraname:会话级 INI 参数的参数名。

SQL> SELECT SF_GET_SESSION_PARA_DOUBLE_VALUE ('SEL_RATE_SINGLE');

行号     SF_GET_SESSION_PARA_DOUBLE_VALUE('SEL_RATE_SINGLE')
---------- ---------------------------------------------------
1          5.000000000000000E-02

已用时间: 1.373(毫秒). 执行号:901.

SF_SET_SYSTEM_PARA_VALUE

作用:修改系统整型、double、varchar 的静态配置参数或动态配置参数。
语法:

SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value bigint/double/varchar(256),deferred int, scope int)

参数说明:

paraname:ini 参数的参数名。
value:要设置的新值。
deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前 session 不生效,后续再生效,默认为 0。
scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数。

SQL> SF_SET_SYSTEM_PARA_VALUE ('JOIN_HASH_SIZE',50,1,1);
DMSQL 过程已成功完成
已用时间: 45.858(毫秒). 执行号:902.

SF_SET_SQL_LOG

作用:设置服务器日志相关 INI 参数 SVR_LOG 和 SQL_TRACE_MASK
语法:

SF_SET_SQL_LOG (svrlog int,svrmsk varchar(1000))

参数说明:

svrlog:INI 参数 SVR_LOG 的设置值
svrmsk:INI 参数 SQL_TRACE_MASK 的设置值

SQL> SELECT SF_SET_SQL_LOG(1, '3:5:7');

行号     SF_SET_SQL_LOG(1,'3:5:7')
---------- -------------------------
1          1

已用时间: 341.295(毫秒). 执行号:903.

https://eco.dameng.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值