配置文件
前言
每創建一個DM數據庫,就會自動生成 dm.ini 文件。dm.ini 是 DM 數據庫啟動所必須的配置文件,通過配置該文件可以設置 DM 數據庫服務器的各種功能和性能選項,當然還有其它參數配置文件,歸檔參數文件dmarch.ini及配置集群的參數文件dmmal.ini、dmwatcher.ini、dmmpp.ini、dmtimer.ini、dmwmon.ini。達夢數據庫的參數文件dm.ini是必須的,其它均可選擇配置。且除了實例參數文件dm.ini外,其它參數文件按照部署規范配置好后,基本上無須做任何修改。
主要配置文件
說明
參數文件 | 說明 |
---|---|
dm.ini | 達夢數據庫啟動所必須的配置文件,通過配置該文件可以設置達夢數據庫服務器的各種功能和性能選項。達夢數據庫是否讀參數文件dmarch.ini、dmmal.ini、dmmpp.ini、dmtimer.ini,均有dm.ini參數文件中的相應參數(MAL_INI、ARCH_INI、MPP_INI、TIMER_INI)來控制。 |
dmarch.ini | 用於配置REDO日志的本地歸檔和遠程歸檔。所謂遠程歸檔指這台實例的REDO日志發送到集群中另外一個實例(該實例為這台實例的備機)。 |
dmmal.ini | 達夢數據庫集群間MAL系統的配置文件,通過該文件配置達夢集群中每個實例的IP地址、端口號等信息。 |
dmwatcher.ini | 守護進程的配置文件。 |
dmmpp.ini | MPP集群的配置文件。 |
dmtimer.ini | 異步備機的配置文件。 |
dmmonitor.ini | 數據守護系統的監視器配置文件。 |
查看各項功能的配置文件
select name from sysobjects where name like 'V$DM_%INI';
參數分類
實例參數文件dm.ini中參數主要分為兩類:功能配置參數、性能調優參數。
參數名 | 說明 |
---|---|
CTL_PATH | 必配,實例控制文件路徑。 |
SYSTEM_PATH | 必配,系統表空間路徑。 |
TEMP_PATH | 必配,臨時表空間路徑。 |
BAK_PATH | 必配,數據庫備份默認路徑。 |
INSTANCE_NAME | 必配,數據庫實例名稱。 |
ARCH_INI | 選配項,REDO本地歸檔開關,如不配置,無法進行數據庫備份。 |
MAL_INI | 集群必配項,MAL通信開關。 |
DW_PORT | 集群必配項,數據庫和守護進程的TCP通信端口。 |
TIMER_INI | 選配,異步備機開關,配置異步備機必須要配置該項。 |
MPP_INI | 選配,MPP集群開關,配置MPP集群必須要配置該項。 |
其它參數均為選配項,包括功能參數、性能調優參數、監控參數等。
參數屬性
INI 參數屬性分為靜態、動態和手動三種類型,分別對應動態性能視圖V$PARAMETER
中的TYPE類型IN FILE、READ ONLY、SYS和SESSION。
- 靜態參數(IN FILE):只能修改 ini 文件,修改后重啟DB才能生效,為系統級參數,生效后會影響所有的會話
- 動態參數(SYS和SESSION):ini 文件和內存同時可修改,修改后即時生效。
- 動態參數又分為會話級和系統級。
- SESSION: 會話級參數被修改后,新參數值只會影響新創建的會話
- SYS: 系統級參數修改后,將會影響所有的會話
- 動態參數又分為會話級和系統級。
- 手動參數(READ ONLY):在運行過程中不能被修改,必須手動修改 dm.ini 參數文件,然后重啟才能生效。
參數查看
查看方式
-
直接查看參數文件,如:dm.ini
-
通過動態性能視圖
v$PARAMETER
,該視圖顯示ini參數和dminit建庫參數的類型及參數值信息(當前會話值、系統值及dm.ini文件中的值)select top 5 name, type, value, sys_value, file_value from v$parameter;
其中,VALUE表示當前會話值,SYS_VALUE表示系統值,FILE_VALUE表示dm.ini文件中值。
-
通過動態性能視圖
v$DM_INI
,該視圖可以查看所有ini參數和dminit建庫參數信息。同時,也提供了分類的視圖查看相關的配置,如:V$DM_ARCH_INI
select top 5 para_name, para_value from v$dm_ini; select * from V$DM_ARCH_INI;
-
通過相應函數查看參數值,其中SCOPE參數值為1:表示獲取INI 文件中配置參數的值,值為2:表示獲取內存中配置參數的值
- SF_GET_PARA_VALUE(scope int, paraname varchar(256)) :配置參數的值類型為數值類型時使用該函數來獲取當前值
- SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187)):配置參數的值類型為浮點型時使用該函數來獲取當前值
- SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187)):配置參數的值為字符串類型時用該系統函數來獲取當前值
- SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)):獲得當前會話的某個會話級 INI 參數的值
調整配置參數
修改參數的方式
- 直接編輯參數配置文件,如:dm.ini
- 通過SQL語句修改參數
- 通過系統函數修改參數
通過SQL語句修改參數
修改全局參數
通過ALTER SYSTEM
語法修改靜態或動態(系統級、會話級)參數值,使修改之后的參數值能夠在全局范圍內起作用。
語法
ALTER SYSTEM SET '<參數名稱>'=<參數值> [DEFERRED] [MEMORY|BOTH|SPFILE];
- DEFERRED: 只適用於動態參數。指定DEFERRED時,參數值延遲生效,對當前session不生效,只對新創建的會話生效;缺省為立即生效,即對當前會話和新創建的會話都生效。
示例
-- 設置當前系統動態、會話級參數 SORT_BUF_SIZE 參數值為 200
ALTER SYSTEM SET 'SORT_BUF_SIZE'=200 DEFERRED MEMORY;
修改會話級參數
通過 ALTER SESSION 語法修改動態會話級參數(即 TYPE 為 SESSION 的參數),使修改之后的 INI 參數值只對當前會話起作用,不會影響其他會話或系統的 INI 參數值。
語法
ALTER SESSION SET '<參數名稱>'=<參數值> [PURGE];
- PURGE: 是否清理執行計划
示例
-- 設置當前會話的 HAGR_HASH_SIZE 參數值為 2000000
ALTER SESSION SET 'HAGR_HASH_SIZE'=2000000;
通過系統函數修改參數
在 DM 數據庫中,很多參數都是動態的,會自動響應各種負載,但是 DBA 仍然可以調用系統過程來改變 DM 實例的運行參數,從而獲得更佳的性能體驗。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 過程來修改靜態/動態配置參數。
查看配置參數當前值
其中,函數的SCOPE參數值為1:表示獲取INI 文件中配置參數的值,值為2:表示獲取內存中配置參數的值
-
SF_GET_PARA_VALUE(scope int, paraname varchar(256)) :配置參數的值類型為數值類型時,使用該函數來獲取當前值
-- 獲得 dm.ini 文件中 BUFFER 參數值 SELECT SF_GET_PARA_VALUE (1, 'BUFFER');
-
SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187)):配置參數的值類型為浮點型時,使用該函數來獲取當前值
-
SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187)):配置參數的值為字符串類型時,用該系統函數來獲取當前值
-
SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)):獲得整數類型的會話級 INI 參數的值
-
SF_GET_SESSION_PARA_DOUBLE_VALUE (paraname varchar(8187) ):獲得浮點型的會話級 INI 參數的值
修改參數當前值
SCOPE參數為1表示在內存和INI文件中都修改參數值,此時只能修改動態的配置參數。參數為 2 表示只在 INI 文件中修改配置參數,此時可用來修改靜態配置參數和動態配置參數。只有具有 DBA 角色的用戶才有權限調用SP_SET_PARA_VALUE,SP_SET_PARA_DOUBLE_VALUE和SF_SET_SYSTEM_PARA_VALUE。
- SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64):該過程用於修改整型靜態配置參數和動態配置參數
- SP_SET_PARA_DOUBLE_VALUE (scope int, paraname varchar(8187),value double):該過程用於修改浮點型靜態配置參數和動態配置參數
- SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value int64\double\varchar(256),deferred int, scope int64)
該過程用於修改 int、double、varchar 類型的靜態配置參數或動態配置參數。當DEFERRED 參數值為 0 表示當前 session 修改的參數立即生效;值為 1 表示當前 session不生效,后續再生效,默認為 0。 - SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187)):設置字符串型參數值
- SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint):設置某個會話級 INI 參數的值,設置的參數值只對本會話有效
- SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)):重置某個會話級INI參數的值,使得這個INI參數的值和系統INI參數的值保持一致
- SF_SET_SQL_LOG (svrlog int,svrmsk varchar(1000)):設置服務器日志相關 INI 參數 SVR_LOG 和 SQL_TRACE_MASK
示例
-- 查看參數值
select SF_GET_PARA_VALUE(2,'SORT_BUF_SIZE');
select para_name,para_value from v$dm_ini where para_name='SORT_BUF_SIZE';
-- 設置當前系統動態、會話級參數 SORT_BUF_SIZE 參數值為 200,延遲生效
ALTER SYSTEM SET 'SORT_BUF_SIZE' =200 DEFERRED MEMORY;
-- 將 dm.ini 文件中 HFS_CACHE_SIZE 參數值設置為 320
SP_SET_PARA_VALUE (1,'HFS_CACHE_SIZE',320);
select SF_GET_PARA_VALUE(2,'HFS_CACHE_SIZE');