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