使用DB2 dart 工具來來分析DB2 數(shù)據(jù)存儲方式
我們今天主要向大家介紹的是正確使用DB2 dart 工具來來理解DB2 數(shù)據(jù)存儲方式,以下就是對使用DB2 dart 工具來來理解DB2 數(shù)據(jù)存儲方式文章的主要內(nèi)容的詳細描述,望大家在瀏覽之后會對其有更深的了解。
在本文中我們將利用 DB2dart 工具來理解 DB2 數(shù)據(jù)的存儲方式,特別是 DB2 數(shù)據(jù)在每個頁中是如何存儲的。
簡介
DB2 數(shù)據(jù)庫中的數(shù)據(jù)表存放在表空間中,每個表空間可以有一個或者多個容器(Container),頁(page)是容器中最基本的存儲單元,每個頁可以存儲一定數(shù)量的記錄。可是每一條記錄在頁中的存儲是什么樣子的?有沒有什么工具能夠看到每個頁中存儲了哪幾條記錄?
DB2dart 是 DB2 中自帶的一個數(shù)據(jù)庫分析利器,可以分析數(shù)據(jù)庫、表空間和表等,驗證數(shù)據(jù)庫及其對象的體系結(jié)構(gòu)是否正確,還可以使用它來顯示數(shù)據(jù)庫控制文件的內(nèi)容,以便從其他情況下可能無法訪問的表中抽取數(shù)據(jù)。
在本文中將通過 DB2dart 來顯示和分析數(shù)據(jù)庫中的數(shù)據(jù),從而深入理解 DB2 的數(shù)據(jù)存儲方式,這對于提高 DBA 數(shù)據(jù)恢復(fù)技能也有一定的幫助。
DB2 中數(shù)據(jù)存儲方式概述
DB2 數(shù)據(jù)庫中有兩種類型的表空間,它們都可以在單個數(shù)據(jù)庫中使用:
系統(tǒng)管理的空間(SMS),操作系統(tǒng)的文件管理器控制其中的存儲空間。
數(shù)據(jù)庫管理的空間(DMS),數(shù)據(jù)庫管理器控制其中的存儲空間。
還可以創(chuàng)建自動存儲器表空間,該表空間將使用 SMS 或 DMS 作為基本表空間類型。數(shù)據(jù)庫管理器將根據(jù)其中包含的數(shù)據(jù)類型選擇實際類型 SMS 或 DMS(SMS 用于臨時表空間,DMS 則用于其他表空間)。
本文中我們只針對 DMS 類型的表空間進行討論。
表空間是一種存儲結(jié)構(gòu),它包含表、索引、大對象和長型數(shù)據(jù)。它們允許將數(shù)據(jù)庫和表數(shù)據(jù)的位置直接指定到容器上。容器可以是目錄名、設(shè)備名或文件名,單個表空間可跨多個容器,如圖 1 所示。
圖 1. 數(shù)據(jù)庫中的表空間、容器和表
DB2 數(shù)據(jù)庫管理器會平衡分布在所有容器中的數(shù)據(jù)負荷,所有容器都將用于存儲數(shù)據(jù)。數(shù)據(jù)庫管理器在使用另一個容器之前寫入一個容器的頁數(shù)稱為擴展數(shù)據(jù)塊(extent)大小。數(shù)據(jù)庫管理器并非始終從第一個容器開始存儲表數(shù)據(jù)。在圖 2 中,表空間 HUMANERS 有 4 個容器,擴展數(shù)據(jù)庫大小為 2 頁,每個頁大小是 4K 字節(jié)。 DEPARTMENT 和 EMPLOYEE 表都有 7 頁,并且都跨越所有四個容器。
圖 2. 表空間中的容器和擴展數(shù)據(jù)庫
那每個頁中的記錄是如何存儲的呢,接下來我們利用 DB2 dart 工具來更為直觀的進行理解。
DB2dart 使用簡介
工欲善其事必先利其器,那我們就先來看看 DB2dart(DB2 Database Analysis and Reporting Tool)這個工具。如上文所述,DB2dart 更多的是一個診斷工具,可以用來驗證數(shù)據(jù)庫以及相關(guān)的數(shù)據(jù)庫對象是否正確,是否存在問題,還可以用來顯示數(shù)據(jù)庫控制文件的內(nèi)容,以便在重建數(shù)據(jù)庫時從其他情況下無法訪問的表中抽取數(shù)據(jù)。
如果想查看 DB2dart 的相關(guān)語法,可以在命令窗口(DB2CLP)中,發(fā)出 DB2dart 命令(不帶任何參數(shù)),就可以看到其所有選項及其功能。在本文中我們將要用到的是:
/DD:提取格式化的表數(shù)據(jù)。命令格式:DB2dart
在上面的命令中:
/TSI 用于指定表空間 ID(tablespace ID),
/OI 用于指定對象 ID(object ID),
/PS 用于指定開始的數(shù)據(jù)頁,
/NP 用于指定所要提取的數(shù)據(jù)頁的數(shù)量,
/V 用于設(shè)定是否顯示詳細信息,Y:顯示,N:不顯示。
這里的表空間 ID 和對象 ID 可以從 CATALOG 表 SYSCAT.TABLES 中獲取,下文中將給出具體的 SQL 語句。此外還可以使用 /RPTN 指定用來保存結(jié)果的文件名。
注意,DB2dart 不能在仍具有活動連接的數(shù)據(jù)庫上運行。如果存在活動連接,DB2dart 將輸出警告信息,而且有可能輸出錯誤的結(jié)果??梢酝ㄟ^“ FORCE APPLICATIONS ALL ”命令斷開所有的數(shù)據(jù)庫連接。也正是因為這一離線工作的特性,使得 DB2dart 在數(shù)據(jù)庫崩潰之后的恢復(fù)中能夠發(fā)揮巨大的作用。
以上的相關(guān)內(nèi)容就是對使用DB2 dart 工具來理解 DB2 數(shù)據(jù)存儲方式的介紹,望你能有所收獲。
【編輯推薦】