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];
参数
- <参数名称> 指静态、动态(系统级、会话级)INI参数名字。
- <参数值> 指设置该INI参数的值。
- [DEFERRED] 只适用于动态参数。指定DEFERRED,参数值延迟生效,对当前session不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效。
- [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];
参数
- <参数名称> 指动态会话级INI参数名字;
- <参数值> 指设置该INI参数的相应值;
- [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.