DB2

DB2

IBM公司研製的一種關係型資料庫系統。DB2主要套用於大型套用系統,具有較好的可伸縮性,可支持從大型機到單用戶環境,套用於OS/2、Windows等平台下。DB2提供了高層次的數據利用性、完整性、安全性、可恢復性,以及小規模到大規模應用程式的執行能力,具有與平台無關的基本功能和SQL命令。DB2採用了數據分級技術,能夠使大型機數據很方便地下載到LAN資料庫伺服器,使得客戶機/伺服器用戶和基於LAN的應用程式可以訪問大型機數據,並使資料庫本地化及遠程連線透明化。

基本信息

簡介

DB2操作界面
它以擁有一個非常完備的查詢最佳化器而著稱,其外部連線改善了查詢性能,並支持多任務並行查詢。DB2具有很好的網路支持能力,每個子系統可以連線十幾萬個分散式用戶,可同時激活上千個活動執行緒,對大型分散式套用系統尤為適用。
DB2是IBM出口的一系列關係型資料庫管理系統,分別在不同的作業系統平台上服務。雖然DB2產品是基於UNIX的系統和個人計算機作業系統,在基於UNIX系統和微軟在windows系統下的Access方面,DB2追尋了ORACLE的資料庫產品。

操作環境

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

發展歷史

