達夢資料庫基礎知識(一)資料庫物理儲存結構

winderen111發表於2021-10-26

達夢資料庫物理結構由.ini配置檔案,控制檔案,資料檔案,重做日誌檔案、歸檔日誌檔案以及用於告警和事件跟蹤的各類告警日誌等組成。

1、.ini配置檔案

配置檔案是達夢資料庫用來設定功能選項的一些文字檔案的集合,配置檔案以ini 為擴

展名,它們具有固定的格式,使用者可以透過修改其中的某些引數取值來達成如下兩個方面的功能:啟用/禁用特定功能項;針對當前系統執行環境設定更優的引數值以提升系統效能。

1) dm.ini配置檔案

是達夢資料庫最基礎的配置檔案,資料庫服務啟動,讀取第一個檔案是dm.ini,並根據dm.ini內的各項配置引數,啟動資料庫例項及裝載資料庫,主要可以配置內容可參考官方手冊。

當dm.ini 中的某引數值設定為非法值時,若設定值與引數型別不相容,則引數實際取值為預設值;若設定值小於引數取值範圍的最小值,則實際取值為最小值;若設定值大於引數取值範圍的最大值,則實際取值為最大值。

引數屬性分為三種:靜態、動態和手動。

靜態,可以被動態修改,修改後重啟伺服器才能生效;

動態,可以被動態修改,修改後即時生效。動態引數又分為會話級和系統級兩種。會話級引數被修改後,新引數值只會影響新建立的會話,之前建立的會話不受影響;系統級引數的修改則會影響所有的會話;

手動,不能被動態修改,必須手動修改dm.ini 引數檔案,然後重啟才能生效。

主要的引數及相關的操作介紹,後續會有章節詳述。

   2)  dmmal.ini

dmmal.ini MAL 系統的配置檔案,該檔案用於配置同步複製,同步的所有節點該引數檔案都應該一致。

3) dmarch.ini

dmarch.ini用於配置本地歸檔和遠端歸檔的引數,開歸檔功能,必須配置此引數檔案。

4) dm_svc.conf

dm_svc.conf 檔案中包含資料庫各介面及客戶端需要配置的一些引數,屬於監聽及使用者接入的引數配置。

5) sqllog.ini

sqllog.ini用於配置sql日誌引數,當dm.ini 引數 SVR_LOG=1 時,該引數開始生效

sql 日誌可記錄所有連入會話執行操作的 sql 語句,執行狀態,報錯資訊等。

 

另外,還有 dmrep.ini dmllog.ini dmtimer.ini 用於配置資料庫複製節點、邏輯日誌、定時器等。

 

 

2、控制檔案

每個達夢資料庫都有一個名為dm.ctl 的控制檔案。控制檔案是一個二進位制檔案,它記

錄了資料庫必要的初始資訊,其中主要包含以下內容:

1) 資料庫名稱;

2) 資料庫伺服器模式;

3) OGUID 唯一標識;

4)資料庫伺服器版本;

5)資料檔案版本;

6)資料庫的啟動次數;

7)資料庫最近一次啟動時間;

8)表空間資訊,包括表空間名,表空間物理檔案路徑等,記錄了所有資料庫中使用的表空間,陣列的方式儲存起來;

9)控制檔案校驗碼,校驗碼由資料庫伺服器在每次修改控制檔案後計算生成,保證控制檔案合法性,防止檔案損壞及手工修改。

 

3、資料檔案

資料檔案以.dbf 為副檔名,它是資料庫中最重要的檔案型別,一個資料檔案對應磁碟上的一個物理檔案或者達夢分散式資料庫中的一個邏輯檔案,資料檔案是真實資料儲存的地方,每個資料庫至少有一個與之相關的表空間。在實際應用中,一個表空間通常有多個資料檔案,一個資料檔案只從屬於一個表空間。

當資料檔案空間用完時,它可以自動擴充套件。可以在建立資料檔案時透過MAXSIZE

引數限制其擴充套件量,當然,也可以不限制。但是,資料檔案的大小最終會受物理磁碟大小的

限制。在實際使用中,一般不建議使用單個巨大的資料檔案,為一個表空間建立多個較小的

資料檔案是更好的選擇。

資料檔案在物理上按照頁、簇和段的方式進行管理,關於表空間、頁、簇和段的概念將在下一章《達夢資料庫基礎知識(一)資料庫邏輯結構》中介紹。

 

4、重做日誌檔案

