DM7修改数据库参数

在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.

One thought on “DM7修改数据库参数

发表评论

电子邮件地址不会被公开。