DB2模式
1997:
1.IBM發布了可以支持Web的DB2forOS/390V5,這是當時唯一能夠支持64,000個並發用戶和百TB級別的資料庫產品。
2.IBM發布了DB2UDBforUNIXWindowsandOS/2,該產品支持ROLLUP和CUBE函式,對在線上分析處理(OLAP)具有重要意義。
3.IDUG第一次技術論壇在加拿大多倫多召開。
4.IBM發布了用於企業級內容管理的EDMSuite,該產品包含了用於管理計算機生成報表的OnDemand和管理圖像的ImagePlusVisualInfo。
5.IBM基於RS/6000SP架構的超級計算機"深藍"在西洋棋的6番棋對抗中戰勝了世界棋王卡斯帕羅夫
1998:
1.IBM發布了DB2OLAPServer,這是一個基於DB2的完整的OLAPSolution。這個產品是和ArborSoftware(Hyperion的前身)合作開發的。
2.IBM發布了DB2DataLinks技術,該技術可使DB2對外部檔案進行管理。
3.DB2的shared-noting集群技術擴展到Windows和Solaris平台。
4.IBM發布了DB2SpatialExtender,這是與ESRI公司在DataJoiner基礎上聯合開發的,該產品賦予了DB2對地理信息數據的存取能力。
5.IBM發布了ContentConnect,該產品是EnterpriseInformationPortal(EIP)的前身。
6.DB2對SCOUnixWare平台提供支持。
7.DB2UDBV5.2增加了對sqlj、Java存儲過程和用戶自定義函式的支持。
8.IBM發布DB2UDBforAS/400,使AS/400成為充分支持電子商務的機型。
DB2結構框架
1999:
1/IBM為了對移動計算提供支持,發布了DB2UDB衛星版DB2Everywhere(這是一個適用於手持設備的微型關係資料庫管理系統,現在的版本被稱為DB2Everyplace)。
2/IBM發布了EnterpriseInformationPortal,該產品可以跨數字圖書館和EDMSuite提供一個統一的聯合檢索功能。
3/DB2增加了能夠識別XML語言的文本檢索功能,從而引入了XML支持,並啟動了DB2XMLExtender的beta計畫。
4/IBM發布了Intel平台上的DB2UDBforLinux。
5/IBM研究機構將DB2的聯邦(federation)功能和Garlic技術(Garlic的目標是使能大規模多媒體信息系統,
2000:
1/IBM發布了DB2XMLExtender,成為在業界第一個為資料庫提供內置XML支持的廠商。
2/IBM將VisualWarehouse集成到DB2中,為DB2提供了內置的數據倉庫管理功能。
3/DB2對Linux的支持進一步增強,能夠支持基於Intel的Linux集群、發布了可以運行在主機上的DB2UDBforLinux和可以運行在嵌入式Linux上的DB2Everyplace
4/DB2開始支持NUMA-Q平台,可以運行在該平台上的類UNIX作業系統DYNIX/PTX上。
5/DB2通過Net.SearchExtender提供了in-memory高速文本檢索功能。
6/IBM啟動了資料庫管理工具業務,起初著重於為主機上的IMS和DB2提供高效管理工具,最終這項業務擴展到UNIXLinuxWindows平台。Informix資料庫產品也在支持之列。
7/IBM開始通過在DB2中集成DataJoiner來提供數據聯邦(federation)功能
8/IBM發布了用於管理數字資產的ContentManager。IBM數字圖書館和EDMSuite產品現在都被包含在一個單一的架構中來提供多媒體資產管理和企業內容管理。荷蘭國家圖書館、梵蒂岡圖書館都是最早的用戶。
9/DB2在主機上銷售出了它的第10000個許可證。
DB2選單欄
2001:
1/IBM以10億美金收購了Informix的資料庫業務,這次收購擴大了IBM的分散式資料庫業務。
2/DB2OLAPServer中增添了數據挖掘功能。
3/IBM發布了第一個能夠支持多種平台的DB2工具
4/DB2提供了基於SOAPWeb服務的支持。DB2XMLExtender和存儲過程可以使DB2成為Web服務的提供者。
5/IBM科學家在納米碳管電晶體技術領域取得突破。IBM用納米碳管製造出了世界上第一批納米電晶體--由直徑10個原子大小的碳原子組成的小圓柱結構,比當今基於矽的電晶體小500倍。
6/DB2拓寬了其數據聯邦(federation)的能力,可以對WebSphereMQ訊息佇列和生命科學領域特定格式的檔案提供支持。
7/IBM發布了DB2UDBforOS/390.
2002:
1/IBM發布了Xperanto,這是一個基於標準的信息集成中間件的演示版,可以用來最佳化對分散數據源的存取。這個演示版本使用了XMLXqueryWeb服務數據聯邦(federation)和全文檢索等先進技術。
2/IBM宣布計畫收購RationalSoftwareCorp,從而使得IBM軟體能夠支持從設計、開發、部署到管理和維護的完整過程。
3/DB2通過基於SOAP的Web服務擴展了數據聯邦federation)的能力。並可以作為Web服務的使用者出現在Web服務架構中。
4/DB2OLAPServer中添加了hybrid多維和關係)分析能力。
5/作為IBM自主運算策略的一部分,SMART(自我管理和資源調節)技術在DB2UDBV8.1中首次正式套用。
6/IBM併購TarianSotware,從而加強了ContentManager中記錄管理組件的功能
DB2DB2
2003:
1/IBM將數據管理產品統一更名為信息管理產品,旨在改變很多用戶對於DB2家族產品只能完成單一的數據管理的印象,強調了DB2家族在信息的處理與集成方面的能力。
2006:
IBM發布DB29,將資料庫領域帶入XML時代。IT建設業已進入SOA(Service-OrientedArchitecture)時代。實現SOA,其核心難點是順暢解決不同套用間的數據交換問題。XML以其可擴展性、與平台無關性和層次結構等特性,成為構建SOA時不同套用間進行數據交換的主流語言。而如何存儲和管理幾何量級的XML數據、直接支持原生XML文檔成為SOA構建效率和質量的關鍵。在這這種情況下,IBM推出了全面支持OriginalXML的DB29,使XML數據的存儲問題迎刃而解,開創了一個新的XML資料庫時代。DB2產品組件和功能

DB2產品組件和功能

