DM7修改資料庫引數

eric0435發表於2018-08-20

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2212372/,如需轉載,請註明出處,否則將追究法律責任。

相關文章