當前位置:首頁 » 操作系統 » db2資料庫管理

db2資料庫管理

發布時間: 2023-03-15 12:29:35

1. 如何啟動DB2資料庫管理器

在一個DB2 實例下,可以創建多個database(具體每個實例下可以創建多少個database,可以通過DB2 GET DBM CFG查看.一旦建立了資料庫之後,就可以對其進行操作,然而,在向資料庫中建立對象或訪問資料庫中的對象(數據)之前,必須先知道如何啟動和停止資料庫.
本小節簡單介紹了db2 database通過command line的方式如何實現啟動和停止.
激活資料庫
如果在database沒有激活之前,就在應用中使用connect to database_name或隱式連接,那麼應用就必須要進行等待,知道資料庫管理器啟動了你要連接的資料庫.一般第一個應用會引發等待資料庫管理器執行資料庫啟動的所有開銷.
我們也可以使用activate database database_name這樣的命令啟動特定的資料庫.這個命令就會免除第一個應用程序連接上來的時候等候資料庫初始化所花費的時間。一般情況下,DB2 DBA會提前激活所有必要的資料庫.
注意:1)如果發出activate database命令的應用已經與一個database建立了活動的資料庫連接,就回返回錯誤消息.
2)如果需要重新啟動(restart)的資料庫接受了一個activate database命令,那麼這個activate database命令就會象connect to 或隱式連接一樣工作.
3)如果資料庫配置了
啟用的自動重新啟動 (AUTORESTART) = ON
那麼在activate database命令對其初始化之前,資料庫會重新啟動.
察看指定資料庫的配置參數
--默認
DB2 GET DB CFG FOR study
--分屏顯示
DB2 GET DB CFG FOR study | More
--將顯示結果存入study.txt 文件中
DB2 GET DB CFG FOR study > study.txt

下面是一個示例,我在當前DB2實例下,創建了3個database,我利用activate命令挨個將他們激活

D:DB2BIN>db2 db2start
DB20000I DB2START命令成功完成。
D:DB2BIN>db2 list database directory
系統資料庫目錄
目錄中的條目數 = 3
資料庫 1 條目:
資料庫別名 = TEST
資料庫名稱 = TEST
本地資料庫目錄 = D:DB2test
資料庫發行版級別 = c.00
注釋 = test
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
資料庫 2 條目:
資料庫別名 = BANK
資料庫名稱 = BANK
本地資料庫目錄 = D:db2bank
資料庫發行版級別 = c.00
注釋 = bank
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
資料庫 3 條目:
資料庫別名 = STUDY
資料庫名稱 = STUDY
本地資料庫目錄 = D:db2study
資料庫發行版級別 = c.00
注釋 = STUDY
目錄條目類型 = 間接
目錄資料庫分區號 = 0
備用伺服器主機名 =
備用伺服器埠號 =
D:DB2BIN>db2 list active databases
sql1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 activate database study
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 activate database bank
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
資料庫名稱 = BANK
當前連接的應用程序 = 0
資料庫路徑 = D:db2bankDB2NODE0000SQL00001
D:DB2BIN>db2 activate database test
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
資料庫名稱 = BANK
當前連接的應用程序 = 0
資料庫路徑 = D:db2bankDB2NODE0000SQL00001
資料庫名稱 = TEST
當前連接的應用程序 = 0
資料庫路徑 = D:DB2testDB2NODE0000SQL00001
D:DB2BIN>停止資料庫

由activate database命令初始化的資料庫可以由deactivate database命令關閉,也可以通過stop database manager(或db2stop)命令終止資料庫管理器來關閉.

如果使用activate
database命令初始化一個資料庫,那麼最後一個與資料庫斷開連接的應用就不會關閉資料庫.必須要使用deactivate
database.在這種情況下,stop database manager(或db2stop)會關閉資料庫,也會終止實例.

如果使用connect
to 或隱式地連接啟動資料庫,然後再由另外一個應用對相同的資料庫發出activate database命令,那麼就必須使用deactivate
database命令關閉資料庫.如果沒有使用activate
database啟動資料庫,那麼當最後一個應用斷開與資料庫連接的時候,資料庫就會關閉.

示例一:使用connect to方式啟動的資料庫

D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 connect to study --連接到study資料庫,將自動激活study資料庫
資料庫連接信息
資料庫伺服器 = DB2/NT 9.5.0
SQL 授權標識 = ZHANGRP
本地資料庫別名 = STUDY
D:DB2BIN>db2 list active databases
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 1
資料庫路徑 = D:db2studyDB2NODE0000SQL00001