重做日誌(即 REDO 日誌)指在 達夢 資料庫中新增、刪除、修改物件,或者改變資料, 資料庫 都會按照特定的格式,將這些操作執行的結果寫入到當前的重做日誌檔案中。重做日誌檔案以 log 為副檔名。每個資料庫例項必須至少有 2 個重做日誌檔案,預設兩個日誌檔案為 DAMENG01.log DAMENG02.log ,這兩個檔案迴圈使用。

重做日誌檔案的作用有三個:

1) 記錄了資料庫所有ddl和dml操作。資料庫主備同步,DMHS資料庫同步都是從源端資料庫採集重做日誌或歸檔日誌資料庫,然後在目標端應用;

2) 可以避免資料提交後直接寫入資料檔案。對所有資料庫來說,IO操作都是最昂貴的,先將操作提交至重做日誌(log buff),然後在檢查點將變更批次寫入磁碟(資料檔案),可極大提升資料庫效能;

3) 例項恢復和介質恢復。理想情況下,資料庫系統不會用到重做日誌檔案中的資訊。然而現實世界總是充滿了各種意外,比如電源故障、系統故障、介質故障,或者資料庫例項程式被強制終止等,資料庫緩衝區中的資料頁會來不及寫入資料檔案。這樣,在重啟 DM 例項時,透過重做日誌檔案中的資訊,就可以將資料庫的狀態恢復到發生意外時的狀態。


5、歸檔日誌檔案

日誌檔案分為聯機日誌檔案和歸檔日誌檔案。DM 資料庫可以在歸檔模式和非歸檔模式下執行。非歸檔模式下,資料庫會只將重做日誌寫入聯機日誌檔案中進行儲存;歸檔模式下,資料庫會同時將重做日誌寫入聯機日誌檔案和歸檔日誌檔案中分別進行儲存。

歸檔日誌檔案,就是在歸檔模式下,重做日誌被連續寫入到歸檔日誌後,所生成了歸檔

日誌檔案。歸檔日誌檔案以歸檔時間命名,副檔名也是 log。但只有在歸檔模式下執行時,資料庫才會將重做日誌寫入到歸檔日誌檔案中。採用歸檔模式會對系統的效能產生影響,然而系統在歸檔模式下執行會更安全,當出現故障時其丟失資料的可能性更小,這是因為一旦出現介質故障,如磁碟損壞時,利用歸檔日誌,系統可被恢復至故障發生的前一刻,也可以還原到指定的時間點,而如果沒有歸檔日誌檔案,則只能利用備份進行恢復。

6、告警日誌檔案

       1)事件日誌檔案

資料庫系統在執行過程中,會在log 子目錄下產生一個“dm_例項名_日期”命名的事件日誌檔案。事件日誌檔案對資料庫執行時的關鍵事件進行記錄,如系統啟動、關閉、記憶體申請失敗、IO 錯誤等一些致命錯誤。事件日誌檔案主要用於系統出現嚴重錯誤時進行檢視並定位問題。事件日誌檔案隨著資料庫服務的執行一直存在。事件日誌檔案列印的是中間步驟的資訊,所以出現部分缺失屬於正常現象。

2) SQL 日誌檔案

   使用者在dm.ini 中配置SVR_LOG 引數後就會開啟SQL 日誌。

   SQL 日誌內容包含系統各會話執行的SQL 語句、引數資訊、錯誤資訊等。跟蹤日誌主要用於分析錯誤和分析效能問題,基於跟蹤日誌可以對系統執行狀態有一個分析,比如,可以挑出系統現在執行速度較慢的SQL 語句,進而對其進行最佳化。

   開啟SQL 日誌會對系統的效能會有較大影響,一般用於查錯和調優的時候才會開啟,預設情況下系統是關閉跟蹤日誌的。

3) 邏輯日誌檔案

如果在資料庫上配置了複製功能,複製源就會產生邏輯日誌檔案。邏輯日誌檔案是一個流式的檔案,它有自己的格式,頁,簇和段的管理之下。

邏輯日誌檔案內部儲存按照複製記錄的格式,一條記錄緊接著一條記錄,儲存著複製源端的各種邏輯操作。用於傳送給複製目的端。

4) 物理邏輯日誌檔案

物理邏輯日誌,是按照特定的格式儲存的伺服器的邏輯操作,專門用於DBMS_LOGMNR包挖掘獲取資料庫系統的歷史執行語句。當開啟記錄物理邏輯日誌的功能時,這部分日誌內容會被儲存在重做日誌檔案中。


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

相關文章