DB2Engine
DB2Engine是整個資料庫系統的核心,提供了DB2的基本功能。DB2引擎類似汽車的發動機,負責管理和控制對數據的存取;負責生成程式包(存儲存取計畫的資料庫對象);提供事務的管理;保障數據的完整性和數據保護;提供應用程式並發控制。資料庫引擎(DB2Engine)設計的完善與否,決定了資料庫系統是否穩定和高效。DB2Engine是所有資料庫中最強大的資料庫引擎。
DB2客戶機
DB2V9大大簡化了將應用程式連線到DB2資料庫所需的基礎設施的部署。DB2V9
提供以下客戶機:
DB2V9RuntimeClient(DB2RTCL)DB2V9Client
JavaCommonClient(JCC)
DB2V9ClientLite
還有通信支持(CommunicationSupport),DB2RelationalConnect,DB2DataJoiner,DB2擴展器(DB2Extender)等部分,有些部分不是必須的。

複製遷移

以下方法經測試,在環境IBMx346,3.2G×2,4G,RAID1,DB2V8.2.4,Win2000AdvServer,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腳本代碼示例:/**
*創建導出腳本*@paramconn
*@paramcreator 表創建者
*@paramfilePath
*/publicvoidcreateExportFile(Connectionconn,Stringcreator,StringfilePath)throwsException{
DBBasedbBase=newDBBase(conn);
StringselectTableSql2="selectnamefromsysibm.systableswherecreator='"+creator+"'andtype="T"";
try{
dbBase.executeQuery(selectTableSql2);
}catch(Exceptionex){
throwex;
}finally{
dbBase.close();
}
DBResultresult=dbBase.getSele

DB2DB2

ctDBResult();
Listlist=newArrayList();
while(result.next()){
Stringtable=result.getString(1);
list.add(table);
}
StringBuffersb=newStringBuffer();
StringenterFlag="";
for(inti=0;i<list.size();i++){
StringtableName=(String)list.get(i);
sb.append("db2"exporttoaa"+String.valueOf(i+1)+".ixfofixfselect*from"+tableName+""");
sb.append(enterFlag);
}
Stringstr=sb.toString();
FileUtility.saveStringToFile(filePath,str,false);
}附錄2:生成import腳本代碼示例:/**
*創建裝載腳本
*@paramconn
*@paramcreator 表創建者
*@paramfilePath
*/
publicvoidcreateLoadFile(Connectionconn,Stringcreator,StringfilePath)throwsException{
DBBasedbBase=newDBBase(conn);
StringselectTableSql="selectnamefromsysibm.systableswherecreator='"+creator+"'andtype="T"";
try{
dbBase.executeQuery(selectTableSql);
}catch(Exceptionex){
throwex;
}finally{
dbBase.close();
}
DBResultresult=dbBase.getSelectDBResult();
Listlist=newArrayList();
while(result.next()){
Stringtable=result.getString(1);
list.add(table);
}
StringBuffersb=newStringBuffer();
StringenterFlag="";
for(inti=0;i<list.size();i++){
StringtableName=(String)list.get(i);
sb.append("db2"loadfromaa"+String.valueOf(i+1)+".ixfofixfinto"+tableName+"COPYNOwithoutprompting"");
sb.append(enterFlag);
}
Stringstr=sb.toString();
FileUtility.saveStringToFile(filePath,str,false);
}附錄3:export腳本示例db2connecttotestdbusertestpasswordtest
db2"exporttoaa1.ixfofixfselect*fromtable1"
db2"exporttoaa2.ixfofixfselect*fromtable2"
db2connectreset 附錄4:import腳本示例db2connecttotestdbusertestpasswordtest
db2"loadfromaa1.ixfofixfreplaceintotable1COPYNOwithoutprompting"
db2"loadfromaa2.ixfofixfreplaceintotable2COPYNOwithoutprompting"
db2connectreset

常用命令