說明:資料庫被激活,並有一個應用連接上來(就上面的connect to study操作)
D:DB2BIN>db2 connect reset --斷開連接
DB20000I SQL命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。

D:DB2BIN>

說明:可以發現,上面的連接斷開後,資料庫study也自動停止(因為這個study資料庫是通過connect to 的方式激活的)
示例二:使用activate database方式啟動的資料庫

D:DB2BIN>db2 list active databases --這個時候沒有啟動的資料庫
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>db2 activate database study --用activate database激活study資料庫
DB20000I ACTIVATE DATABASE命令成功完成。
D:DB2BIN>db2 list active databases --可以看到study數據已經激活,但沒有應用連接上來
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect to study --發起一個連接到study資料庫
資料庫連接信息
資料庫伺服器 = DB2/NT 9.5.0
SQL 授權標識 = ZHANGRP
本地資料庫別名 = STUDY
D:DB2BIN>db2 list active databases --再看一下活動的資料庫,發現study 資料庫上有一個應用連接上來了
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 1
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 connect reset --關閉剛才那個連接,看看資料庫是不是會自動關閉
DB20000I SQL命令成功完成。
D:DB2BIN>db2 list active databases --資料庫依然啟動,雖然沒有了任何連接
活動資料庫
資料庫名稱 = STUDY
當前連接的應用程序 = 0
資料庫路徑 = D:db2studyDB2NODE0000SQL00001
D:DB2BIN>db2 deactivate database study --使用deactivate database命令關閉資料庫
DB20000I DEACTIVATE DATABASE命令成功完成。
D:DB2BIN>
D:DB2BIN>db2 list active databases
SQL1611W 「資料庫系統監視器」沒有返回任何數據。
D:DB2BIN>

2. DB2是什麼

DB2
開放分類: 資料庫、互聯網、電腦、技術、計算機

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

DB2是IBM出口的一系列關系型資料庫管理系統,分別在不同的操作系統平台上服務。雖然DB2產品是基於UNIX的系統和個人計算機操作系統,在基於UNIX系統和微軟在windows系統下的Access方面,DB2追尋了ORACLE的資料庫產品。

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

7月14日,IBM全球同步發布了一款具有劃時代意義的資料庫產品——DB2 9(「DB2」是IBM資料庫產品系列的名稱)。而這款新品最大特點即是率先實現了可擴展標記語言(XML)和關系數據間的無縫交互,而無需考慮數據的格式、平台或位置。

DB2的前世今生和未來:
對於每個最終站在獎台上淚水盈面的奧運冠軍來說,為此刻他或她也許已經付出了5年甚至10年的艱苦努力。相比這些人類的冠軍們,這個世界還有另外一種意義上的冠軍,它們雖沒有淚水,卻依然在歷史上留下了非凡的軌跡—DB2就是這類冠軍中的一員。這個資料庫領域里當之無愧的冠軍,已用了足足25年來描繪它的軌跡。
紀念IBM DB2的誕生
IBM DB2已經25周歲拉!DB2回顧與展望
專家點評DB2:
微軟人物談DB2發展:成功是必然的
DB2的成功案例:
DB2在各個行業得到了廣泛的應用。
【視頻】IBM DB2 9 pureXml在稅務行業的應用案例
【視頻】IBM DB2 9 pureXml在醫療行業的應用案例
【視頻】IBM DB2 9 pureXml在政府行業的應用案例
DB2的最新產品:
DB2 9資料庫免費版下載地址
DB2 9數據伺服器發展3部曲

3. 基於DB2的資料庫應用系統的性能優化

摘要 結合DB 的使用經驗 從資料庫設計 查詢優化 並發控制 客戶/伺服器模式四個方面來討論資料庫應用系統性能優化的一些原則 方法等

關鍵詞 DB 性能優化 資料庫設計 查詢優化 並發控制 C/S模式

引言

DB 是一種高性能的大型關系資料庫管理系統 廣泛的應用在客戶/伺服器體系結構中 評價系統性能優化的標准有 吞吐量 響應時間 並行能力等 本文從資料庫的設計 查詢的優化 並發控制以及客戶/伺服器模式這四個角度來討論優化系統性能

設計資料庫

熟悉業務系統

對業務系統的熟悉程度對整個資料庫系統的性能有很大影響 一個對業務不熟悉的設計人員 盡管有豐富的資料庫知識 也很難設計出性能最佳的資料庫應用系統

規范化與非規范化

資料庫被規范化後 減少了數據冗餘 數據量變小 數據行變窄 這樣DB 的每一頁可以包括更多行 那麼每一區里的數據量更多 從而加速表的掃描 改進了單個表的查詢性能 但是 當查詢涉及多個表的時候 需要用很多連接操作把信息從各個表中組合在一起 導致更高的CPU和I/O花銷 那麼 有很多時候需要在規范化和非規范化之間保持平衡 用適當的冗餘信息來減少系統開銷 用空間代價來換取時間代價 有訂單信息表OrderDetail 它裡面記錄了投遞員信息 收款員信息 物品信息 價格策略 客戶信息… 這些信息分別在投遞員信息表 收款員信息表 物品信息表 價格策略表 客戶信息表中存放 如果按照規范化的要求 OrderDetail查詢時就必須要與這么多個表進行連接或者嵌套查詢 如果OrderDetail表中的數據量是在百萬級的 那麼一次查詢所需要的時間可能會達到好幾個小時 事實上 只要在設計時保證數據的邏輯有效性 很多信息都可以直接冗餘在OrderDetail表中 這些冗餘的數據能夠極大的提高查詢的效率 從而減少CPU和I/O操作

數據條帶化

如果一個表的記錄條數超過一定的規模 那麼最基本的查詢操作也會受到影響 需要將該表根據日期水平劃分 把最近 最經常用的數據和歷史的 不經常用的數據劃分開來 或是根據地理位置 部門等等進行劃分 還有一種劃分方式――垂直劃分 即把一個屬性列很多的表分割成好幾個小表 比如把經常用到的屬性放在一個表裡 不經常用到的屬性放在另一個表裡 這樣可以加快表的掃描 提高效率

選擇數據類型

對每一屬性選擇什麼樣的數據類型很大程度上依據表的要求 但是在不違背表要求的前提下 選擇適當的數據類型可以提高系統性能 比如有text列存放一本書的信息 用BLOB而不是character( ) BLOB存放的是指針或者文件參照變數 真正的文本信息可以放在資料庫之外 從而減少資料庫存儲空間 使得程序運行的速度提高 DB 提供了UDT(User Defined Datatypes)功能 用戶可以根據自己的需要定義自己的數據類型

選擇索引

索引是資料庫中重要的數據結構 它的根本目的就是為了提高查詢效率 現在大多數的資料庫產品都採用IBM最先提出的ISAM索引結構 使用索引可以快速 直接 有序的存取數據 索引的建立雖然加快了查詢 另一方面卻將低了數據更新的速度 因為新數據不僅要增加到表中 也要增加到索引中 另外 索引還需要額外的磁碟空間和維護開銷 因此 要合理使用索引

●在經常進行連接 但是沒有指定為外鍵的屬性列上建立索引

●在頻繁進行排序或分組(即進行group by或order by操作)的列上建立索引 按索引來排序或分組 可以提高效率

●在條件表達式中經常用到的不同值較多的列上建立檢索 在不同值少的列上不要建立索引

●如果待排序的列有多個 可以在這些列上建立復合索引(pound index) 即索引由多個欄位復合而成

查詢優化

現在的資料庫產品在系統查詢優化方面已經做得越來越好 但由於用戶提交的SQL語句是系統優化的基礎 很難設想一個原本糟糕的查詢計劃經過系統的優化之後會變得高效 因此用戶所寫語句的優劣至關重要 下面重點說明改善用戶查詢計劃的解決方案

. 排序

在很多時候 應當簡化或避免對大型表進行重復的排序 當能夠利用索引自動以適當的次序產生輸出時 可以避免排序的步驟 當以下的情況發生時 排序就不能省略

●索引中不包括一個或幾個待排序的列

●group by或order by子句中列的次序與索引的次序不一樣

●排序的列來自不同的表

為了避免不必要的排序 就要正確地增建索引 合理地合並資料庫表 盡管有時可能影響表的規范化 但相對於效率的提高是值得的 如果排序不可避免 那麼應當試圖簡化它 如縮小排序列的范圍等

. 主鍵

主鍵用整型會極大的提高查詢效率 而字元型的比較開銷要比整型的比較開銷大很多 用字元型數據作主鍵會使數據插入 更新與查詢的效率降低 數據量小的時候這點降低可能不會被注意 可是當數據量大的時候 小的改進也能夠提高系統的響應速度

. 嵌套查詢

在SQL語言中 一個查詢塊可以作為另一個查詢塊中謂詞的一個操作數 因此 SQL查詢可以層層嵌套 例如在一個大型分布式資料庫系統中 有訂單表Order 訂單信息表OrderDetail 如果需要兩表關聯查詢

SELECT CreateUserFROM Order WHERE OrderNo IN(SELECT OrderNoFROM OrderDetail WHERE Price= )

在這個查詢中 找出報紙單價為 元的收訂員名單 下層查詢返回一組值給上層查詢 然後由上層查詢塊再根據下層塊提供的值繼續查詢 在這種嵌套查詢中 對上層查詢的每一個值OrderNo 下層查詢都要對表OrderDetail進行全部掃描 執行效率顯然不會高 在該查詢中 有 層嵌套 如果每層都查詢 行 那麼這個查詢就要查詢 萬行數據 在系統開銷中 對表Order的掃描占 % 對表OrderDetail的搜索占 % 如果我們用連接來代替 即

SELECT CreateUserFROM Order OrderDetailWHERE Order OrderNo=OrderDetail OrderNo AND Praice=

那麼對表Order的掃描占 % 對表OrderDetail的搜索占 %

而且 一個列的標簽同時在主查詢和where子句中的查詢中出現 那麼很可能當主查詢中的列值改變之後 子查詢必須重新查詢一次 查詢嵌套層次越多 效率越低 因此應當盡量避免子查詢 如果子查詢不可避免 那麼要在子查詢中過濾掉盡可能多的行

. 通配符

在SQL語句中 LIKE關鍵字支持通配符匹配 但這種匹配特別耗費時間 例如 SELECT * FROM Order WHERE CreateUser LIKE M_ _ _ 即使在CreateUser欄位上建立了索引 在這種情況下也還是採用順序掃描的方式 Order表中有 條記錄 就需要比較 次 如果把語句改為SELECT * FROM Order WHERE CreateUser > M AND CreateUser < N 在執行查詢時就會利用索引來查詢 顯然會大大提高速度

. distinct

使用distinct是為了保證在結果集中不出現重復值 但是distinct會產生一張工作表 並進行排序來刪除重復記錄 這會大大增加查詢和I/O的操作次數 因此應當避免使用distinct關鍵字

. 負邏輯

負邏輯如!= <> not in等 都會導致DB 用表掃描來完成查詢 當表較大時 會嚴重影響系統性能 可以用別的操作來代替

. 臨時表

使用臨時表時資料庫會在磁碟中建立相應的數據結構 因為內存的訪問速度遠遠大於外部存儲器的訪問速度 在復雜查詢中使用臨時表時 中間結果會被導入到臨時表中 這種磁碟操作會大大降低查詢效率 另外 在分布式系統中 臨時表的使用還會帶來多個查詢進程之間的同步問題 所以 在進行復雜查詢時最好不要使用臨時表

. 存儲過程

DB 中的Stored Procere Builder可以產生存儲過程 運行並測試存儲過程 存儲過程可以包含巨大而復雜的查詢或SQL操作 經過編譯後存儲在DB 資料庫中 用戶在多次使用同樣的SQL操作時 可以先把這些SQL操作做成存儲過程 在需要用到的地方直接引用其名字進行調用 存儲過程在第一次執行時建立優化的查詢方案 DB 將查詢方案保存在高速緩存里 以後調用運行時可以直接從高速緩存執行 省去了優化和編譯的階段 節省了執行時間 從而提高效率和系統利用率

最優的查詢方案按照某些標准選擇往往不可行 要根據實際的要求和具體情況 通過比較進行選擇 DB 提供的Query Patroller可以對不同的查詢方案的查詢代價進行比較 通過追蹤查詢語句 返回查詢不同階段的系統開銷 從而作出最佳選擇 DB 提供的Performance Monitor也對整個資料庫系統的性能進行監控 包括I/O時間 查詢次數 排序時間 同步讀寫時間等等

資料庫系統的並發控制也能影響系統性能 多個用戶的同時操作可能導致數據的不一致性 DB 為了防止同時修改造成數據丟失和訪問未被提交的數據 以及數據的保護讀 採用Lock機制來實現控制

lishixin/Article/program/DB2/201311/21921

4. IBM/DB2.Linux的安裝配置管理

IBM/DB2.Linux的安裝配置管理

作為關系型資料庫技術的領導者,IBM公司在2001年將世界排名第四的Informix資料庫公司納入麾下,並將其所擁有的先進特性融入到DB2當中。下面我准備了關於IBM/DB2.Linux的安裝配置管理的.文章,提供給大家參考!

1.安裝IBM/DB2 V9.1 Linux版

下載得到安裝文件 db2exc_912_LNX_x86.tar.gz ,解壓到ext2/3分區

# cd db2exc_912_LNX_x86

# ./db2setup

(1)彈出java的安裝界面,install new instance

(2)使用“Typical Mode”,選擇安裝目錄,默認為 DB2_root=/opt/ibm/db2/V9.1/

# echo DB2_root=/opt/ibm/db2/V9.1/ >> /etc/profile

(3)並默認創建 db2inst?、db2fenc?、db2adsusr? 這個幾個用戶最重要的是本地實例管理用戶 db2inst? 其負責管理資料庫實例

(4)創建Instance,然後下一步繼續安裝,看到successful結果,表示成功

(5) # ps -e | grep db2 應該可以看到三個不同名稱的進程

(6) # tail /etc/inittab #可以看到最後一行就是啟動db2的方法

fmc:2345:respawn:/opt/ibm/db2/V9.1/bin/db2fmcd #DB2 Fault Monitor Coordinator

2.配置IBM/DB2的庫開發和CLI/ODBC連接

# su db2inst1

$ cd $DB2_ROOT

## 編目(catalog):

$ ./db2 catalog tcpip node remote server

$ ./db2 catalog db at node

$ ./db2 connect to user using

## 反編目(uncatalog):

$ ./db2 uncatalog db

$ ./db2 uncatalog node

3.修改,使用IBM/DB2的CLI/ODBC進行程序開發

(1)如果不想使用db2實例,而只是想使用CLI/ODBC來開發程序,可以注釋 /etc/inittab 中啟動db2的那一句,放棄啟動IBM/DB2資料庫服務。

(2)環境變數配置文件 : /home/db2inst1/sqllib/db2profile

查看 /etc/profile ,保證(添加或者修改)有以下兩句

export DB2INSTANCE=db2inst1

export PATH=$DB2_ROOT/binPATH

export LD_LIBRARY_PATH=$DB2_ROOT/lib32LD_LIBRARY_PATH

(3)編目目標機器地址與ODBC的DSN的關系,CLI/ODBC 中最重要的頭文件(include)和庫(lib)

$DB2_ROOT/lib32 或 其聯接 /home/db2inst1/sqllib/lib,其中最重要的是libdb2.so

4.資料庫備份及恢復

(1).使用用戶名和口令登錄伺服器

# db2 connect to ecm3000 user using

(2).強制停止所有應用,是非同步的

# db2 force applications all

(3).將資料庫備份到指定目錄下

# db2 backup database to

(4).從指定目錄中恢復資料庫

# db2 restore database from

5.修改和卸載DB2

請先反編目()如步驟2中

# su db2inst1

$ cd $DB2_ROOT/install

$ ./db2_deinstall -a

等待結束 ...

修改該/etc/inittab 中啟動db2的那一句,保證放棄啟動IBM/DB2資料庫服務。

;

5. 如何在Windows CMD裡面用命令行操作DB2資料庫

1、打開電腦,進入電腦操作系統,點擊開始菜單,在電腦開始菜單中,找到命令行cmd,或者使用快捷鍵組合WIN+R鍵可以直接打開運行,輸入cmd命令行,即可直接打開命令行cmd。

熱點內容
cc嵌入式系統編程 發布:2025-08-24 01:25:05 瀏覽:472
基數排序python 發布:2025-08-24 01:24:54 瀏覽:503
android命運石之門 發布:2025-08-24 01:01:51 瀏覽:43
android圖片文字按鈕 發布:2025-08-24 00:45:42 瀏覽:270
md5演算法詳解 發布:2025-08-24 00:29:06 瀏覽:101
昨天資料庫 發布:2025-08-24 00:27:51 瀏覽:903
Java培訓專業機構 發布:2025-08-24 00:26:51 瀏覽:692
php去掉字元串引號 發布:2025-08-24 00:12:16 瀏覽:289
kali解壓文件夾 發布:2025-08-24 00:02:49 瀏覽:445
android網頁源碼下載 發布:2025-08-23 23:50:39 瀏覽:723