1. 程式人生 > 其它 >達夢資料庫學習札記-物理儲存結構

達夢資料庫學習札記-物理儲存結構

技術標籤:達夢資料庫資料庫

DM資料庫物理儲存結構

DM資料庫典型的物理儲存結構包括:

	配置檔案:用於進行功能設定
	控制檔案:用於記錄檔案分佈
	資料檔案:用於儲存使用者實際資料
	重做日誌檔案
	歸檔日誌檔案
	備份檔案
	跟蹤日誌檔案:用於問題跟蹤
	……

配置檔案

用來設定功能選項的文字檔案的集合,以ini為副檔名,主要功能如下:
	1.啟用/禁用特定功能
	2.針對當前環境設定優化系統性能

資料庫服務配置

	1.dm.ini檔案,重要性同ORACLE的spfile檔案。
		1)每個DM資料庫例項都會自動生成一個dm.ini檔案;
		2)資料庫啟動所必須的配置檔案;
		3
)當引數值設定為非法值,或引數型別不相容時,實際引數值取預設值; 4)當引數值小於預設最小值,實際引數值為預設最小值; 5)當引數值大於預設最大值,實際引數值為預設最大值; 6)引數劃分(按屬性): 動態引數:可以動態修改,修改即生效; 會話級:新引數值隻影響新建會話,之前建立的不受影響; 系統級:影響所有會話; DBA使用者可以通過呼叫SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE() 和SP_SET_PARA_STRING_VALUE()對引數值進行修改。 靜態引數:可以被動態修改,但需重啟生效: 手動引數:只能通過修改dm.
ini檔案,然後重啟生效。 7)引數劃分(按功能) filelocation:記錄相關檔案的實際存放位置; memorypoolandbuffer:記憶體相關引數; thread:執行緒相關引數; query:查詢相關引數; checkpoint:檢查點相關引數; IO:IO相關引數; database:資料庫相關引數: pre-load:預載入表相關引數; clientcache:客戶端快取引數; redolog:線上日誌引數; transaction:事務相關引數; security:安全相關引數; compatibility:
相容性相關引數; requesttrace:使用者請求跟蹤相關引數; systemtrace:系統跟蹤相關引數; monitor:MONITOR監控相關引數; datawatch:資料守護相關引數; forcontextindex:全文索引相關引數; dcp:DCP相關引數; configurationfile:配置檔案相關引數; other:其他; 2.dmmal.ini檔案,需把dm.ini檔案MAL_INI引數值修改為1,開啟此功能。 1)mai系統的配置檔案,多用於叢集環境,所有站點的dmmal.ini需要保持一致。 2)MAL_LEAK_CHECK引數, 啟動中以dmmal.ini檔案中配置為主; 若該檔案未配置,則以dm.ini檔案中的配置為主; 若兩個檔案對該引數均為配置,則預設值為0; 該引數可在dm.ini檔案中動態修改。 3.dmarch.ini檔案,用於本地和遠端歸檔,需把dm.ini檔案ARCH_INI引數值修改為1,開啟歸檔功能。 1)歸檔型別ARCH_TYPE有以下幾種: 本地歸檔 LOCAL(一臺主庫最多配置8) 遠端實時歸檔 REALTIME(一臺主庫最多配置8) 遠端非同步歸檔 ASYNC(一臺主庫最多配置8) 即時歸檔 TIMELY(一臺主庫最多配置8) 遠端歸檔 REMOTE(一臺主庫最多配置8) 2)配置名[ARCHIVE_*]表示歸檔名,在配置檔案中必須唯一; 3)不能存在相同例項名的不同歸檔; 4)不能存在DEST相同的不同歸檔例項; 5)ARCH_TIMER_NAME為定製的定時器名稱,定時器配置詳見dmtimer.ini; 6)ARCH_SPACE_LIMIT表示歸檔檔案的磁碟空間限制,如果超過這個值, 則在生成新歸檔檔案前會刪除最老的一個歸檔檔案。 4.dm_svc.conf 1)DM安裝時會自動生成該檔案,不同的平臺存放目錄有所不同 a)32位DM軟體安裝在Win32位操作平臺,檔案存放在%SystemRoot%\system32目錄; b)64位DM軟體安裝在Win64位操作平臺,檔案存放在%SystemRoot%\system32目錄; c)32位DM軟體安裝在Win64位操作平臺,檔案存放在%SystemRoot%\SysWOW64目錄; d)在Linux平臺下,此檔案位於/etc目錄 2)配置檔案內容主要分為全域性配置區和服務配置區。 a)全域性配置在前,服務配置區在後,以"[服務名]"開頭; b)服務配置區中的配置優先順序高於全域性配置區; c)dm_svc.conf檔案修改後,需重啟客戶端程式。