1.關閉db2
db2stop或db2stopforce。
在腳本中一般兩個都寫上,避免使用db2stopforce命令,如:
db2stop
db2stopforce
2.啟動db2
db2start
3.創建資料庫
db2createdb<dbname>或db2createdbusingcodesetGBKterritoryCN
4.刪除資料庫
執行此操作要小心。
db2dropdb<dbname>
如果不能刪除,斷開所有資料庫連線或者重啟db2。
5.斷開資料庫連線
db2forceapplicationall
6.連線資料庫
db2connectto<dbname>user<username>using<passWord>
7.斷開資料庫連線
斷開當前資料庫連線:
db2connectreset或者:db2disconnectcurrent
斷開所有資料庫的連線:
db2disconnectall
8.備份資料庫
db2backupdb<dbname>
備註:執行以上

DB2DB2

命令之前需要斷開資料庫連線
9.恢複數據庫
db2restoredb<sourcedbname>
10.導出數據檔案
db2move<dbname>export
[-sn<模式名稱,一般為db2admin>]
[-tn<表名,多個之間用逗號分隔>]
11.導入數據檔案
db2move<dbname>import
12.列出資料庫中所有db
db2listdbdirectory
13.進入db2命令環境
在“運行”中執行:db2cmd
14.獲取db2資料庫管理配置環境信息
db2getdbmcfg
15.獲取db2某個資料庫資料庫管理配置環境信息
db2getdbcfgfor<dbname>
或者:連線至某個資料庫以後執行db2getdbcfg。
16.設定聯合資料庫為可用(默認聯合資料庫不可用)
db2updatedbmcfgusingfederatedyes
17.更改db2日誌空間的大小
備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則參數需要修改。
db2UPDATEDBCFGFOR<dbname>USINGlogretainOFF
logPRimary3logsecond2logfilsiz25600;
如果頁大小是4KB,則以上命令創建3個100M的日誌檔案,占用300MB硬碟空間。25600*4KB=102400KB。
18.創建臨時表空間
DB2CREATEUSERTEMPORARYTABLESPACESTMaspACEPAGESIZE32K
MANAGEDBYDATABASEUSING(FILE'D:\DB2_TAB\STMASPACE.F1'10000)
EXTENTSIZE256
19.獲取資料庫管理器的快照數據
db2–vgetsnapshotfordbm
20.顯示進行程號
db2listapplicationsshowdetail
21.調查錯誤
sqlcode:產品特定錯誤碼;
sqlstate:DB2系列產品的公共錯誤碼,符合ISO/ANSI92SQL標準。
調查sqlcode:db2
調查sqlstate:db2?08004
22.創建表空間
rem創建緩衝池空間8K
db2connecttogather
db2CREATEBUFFERPOOLSTMABMPIMMEDIATESIZE25000PAGESIZE8K
rem創建表空間:STMA
rem必須確認路徑正確
remD:\DB2Container\Stma
db2droptablespacestma
db2CREATE
REGULARTABLESPACESTMAPAGESIZE8K
MANAGEDBYSYSTEM
USING('D:\DB2Container\Stma')EXTENTSIZE8
OVERHEAD10.5PREFETCHSIZE8TRANSFERRATE0.14BUFFERPOOL
STMABMP
DROPPEDTABLERECOVERYOFF
db2connectreset[1]
23.將暫掛的數據恢復到前滾狀態
db2ROLLFORWARDDATABASETESTDBTOENDOFLOGSANDCOMPLETENORETRIEVE
24.備份表空間
BACKUPDATABASEYNDCTABLESPACE(USERSPACE1)
TO"D:\temp"WITH2BUFFERSBUFFER1024PARALLELISM1WITHOUTPROMPTING
25.創建db2工具資料庫
db2createtoolscatalogsystoolscreatenewdatabasetoolsdb
26.如何進行增量/差量備份
增量:上一次完整備份至本次備份之間增加的數據部分;
差量(delta):上次備份以來(可能是完整備份、增量備份或者差量備份)至本次備份之間增加的數據部分;
27.更新所有表的統計信息
db2-vconnecttoDB_NAME
db2-v"selecttbname,nleaf,nlevels,stats_timefromsysibm.sysindexes"
db2-vreorgchkupdatestatisticsontableall
db2-v"selecttbname,nleaf,nlevels,stats_timefromsysibm.sysindexes"
db2-vterminate
28.對一張表運行統計信息
db2-vrunstatsontableTAB_NAMEandindexesall
29.查看是否對資料庫執行了RUNSTATS
db2-v"selecttbname,nleaf,nlevels,
stats_timefromsysibm.sysindexes"
30.更改緩衝池的大小,緩衝池中,當syscat.bufferpools的npages是-1時,由資料庫的配置參數bufferpage控制緩衝池的大小。
將npages的值更改為-1的命令:
db2-vconnecttoDB_NAME
db2-vselect*fromsyscat.bufferpools
db2-valterbufferpoolIBMDEFAULTBPsize-1
db2-vconnectreset
db2-vterminate
更改資料庫配置參數BufferPages的命令如下:
db2-vupdatedbcfgfordbnameusingBUFFPAGEbigger_value
db2-vterminate
31.查看資料庫監視內容列表
db2-vgetmonitorswitches
32.打開某個資料庫監視內容
db2-vupdatemonitorswitchesusingbufferpoolon
33.獲取資料庫快照
db2-vgetsnapshotforalldatabases>snap.out
db2-vgetsnapshotfordbm>>snap.out
db2-vgetsnapshotforallbufferpools>>snap.out
db2-vterminate
34.重置資料庫快照
db2-vresetmonitorall
35.計算緩衝池命中率理想情況下緩衝池命中率在95%以上,計算公式如下:
(1-((bufferpooldataphysicalreads+bufferpoolindexphysicalreads)
/(bufferpooldatalogicalreads+poolindexlogicalreads)))*100%
36.創建db2實例
db2icrt<實例名稱>
37.刪除db2實例
db2idrop<實例名稱>
38.設定當前db2實例
setdb2intance=db2
39.顯示db2擁有的實例
db2ilist
40.恢復離線增量備份資料庫的命令
DB2RESTOREDATABASEYNDCINCREMENTALAUTOMATICFROM
D:\backup\autobak\db2TAKENAT
41.創建樣本資料庫
在unix平台,使用:
sqllib/bin/db2sampl<path>
在windows,os/2平台,使用:db2sample,e是可選參數,指定將創建資料庫的驅動器;
42.列出資料庫中所有的表
db2listtables
43.列出某個表的數據結構
db2describetablev_ro_role
44.給表增加列
ALTERTABLESTAFF
ADDCOLUMNPNHONEVARCHAR(20)
45.數據遷移方法1
export腳本示例
db2connecttotestdbusertestpasswordtest
db2"exporttoaa1.ixfofixfselect*fromtable1"
db2"exporttoaa2.ixfofixfselect*fromtable2"
db2connectreset
import腳本示例
db2connecttotestdbusertestpasswordtest
db2"loadfromaa1.ixfofixfreplaceintotable1COPYNOwithoutprompting"
db2"loadfromaa2.ixfofixfreplaceintotable2COPYNOwithoutprompting"
db2connectreset

錯誤處理

DB2電腦程式一個重要的特徵就是錯誤處理。SQLcommunicationsarea(SQLCA)結構曾一度被專門用於DB2程式在每個SQL語句被執行後向應用程式返回錯誤信息。在SQLCAblock中常見錯誤診斷被體現在SQLCODE中。
SQL返回代碼的值對應為:
·0表示成功執行
·正值表示成功執行但是有一個或多個警告。

DB2DB2

例如+100表示沒有行被發現。
·負值表示出現錯誤。例如-911表示鎖逾時(或死鎖),並觸發撤消程式。

精簡版

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

相關詞條

相關搜尋

熱門詞條

聯絡我們