複製鏈接
請複製以下鏈接發送給好友

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
DB2(3張)
主要用於移動計算。
移動計算的真正力量並不在於移動設備本身,而是在於能夠利用來自其他來源的數據。
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歷史

DB2誕生與發展

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北美大會在美國芝加哥召開。

DB2走向全球化

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。

DB2DB2 產品組件和功能

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) 等部分,有些部分不是必須的。

DB2複製遷移

以下方法經測試,在環境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原理

學習路線圖

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錯誤處理

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

DB2精簡版

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精簡版就是一個不錯的選擇。