dm_svc.conf檔案示例

    #以#開頭的行表示是註釋
    #全域性配置區
    O2000=(192.168.0.1:5000,192.168.0.2:5236)
	O3000=(192.168.0.1:5236,192.168.0.3:4350)
	TIME_ZONE=(+480)#表示+8:00時區
	LOGIN_ENCRYPT=(0)
	DIRECT=(Y)
	#服務配置區
	[O2000]
	TIME_ZONE=(+540)#表示+9:00時區
	LOGIN_MODE=(2)
	SWITCH_TIME=(3)
	SWITCH_INTERVAL=(10)
	5.sqllog.ini
		1)用於SQL日誌的配置,需把dm.ini中SVR_LOG值修改為1,開啟此功能;
		2)SVR_LOG_NAME為SLOG_ALL時,sqllog.ini中名稱為SLOG_ALL的配置塊才會生效;修改之後的sqllog.ini檔案,只要呼叫過程SP_REFRESH_SVR_LOG_CONFIG()就會生效。

sqllog.ini檔案示例

	BUF_TOTAL_SIZE=10240#SQLsLogBufferTotalSize(K)(1024~1024000)
	BUF_SIZE=1024#SQLsLogBufferSize(K)(50~409600)
	BUF_KEEP_CNT=6#SQLsLogbufferkeepedcount(1~100)
			
	[SLOG_ALL]
		FILE_PATH=../log
		PART_STOR=0
		SWITCH_MODE=0
		SWITCH_LIMIT=0
		ASYNC_FLUSH=0
		FILE_NUM=0
		ITEMS=0
		SQL_TRACE_MASK=0
		MIN_EXEC_TIME=0
		USER_MODE=0
		USERS=

複製配置(詳細使用以下文件,後續部落格“資料複製”中進行介紹)

1.dmrep.ini,用於配置複製例項,使用該檔案時,手動建立即可。
2.dmllog.ini用於配置邏輯日誌,使用該檔案時,手動建立即可。
3.dmtimer.ini用於配置定時器,用於資料守護中記錄非同步備庫的定時器資訊或資料複製中記錄非同步複製的定時器資訊。使用該檔案時,手動建立即可。

