程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 用DB2dart 工具來理解DB2數據存儲方式

用DB2dart 工具來理解DB2數據存儲方式

編輯:DB2教程

文章主要向大家講述的是正確使用DB2dart 工具來對DB2 數據存儲方式進行理解的實際操作,尤其是 DB2 數據在每個頁中進行存儲的實際操作步驟,以下就是文章的主要內容的詳細描述,望大家在浏覽之後會對其有更深的了解。

簡介

DB2 數據庫中的數據表存放在表空間中,每個表空間可以有一個或者多個容器Container),頁page)是容器中最基本的存儲單元,每個頁可以存儲一定數量的記錄。可是每一條記錄在頁中的存儲是什麼樣子的?有沒有什麼工具能夠看到每個頁中存儲了哪幾條記錄?

DB2dart 是 DB2 中自帶的一個數據庫分析利器,可以分析數據庫、表空間和表等,驗證數據庫及其對象的體系結構是否正確,還可以使用它來顯示數據庫控制文件的內容,以便從其他情況下可能無法訪問的表中抽取數據。

在本文中將通過 DB2dart 來顯示和分析數據庫中的數據,從而深入理解 DB2 的數據存儲方式,這對於提高 DBA 數據恢復技能也有一定的幫助。

DB2 中數據存儲方式概述

DB2 數據庫中有兩種類型的表空間,它們都可以在單個數據庫中使用:

系統管理的空間SMS),操作系統的文件管理器控制其中的存儲空間。

數據庫管理的空間DMS),數據庫管理器控制其中的存儲空間。

還可以創建自動存儲器表空間,該表空間將使用 SMS 或 DMS 作為基本表空間類型。數據庫管理器將根據其中包含的數據類型選擇實際類型 SMS 或 DMSSMS 用於臨時表空間,DMS 則用於其他表空間)。

本文中我們只針對 DMS 類型的表空間進行討論。

表空間是一種存儲結構,它包含表、索引、大對象和長型數據。它們允許將數據庫和表數據的位置直接指定到容器上。容器可以是目錄名、設備名或文件名,單個表空間可跨多個容器,如圖 1 所示。

圖 1. 數據庫中的表空間、容器和表

圖1. 數據庫中的表空間、容器和表

DB2 數據庫管理器會平衡分布在所有容器中的數據負荷,所有容器都將用於存儲數據。數據庫管理器在使用另一個容器之前寫入一個容器的頁數稱為擴展數據塊extent)大小。數據庫管理器並非始終從第一個容器開始存儲表數據。在圖 2 中,表空間 HUMANERS 有 4 個容器,擴展數據庫大小為 2 頁,每個頁大小是 4K 字節。 DEPARTMENT 和 EMPLOYEE 表都有 7 頁,並且都跨越所有四個容器。

圖 2. 表空間中的容器和擴展數據庫

圖2. 表空間中的容器和擴展數據庫

那每個頁中的記錄是如何存儲的呢,接下來我們利用 DB2dart 工具來更為直觀的進行理解。

DB2dart 使用簡介

工欲善其事必先利其器,那我們就先來看看 DB2dartDB2 Database Analysis and Reporting Tool)這個工具。如上文所述,DB2dart 更多的是一個診斷工具,可以用來驗證數據庫以及相關的數據庫對象是否正確,是否存在問題,還可以用來顯示數據庫控制文件的內容,以便在重建數據庫時從其他情況下無法訪問的表中抽取數據。

如果想查看 DB2dart 的相關語法,可以在命令窗口DB2CLP)中,發出 DB2dart 命令不帶任何參數),就可以看到其所有選項及其功能。在本文中我們將要用到的是:

/DD:提取格式化的表數據。命令格式:DB2dart <database name> /DD /TSI … /OI … /PS … /NP ... /V Y

在上面的命令中:

/TSI 用於指定表空間 IDtablespace ID),

/OI 用於指定對象 IDobject ID),

/PS 用於指定開始的數據頁,

/NP 用於指定所要提取的數據頁的數量,

/V 用於設定是否顯示詳細信息,Y:顯示,N:不顯示。

這裡的表空間 ID 和對象 ID 可以從 CATALOG 表 SYSCAT.TABLES 中獲取,下文中將給出具體的 SQL 語句。此外還可以使用 /RPTN 指定用來保存結果的文件名。

注意,DB2dart 工具不能在仍具有活動連接的數據庫上運行。如果存在活動連接,DB2dart 將輸出警告信息,而且有可能輸出錯誤的結果。可以通過“ FORCE APPLICATIONS ALL ”命令斷開所有的數據庫連接。也正是因為這一離線工作的特性,使得 DB2dart 在數據庫崩潰之後的恢復中能夠發揮巨大的作用。

完整內容的學習,請訪問:

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0906haoqy/index.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved