共找到2條詞條名為DB2的結果 展開

DB2

DB2

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

簡介


DB2
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
DB2
1997:
1.IBM發布了可以支持Web的DB2forOS/390V5,這是當時唯一能夠支持64,000個併發用戶和百TB級別的資料庫產品。
2.IBM發布了DB2UDBforUNIX、WindowsandOS/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
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提供高效管理工具,最終這項業務擴展到UNIX、Linux和Windows平台。Informix資料庫產品也在支持之列。
7/IBM開始通過在DB2中集成DataJoiner來提供數據聯邦(federation)功能
8/IBM發布了用於管理數字資產的ContentManager。IBM數字圖書館和EDMSuite產品現在都被包含在一個單一的架構中來提供多媒體資產管理和企業內容管理。荷蘭國家圖書館、梵蒂岡圖書館都是最早的用戶。
9/DB2在主機上銷售出了它的第10000個許可證。
DB2
DB2
2001:
1/IBM以10億美金收購了Informix的資料庫業務,這次收購擴大了IBM的分散式資料庫業務。
2/DB2OLAPServer中增添了數據挖掘功能。
3/IBM發布了第一個能夠支持多種平台的DB2工具。
4/DB2提供了基於SOAP的Web服務的支持。DB2XMLExtender和存儲過程可以使DB2成為Web服務的提供者。
5/IBM科學家在納米碳管晶體管技術領域取得突破。IBM用納米碳管製造出了世界上第一批納米晶體管--由直徑10個原子大小的碳原子組成的小圓柱結構,比當今基於硅的晶體管小500倍。
6/DB2拓寬了其數據聯邦(federation)的能力,可以對WebSphereMQ消息隊列和生命科學領域特定格式的文件提供支持。
7/IBM發布了DB2UDBforOS/390.
2002:
1/IBM發布了Xperanto,這是一個基於標準的信息集成中間件的演示版,可以用來優化對分散數據源的存取。這個演示版本使用了XML、Xquery、Web服務、數據聯邦(federation)和全文檢索等先進技術。
2/IBM宣布計劃收購RationalSoftwareCorp,從而使得IBM軟體能夠支持從設計、開發、部署到管理和維護的完整過程。
3/DB2通過基於SOAP的Web服務擴展了數據聯邦(federation)的能力。並可以作為Web服務的使用者出現在Web服務架構中。
4/DB2OLAPServer中添加了hybrid(多維和關係)分析能力。
5/作為IBM自主運算策略的一部分,SMART(自我管理和資源調節)技術在DB2UDBV8.1中首次正式應用。
6/IBM併購TarianSotware,從而加強了ContentManager中記錄管理組件的功能。
DB2
DB2
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產品組件和功能


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腳本代碼示例: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.getSele
DB2
DB2
ctDBResult();
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腳本代碼示例:
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

常用命令


1.關閉db2
db2stop 或db2stop force。
在腳本中一般兩個都寫上,避免使用db2stop force命令,如:
db2stop
db2stop force
2.啟動db2
db2start
3.創建資料庫
db2 create db 或db2 create db using codeset GBK territory CN
4.刪除資料庫
執行此操作要小心。
db2 drop db 
如果不能刪除,斷開所有資料庫連接或者重啟db2。
5.斷開資料庫連接
db2 force application all
6.連接資料庫
db2 connect to  user  using 
7.斷開資料庫連接
斷開當前資料庫連接:
db2 connect reset或者:db2 disconnect current
斷開所有資料庫的連接:
db2 disconnect all
8.備份資料庫
db2 backup db 
備註:執行以上
DB2
DB2
命令之前需要斷開資料庫連接
9.恢復資料庫
db2 restore db 
10.導出數據文件
db2move  export
[-sn <模式名稱,一般為db2admin>]
[-tn <表名,多個之間用逗號分隔>]
11.導入數據文件
db2move  import
12.列出資料庫中所有db
db2 list db directory
13.進入db2命令環境
在“運行”中執行:db2cmd
14.獲取db2資料庫管理配置環境信息
db2 get dbm cfg
15.獲取db2某個資料庫資料庫管理配置環境信息
db2 get db cfg for 
或者:連接至某個資料庫以後執行db2 get db cfg。
16.設置聯合資料庫為可用(默認聯合資料庫不可用)
db2 update dbm cfg using federated yes
17.更改db2日誌空間的大小
備註:以下命令為了防止db2資料庫過份使用硬碟空間而設,僅用於開發者自己機器上的db2,如果是伺服器,則參數需要修改。
db2 UPDATE DB CFG FOR  USING logretain OFF
logPRimary 3 logsecond 2 logfilsiz 25600;
如果頁大小是4KB,則以上命令創建3個100M的日誌文件,佔用300MB硬碟空間。25600*4KB=102400KB。
18.創建臨時表空間
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[1]
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 
在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表示成功執行
· 正值表示成功執行但是有一個或多個警告。
DB2
DB2
例如+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精簡版就是一個不錯的選擇。