控制檔案

	1.每個DM資料庫都有一個名為dm.ctl的控制檔案;
	2.是一個二進位制檔案;
	3.記錄了資料庫必要的初始資訊;
	4.主要包含內容如下:
		1)資料庫名稱
		2)資料庫伺服器模式;
		3)OGUID唯一標識;
		4)資料庫伺服器版本;
		5)資料檔案版本;
		6)資料庫的啟動次數;
		7)資料庫最近一次啟動時間;
		8)表空間資訊,如表空間名、物理檔案存放路徑等,記錄了所有資料庫中使用的表空間,陣列的方式儲存起來。
		9)控制檔案校驗碼,校驗碼由資料庫伺服器在每次修改控制檔案後計算生成,保證控制檔案合法性,防止檔案損壞及手工修改。
	5.在伺服器執行期間,執行表空間的DDL等操作後,伺服器內部需要同步修改控制檔案內容。
	6.為避免在修改控制檔案過程中伺服器故障,可能導致控制檔案損壞的情況,修改控制檔案時系統內部會執行備份操作。策略如下:
		1)在修改dm.ctl之前,先執行一次備份,確定dm.ctl修改成功後,再將備份刪除,如果dm.ctl修改失敗或中途出現故障,則保留備份檔案。
		2)在修改dm.ctl成功之後,根據dm.ini中指定的CTL_BAK_PATH/CTL_BAK_NUM對最新的dm.ctl執行備份,如果使用者指定的CTL_BAK_PATH是非法路徑,則不再生成備份檔案,在路徑有效的情況下,生成備份檔案時根據指定的CTL_BAK_NUM判斷是否刪除老的備份檔案。

注:如果dm.ctl檔案存放在裸裝置上,則1)不會生效。
	如果指定的CTL_BAK_PATH是無效路徑,則2)也不會生效。
	如果1)2)的條件都滿足,則都會生效執行,否則只執行滿足條件的備份策略,如果都不滿足,則不會再生成備份檔案。
	如果是初始化新庫,在初始化完成後,會在“SYSTEM_PATH/CTL_BAK”路徑下對原始的dm.ctl執行一次備份。

資料檔案

	1.資料檔案同Oracle,都是以DBF為副檔名,是真實資料儲存的地方;
	2.實際使用中,一般不建議單個巨大的資料檔案,建議一個表空間,多個較小的資料檔案;
	3.資料檔案在物理上按照頁、簇和段的方式進行管理;
	4.資料檔案按資料組織形式,可以分為如下幾種:
		1)B樹資料
			a)行儲存資料,資料按B樹索引組織的。普通表、分割槽表、B樹索引的物理儲存格式都是B樹;
			b)包含兩個段,一個內節點段,存放內節點資料;一個葉子段,存放葉子節點資料;
			c)邏輯關係由段內頁面上的記錄,通過檔案指標來完成;
			d)當表上沒有聚簇索引時,系統會自動產生一個唯一標識ROWID作為B樹的KEY來唯一標識一行。
		2)堆表資料
			以掛鍊形式儲存,最多支援128個連結串列,一個連結串列在物理上就是一個段,堆表採用的是物理ROWID,在插入過程中,ROWID保證其唯一性,所以可以併發插入,提高效率,且ROWID是即時生成,無需儲存在物理磁碟上,也節省空間。
		3)列儲存資料
			按列方式儲存,每個列包含兩個段,一個段存放列資料,一個段存放列的控制資訊,讀取資料時,只需要順序掃描這兩個段。
		4)點陣圖索引
			每個索引條目不是指向一行資料,而指向多行資料,每個索引項儲存的是一定範圍內所有航宇當前索引鍵值對映關係的點陣圖。
		5)ROOL檔案
		用於儲存系統的回滾記錄,提供食物回滾時的資訊。回滾檔案真個是一個段,每個食物的回滾頁在回滾段中各自掛鏈,頁內則順序存放回滾記錄。
		6)TEMP檔案
		當資料庫查詢臨時結果集過大,快取已經不夠用時,臨時結果集就可以儲存在TEMP.DBF檔案中,供後續運算使用。系統中使用者建立的臨時表也儲存在臨時檔案中。

重做日誌檔案

	1.將資料庫中新增、刪除、修改物件,或者改變資料的結果寫入到當前的重做日誌檔案中。
	2.其副檔名為log。
	3.每個資料例項至少有2個重做日誌檔案,迴圈使用。
	4.主要用於資料的備份與恢復。

