DB2

DB2

IBM DB2美國IBM公司開發的一套關係型資料庫管理系統,它主要的運行環境為UNIX(包括IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows伺服器版本。

DB2主要套用於大型套用系統,具有較好的可伸縮性,可支持從大型機到單用戶環境,套用於所有常見的伺服器作業系統平台下。 DB2提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模應用程式的執行能力,具有與平台無關的基本功能和SQL命令。DB2採用了數據分級技術,能夠使大型機數據很方便地下載到LAN資料庫伺服器,使得客戶機/伺服器用戶和基於LAN的應用程式可以訪問大型機數據,並使資料庫本地化及遠程連線透明化。 DB2以擁有一個非常完備的查詢最佳化器而著稱,其外部連線改善了查詢性能,並支持多任務並行查詢。 DB2具有很好的網路支持能力,每個子系統可以連線十幾萬個分散式用戶,可同時激活上千個活動執行緒,對大型分散式套用系統尤為適用。

DB2除了可以提供主流的OS/390和VM作業系統,以及中等規模的AS/400系統之外,IBM還提供了跨平台(包括基於UNIXLINUXHP-UXSunSolaris,以及SCOUnixWare;還有用於個人電腦的OS/2作業系統,以及微軟的Windows 2000和其早期的系統)的DB2產品。DB2資料庫可以通過使用微軟的開放資料庫連線(ODBC)接口,Java資料庫連線(JDBC)接口,或者CORBA接口代理被任何的應用程式訪問。

基本介紹

  • 軟體名稱:DB2
  • 開發商:IBM
  • 軟體平台:Unix,Windows,Linux 
  • 軟體版本:V10.5
  • 更新時間:2013年6月
  • 軟體語言:sql
  • 軟體授權:專業版 免費版
版本,歷史,誕生與發展,走向全球化,DB2 產品組件和功能,複製遷移,原理,常用命令,錯誤處理,精簡版,

版本

DB2有眾多的版本,或者是許可證。為了弱化“版本”的概念增強可選擇性,IBM允許客戶不購買他們不需要的特性。示例版本包括Express、Workgroup和Enterprise版本。基於Linux/UNIX/Windows的最複雜的版本是DB2 Data Warehouse Enterprise Edition,縮寫為DB2 DWE。這個版本的偏重於混合工作負荷(線上交易處理和數據倉庫)和商業智慧型的實現。DB2 DWE包括一些商務智慧型的特性例如ETL、數據發掘、OLAP加速以及in-line analytics。
DB2 Everyplace
主要用於移動計算。
移動計算的真正力量並不在於移動設備本身,而是在於能夠利用來自其他來源的數據。
DB2 Everyplace 不僅僅是一種移動計算基礎設施。它是一個完整的環境,包含了構建、部署和支持強大的電子商務應用程式所需的工具。DB2 Everyplace 提供一個“指紋” 引擎(大約200 KB),其中包含所有的安全特性,比如表加密和提供高性能的高級索引技術。
它可以在當今最常見的各種手持設備上順利地運行(提供多執行緒支持),比如:Palm OS、Microsoft Windows Mobile Edition、任何基於Windows 的32 位作業系統、Symbian、QNX Neutrino、Java 2 Platform. Micro Edition(J2ME)設備(比如RIM 的Blackberry pager)、嵌入式Linux 發布版(比如BlueCat Linux)等等。
DB2 Personal Edition
DB2 Personal Edition(DB2 Personal)是單用戶RDBMS,運行於低價的商用硬體桌面計算機上。
DB2 Personal 包含DB2 Express 的所有特性,但是有一個例外:遠程客戶機無法連線運行這個DB2 版本的資料庫
DB2 Express - C
DB2 Express - C 其實 不算是DB2 系列的一個版本,但是它提供了DB2 Express 的大多數功能。2006 年1 月,IBM 發布了這個特殊的DB2 免費版本,可以用於基於Linux 和Windows 的作業系統。
DB2 Express Edition
DB2 Express Edition(DB2 Express)是一種功能全面的支持Web 的客戶機/伺服器RDBMS。DB2 Express 可以用於基於Windows 和Linux 的工作站。DB2 Express 提供一個低價的入門級伺服器,主要用於小型企業和部門的計算任務。
DB2 Workgroup Edition
DB2 Workgroup Edition(DB2 Workgroup)和DB2 Express Edition 功能相同,只是在伺服器上可以安裝的記憶體和價值單元(等於一個伺服器處理器核心的能力)數量方面有區別。
DB2 Enterprise Edition
DB2 Enterprise Edition(DB2 Enterprise)是一種功能全面的支持Web 的客戶機/伺服器RDBMS。它可以用於所有支持的UNIX 版本、Linux 和Windows。DB2 Enterprise 適合作為大型和中型的部門伺服器。DB2 Enterprise 包含DB2 Express 和DB2 Workgroup 的所有功能,還添加了其他功能。
Data Enterprise Developer Edition
Data Enterprise Developer Edition(DEDE)是為應用程式開發人員提供的特殊版本。這個版本提供了幾個信息管理產品,使應用程式開發人員可以對應用程式進行設計、構建和建立原型,產生的應用程式可以部署在任何IBM 信息管理軟體客戶機或伺服器平台上。在DB2 9 中,這個軟體包已經取消了,由DB2 Express - C 取代。

歷史

誕生與發展

DB2擁有悠久的歷史並且被很多人認為是最早使用SQL(同樣最早被IBM開發)的資料庫產品。
1968:IBM 在 IBM 360 計算機上研製成功了 IMS V1,這是第一個也是最著名的和最為典型的層次型資料庫管理系統。至今仍然還有企業在使用呢。
1970:這是資料庫歷史上劃時代的一年,IBM公司的研究員E.F.Codd 發表了業界第一篇關於關係資料庫理論的論文"A Relational Model of Data for Large Shared Data Banks",首次提出了關係模型的概念。這篇論文是計算機科學史上最重要的論文之一,奠定了Codd博士"關係資料庫之父"的地位。
1973:IBM研究中心啟動了 System R 項目,研究多用戶與大量數據下關係型資料庫的可行性,它為 DB2 的誕生打下了良好基礎。由此取得了一大批對資料庫技術發展具有關鍵性作用的成果,該項目於1988年被授予ACM軟體系統獎。
1974:IBM研究員Don Chamberlin 和 Ray Boyce 通過 System R 項目的實踐,發表了論文"SEQUEL:A Structured English Query Language",提出了 SEQUEL 語言,此即 SQL 語言的原型。
1975:IBM研究員Don Chamberlin 和 Morton Astrahan的論文 "Implentation of a Structured English Query Language",在 SEQUEL 的基礎上 描述了 SQL 語言的第一個實現方案。這也是 System R 項目得出的重大成果之一。
1976:IBM System R 項目組發表了論文"A System R: Relational Approach to Database Management",描述了一個關係型資料庫的原型。IBM 的研究員Jim Gray 發表了名為"Granularity of Locks and Degrees of Consistency in a Shared DataBase"的論文,正式定義了資料庫事務的概念和數據一致性的機制。
1977:System R 原型在3個客戶處進行了安裝,這 3 個客戶分別是:波音公 司、Pratt & Whitney 公司和 Upjohn 藥業。這標誌著 System R 從技術上已經是 一個比較成熟的資料庫系統,能夠支撐重要的商業套用了。
1979:IBM研究員Pat Selinger在她的論文"Access Path Selection in a Relational Database Management System"中描述了業界第一個關係查詢最佳化器
1980:IBM發布了 S/38 系統,該系統中集成了一個以 System R 為原型的資料庫伺服器。為了方便應用程式的移植,它的 API 與 S/3、S/32 的 API 一致。
1981:由於發明了關係型資料庫模型,IBM 的研究員E.F.Codd 接受了ACM 圖靈獎,這是計算機科學界的最高榮譽。Codd 博士也是繼查爾斯.巴赫曼(Charles W. Bachman) 之後,又一位由於在資料庫領域做出巨大貢獻而獲此殊榮的計算機科學家。
1982:IBMPC 的出現標誌著 PC 產業開始孕育發展。在以後相當長的一段時間內,在各種品牌的個人電腦上標記著的"IBM PC Compatible"字樣都見證著 IBM 在 這個領域的輝煌。
1982:IBM發布了 SQL/DS for VSE and VM 。這是業界第一個以 SQL 作為接口的商用資料庫管理系統。該系統也是基於 System R 原型所設計的。
1983:IBM發布了DATABASE 2(DB2)for MVS(內部代號為"Eagle")。
1986:System/38 V7 發布,該系統首次配置了查詢最佳化器,能夠對應用程式的存取計畫進行最佳化。
1987:IBM發布帶有關係型資料庫能力的 OS/2 V1.0擴展版,這是IBM第一次把關係型資料庫處理能力擴展到微機系統。這也是 DB2 for OS/2、Unix and Window 的雛形。
1988:IBM發布了SQL/400,為集成了關係型資料庫管理系統的AS/400伺服器提供了SQL支持。IDUG(國際DB2用戶組織)組織成立。
1989:IBM定義了 Common SQL 和 IBM 分散式關係資料庫架構(DRDA),並在 IBM 所有的關係資料庫管理系統上加以實現。 第一屆 IDUG北美大會在美國芝加哥召開。

走向全球化

1992:第一屆 IDUG歐洲大會在瑞士日內瓦召開。這標誌著 DB2 套用的全球化。
1993:
1.IBM發布了DB2 for OS/2 V1(DB2 for OS/2 可以被簡寫為DB2/2)和 DB2 forRS/6000V1(DB2 for RS/6000 可以被簡寫為DB2/6000),這是 DB2 第 一次在Intel 和Unix 平台上出現。
2.Louis V. Gerstner 入主 IBM。
1994:
1.DB2 For MVS V4 通過並行 Sysplex 技術的實現在主機上引入了分散式計算(數據共享)。
2.IBM發布了運行在 RS/6000 SP2 上的 DB2 並行版 V1,DB2 從此有了能夠適應大型數據倉庫和複雜查詢任務的可擴展架構。IBM 將 DB2 Common Server 擴展到 HP-UX 和 Sun Solaris 上。DB2 開始支持其他公司開發的 UNIX 平台。 DB2/400 集成在 OS/400 V3.1中發布,並且引入了並行機制、存儲過程和參照完整性等機制。同時,IBM 宣布在 OS/2 和 AIX 平台上的 DB2 產品能夠對多媒體數據和面向對象應用程式提供支持。
1995:
1.IBM發布了 DB2 Common Server V2,這是第一個能夠在多個平台上運行的"對象-關係型資料庫"(ORDB)產品,並能夠對 Web 提供充分支持。DataJoiner for AIX 也誕生在這一年,該產品賦予了 DB2 對異構資料庫的支持能力。DB2 在 Windows NT 和 SINIX平台上的第一個版本(DB2 V2)發布。
2.IBM發布了在 AIX 和 MVS 平台上的數據挖掘技術,用於管理大文本、圖像、音頻、視頻和指紋信息的擴展器(Extender)以及可以對數據倉庫進行可視化構造和管理的Visual Warehouse。
3.IBM發布了 DB2 WWW Connection V1 for OS/2 and AIX(該產品後來被更名為Net.Data)。該產品可以將資料庫中的數據快速發布到 Web。第一屆 IDUG 亞太區大會在澳大利亞悉尼召開。這年IBM 併購了 Lotus Development Corp。
1996:
1.IBM發布 DB2 V2.1.2 ,這是第一個真正支持 JAVA 和 JDBC 的資料庫產品。
2.DataJoiner 開始支持對非關係型資料庫(比如 IMS 和 VSAM)的存取。
3.IBM發布了 Intelligent Miner,該產品可以對基於 DB2 的數據源實施數據挖掘。
4.IBM併購 Tivoli。 IBM 將 DB2 更名為 DB2 Universal Database,這是第一個能夠對多媒體和 Web 進行支持的RDBMS。該系統具有很好的伸縮性,可以從桌面系統擴展到大型企業,適應單處理器、 SMP 和 MPP 計算環境,並可以運行在所有主流作業系統和硬體平台上。 DB2 V5 是以前的兩個產品的合併:DB2 Common Server V 2.1.2 和 DB2 並行版 1.2。
5.IBM發布了數字圖書館產品,這是一個多媒體資產管理產品,也是 IBM Content Manager 的前身。
6.DB2 Magzine 第一期發布,DB2 有了自己專門的技術刊物。
1997:
1.IBM發布了可以支持 Web 的 DB2 for OS/390 V5,這是當時唯一能夠支持64, 000個並發用戶和百 TB 級別的資料庫產品。
2.IBM發布了DB2 UDB for UNIX、Windows and OS/2,該產品支持 ROLLUP 和 CUBE 函式,對在線上分析處理(OLAP)具有重要意義。
3.IDUG 第一次技術論壇在加拿大多倫多召開。
4.IBM發布了用於企業級內容管理的 EDMSuite,該產品包含了用於管理計算機生成報表的 OnDemand 和 管理圖像的 ImagePlus VisualInfo。
5.IBM基於 RS/6000 SP 架構的超級計算機"深藍"在西洋棋的 6 番棋對抗中戰勝了世界棋王卡斯帕羅夫
1998:
1.IBM發布了 DB2 OLAP Server,這是一個基於 DB2 的完整的 OLAP Solution。這個產品是和 Arbor Software(Hyperion的前身)合作開發的。
2.IBM發布了 DB2 Data Links 技術,該技術可使 DB2 對外部檔案進行管理。
3.DB2的 shared-nothing集群技術擴展到 Windows 和 Solaris 平台。
4.IBM發布了 DB2 Spatial Extender,這是與ESRI公司在DataJoiner基礎 上聯合開發的,該產品賦予了DB2 對地理信息數據的存取能力。
5.IBM發布了 ContentConnect,該產品是 Enterprise Information Portal(EIP)的前身。
6.DB2 對 SCO UnixWare 平台提供支持。
7.DB2 UDB V5.2 增加了對 SQLJ、Java 存儲過程和用戶自定義函式的支持。
8.IBM發布 DB2 UDB for AS/400,使 AS/400 成為充分支持電子商務的機 型。
1999:
1/IBM為了對移動計算提供支持,發布了DB2 UDB 衛星版和DB2 Everywhere(這是一個適用於手持設備的微型關係資料庫管理系統,後稱為DB2 Everyplace)。
2/IBM發布了 Enterprise Information Portal,該產品可以跨數字圖書 館和 EDMSuite 提供一個統一的聯合檢索功能。
3/DB2增加了能夠識別 XML 語言的文本檢索功能,從而引入了 XML 支 持,並啟動了DB2 XML Extender 的 beta 計畫。
4/IBM發布了 Intel 平台上的 DB2 UDB for Linux。
5/IBM 研究機構將 DB2 的聯邦(federation)功能和 Garlic 技術(Garlic的目標是使能大規模多媒體信息系統,集成到生命科學解決方案DiscoveryLink 中
2000:
1/IBM發布了 DB2 XML Extender,成為在業界第一個為資料庫提供內置 XML 支持的廠商。
2/IBM將 Visual Warehouse 集成到 DB2 中,為DB2 提供了內置的數據倉庫管理功能。
3/DB2對Linux 的支持進一步增強,能夠支持基於 Intel 的 Linux集群、 發布了可以運行在主機上的 DB2 UDB for Linux和可以運行在嵌入式Linux上的 DB2 Everyplace。
4/DB2開始支持 NUMA-Q 平台,可以運行在該平台上的類 UNIX作業系統DYNIX/PTX 上。
5/DB2通過 Net.Search Extender 提供了 in-memory 高速文本檢索功能。
6/IBM啟動了資料庫管理工具業務,起初著重於為主機上的 IMS 和 DB2 提供高效管理工具,最終這項業務擴展到 UNIX、Linux 和 Windows 平台。 Informix資料庫產品也在支持之列。
7/IBM開始通過在DB2中集成 DataJoiner 來提供數據聯邦(federation)功能 。
8/IBM發布了用於管理數字資產的Content Manager。IBM 數字圖書館和 EDMSuite 產品都被包含在一個單一的架構中來提供多媒體資產管理和企業內 容管理。荷蘭國家圖書館、梵蒂岡圖書館都是最早的用戶。
9/DB2在主機上銷售出了它的第10000個許可證。
2001:
1/IBM以 10 億美金收購了 Informix 的資料庫業務,這次收購擴大了IBM 的分散式資料庫業務。
2/DB2 OLAP Server中增添了數據挖掘功能。
3/IBM發布了第一個能夠支持多種平台的 DB2 工具。
4/DB2提供了基於 SOAP 的 Web 服務的支持。DB2 XML Extender和存儲過程可以使DB2成為 Web 服務的提供者。
5/IBM科學家在納米碳管電晶體技術領域取得突破。IBM 用納米碳管制造出了世界上第一批納米電晶體--由直徑 10 個原子大小的碳原子組成的小圓柱結 構,比當今基於矽的電晶體小 500 倍。
6/DB2拓寬了其數據聯邦(federation)的能力,可以對WebSphere MQ訊息佇列和生命科學領域特定格式的檔案提供支持。
7/IBM發布了 DB2 UDB for OS/390。
2002:
1/IBM發布了 Xperanto,這是一個基於標準的信息集成中間件的演示版, 可以用來最佳化對分散數據源的存取。這個演示版本使用了XML、Xquery、Web 服 務、數據聯邦(federation)和全文檢索等先進技術。
2/IBM宣布計畫收購 Rational Software Corp,從而使得 IBM軟體能夠 支持從設計、開發、部署到管理和維護的完整過程。
3/DB2通過基於 SOAP 的 Web 服務擴展了數據聯邦(federation)的能力。並可以作為 Web 服務的使用者出現在 Web 服務架構中。
4/DB2 OLAP Server中添加了hybrid(多維和關係)分析能力。
5/作為IBM 自主運算策略的一部分,SMART(自我管理和資源調節)技術 在 DB2 UDB V8.1 中首次正式套用。
6/IBM併購 Tarian Sotware,從而加強了Content Manager 中記錄管理組 件的功能。
2003:
1/IBM將數據管理產品統一更名為信息管理產品,旨在改變很多用戶對於 DB2 家族產品只能完成單一的數據管理的印象,強調了 DB2 家族在信息的處理與集成方面的能力。
2/DYNIX/ptxDB2 發布了 DB2 Information Integrator(該產品由以 前的 DB2 DataJoiner和 Enterprise Information Portal演化而來),該款軟體旨在幫助客戶即時訪問、集成、管理和分析存儲於企業內外任何平台上的各類信息。
2004:IBM DB2 在TPC 的兩項測試中屢次刷新該測試的新紀錄,在計算領 域的歷史上樹立了新的里程碑。其中在TPC-C 的測試中,它創造了計算速度領域新的世界記錄,徹底粉碎了在該測試中每分鐘三百萬次交易的極限。
2005:經過長達5年的開發,IBM DB2 9將傳統的高性能、易用性與自描述、靈活的XML相結合,轉變成為互動式、充滿活力的數據伺服器。
2006:IBM發布DB2 9,將資料庫領域帶入XML時代。IT建設業已進入SOA(Service-Oriented Architecture)時代。實現SOA,其核心難點是順暢解決不同套用間的數據交換問題。XML以其可擴展性、 與平台無關性和層次結構等特性,成為構建SOA時不同套用間進行數據交換的主流語言。而如何存儲和管理幾何量級的XML數據、直接支持原生XML文檔成為SOA構建效率和質量的關鍵。在這這種情況下,IBM推出了全面支持Original XML的DB2 9,使XML數據的存儲問題迎刃而解,開創了一個新的XML資料庫時代。同年1月30日,IBM發布了一個DB2免費版本DB2Express-C。

DB2 產品組件和功能

DB2 資料庫的產品組件如圖
DB2 資料庫的產品組件DB2 資料庫的產品組件
DB2 Engine
DB2 Engine 是整個資料庫系統的核心,提供了 DB2 的基本功能。 DB2 引擎類似汽車的發動機,負責管理和控制對數據的存取;負責生成程式包(存儲存取計畫的資料庫對象);提供事務的管理; 保障數據的完整性和數據保護; 提供應用程式並發控制。 資料庫引擎(DB2Engine)設計的完善與否,決定了資料庫系統是否穩定和高效。 DB2 Engine 是所有資料庫中最強大的資料庫引擎。
DB2 客戶機
DB2 V9 大大簡化了將應用程式連線到 DB2 資料庫所需的基礎設施的部署。 DB2 V9
提供以下客戶機:
DB2 V9 Runtime Client (DB2 RTCL)DB2 V9 Client
Java Common Client (JCC)
DB2 V9 Client Lite
還有 通信支持(Communication Support),DB2 Relational Connect, DB2 Data Joiner, DB2 擴展器(DB2 Extender) 等部分,有些部分不是必須的。

複製遷移

以下方法經測試,在環境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空間中,數據的load速度在60-100萬條/min左右。
背景:需要更改資料庫表空間,或者需要將資料庫中所有表的數據遷移到一個新的資料庫中。
步驟:
1.通過db2控制台(db2cc)選中源資料庫中的所有表,將其導出成DDL腳本
2.根據需要對腳本進行必要的修改,譬如更改表空間為GATHER;
3.新建資料庫,新建DMS表空間:GATHER;
4.將DDL腳本在此資料庫中執行;
5.編寫代碼查詢源資料庫中的所有表,自動生成export腳本;
6.編寫代碼查詢源資料庫中的所有表,自動生成import腳本;
7.連線源資料庫執行export腳本;
8.連線目標資料庫執行import腳本;
附錄1:生成export腳本代碼示例:/**
* 創建導出腳本* @param conn
複製中的字元集轉換複製中的字元集轉換
* @param creator 表創建者
* @param filePath
*/
public void createExportFile(Connection conn,String creator,String filePath) throws Exception {
DBBase dbBase = new DBBase(conn);
String selectTableSql 2= "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
try {
dbBase.executeQuery(selectTableSql2);
} catch (Exception ex) {
throw ex;
} finally {
dbBase.close();
}
DBResult result = dbBase.getSelectDBResult();
List list = new ArrayList();
while (result.next()) {
String table = result.getString(1);
list.add(table);
}
StringBuffer sb = new StringBuffer();
String enterFlag = " ";
for (int i = 0; i < list.size();i++) {
String tableName = (String)list.get(i);
sb.append("db2 "export to aa" + String.valueOf(i+1)+ ".ixf of ixf select * from " + tableName + """);
sb.append(enterFlag);
}
String str = sb.toString();
FileUtility.saveStringToFile(filePath, str, false);
} 附錄2:生成import腳本代碼示例:/**
* 創建裝載腳本
* @param conn
* @param creator 表創建者
* @param filePath
*/
public void createLoadFile(Connection conn,String creator,String filePath) throws Exception {
DBBase dbBase = new DBBase(conn);
String selectTableSql = "select name from sysibm.systables where creator = '" + creator + "' and type='T'";
try {
dbBase.executeQuery(selectTableSql);
} catch (Exception ex) {
throw ex;
} finally {
dbBase.close();
}
DBResult result = dbBase.getSelectDBResult();
List list = new ArrayList();
while (result.next()) {
String table = result.getString(1);
list.add(table);
}
StringBuffer sb = new StringBuffer();
String enterFlag = " ";
for (int i = 0; i < list.size();i++) {
String tableName = (String)list.get(i);
sb.append("db2 "load from aa" + String.valueOf(i+1)+ ".ixf of ixf into " + tableName + " COPY NO without prompting "");
sb.append(enterFlag);
}
String str = sb.toString();
FileUtility.saveStringToFile(filePath, str, false);
} 附錄3:export腳本示例db2 connect to testdb user test password test
db2 "export to aa1.ixf of ixf select * from table1"
db2 "export to aa2.ixf of ixf select * from table2"
db2 connect reset 附錄4:import腳本示例db2 connect to testdb user test password test
db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
db2 connect reset

原理

學習路線圖
DB2

常用命令

1.關閉db2
db2stop 或db2stop force。
在腳本中一般兩個都寫上,避免使用db2stop force命令,如:
db2stop
db2stop force
2.啟動db2
db2start
3.創建資料庫
db2 create db <db name>或db2 create db using codeset GBK territory CN
4.刪除資料庫
執行此操作要小心。
db2 drop db <db name>
如果不能刪除,斷開所有資料庫連線或者重啟db2。
5.斷開資料庫連線
db2 force application all
6.連線資料庫
db2 connect to <db name> user <username> using <passWord>
7.斷開資料庫連線
斷開當前資料庫連線:
db2 connect reset或者:db2 disconnect current
斷開所有資料庫的連線:
db2 disconnect all
8.備份資料庫
db2 backup db <db name>
備註:執行以上命令之前需要斷開資料庫連線
9.恢復資料庫
db2 restore db <source db name>
10.導出數據檔案
db2move <db name> export
[-sn <模式名稱,一般為db2admin>]
[-tn <表名,多個之間用逗號分隔>]
11.導入數據檔案
db2move <db name> import
12.列出資料庫中所有db
db2 list db directory
13.進入db2命令環境
在“運行”中執行:db2cmd
14.獲取db2資料庫管理配置環境信息
db2 get dbm cfg
15.獲取db2某個資料庫資料庫管理配置環境信息
db2 get db cfg for <db name>
或者:連線至某個資料庫以後執行db2 get db cfg。
16.設定聯合資料庫為可用(默認聯合資料庫不可用)
db2 update dbm cfg using federated yes
17.更改db2日誌空間的大小
備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則參數需要修改。
db2 UPDATE DB CFG FOR <db name> USING logretain OFF
logPRimary 3 logsecond 2 logfilsiz 25600;
如果頁大小是4KB,則以上命令創建3個100M的日誌檔案,占用300MB硬碟空間。25600*4KB=102400KB。
DB2 CREATE USER TEMPORARY TABLESPACE STMaspACE PAGESIZE 32 K
MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000)
EXTENTSIZE 256
19.獲取資料庫管理器的快照數據
db2 –v get snapshot for dbm
20.顯示進行程號
db2 list applications show detail
21.調查錯誤
sqlcode:產品特定錯誤碼
sqlstate:DB2系列產品的公共錯誤碼,符合ISO/ANSI 92SQL標準。
調查sqlcode : db2
調查sqlstate: db2 ? 08004
22.創建表空間
rem 創建緩衝池空間 8K
db2 connect to gather
db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K
rem 創建表空間:STMA
rem 必須確認路徑正確
rem D:\DB2Container\Stma
db2 drop tablespace stma
db2 CREATE
REGULAR TABLESPACE STMA PAGESIZE 8 K
MANAGED BY SYSTEM
USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8
OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL
STMABMP
DROPPED TABLE RECOVERY OFF
db2 connect reset
23. 將暫掛的數據恢復到前滾狀態
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE
24.備份表空間
BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 )
TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
25.創建db2工具資料庫
db2 create tools catalog systools create new database toolsdb
26.如何進行增量/差量備份
增量:上一次完整備份至本次備份之間增加的數據部分;
差量(delta):上次備份以來(可能是完整備份增量備份或者差量備份)至本次備份之間增加的數據部分;
27.更新所有表的統計信息
db2 -v connect to DB_NAME
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v reorgchkupdate statistics on table all
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v terminate
28.對一張表運行統計信息
db2 -v runstatson table TAB_NAMEand indexes all
29.查看是否對資料庫執行了RUNSTATS
db2 -v "select tbname, nleaf, nlevels,
stats_timefrom sysibm.sysindexes"
30.更改緩衝池的大小,緩衝池中,當syscat.bufferpools的npages是-1時,由資料庫的配置參數bufferpage控制緩衝池的大小。
將npages的值更改為-1的命令:
db2 -v connect to DB_NAME
db2 -v select * from syscat.bufferpools
db2 -v alter bufferpoolIBMDEFAULTBP size -1
db2 -v connect reset
db2 -v terminate
更改資料庫配置參數BufferPages的命令如下:
db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
db2 -v terminate
31.查看資料庫監視內容列表
db2 -v get monitor switches
32.打開某個資料庫監視內容
db2 -v update monitor switches using bufferpoolon
33.獲取資料庫快照
db2 -v get snapshot for all databases > snap.out
db2 -v get snapshot for dbm>> snap.out
db2 -v get snapshot for all bufferpools>> snap.out
db2 -v terminate
34.重置資料庫快照
db2 -v reset monitor all
35.計算緩衝池命中率 理想情況下緩衝池命中率在95%以上,計算公式如下:
(1 -((buffer pool data physical reads + buffer pool index physical reads)
/(buffer pool data logical reads + pool index logical reads))) *100%
36.創建db2實例
db2icrt <實例名稱>
37.刪除db2實例
db2idrop <實例名稱>
38.設定當前db2實例
set db2intance=db2
39.顯示db2擁有的實例
db2ilist
40.恢復離線增量備份資料庫的命令
DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM
D:\backup\autobak\db2 TAKEN AT
41.創建樣本資料庫
在unix平台,使用:
sqllib/bin/db2sampl <path>
在windows,os/2平台,使用:db2sampl e,e是可選參數,指定將創建資料庫的驅動器;
42.列出資料庫中所有的表
db2 list tables
43.列出某個表的數據結構
db2 describe table v_ro_role
44.給表增加列
ALTER TABLE STAFF
ADD COLUMN PNHONE VARCHAR(20)
45.數據遷移方法1
export腳本示例
db2 connect to testdb user test password test
db2 "export to aa1.ixf of ixf select * from table1"
db2 "export to aa2.ixf of ixf select * from table2"
db2 connect reset
import腳本示例
db2 connect to testdb user test password test
db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
db2 connect reset

