达梦数据库运行参数管理
1、运行参数文件路径
[dmdba@localhost bin]$ ll /dm8/data/DMOA/dm.ini
-rw-r--r-- 1 dmdba dinstall 51172 7月 21 15:50 /dm8/data/DMOA/dm.in
2、参数查看
SQL> select * from v$parameter; -- TYPE:参数类型 VALUE:当前值 SYS_VALUE:系统全局值 FILE_VALUE:dm.ini文件值
SQL> select * from v$dm_ini;
3、参数类型
静态参数(修改物理值)
IN FILE:可以通过sql、函数、手动编辑dm.ini修改,修改后无法立即生效,需要重启数据库
动态参数(修改内存值)
sys:系统全局级动态参数,修改后对全局会话生效(修改内存值)
session:会话级动态参数,修改后只对当前会话生效
手动参数(修改物理值)
read only:只能通过编辑dm.ini修改,修改后无法立即生效,需要重启数据库
4、参数修改
直接通过编辑dm.ini修改
vim /dm8/data/DMOA/dm.ini
如修改数据库兼容参数:
SQL> select name,"V$PARAMETER".TYPE,file_value from v$parameter where name like 'COMPATIBLE_MODE';
行号 NAME TYPE FILE_VALUE
---------- --------------- ------- ----------
1 COMPATIBLE_MODE IN FILE 0
已用时间: 2.777(毫秒). 执行号:320.
SQL>
[dmdba@localhost DMOA]$ vim dm.ini
#compatibility
BACKSLASH_ESCAPE = 0 #Escape Mode For Backslash, 0: Not Escape; 1: Escape
STR_LIKE_IGNORE_MATCH_END_SPACE = 1 #Whether to ignore end space of strings in like clause
CLOB_LIKE_MAX_LEN = 10240 #Maximum length in kilobytes of CLOB data that can be filtered by like clause
EXCLUDE_DB_NAME = #THE db names which DM7 server can exclude
MS_PARSE_PERMIT = 0 #Whether to support SQLSERVER's parse style
COMPATIBLE_MODE = 2 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata
SQL> select name,"V$PARAMETER".TYPE,file_value from v$parameter where name like 'COMPATIBLE_MODE';
行号 NAME TYPE FILE_VALUE
---------- --------------- ------- ----------
1 COMPATIBLE_MODE IN FILE 2
已用时间: 2.381(毫秒). 执行号:321.
SQL>
- 通过内置函数修改
查看提供修改参数的内置函数
SQL> select name from v$ifun where name like '%SET%PARA%VALUE%';
行号 NAME
---------- -------------------------
1 SP_SET_PARA_DOUBLE_VALUE
2 SF_SET_SESSION_PARA_VALUE
3 SF_SET_SESSION_PARA_VALUE
4 SF_SET_SESSION_PARA_VALUE
5 SF_SET_SESSION_PARA_VALUE
6 SP_DFS_DCS_SET_PARA_VALUE
7 SF_SET_SYSTEM_PARA_VALUE
8 SF_SET_SYSTEM_PARA_VALUE
9 SF_SET_SYSTEM_PARA_VALUE
10 SP_SET_PARA_STRING_VALUE
11 SP_SET_PARA_VALUE
行号 NAME
---------- ---------------------------
12 SP_RESET_SESSION_PARA_VALUE
12 rows got
已用时间: 1.715(毫秒). 执行号:322.
修改整型参数
-- SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)
SQL> select name,"V$PARAMETER".TYPE,file_value from v$parameter where name like 'COMPATIBLE_MODE';
服务器[192.168.220.131:5234]:处于普通打开状态
已连接
行号 NAME TYPE FILE_VALUE
---------- --------------- ------- ----------
1 COMPATIBLE_MODE IN FILE 2
已用时间: 6.168(毫秒). 执行号:300.
SQL> SP_SET_PARA_VALUE (2, 'COMPATIBLE_MODE', 0);
DMSQL 过程已成功完成
已用时间: 3.080(毫秒). 执行号:301.
SQL> select name,"V$PARAMETER".TYPE,file_value from v$parameter where name like 'COMPATIBLE_MODE';
行号 NAME TYPE FILE_VALUE
---------- --------------- ------- ----------
1 COMPATIBLE_MODE IN FILE 0
已用时间: 2.302(毫秒). 执行号:302.
SQL>
修改浮点型参数
-- SP_SET_PARA_DOUBLE_VALUE (scope int, ini_param_name varchar(256),value double)
SQL> select * from v$parameter where name = 'DSC_RESERVE_PERCENT';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------------- ---- -------- --------- ---------- -------------------------
1 652 DSC_RESERVE_PERCENT SYS 0.080000 0.080000 0.080000 Start ctl reserve percent
已用时间: 2.813(毫秒). 执行号:340.
SQL> SP_SET_PARA_DOUBLE_VALUE (1, 'DSC_RESERVE_PERCENT',0.080001);
DMSQL 过程已成功完成
已用时间: 2.581(毫秒). 执行号:341.
SQL> select * from v$parameter where name = 'DSC_RESERVE_PERCENT';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------------- ---- -------- --------- ---------- -------------------------
1 652 DSC_RESERVE_PERCENT SYS 0.080001 0.080001 0.080000 Start ctl reserve percent
已用时间: 2.498(毫秒). 执行号:342.
SQL>
修改字符型参数
--SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))
SQL> select * from (select dd.*,translate(replace(dd.FILE_VALUE, '.', ''), '/1234567890', '/') f_valu from v$parameter dd where dd.type != 'READ ONLY') ff where ff.f_valu is not null and ff.NAME = 'SVR_LOG_NAME';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION F_VALU
---------- ----------- ------------ ---- -------- --------- ---------- ------------------------------------- --------
1 533 SVR_LOG_NAME SYS SLOG_ALL SLOG_ALL SLOG_ALL Using which sql log sys in sqllog.ini SLOG_ALL
已用时间: 3.305(毫秒). 执行号:346.
SQL> SP_SET_PARA_STRING_VALUE (1, 'SVR_LOG_NAME' ,'test_SLOG_ALL');
DMSQL 过程已成功完成
已用时间: 2.994(毫秒). 执行号:347.
SQL> select * from (select dd.*,translate(replace(dd.FILE_VALUE, '.', ''), '/1234567890', '/') f_valu from v$parameter dd where dd.type != 'READ ONLY') ff where ff.f_valu is not null and ff.NAME = 'SVR_LOG_NAME';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------ ---- ------------- ------------- -------------
DESCRIPTION F_VALU
------------------------------------- -------------
1 533 SVR_LOG_NAME SYS test_SLOG_ALL test_SLOG_ALL test_SLOG_ALL
Using which sql log sys in sqllog.ini test_SLOG_ALL
已用时间: 2.612(毫秒). 执行号:348.
修改会话级参数
-- SF_SET_SESSION_PARA_VALUE (paraname varchar(8187),value bigint)
-- 会话级参数只会修改当前值,不影响其他会话
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name = 'VIEW_PULLUP_MAX_TAB';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 7 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.924(毫秒). 执行号:351.
SQL> SF_SET_SESSION_PARA_VALUE ('VIEW_PULLUP_MAX_TAB',8);
DMSQL 过程已成功完成
已用时间: 0.783(毫秒). 执行号:352.
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name = 'VIEW_PULLUP_MAX_TAB';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 8 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.583(毫秒). 执行号:353.
重置会话级参数,使之与系统级参数一致
-- SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187))
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name = 'VIEW_PULLUP_MAX_TAB';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 8 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.583(毫秒). 执行号:353.
SQL> SP_RESET_SESSION_PARA_VALUE ('VIEW_PULLUP_MAX_TAB');
DMSQL 过程已成功完成
已用时间: 0.582(毫秒). 执行号:354.
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name = 'VIEW_PULLUP_MAX_TAB';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 7 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.423(毫秒). 执行号:355.
SQL>
修改系统整型、double、varchar 的参数
-- SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value bigint/double/varchar(256),deferred int, scope int)
SQL> select * from v$parameter qq where qq.TYPE like 'SYS' and name in ('CKPT_FLUSH_RATE','CKPT_INTERVAL','SVR_LOG_NAME');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- --------------- ---- -------- --------- ---------- -------------------------------------
1 265 CKPT_INTERVAL SYS 300 300 300 Checkpoint Interval In Seconds
2 266 CKPT_FLUSH_RATE SYS 5.000000 5.000000 5.000000 Checkpoint Flush Rate(0.0-100.0)
3 533 SVR_LOG_NAME SYS SLOG_ALL SLOG_ALL SLOG_ALL Using which sql log sys in sqllog.ini
已用时间: 4.659(毫秒). 执行号:356.
SQL> SF_SET_SYSTEM_PARA_VALUE ('CKPT_INTERVAL', 301,0, 1);
DMSQL 过程已成功完成
已用时间: 3.070(毫秒). 执行号:357.
SQL> SF_SET_SYSTEM_PARA_VALUE ('CKPT_FLUSH_RATE', 5.000001,0, 1);
DMSQL 过程已成功完成
已用时间: 2.685(毫秒). 执行号:358.
SQL> SF_SET_SYSTEM_PARA_VALUE ('SVR_LOG_NAME', 'SLOG_ALL_test',0, 1);
DMSQL 过程已成功完成
已用时间: 2.773(毫秒). 执行号:359.
SQL> select * from v$parameter qq where qq.TYPE like 'SYS' and name in ('CKPT_FLUSH_RATE','CKPT_INTERVAL','SVR_LOG_NAME');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- --------------- ---- ------------- ------------- -------------
DESCRIPTION
-------------------------------------
1 265 CKPT_INTERVAL SYS 301 301 301
Checkpoint Interval In Seconds
2 266 CKPT_FLUSH_RATE SYS 5.000001 5.000001 5.000000
Checkpoint Flush Rate(0.0-100.0)
3 533 SVR_LOG_NAME SYS SLOG_ALL_test SLOG_ALL_test SLOG_ALL_test
Using which sql log sys in sqllog.ini
已用时间: 3.072(毫秒). 执行号:360.
SQL>
-- 注:CKPT_FLUSH_RATE参数FILE_VALUE值未变动,可能是因为dm.ini文件中改参数值仅保留两位小数
scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数
deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前 session 不生效,后续再生效,默认为 0。
- 使用alter system/session set方式修改内存中的系统级&会话级参数
-- 修改系统级参数,DEFERRED参数为立即生效,语法格式如下。
-- ALTER SYSTEM SET '<参数名称>' =<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
SQL> select * from v$parameter qq where qq.TYPE like 'SYS' and name in ('SVR_LOG_NAME');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------ ---- -------- --------- ---------- -------------------------------------
1 533 SVR_LOG_NAME SYS SLOG_ALL SLOG_ALL SLOG_ALL Using which sql log sys in sqllog.ini
已用时间: 3.071(毫秒). 执行号:364.
SQL> ALTER SYSTEM SET 'SVR_LOG_NAME' ='SLOG_ALL_test' DEFERRED BOTH;
DMSQL 过程已成功完成
已用时间: 2.644(毫秒). 执行号:365.
SQL> select * from v$parameter qq where qq.TYPE like 'SYS' and name in ('SVR_LOG_NAME');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------ ---- ------------- ------------- -------------
DESCRIPTION
-------------------------------------
1 533 SVR_LOG_NAME SYS SLOG_ALL_test SLOG_ALL_test SLOG_ALL_test
Using which sql log sys in sqllog.ini
已用时间: 2.652(毫秒). 执行号:366.
SQL>
-- 修改会话参数,PURGE关键字指是否清理执行计划。语法格式如下。
-- ALTER SESSION SET '<参数名称>' =<参数值> [PURGE];
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name in ('VIEW_PULLUP_MAX_TAB');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 7 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.961(毫秒). 执行号:367.
SQL> ALTER SESSION SET 'VIEW_PULLUP_MAX_TAB' = 8 PURGE;
DMSQL 过程已成功完成
已用时间: 1.176(毫秒). 执行号:368.
SQL> select * from v$parameter qq where qq.TYPE like 'SESSION' and name in ('VIEW_PULLUP_MAX_TAB');
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------------------- ------- ----- --------- ----------
DESCRIPTION
-----------------------------------------------------------------
1 128 VIEW_PULLUP_MAX_TAB SESSION 8 7 7
Maximum number of tables that can be handled when pulling up view
已用时间: 2.794(毫秒). 执行号:369.