在DM7中可以DBA可以在DM数据库运行过程中执行SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE这三个函数来获取系统的当前配置参数,并且可以使用SP_SET_PARA_VALUE,SP_SET_PARA_DOUBLE_VALUE和SP_SET_PARA_STRING_VALUE过程来修改静态/动态配置参数.
SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64)该过程用于修改整型静态配置参数和动态配置参数。SCOPE参数为1表示在内存和INI文件中都修改参数值,此时只能修改动态的配置参数。参数为2表示只在INI文件中修改配置参数,
此时可用来修改静态配置参数和动态配置参数。当SCOPE等于1,试图修改静态配置参数时服务器会返回错误信息。只有具有DBA角色的用户才有权限调用SP_SET _PARA_VALUE。
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。
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。
DM的动态INI参数分为系统级和会话级两种级别。会话级参数在服务器运行过程中被修改时,之前创建的会话不受影响,只有新创建的会话使用新的参数值。
1. SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint) 设置某个会话级INI参数的值,设置的参数值只对本会话有效。
2. SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)) 重置某个会话级INI参数的值,使得这个INI参数的值和系统INI参数的值保持一致。
3. SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)) 获得当前会话的某个会话级INI参数的值。
下面修改动态参数enable_auidt,scope=1同时修改内存和dm.ini文件
SQL> call sp_set_para_value(1,'ENABLE_AUDIT',1); DMSQL executed successfully used time: 87.566(ms). Execute id is 199. SQL> select sf_get_para_value(1,'ENABLE_AUDIT'); LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT') ---------- ----------------------------------- 1 1 used time: 10.131(ms). Execute id is 200.
查询v$dm_ini视图可以看到,当前dm.ini文件中也被修改了因为file_value=1
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- --------- 1 ENABLE_AUDIT 1 0 2 N 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS used time: 201.366(ms). Execute id is 206.
查询v$parameter视图可以看到,当前内存中也被修改了因为sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT'; LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- ----------- ------------ ---- ----- --------- ---------- --------------------------------------------------------------------------------------- 1 385 ENABLE_AUDIT SYS 1 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit used time: 7.130(ms). Execute id is 207.
下面修改动态参数enable_auidt,scope=2只修改dm.ini文件
SQL> call sp_set_para_value(2,'ENABLE_AUDIT',0); DMSQL executed successfully used time: 29.707(ms). Execute id is 208. SQL> select sf_get_para_value(1,'ENABLE_AUDIT'); LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT') ---------- ----------------------------------- 1 0
查询v$dm_ini视图可以看到,当前dm.ini文件中也被修改了因为file_value=0,sess_value=1
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT'; LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE ---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- --------- 1 ENABLE_AUDIT 1 0 2 N 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS used time: 5.207(ms). Execute id is 209.
查询v$parameter视图可以看到,当前内存中也被修改了因为sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT'; LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- ----------- ------------ ---- ----- --------- ---------- --------------------------------------------------------------------------------------- 1 385 ENABLE_AUDIT SYS 1 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit
SQL> call sp_set_para_value(1,'SQL_TRACE_MASK',2); call sp_set_para_value(1,'SQL_TRACE_MASK',2); [-3503]:Invalid procedure parameter. used time: 115.071(ms). Execute id is 0.
这里报错了,是因为SQl_TRACE_MASK参数值为字符串类型,如是可以使用以下函数来执行
SQL> call sp_set_para_string_value(1,'SQL_TRACE_MASK','2'); DMSQL executed successfully used time: 377.128(ms). Execute id is 194.
修改成功后可以执行以下函数来验证是否成功
SQL> select sf_get_para_string_value(1,'SQL_TRACE_MASK'); LINEID SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK') ---------- -------------------------------------------- 1 2 used time: 246.480(ms). Execute id is 198.
如果想要简单可以直接使用sf_set_system_para_value来修改参数就不用管参数的类型
SQL> call sf_set_system_para_value('SQL_TRACE_MASK','1',0,1); DMSQL executed successfully used time: 23.178(ms). Execute id is 212. SQL> select sf_get_para_string_value(1,'SQL_TRACE_MASK'); LINEID SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK') ---------- -------------------------------------------- 1 1 used time: 5.660(ms). Execute id is 214.
三天两头过来看一看,每次看完都有新体验!