錯誤處理

DB2電腦程式一個重要的特徵就是錯誤處理。SQL communications area(SQLCA)結構曾一度被專門用於DB2程式在每個SQL語句被執行後向應用程式返回錯誤信息。在SQLCA block中常見錯誤診斷被體現在SQLCODE中。
SQL返回代碼的值對應為:
· 0表示成功執行
· 正值表示成功執行但是有一個或多個警告。例如+100表示沒有行被發現。
· 負值表示出現錯誤。例如-911表示鎖逾時(或死鎖),並觸發撤消程式。

精簡版

DB2 Express-C資料庫提供全球範圍的下載,但是並不是所有地方都有寬頻網路。因此,IBM發布了一個基於Windows的DB2 Express-C 9.7.2精簡版。較之完全版,精簡版驚人的縮減了44%。
不同於精簡版,DB2 Express-C(完全版)包括控制中心、全文檢索、配置助手以及第一步嚮導。同時完全版的用戶界面還支持非英語語言。但是,如果用戶不需要這些特性,則可以選擇DB2 Express-C(精簡版)進行快速下載和簡單安裝。例如,如果在Windows伺服器上設定一個用Data Studio來進行遠程管理的DB2資料庫,那么DB2 Express-C精簡版就是一個不錯的選擇。
精簡版精簡版

相關詞條

熱門詞條

聯絡我們