歸檔日誌檔案

	1.非歸檔模式下,資料庫會只將重做日誌寫入到重做日誌檔案中;當開啟歸檔時,資料庫會同時將重做日誌寫入重做日誌檔案和歸檔日誌檔案儲存。
	2.歸檔模式下,重做日誌被連續寫到歸檔日之後,所生成歸檔日誌檔案;
	3.歸檔日誌檔案以歸檔時間命名,副檔名也是log;
	4.歸檔日誌配合備份可以將資料庫恢復至任意時間點,即使資料庫的儲存介質發生故障;
	5.是資料守護功能的核心。

邏輯日誌檔案

	1.當DM資料配置了複製功能,源端就會產生邏輯日誌檔案;
	2.是一個流式的檔案,不在頁、簇和段的管理中;
	3.按照㢟記錄的格式,一條記錄緊接著一條記錄,儲存著複製源端的各種邏輯操作。發給複製目的端。

物理邏輯日誌檔案

	1.物理邏輯日誌,按照特定的格式儲存的伺服器的邏輯操作,專門用於DBMS_LOGMNR包挖掘獲取資料庫系統的歷史執行語句。
	2.當開啟記錄物理邏輯日誌的功能時,這部分日誌內容會被儲存在重做日誌檔案中。
	3.開啟該功能需滿足的條件:
		1)在dm.ini檔案中設定RLOG_APPEND_LOGIC引數為12或者3;
		2)在dm.ini檔案中設定RLOG_IGNORE_TABLE_SET=1,此時記錄所有表的物理邏輯日誌;
		3)建表(或修改表)時指定ADD LOGIC LOG開啟 ,此時RLOG_IGNORE_TABLE_SET=0,則只記錄指定的表。

備份檔案

	1.備份檔案的副檔名可以自定義,通常以bak作為副檔名,當資料庫出現重大故障時,或對資料庫進行異地還原時,
可通過備份+歸檔日誌+重做日誌等檔案進行操作;
	2.系統會自動記錄備份資訊及該備份檔案所處的位置;
	3.備份檔案自身包含了備份的名稱、對應的資料庫、備份型別和備份時間等資訊。

跟蹤日誌檔案

	1.開啟跟蹤日誌條件
		1)在dm.ini檔案中配置SVR_LOG引數;
		2)在dm.ini檔案中配置SVR_LOG_SWITCH_COUNT引數;
	2.該檔案是一個純文字檔案;
	3.預設生成在DM暗轉目錄下的log子目錄下,可以通過修改dm.ini的 SVR_LOG_FILE_PATH值,變更該檔案目錄;
	4.跟蹤日誌包含各會話執行的SQL語句、引數資訊、錯誤資訊等;
	5.主要用於分析錯誤和分析效能問題,從而對系統執行狀態有一個分析,如查詢出執行速度較慢的SQL,進行優化;
	6.SQL日誌快取是分塊迴圈使用,可根據執行語句情況及壓力情況設定恰當的日誌快取塊大小及預留的緩衝塊個數。總的
空間由dm.ini中的SVR_LOG_BUF_TOTAL_SIZE引數控制。
	7.跟蹤日誌對系統的效能有很大的影響。一般用於調優和查錯,預設是關閉的。

事件日誌檔案

	1.安裝目錄下的log子目錄在例項執行時,會自動生成一個"dm_例項名_日期"命名的檔案;
	2.記錄該例項執行時的關鍵事件,如系統啟動、關閉、記憶體申請失敗、IO錯誤等一些致命錯誤。
	3.主要用於出現嚴重錯誤是進行檢視並定位問題。
	4.列印中間步驟的資訊,會出現部分資訊缺失的情況,屬正常。

資料重演檔案

	1.呼叫系統儲存過程 SP_START_CAPTURE 和 SP_STOP_CAPTURE,可以獲得資料重演檔案;
	2.用於資料重演,儲存了從抓取開始到抓取結束,DM資料庫與客戶端的通訊訊息;
	3.可以多次重複抓取某段時間內的操作情況,為系統除錯和效能調優提供另一種分析手段。