电竞比分网-中国电竞赛事及体育赛事平台

分享

如何綜合掌握 DB2 和 Informix - Unix愛好者家園

 昵稱90415 2009-02-24
如何綜合掌握 DB2 和 Informix
 
作者:www.ibm-128.com  出處:www.ibm-128.com  更新時間: 2007年04月05日 
數(shù)據(jù)庫技術是一個不斷發(fā)展的知識領域。利用對某種產(chǎn)品目前所具有的知識并將它應用到另一種相似的產(chǎn)品,這種方法使您能夠跟上不斷更新的技術的腳步。這篇文章演示了如何使用從 Informix 或 DB2 9 中獲得的技術來學習這兩種技術中的另外一種,并對 IBM® Informix® Dynamic Server (IDS) 10 和 IBM DB2® 9 中使用的技術進行了比較。

簡介

DB2 9 和 IDS 10 的戰(zhàn)略定位是使數(shù)據(jù)庫的管理更加便捷,具有眾多內置的特性。其中一些常見特性包括自治管理、對透明的 “靜默” 安裝的支持、對眾多開發(fā)范例的支持、最小化磁盤空間需求以及范圍分區(qū)。表 1 突出顯示了這些產(chǎn)品的主要特性。關于這兩種產(chǎn)品的更多信息,可參考 參考資料 一節(jié)。


表 1. 主要特性
DB2 9 IDS 10
pureXML 和混合數(shù)據(jù)服務
DB2 9 包含了提供 pureXML 服務的技術,該服務不僅用于數(shù)據(jù)服務器外部接口,更準確地說它擴展到了 DB2 引擎的核心。DB2 9 中的 XML 和關系型服務被緊密集成,從而提供了業(yè)界內第一個 pureXML 和關系型混合數(shù)據(jù)服務器。
安全性增強
IBM IDS 10 在數(shù)據(jù)庫服務器的安全性、加密、身份驗證和可用性方面做了很大程度的改進。
數(shù)據(jù)壓縮
DB2 9 中的數(shù)據(jù)行壓縮技術為壓縮數(shù)據(jù)記錄提供了一種基于字典的算法。就是說,DB2 9 通過反復掃描表對數(shù)據(jù)庫表中的數(shù)據(jù)進行行壓縮,復制數(shù)據(jù),并且構建為這些重復條目分配短數(shù)字鍵的字典。由于重復出現(xiàn)的字符串以及具有大量重復字符或字符串前后空格的數(shù)據(jù),因此文本數(shù)據(jù)的壓縮效果也很好。
服務器可用性增強
服務器可用性增強包括易管理性、可伸縮性和高可用性。
自調優(yōu)內存
DB2 中的自調優(yōu)內存管理器使用智能控制以及反饋機制,能夠跟蹤內存的消耗情況以及對數(shù)據(jù)庫中各種共享資源的需求的變化,并根據(jù)需要動態(tài)調整它們對內存的使用。
性能增強
性能增強包括查詢性能和恢復時間方面的改進。除了下面要討論的主題以外,還在以下方面做出了增強以提升性能:
  • XA 事務
  • 嵌套的與 ANSI 兼容的左外連接
  • 子查詢
  • 全外連接
基于標簽的訪問控制(Label Based Access Control,LBAC)安全性
LBAC 是 DB2 中的一個安全特性,它提供了對單個行和列級的粒度讀寫訪問。DB2 9 提供了一個新的具有特殊安全性權限的 DB2 安全管理員角色(SECADM)。 SECADM 用戶可以被授予與安全性相關的權限,甚至是系統(tǒng)管理員(SYSADM)都不具備這些權限。
SQL 增強
SQL 增強改善了數(shù)據(jù)庫的可用性??梢栽跓o需鎖定表的情況下創(chuàng)建和刪除索引。
表分區(qū)
表分區(qū)(有時也稱為范圍分區(qū))是一種數(shù)據(jù)組織模式,此模式中,根據(jù)一個或多個表列的值,表數(shù)據(jù)被分到多個稱為數(shù)據(jù)分區(qū)的存儲對象中。這些存儲對象可位于不同的表空間、相同的表空間或兩種情況的組合。
企業(yè)復制增強
企業(yè)復制增強簡化了管理工作,提高了數(shù)據(jù)的完整性并允許執(zhí)行額外的 SQL 操作。
應用程序開發(fā)增強
DB2 9 中對應用程序的開發(fā)增強包括一個新的 Developer Workbench、與 .NET 環(huán)境更具深度的集成、對 XML 的豐富支持、用于 PHP 和 Ruby 接口的新的驅動器和適配器以及新的應用程序樣例。
備份和恢復增強
備份和恢復增強改善了性能和錯誤調試。
存儲增強
存儲增強改善了使用的簡易性。長標識符和 High-Performance Loader 有助于進行存儲。Tivoli Storage Manager 的 Informix 界面有助于高效數(shù)據(jù)存儲。
可擴展性增強
可擴展性增強在分布式事務、從執(zhí)行觸發(fā)器操作中獲取信息以及 Java 支持方面做出了改進。
安裝增強
安裝增強改善了可用性。
互操作性增強
互操作性增強改善了 Informix 和 DB2 產(chǎn)品之間的通信。

版本和平臺支持

DB2 9 和 Informix IDS 10 為任何種類的業(yè)務提供了正確的數(shù)據(jù)管理解決方案。這兩種產(chǎn)品都提供了包裝了眾多特性和功能的不同產(chǎn)品版本,以適應大量來自客戶的不同需求。中小型企業(yè)可以選擇 Express Editions,而 Workgroup 和 Enterprise Editions 則適合大型企業(yè)。連同這些版本,DB2 9 另外提供了兩個版本:Personal Edition 和 Developer Edition,以及一個免費版 DB2 Express-C。表 2 描述了 DB 9 和 Informix IDS 10 中可用的版本。


表 2. 版本和平臺支持
DB2 9 IDS 10
DB2 Express Edition 9 for Linux, UNIX, and Windows
DB2 Express 9 是一個功能完備的 DB2 數(shù)據(jù)服務器,它為中小企業(yè)(Small and Medium Business,SMB)市場提供了極具吸引力的入門級價格。該版本提供了經(jīng)簡化的程序包,可在應用程序內輕松進行透明安裝。DB2 Express 9 可以輕松升級到 DB2 9 的其他版本,它還具有和其他可伸縮性更高的版本相同的自主管理特性。
IDS Express Edition 10 for Linux, UNIX, and Windows

IDS Express Edition 適合于中型企業(yè)。它是一個功能完備的對象關系型數(shù)據(jù)庫服務器。IDS Express Edition 包括諸如自治管理和簡化安裝這樣的特性。幾乎不需要為其管理的特性支持大量開發(fā)范例。最小的磁盤空間需求支持可擴展性。

DB2 Workgroup Server Edition 9 for Linux, UNIX, and Windows
若要在一個部門、工作組和中型企業(yè)環(huán)境中進行部署,DB2 Workgroup 9 是作為數(shù)據(jù)服務器的完美選擇。它為中型安裝提供了極具吸引力的價格,同時提供了功能完備的數(shù)據(jù)服務器。
IDS Workgroup Edition 10 for Linux, UNIX and Windows
IDS Workgroup Edition 適用于大型企業(yè)中的部門以及中型企業(yè)。這個版本提供了 IDS Express Edition 的所有特性。此外,它還支持并行數(shù)據(jù)查詢、并行備份和恢復、高性能加載器和高可用性數(shù)據(jù)復制(可作為增件購買)。
DB2 Enterprise Server Edition (ESE) 9 for Linux, UNIX, and Windows
DB2 ESE 9 被設計為可以滿足中到大型企業(yè)的數(shù)據(jù)服務器需求。DB2 ESE 9 是構建隨需應變企業(yè)級解決方案(如下所示)的理想基礎:
  • 多個千兆規(guī)模的大型數(shù)據(jù)倉庫
  • 高性能、24x7 可用、大容量事務處理業(yè)務解決方案
  • 基于 Web 的解決方案
此外,DB2 ESE 9 還提供了與其他 Enterprise DB2 和 IDS 數(shù)據(jù)源的連通性、兼容性以及集成。
IDS Enterprise Edition 10 for Linux, UNIX, and Windows
IDS Enterprise Edition 被設計為可滿足大型企業(yè)的需求。它包括 IDS Workgroup Edition 的所有特性,以及為處理高負載和 24x7 可用性提供可伸縮性所需的特性。該版本包括以下特性:
  • 企業(yè)數(shù)據(jù)復制
  • 高可用性數(shù)據(jù)復制
DB2 Personal Edition for Linux, UNIX, and Windows
DB2 Personal 9 是一個單用戶、功能完備、具有內置復制的關系型數(shù)據(jù)庫。對于基于桌面和膝上型電腦的部署是一個理想選擇。DB2 Personal 9 可以進行遠程管理,這使其成為在不要求多用戶能力的不定期連接或遠程辦公實現(xiàn)中的最佳部署選擇。
Database Enterprise Developer Edition
此版本為單一應用程序開發(fā)人員提供軟件包,用于設計、構建和原型化應用程序,以在任意 IBM 信息管理客戶端或服務器平臺上部署。這一全面的開發(fā)人員產(chǎn)品包括 DB2 Workgroup 9、DB2 Enterprise 9、IDS Enterprise Edition V10、Cloudscape V10.1、DB2 Connect Unlimited Edition for zSeries 和所有 DB2 9 特性,允許客戶構建利用最新數(shù)據(jù)服務器技術的解決方案。
DB2 Express-C
DB2 Express-C 是為社區(qū)提供的 DB2 Express Edition(DB2 Express)的一個版本。DB2 Express-C 是一個免費的數(shù)據(jù)服務器,可用于開發(fā)和部署 XML、C/C++、Java、.NET 和 PHP 應用程序。DB2 Express-C 最多可運行在雙核 CPU、4 GB 內存的服務器上,以及對數(shù)據(jù)庫規(guī)?;蚱渌藶橄拗茮]有要求的任何存儲系統(tǒng)。

體系結構概述 —— 比較 DB2 9 ESE 和 IDS 10

在 DB2 中,一個實例就提供了一個獨立的環(huán)境,在其中可以創(chuàng)建數(shù)據(jù)庫,并在數(shù)據(jù)庫中運行應用程序。

由于存在這些獨立的環(huán)境,兩個或更多實例可以具有相同名稱的數(shù)據(jù)庫。圖 1 中,數(shù)據(jù)庫 MYDB2 和實例 DB2 相關聯(lián),而另一個數(shù)據(jù)庫 MYDB2 和一個不同的實例 MYINST 相關聯(lián)。

實例允許用戶擁有獨立自主的環(huán)境,用于生產(chǎn)、測試和開發(fā)。

DB2 中和實例相關的命令
db2icrt instance_name —— 創(chuàng)建一個實例
                                                                                db2idrop instance_name —— 丟棄一個實例
                                                                                set db2instnace=instance_name —— 設置當前實例
                                                                                db2start —— 啟動當前實例
                                                                                db2stop —— 停止當前實例

在 DB2 安裝過程中會創(chuàng)建一個默認實例。在 Windows 中該默認實例被稱為 DB2,而在 Linux 和 UNIX 中被稱為 db2inst1。同樣,可以使用 db2icrt 命令創(chuàng)建一個實例。

每一個 DB2 實例可具有一個或多個數(shù)據(jù)庫。每一個實例具有一個數(shù)據(jù)庫管理配置文件。此外,每一個數(shù)據(jù)庫可擁有自己的數(shù)據(jù)庫配置文件、目錄表、日志、保留的緩沖池區(qū)域和表空間。表空間包括常規(guī)表空間、長表空間(用于 LOB 數(shù)據(jù))、用戶臨時表空間和系統(tǒng)臨時表空間。對于每個數(shù)據(jù)庫來說,調優(yōu)參數(shù)、資源管理和日志會有所不同,并且可以在數(shù)據(jù)庫級別上對其進行控制。


圖 1. DB2 體系結構概覽
DB2 體系結構概覽

						環(huán)境變量
                                                                                INFORMIXDIR —— 安裝位置
                                                                                ONCONFIG —— 實例配置文件
                                                                                INFORMIXSERVER —— 實例名稱
                                                                                INFORMIXSQLHOSTS —— 一個文件的名稱,該文件包含實例主機與端口的相關信息
                                                                                Informix 中與實例相關的命令
                                                                                Oninit -i —— 創(chuàng)建一個實例
                                                                                Oninit —— 啟動當前實例
                                                                                Onmode -k —— 停止當前實例
                                                                                

和 DB2 相似,IDS 實例也提供了一個獨立的環(huán)境,在其中創(chuàng)建數(shù)據(jù)庫,并在數(shù)據(jù)庫中運行應用程序。每一個實例具有一個默認的 dbspace(rootdbspace)、配置文件、三個系統(tǒng)目錄數(shù)據(jù)庫(SysMaster、SysUtils 和 SysUsers)、日志和緩沖池。此外,可以在創(chuàng)建實例的同時選擇創(chuàng)建一個 tempdbspace。一個實例可以具有多于一個的 dbspace。dbspace 的類型有常規(guī) dbspace、臨時 dbspace、blobspace、sbspace 和 extspace。與 DB2 不同的是,IDS 數(shù)據(jù)庫在實例級別上共享日志、緩沖池和臨時 dbspace。此外,每一個數(shù)據(jù)庫擁有自己的目錄表和用戶表。圖 2顯示了兩個 IDS 實例。

可以使用 oninit -i 命令對 IDS 實例進行實例化。實例名稱由環(huán)境變量 INFORMIXSERVER 指定。與 DB2 不同,IDS 沒有刪除實例的顯式命令 。然而,可以改變諸如根路徑的配置參數(shù)和服務器編號,然后再使用 oninit -i 命令。這個命令實例化所有和環(huán)境相關聯(lián)的實例。因此,使用該命令時應該非常謹慎。在 IDS 中創(chuàng)建實例要使用一組環(huán)境變量和配置參數(shù),這些內容都在 ONCONFIG 環(huán)境變量指定的文件中做了定義。因此,在發(fā)出 oninit -i 命令之前設置所有相關的配置參數(shù)非常重要??梢允褂?Informix 實用工具 onmonitor 或使用任何的編輯器定義配置參數(shù)。下面介紹了其中一些配置參數(shù)。

ROOTNAME rootdbs # 根 dbspace 名稱
ROOTPATH /dev/online_root # 包含根 dbspace 的設備的路徑
SERVERNUM 0 # 與 OnLine 實例相對應的惟一 ID
DBSERVERNAME # 默認數(shù)據(jù)庫服務器的名稱
LOGFILES 6 # 邏輯日志文件的編號
TAPEDEV /dev/tapedev # Tape 設備路徑
LTAPEDEV /dev/tapedev # Log tape 設備路徑
LOCKS 2000 # 鎖的最大值

圖 2. IDS 體系結構概覽
IDS 體系結構概覽







進程模型

有關 DB2 進程模型的知識可以幫助確定問題的性質,這是因為這些知識可以幫助理解數(shù)據(jù)庫管理器與其相關的組件如何相互作用?;?UNIX 的環(huán)境使用基于系統(tǒng)進程的體系結構。例如,將 DB2 通信偵聽器作為系統(tǒng)進程進行創(chuàng)建。諸如 Windows 之類的 Intel 操作系統(tǒng),使用基于線程的體系結構以達到性能最大化。

代理

代理可以被看作是代表應用程序執(zhí)行所有數(shù)據(jù)庫操作的工人。有兩種主要類型的 DB2 代理:

  • 協(xié)調代理程序(db2agent): 協(xié)調代理程序代表應用程序協(xié)調工作,并使用進程間通信(IPC)或遠程通信協(xié)議與其它代理程序進行通信。所有來自客戶機應用程序的連接請求,無論是本地還是遠程的,都分配了相應的協(xié)調代理程序。

  • 子代理程序(db2agntp): 如果啟用了 intra_parallel 數(shù)據(jù)庫管理器配置參數(shù),協(xié)調代理程序就會把數(shù)據(jù)庫請求分發(fā)給子代理程序(db2agntp)。這些代理程序執(zhí)行應用程序的請求。一旦創(chuàng)建了協(xié)調代理程序,通過協(xié)調對數(shù)據(jù)庫執(zhí)行請求的子代理程序(db2agent),協(xié)調代理程序代表其應用程序處理所有數(shù)據(jù)庫請求。

當某個代理程序或子代理程序完成其任務時,它就轉為空閑狀態(tài)。當子代理程序處于空閑狀態(tài)時,其名稱從 db2agntp 變?yōu)?db2agnta。空閑代理程序駐留在代理程序池中。這些代理程序可用于來自代表客戶機程序進行操作的協(xié)調代理程序,或來自代表現(xiàn)有協(xié)調代理程序進行操作的子代理程序的請求。可用的代理程序數(shù)取決于數(shù)據(jù)庫管理器配置參數(shù) maxagents和 num_poolagents。圖 3 顯示了 DB2 進程模型。


圖 3. DB2 進程模型(用于非分區(qū)數(shù)據(jù)庫)
DB2 進程模型

上圖中的每一個圓圈代表示引擎分派單元(EDU),在 Linux/UNIX 平臺上稱為進程,而在 Windows 上稱為線程。

db2fmp 是一個受防護的進程。用于在防火墻之外執(zhí)行受防護的存儲過程和用戶定義的函數(shù)。db2fmp 始終是獨立的進程,但是根據(jù)它執(zhí)行的例程類型,也可能是多線程的。

下面列出了一些每個數(shù)據(jù)庫系統(tǒng)使用的重要線程或進程:

  • db2pclnr:緩沖池頁面清除程序。
  • db2logmgr:日志管理器。該進程為可恢復的數(shù)據(jù)庫管理日志文件。
  • db2loggr:該進程操作日志文件用于處理事務進程和恢復。
  • db2dlock:用于檢測死鎖。
  • db2taskd:用于后臺數(shù)據(jù)庫任務的分發(fā)。進程通過調用 db2taskp 執(zhí)行該任務。

為了使數(shù)據(jù)庫服務器能發(fā)揮作用,必須具備系統(tǒng)控制器(db2sysc)。同樣,啟動其他眾多線程和進程來執(zhí)行不同任務。下面列出了其中一些。在 參考資料 一節(jié)中參考 DB2 信息中心,了解更多關于 DB2 進程的信息。

  • db2resync:resync 代理,可以掃描全局的 resync 列表。
  • db2gds:基于 UNIX 系統(tǒng)的全局守護進程衍生程序(Global Daemon Spawner)進程,它將啟動新的進程。
  • db2wdog:基于 UNIX 系統(tǒng)的看守程序,處理異常終止。
  • db2pdbc:它處理來自遠程節(jié)點的并行請求。(只用于分區(qū)數(shù)據(jù)庫環(huán)境中)。
  • db2fmd:默認的監(jiān)視器守護進程。
  • db2disp:客戶連接集中分派器。

圖 4. IDS 內存體系結構和后臺進程
IDS 內存體系結構

IDS 由三個主要組件組成:進程,內存和磁盤。剛剛討論了進程組件,本文稍后將討論內存和磁盤組件。

IDS 是一個多線程數(shù)據(jù)庫服務器。該多線程體系結構使用了很少的進程來執(zhí)行數(shù)據(jù)庫活動。通過使用線程,一個進程可以為一個以上的應用程序工作。如果需要的話可以為數(shù)據(jù)庫服務器動態(tài)分配進程,因此才有了動態(tài)服務器(Dynamic Server)這個術語。IDS 允許增加可伸縮性。這種多線程實現(xiàn)可以容納大量的事務而只占用較少的額外資源。

虛擬進程(VP)

oninit 進程又稱為虛擬處理器,組成了 IDS。每個 VP 屬于一個 VP 類。一個 VP 類負責執(zhí)行一組特定任務集。oninit 進程被映射到數(shù)據(jù)庫服務器使用的不同 VP 類。 下面對每一種 VP 類進行了簡要說明:

  • CPU VP:該類執(zhí)行大多數(shù)進程,它的目的就是執(zhí)行數(shù)據(jù)庫服務器進程的所有 CPU 密集型任務。管理員可以根據(jù)需要通過數(shù)據(jù)庫服務器增加或減少 CPU VP 類的數(shù)量。
  • KAIO VP:Kernel Asynchronous I/O VP 運行內部線程來對原始設備執(zhí)行 I/O。
  • AIO VP:該類用來執(zhí)行 I/O 從而操作系統(tǒng)文件(也稱為成熟文件)。
  • LIO VP: 運行內部線程從而寫入磁盤上的邏輯日志。
  • PIO VP: 運行內部線程從而寫入磁盤上的物理日志。
  • SHM VP: 當應用程序正在使用通信的共享內存方法時,該類將為新連接處理輪詢任務。
  • SOC VP: 為通信的 TCP/IP Berkeley 套接字方法處理輪詢任務。
  • TLI VP: 為 Transport Library Interface (TLI) 編程接口處理輪詢任務,該接口用于 TCP/IP 或 Internetwork Packet Exchange (IPX)/Sequenced Packet Exchange (SPX) 和應用程序之間的通信。
  • MSC VP: 為其他混合的任務運行線程。






內存模型


圖 5. DB2 內存結構
DB2 內存結構

本文將介紹實例共享內存和數(shù)據(jù)庫共享內存。

實例共享內存

每個 DB2 實例都有一個實例共享內存。實例共享內存是在數(shù)據(jù)庫管理器啟動(db2start)時分配的,并隨著數(shù)據(jù)庫管理器的停止(db2stop)而釋放。這種內存集用于實例級的任務,例如監(jiān)控、審計和節(jié)點間通信。下面的數(shù)據(jù)庫管理器配置(dbm cfg)參數(shù)控制著對實例共享內存以及其中個別內存池的限制:

  • 實例內存(instance_memory): 這個參數(shù)指定了應該為實例管理保留的內存數(shù)量。包括描述實例數(shù)據(jù)庫的內存區(qū)。
  • 監(jiān)視器堆(mon_heap_sz): 該參數(shù)確定了頁面中的內存數(shù)量,用于分配給數(shù)據(jù)庫系統(tǒng)監(jiān)視數(shù)據(jù)。當執(zhí)行數(shù)據(jù)庫監(jiān)視活動時,將從監(jiān)視堆分配內存,這些活動包括拍攝快照、打開監(jiān)視器開關、重置監(jiān)視器或激活一個事件監(jiān)視器。

  • 審計緩沖區(qū)大?。╝udit_buf_sz): 該參數(shù)指定審計數(shù)據(jù)庫時使用的緩沖區(qū)的大小。這將用于 db2audit 實用工具。

  • 快速通信緩沖區(qū)(fcm_num_buffers): 該參數(shù)指定了 4 KB 大小的緩沖區(qū)的數(shù)量,這些緩沖區(qū)用于數(shù)據(jù)庫服務器內部以及數(shù)據(jù)庫服務器之間的內部通信,還用于分區(qū)和代理之間的節(jié)點間通信。分區(qū)實例或具有 INTRA_PARALLEL 的實例設置為 ON。

數(shù)據(jù)庫內存模型

圖中的完整綠色方框意味著,在數(shù)據(jù)庫啟動的時候,該內存池是完全分配的,否則,就只分配部分的內存。例如,當一個數(shù)據(jù)庫第一次啟動時,不管 util_heap_sz 的值是多少,只有大約 16 KB 的內存被分配給實用工具堆。當一個數(shù)據(jù)庫實用工具(例如備份、恢復、導出、導入和裝載)啟動時,才會按 util_heap_sz 指定的大小分配全額的內存。


圖 6. DB2 數(shù)據(jù)庫共享內存
DB2 數(shù)據(jù)庫共享內存

數(shù)據(jù)庫緩沖池 通常是數(shù)據(jù)庫共享內存中最大的一塊內存。DB2 在其中操縱所有常規(guī)數(shù)據(jù)和索引數(shù)據(jù)。一個數(shù)據(jù)庫必須至少有一個緩沖池,并且可以有多個緩沖池,具體要視工作負載的特征、數(shù)據(jù)庫中使用的數(shù)據(jù)庫頁面大小等因素而定。

IDS 的共享內存組件 屬于實例級,被分為三個部分,如上面圖 4 所示。

  • 常駐內存段:也被稱為常駐區(qū),包含用于從數(shù)據(jù)庫緩存頁面的緩沖區(qū)、最近最少使用(LRU)的隊列、邏輯日志緩沖區(qū),并包含了大量結構用于跟蹤服務器使用的資源。這將有助于更加快速地訪問。
  • 虛擬內存段:虛擬區(qū)用于維護和控制進程所需的資源。虛擬段包含關于線程和會話信息以及它們所使用的數(shù)據(jù)。這些信息總是在不斷變化(增加或減少)。數(shù)據(jù)庫服務器在虛擬區(qū)中管理內存的分配和解除分配。虛擬內存段還包含字典緩存器,存儲過程緩存器,以及在向磁盤一次性寫入大塊頁面時使用到的較大的緩沖池。當對數(shù)據(jù)進行分類時,這個區(qū)也會增長,例如通過服務器構建大索引。
  • 通信段:共享內存通信區(qū),也被稱為消息區(qū),被作為客戶機和服務器進程的一種通信機制。在客戶機和服務器通過共享內存進行通信時,消息區(qū)將用作兩者之間的消息緩沖區(qū)。

磁盤組件 是一個或多個被分配到數(shù)據(jù)庫服務器的磁盤空間單元的集合。包括所有維護服務器系統(tǒng)的系統(tǒng)信息,以及所有存儲在磁盤組件內的數(shù)據(jù)庫數(shù)據(jù)。IDS 在一個單個計算機上可具有從 1 到 256 個實例,與 DB2 相同。


圖 7. 高級 IDS 實例體系結構
 高級 IDS 實例體系結構

DB2 在四個不同內存集(memory set)拆分和管理內存,這四個內存集是:

  • 實例共享內存(instance shared memory)
  • 數(shù)據(jù)庫共享內存(Database shared memory)
  • 應用程序組共享內存(application group shared memory)
  • 代理私有內存(agent private memory)

每種內存集由各種不同的內存池(亦稱堆)組成。圖 1 也給出了各內存池的名稱。例如,lock list 是屬于數(shù)據(jù)庫共享內存集的一個內存池。sort heap 是屬于代理私有內存集的一個內存池。







數(shù)據(jù)庫創(chuàng)建和存儲模型

在 DB2 中,可以使用數(shù)據(jù)庫創(chuàng)建命令或使用控制中心工具創(chuàng)建數(shù)據(jù)庫。本文將介紹如何使用命令創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象。在探討這些命令之前,先來了解一下什么是表空間。

表空間

表空間是一個包含表、索引、大對象和長數(shù)據(jù)的存儲結構。表空間謂語數(shù)據(jù)庫內。它允許您直接將數(shù)據(jù)庫和表數(shù)據(jù)的位置分配到容器上。(一個容器可以是一個目錄名、一個設備名或一個文件名。)這種機制可以提供改善的性能和更加靈活的配置。一個數(shù)據(jù)庫可以具有多于一個的表空間,而一個表空間不能同時屬于多個數(shù)據(jù)庫。

表空間管理

在 DB2 中,可以有兩種不同的方式管理表空間:, table spaces are managed in two different ways:

  • 系統(tǒng)管理的空間(SMS):SMS 表空間由操作系統(tǒng)進行管理。容器被定義成常規(guī)操作系統(tǒng)文件,并且是通過操作系統(tǒng)調用訪問的。這意味著所有的常規(guī)操作系統(tǒng)功能將處理以下內容:操作系統(tǒng)將緩沖 I/O;根據(jù)操作系統(tǒng)約定分配空間;如有必要就自動擴展表空間。但是,不能從 SMS 表空間刪除容器,并且僅限于將新的容器添加到分區(qū)的數(shù)據(jù)庫。前一節(jié)中所說明的那三個缺省表空間都是 SMS。
  • 數(shù)據(jù)庫管理的空間(DMS):DMS 表空間是由 DB2 管理的??梢詫⑷萜鞫x成文件(在創(chuàng)建表空間時將把給定的大小全部分配給它們)或設備。分配方法和操作系統(tǒng)允許多少 I/O,DB2 就可以管理多少 I/O。可以通過使用 ALTER TABLESPACE 命令來擴展容器。還可以釋放未使用的那部分 DMS 容器(從 Version 8 開始)。 當創(chuàng)建數(shù)據(jù)庫時,將創(chuàng)建三個表空間(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)。

根據(jù)表空間的用途和管理方式將它們分類。根據(jù)用途有五種不同的表空間:

  • 目錄表空間:每個數(shù)據(jù)庫只有一個目錄表空間,它是在發(fā)出 CREATE DATABASE 命令時創(chuàng)建的。目錄表空間被 DB2 命名為 SYSCATSPACE,它保存了系統(tǒng)目錄表。總是在創(chuàng)建數(shù)據(jù)庫時創(chuàng)建該表空間。
  • 常規(guī)表空間:常規(guī)表空間保存表數(shù)據(jù)和索引。它還可以保存諸如大對象(Large Object,LOB)之類的長數(shù)據(jù),除非這些數(shù)據(jù)顯式地存儲在長表空間中。如果某些表空間是數(shù)據(jù)庫管理的空間(Database Managed Space,DMS),則可以將表及其索引分別放到單獨的常規(guī)表空間中。我們將在本文后面定義 DMS 和系統(tǒng)管理的空間(System Managed Space,SMS)之間的區(qū)別。每個數(shù)據(jù)庫中必須至少有一個常規(guī)表空間。創(chuàng)建數(shù)據(jù)庫時指定該表空間的默認名為 USERSPACE1。
  • 長表空間: 長表空間用于存儲長型或 LOB 表列,它們必須駐留在 DMS 表空間中。它們還可以存儲結構化類型的列或索引數(shù)據(jù)。如果沒有定義長表空間,那么將把 LOB 存儲在常規(guī)表空間中。長表空間是可選的,缺省情況不會創(chuàng)建長表空間。
  • 系統(tǒng)臨時表空間: 系統(tǒng)臨時表空間用于存儲執(zhí)行 SQL 操作(比如排序、重組表、創(chuàng)建索引和連接表)期間所需的內部臨時數(shù)據(jù)。每個數(shù)據(jù)庫必須至少有一個系統(tǒng)臨時表空間。隨數(shù)據(jù)庫創(chuàng)建的系統(tǒng)臨時表空間的默認名為 TEMPSPACE1。
  • 用戶臨時表空間: 用戶臨時表空間存儲已聲明的全局臨時表。創(chuàng)建數(shù)據(jù)庫時不存在用戶臨時表空間。至少應當創(chuàng)建一個用戶臨時表空間以允許定義已聲明的臨時表。用戶臨時表空間是可選的,默認情況下不會創(chuàng)建用戶臨時表空間。

     

圖 8 顯示了一個具有五個表空間的數(shù)據(jù)庫:一個目錄表空間、兩個常規(guī)表空間、一個長表空間和一個系統(tǒng)臨時表空間。沒有創(chuàng)建用戶臨時表空間。其中有 8 個容器。


圖 8. 具有表空間和緩沖池的 DB2 數(shù)據(jù)庫
具有表空間和緩沖池的 DB2 數(shù)據(jù)庫

可使用以下命令創(chuàng)建此類數(shù)據(jù)庫和表空間。

create database sample
                                                        connect to sample
                                                        create bufferpool BP1 size 1000 pagesize 4 K
                                                        create bufferpool BP2 size 1000 pagesize 8 K
                                                        create bufferpool BP3 size 1000 pagesize 32 K
                                                        create regular tablespace userspace1 pagesize 8 k managed by database
                                                        using (file 'C1U1' 1000, file 'C2U1' 1000) bufferpool BP2
                                                        create regular tablespace userspace2 pagesize 4 k managed by database
                                                        using (file 'C1U2' 1000) bufferpool BP1
                                                        create large tablespace largespace1 pagesize 32 k managed by database
                                                        using (file 'C1L1' 1000, file 'C2L1' 1000, file 'C3L1' 1000) bufferpool BP3
                                                        create temporary tablespace systemp1 pagesize 32 k managed by system
                                                        using (path '/db1/C1T1') bufferpool BP3
                                                        

使用上面這組命令將創(chuàng)建緩沖池和表空間?,F(xiàn)在來看一下 DB2 中的容器和緩沖池是什么。

容器

每個表空間都有一個或多個容器。重申一次,您可以認為容器是孩子,而表空間是其父母。每個容器只能屬于一個表空間,但是一個表空間可以擁有許多容器??梢詫⑷萜魈砑拥?DMS 表空間,或者從 DMS 表空間中刪除容器,而且可以更改容器的大小。只能將容器添加到某個分區(qū)中分區(qū)數(shù)據(jù)庫上的 SMS 表空間,在添加之前該分區(qū)還未給表空間分配容器。添加新的容器時,將啟動一個自動的重新均衡操作以便將數(shù)據(jù)分布到所有容器上。要了解更多關于容器和重新均衡操作的內容,請參考 DB2 9 Information Center。

緩沖池

一個緩沖池是與單個數(shù)據(jù)庫相關聯(lián)的,可以被多個表空間使用。當考慮將緩沖池用于一個或多個表空間時,必須保證表空間頁大小和緩沖池頁面大小對于緩沖池所 “服務” 的所有表空間而言都是一樣的。一個表空間只能使用一個緩沖池。創(chuàng)建數(shù)據(jù)庫時,會創(chuàng)建一個名為 IBMDEFAULTBP 的默認緩沖池,所有的表空間都共享該緩沖池。可以使用 CREATE BUFFERPOOL 語句添加更多的緩沖池。大型緩沖池還會對查詢優(yōu)化產(chǎn)生影響,因為更多的工作可在內存中完成。要了解更多關于緩沖池的內容,請參考 DB2 9 Information Center。

IDS 中的數(shù)據(jù)庫創(chuàng)建

現(xiàn)在您已經(jīng)了解了 DB2 中數(shù)據(jù)庫是如何創(chuàng)建的以及 如何對表空間進行管理,現(xiàn)在來看一下在 IDS 中 dbspaces 和數(shù)據(jù)庫是如何彼此相關的。

dbspaces

dbspace 是由一個或多個塊組成的邏輯單元。Chunk 表示存儲的物理單元。數(shù)據(jù)庫服務器可以使用成熟的(cooked)文件或原始(raw)設備來存儲數(shù)據(jù)。數(shù)據(jù)庫是被創(chuàng)建在常規(guī) dbspace 中的,因此在創(chuàng)建數(shù)據(jù)庫之前必須已經(jīng)存在一個常規(guī) dbspace。默認的常規(guī) dbspace 稱為 rootdbs,它是在創(chuàng)建 IDS 實例時被創(chuàng)建的。除非 create database 命令中說明要使用另一個常規(guī) dbspace,否則將使用默認 dbspace 創(chuàng)建數(shù)據(jù)庫。系統(tǒng)目錄表和數(shù)據(jù)庫本身位于同一個 dbspace 中。同一個 Informix 實例中的任何其他數(shù)據(jù)庫都可以使用所有的 dbspace。IDS 具有大量的 dbspace,下面將做簡要介紹。

  • 常規(guī) dbspace: 常規(guī) dbspace 用來存放數(shù)據(jù)庫對象,如系統(tǒng)目錄表、用戶表和索引。
  • 臨時 dbspace:臨時 dbspace 屬于常規(guī) dbspace,數(shù)據(jù)庫服務器在存儲臨時表時將使用到它。當使用臨時 Blobspace 時,數(shù)據(jù)庫服務器并不記錄日志。由于這樣做減少了 I/O 和檢查點操作因而改善了數(shù)據(jù)庫性能。
  • Blobspaces: blobspace 是由一個或多個塊組成的邏輯單元。blobspace 用來存儲文本和字節(jié)數(shù)據(jù)。數(shù)據(jù)庫服務器將存儲在 blobspace 中的數(shù)據(jù)直接寫入到磁盤。不會對 blobspace 對象記錄日志。
  • Sbspaces: sbspace 是由一個或多個塊組成的邏輯單元。sbspace 用來存儲智能大對象。智能大對象由字符大對象(CLOBs)和二進制大對象(BLOBs)數(shù)據(jù)類型組成??梢詫Υ鎯υ?sbspace 中的數(shù)據(jù)庫對象記錄日志。使用 Informix API(一個應用程序)可以存儲或檢索存儲在 sbspace 中的智能 LOB。
  • Extspaces: extspace 是與一個字符串相關聯(lián)的邏輯名稱,該字符串表示外部數(shù)據(jù)的位置。在對數(shù)據(jù)庫進行開發(fā)時(擴展 IDS 的功能)將用到 extspace??梢允褂孟鄳挠脩舳x的訪問方法來訪問 extspace 中的內容。

     

舉例來說,如果運行下面的數(shù)據(jù)定義語言(data definition language,DDL),首先會創(chuàng)建 2 GB 大小的 dbspace Dbdbspace,然后在 dbspace Dbdbspace 中創(chuàng)建數(shù)據(jù)庫 sampledb。sampledb 的數(shù)據(jù)庫目錄表位于 Dbdbspace 中。

Onspaces -c   -d  Dbdbspace -p /work/database/chunk1 -o 0 -s 20480000
                                                        where,
                                                        c  For Creating Dbspace
                                                        p  path name for the physical unit
                                                        o  offset in K bytes
                                                        s  size of dbspace in Kbytes
                                                        a  for adding chunk to a dbspace
                                                        Create database sampledb in Dbdbspace;


圖 9. 具有 Dbspace 和塊的 IDS 數(shù)據(jù)庫
具有 Dbspace 和塊的 IDS 數(shù)據(jù)庫

如圖 9 所示,數(shù)據(jù)庫中的所有數(shù)據(jù)庫對象可以被存儲在一些 dbspace 中。這個例子具有一個默認的 Root Dbspace、三個稱為 Root Dbspace 的常規(guī) dbspace、User Dbspace、Index Dbspace、一個 Temporary Dbspace、一個 Blobspace、一個智能 LOB sbspace 和一個 extspace。上面這個例子中 Database 1 中的數(shù)據(jù)庫對象跨越了所有可用的 dbspace。表和索引可以駐留在不同的 dbspace 中。為了更好地理解,一個常規(guī) dbspace 被命名為 Index Dbspace,您可以選擇在這個 dbspace 中創(chuàng)建索引。您還可以選擇在根 dbspace 中創(chuàng)建數(shù)據(jù)庫(盡管這不是一個很好的應用)。在圖 9 中,Database 2 駐留在 Root Dbspace 中。

下面的代碼將向 userDbSpace 添加一個塊: Onspaces -a -d UserdbSpace -p /work/database/chunk3 -o 0 -s 4096000 . 關于 dbspaces 和向 dbspaces 添加塊(chunk)的更多信息,請參見 IDS v10.0 Information Center。







備份和恢復

DB2 中的備份是一個數(shù)據(jù)庫以及控制信息的副本,可以用于恢復錯誤事件。數(shù)據(jù)庫備份可以最小化數(shù)據(jù)的損失并使您能夠使用恢復進程從備份副本中重新構建錯誤的數(shù)據(jù)庫。IDS 中的備份復制了一個或多個 dbspace、blobspace、spspace 和 Informix 實例的邏輯日志和物理日志。

在 DB2 中使用 BACKUP 命令進行數(shù)據(jù)庫備份:

BACKUP DATABASE sample ONLINE TO /dev/rdir1, /dev/rdir2
                                                        

在 IDS 中,有兩種名為 ontape 和 onbar 的實用工具。

ontape 實用工具是 Informix 備份和恢復實用工具的較老版本,后者被設計為和兩個本地連接備份設備一起使用(一個用于實例備份,另一個用于邏輯日志備份)。從 IDS v10 開始,ontape 操作可以被定向到標準輸入或標準輸出設備( “standard in” 或 “standard out”,STDIO),因此為很多選項提供了支持。

onbar 備份實用工具有兩個組件:onbar API 和存儲管理器。Onbar API 是由 X/Open Organization 定義的 Open Systems Backup Services Data Movement (XBSA) API 客戶機組件的 Informix 實現(xiàn)。

ontape 實用工具可以串行化備份 dbspace,而 onbar 可以并行備份 dbspace。


圖 10. IDS 中的備份實用工具
IDS 中的備份實用工具

日志類型

  • 活動日志:只要滿足下列兩個條件中的任意一個,則可認為日志是活動的:
    • 該日志包含該日志包含沒有提交或回滾的事務
    • 該日志包含已提交但尚未刷新到數(shù)據(jù)庫磁盤(外部化)的事務。
  • 聯(lián)機歸檔日志; 這些日志包含已提交并外部化的事務的信息。和活動日志位于同一目錄。
  • 脫機歸檔日志: 歸檔日志從活動日志所在目錄移動到其他目錄或媒體中即為脫機歸檔日志??梢允止せ蜃詣舆M行移動。

除了上面討論的日志,IDS 還把日志分類為邏輯日志和物理日志。可是使用 DB2 中的 LOGPRIMARY 和 LOGSECONDARY 數(shù)據(jù)庫配置參數(shù)定義日志文件的數(shù)量。在 IDS 中,可以通過設置配置參數(shù) LOGFILES 完成此操作。和 DB2 中的 LOGSECONDARY 相似,IDS 提供了動態(tài)記錄日志選項??梢酝ㄟ^設置配置參數(shù) DYNAMIC_LOGS 啟用該選擇。要了解更多關于日志類型的內容,請參考 參考資料 一節(jié)中的 DB2 和 IDS 信息中心。

日志機制

IDS 和 DB2 具有相似的日志機制。下面將簡要介紹這兩種類型的機制:
  • 循環(huán)日志: 循環(huán)日志是 DB2 的默認日志模式。正如其名字所暗示的一樣,這種類型的日志可以以循環(huán)模式重用日志。例如,如果具有 4 種主要日志,將按照這樣的順序使用:Log #1、Log #2、Log #3、Log #4、Log #1、Log #2 等等。只要日志中包含關于已經(jīng)提交并外部化到數(shù)據(jù)庫磁盤上的事務的信息,就可以以循環(huán)日志的形式重用該日志。換而言之,如果日志仍然是活動日志,那么就不能重用該日志。

    在 IDS 中,始終以循環(huán)的方式使用邏輯文件。然而,可以對這些邏輯文件進行備份以用于日后恢復??梢詫⑦壿嬑募浞莸?LTAPEDEV 配置參數(shù)中說明的路徑。

  • 歸檔日志: 當使用歸檔日志時,將對日志進行歸檔(保留)操作。然而在循環(huán)日志中將改寫被提交和外部化的事務,以及為它們保留的歸檔日志。例如,如果具有 4 個主要日志,可能按這樣的順序使用:Log #1、Log #2、Log #3、Log #4、(如果 Log #1 的所有事務都被提交并外部化,那么將對 Log #1 歸檔)、Log #5、(如果 Log #2 的所有事務都被提交并外部化,那么將對 Log #2 歸檔)、Log #6 等等。通過將數(shù)據(jù)庫配置參數(shù) LOGRETAIN 設置為 ON 可啟用歸檔日志。

    IDS 將日志文件歸檔到包內,配置參數(shù) LTAPEDEV 為之指定一個有效的路徑或設備。如果該參數(shù)值為空,則表示日志沒有被歸檔。

備份機制

現(xiàn)在了解一下 DB2 和 IDS 中不同類型的備份機制。

  • 離線備份: 離線備份是 DB2 9 和 IDS 中最簡單的一種備份形式。如果使用離線備份,當數(shù)據(jù)庫離線時,將對整個數(shù)據(jù)庫備份。換而言之,在離線備份期間,不允許用戶訪問數(shù)據(jù)庫。在 IDS 的離線備份中,數(shù)據(jù)庫服務器切換到 Quiescent 模式。在此模式下,用戶不能夠訪問數(shù)據(jù)庫服務器。下面給出了在 DB2 中進行離線備份,以及在 IDS 中的 Quiescent 模式下備份的例子:

    In DB2(windows)
                                                                backup database sample to c:\backup
                                                                In IDS
                                                                ontape -s -L 0 (Level 0 backup)
                                                                onbar -b -L 0
                                                                

  • 在線備份: 即使應用程序和數(shù)據(jù)庫處于連接狀態(tài),也可進行在線備份。為了實現(xiàn)在線備份,在 DB2 中必須啟用歸檔日志。在 IDS 中,即使在循環(huán)日志機制下,對在線備份也沒有嚴格的要求。除了對數(shù)據(jù)庫備份外,在 DB2 中還可進行表空間級的備份,在 IDS 中可以進行 dbspace 備份。在 IDS 中,對整個數(shù)據(jù)庫進行備份被稱為 0 級備份,而在 DB2 中稱為完全備份。在 DB2 中,完全備份應該是一個離線備份。而在 IDS 中,甚至在在線狀態(tài)下也可進行 0 級備份。

    In DB2
                                                                backup database sample tablespace( syscatspace, userspace1,
    userspace2 ) online to /db2tbsp/backup1, /db2tbsp/backup2 In IDs onbar -b rootdbs, userdbs1, userdbs5

  • 增量備份: DB2 和 IDS 都支持增量備份。增量備份就是對最近一次數(shù)據(jù)庫全備份以來所有修改了的數(shù)據(jù)進行備份。在 IDS 中,增量備份又被稱作 1 級備份。

    圖 11. 增量備份
    增量備份


    In DB2
                                                                (Sun) backup db mydb from c:\backup
                                                                (Mon) backup db mydb online incremental from c:\backup
                                                                (Tue) backup db mydb online incremental from c:\backup
                                                                In IDS
                                                                ontape -s -L 1 (Level 1 backup)
                                                                onbar -b -L 1
                                                                

  • Delta 備份: Delta 備份是對最近一次成功的備份(包括全備份、增量備份和 delta 備份)以來被修改了的數(shù)據(jù)的備份。delta 備份也被稱為 2 級備份。

    Figure 12. Delta 備份
    Delta 備份


    In DB2
                                                                (Sun) backup db mydb from c:\backup
                                                                (Mon) backup db mydb online incremental delta from c:\backup
                                                                (Tue) backup db mydb online incremental delta from c:\backup
                                                                In IDS
                                                                ontape -s -L 2 (Level 2 backup)
                                                                onbar -b -L 2
                                                                

數(shù)據(jù)庫恢復

在 DB2 中,可以使用恢復實用工具進行數(shù)據(jù)庫恢復。在 IDS 中,可以使用 ontape 或 onbar 實用工具以及 -r 選項。恢復實用工具使用一個備份文件作為輸入,并使用一個新的或現(xiàn)有的數(shù)據(jù)庫作為輸出。在 DB2 和 IDS 中,可以對完整的數(shù)據(jù)庫進行恢復,也可以對表空間(在 IDS 中為 dbspace )進行恢復。在 IDS 中,可以恢復 dbspace、物理日志和邏輯日志。要省略從備份中恢復的邏輯文件,需要使用 -p 選項。如果只對邏輯文件進行恢復,需要使用 -l 選項。IDS 和 DB2 都允許增量恢復。

下面給出了完全恢復、增量恢復、表級和 dbspace 級恢復的例子。


完全恢復
                                                        In DB2
                                                        restore database sample from c:\backup taken at 20060314131259
                                                        without rolling forward without prompting
                                                        In IDS
                                                        ontape -r
                                                        onbar -r
                                                        


增量恢復
In DB2
                                                        restore database mydb incremental taken at 20060414131259
                                                        In IDS
                                                        In case of ontape, it would prompt the user to insert any 
incremental or delta backups to be restored.


表空間和 dbspace 級恢復
In DB2
                                                        restore database sample tablespace( mytblspace1 ) online from
                                                        /db2tbsp/backup1, /db2tbsp/backup2
                                                        In IDS
                                                        Onbar  -r   userdbs1,  userdbs5
                                                        

數(shù)據(jù)庫前滾

前滾 命令允許指定時間點(point-in-time)恢復。這意味著該命令可以使您遍歷 DB2 日志,并且可以重做/取消日志中記錄的操作,從而恢復到特定的時間點。在 IDS 中要做到這一點,可通過使用 -p 選項只對 dbspace 和物理日志進行恢復。然后再使用 -l 選項進行其他恢復。注意這些操作需要按照一定順序進行。如果使用 onbar 實用工具,可以回滾到某個時間點或任何一個特定的日志。在 IDS 中,onbar 實用程序支持指定時間點回滾恢復和指定日志恢復。

In DB2
                                                        rollforward  database sample to end of logs and complete
                                                        rollforward  database sample to timestamp and complete
                                                        rollforward  database sample to timestamp using local time and complete
                                                        In IDS
                                                        onbar   -r    -t     time
                                                        onbar   -r    -l     logid
                                                        







安全特性

DB2 和 IDS 安全模型都由兩個主要組件組成:身份驗證和授權。


圖 13. DB2 安全模型
DB2 安全模型

DB2 身份驗證

身份驗證就是使用一種安全機制驗證所提供的用戶 ID 和密碼的過程。用戶和組的身份驗證是使用一種 DB2 之外的設施進行管理的,例如操作系統(tǒng)、域控制器或者 Kerberos 安全系統(tǒng),這種身份驗證方式與其他數(shù)據(jù)庫管理系統(tǒng)(DBMS)如 Oracle 和 SQL Server 不同,在其他數(shù)據(jù)庫管理系統(tǒng)中,數(shù)據(jù)庫本身以及諸如操作系統(tǒng)等外部設施對用戶帳戶進行定義和身份驗證。在連接時如果沒有提供用戶憑證,DB2 將使用用來登錄到發(fā)出請求的工作站的用戶 ID 和密碼。

默認情況下,建立一個實例,它將使用用于所有實例級和連接級請求的一種身份驗證類型。數(shù)據(jù)庫管理器配置參數(shù) AUTHENTICATION 對此做了指定。Version 9 中引入了數(shù)據(jù)庫管理器參數(shù) SRVCON_AUTH。該參數(shù)專門處理與數(shù)據(jù)庫的連接。所以,舉例來說,如果在 DBM CFG 中具有如下設置:

DB2 GET DBM CFG
                                                        Server Connection Authentication (SRVCON_AUTH) = KERBEROS
                                                        Database manager authentication (AUTHENTICATION) = SERVER_ENCRYPT
                                                        

連接到該實例將使用 SERVER_ENCRYPT。然而,與數(shù)據(jù)庫的連接將使用 KERBEROS 身份驗證。如果沒有為服務器正確地初始化 KERBEROS,但是提供了一個有效的用戶 ID 和密碼,那么將允許用戶連接到實例,但是不允許連接到數(shù)據(jù)庫。

下面的表總結了 DB2 中可以的身份驗證類型。在一個客戶機-網(wǎng)關-主機環(huán)境中,這些身份驗證選項是在客戶機和網(wǎng)關上設置的,而不是在主機上設置的。


表 3. DB2 中的身份驗證類型
類型 描述
SERVER 在服務器上進行身份驗證。
SERVER_ENCRYPT 在服務器上進行身份驗證。密碼在發(fā)送到服務器之前先在客戶機上進行加密。
CLIENT 在客戶機上進行身份驗證。
*KERBEROS Kerberos 安全軟件執(zhí)行身份驗證。
*KRB_SERVER_ENCRYPT 如果客戶機設置為 KERBEROS,則使用 Kerberos 安全軟件執(zhí)行身份驗證。否則使用 SERVER_ENCRYPT 進行身份驗證。
DATA_ENCRYPT 在服務器上進行身份驗證。服務器接收加密過的用戶 ID 和密碼,并且對數(shù)據(jù)進行加密。除了還要對數(shù)據(jù)進行加密外,其操作和 SERVER_ENCRYPT 相同。
DATA_ENCRYPT_CMP 這種身份驗證方式和 DATA_ENCRYPT 相同,唯一不同的是這種模式允許不支持 DATA_ENCRYPT 模式的較老用戶使用 SERVER_ENCRYPT 身份驗證進行連接。這種情況下數(shù)據(jù)沒有被加密。如果客戶機連接支持 DATA_ENCRYPT ,將強制加密數(shù)據(jù),并且不會退回到 SERVER_ENCRYPT 認證。這種認證類型只在服務器的數(shù)據(jù)庫管理器配置文件中是有效的,當在客戶機或網(wǎng)關實例的 CATALOG DATABASE 命令中使用是無效的。
GSSPLUGIN 可以使用一個外部 GSS-API 插件對身份驗證進行控制。
GSS_SERVER_ENCRYPT 可以使用一個外部 GSS-API 插件對身份驗證進行控制。如果客戶機不支持服務器的 GSS-API 插件中的一種,將使用 SERVER_ENCRYPT 身份驗證類型。
*這些設置只有在 Windows 2000、AIX、Solaris 和 Linux 操作系統(tǒng)下是有效的。

IDS 安全機制


圖 14. IDS 安全模型


IDS 認證

在 IDS 中,有 4 個用于身份驗證的選項,如圖 4 所示。下面對每一種選項進行了簡要說明:
表 4. IDS 安全機制
方法 屬性 說明
OS 用戶 ID 不進行加密,使用 OS 密碼查找 IDS 始終使用這種基本的身份驗證。這種技術為每一個連接到 DBMS 的用戶使用 OS 用戶 ID 和密碼。用戶或應用程序提交用戶 ID 和密碼,DBMS 使用一個 OS 庫函數(shù)驗證密碼。如果 OS 函數(shù)表明 OS 的用戶 ID 和密碼集中沒有該用戶 ID 和/或密碼,那么將拒絕用戶連接到 DBMS。
密碼加密 使用 OS 用戶 ID ,但是在傳輸過程對密碼進行加密。 IDS 支持從應用程序向數(shù)據(jù)庫服務器傳輸密碼時對密碼進行加密。要實現(xiàn)此目的,需要對客戶機和服務器各自的 SQLHOSTS 文件或注冊表以及 conscm.cfg 文件配置密碼加密。
Pluggable Authentication Model (PAM) 用戶提供的身份驗證方法 使用 PAM 的身份驗證使您能夠編寫自己的方法來對用戶進行認證??梢詮膩碜缘谌降目捎媚K中選擇 PAM。組成 PAM 的庫文件通常駐留在 $INFORMIXDIR/lib 中,PAM 的配置文件位于 $INFORMIXDIR/etc 中。concsm.cfg 文件都對這些文件進行了引用。
Lightweight Directory Access Protocol (LDAP) 用戶提供的對 LDAP 目錄的訪問 LDAP 使您能夠在 LDAP 服務器上集中管理用戶帳戶。使用 LDAP 將不再需要在數(shù)據(jù)庫服務器機器上創(chuàng)建用戶帳戶。

權限和特權

授權是這樣一個過程:它為提供的用戶 ID 確定關于特定數(shù)據(jù)庫對象和操作的訪問和權限信息。DB2 在內部存儲和維護用戶和組的授權信息。每次提交一個命令時,DB2 將執(zhí)行授權檢查以確保您具有正確的權限集來執(zhí)行操作。

DB2 使用五種不同級別的權限來控制用戶對實例或數(shù)據(jù)庫執(zhí)行管理和維護操作。這五種級別是:

  • System Administrator (SYSADM) 權限
  • System Control (SYSCTRL) 權限
  • System Control (SYSCTRL) 權限
  • System Maintenance (SYSMAINT) 權限
  • Database Administrator (DBADM) 權限
  • Load (LOAD) 權限

特權是用來將在特定數(shù)據(jù)庫資源上執(zhí)行某種操作的權利授予單個用戶或組用戶。DB2 中,有兩種不同的特權類型:數(shù)據(jù)庫特權和對象特權。

數(shù)據(jù)庫特權應用在整個數(shù)據(jù)庫中,對于大多數(shù)用戶來說,其行為如同在第二個安全檢查點通過驗證的標識,在提供對數(shù)據(jù)的訪問之前必須要清除該檢查點。和應用于整體數(shù)據(jù)庫的數(shù)據(jù)庫特權不同,對象特權只應用在數(shù)據(jù)庫內特定的對象。這些對象包括模式、表空間、表、索引、視圖、包、例程、序列、服務器和昵稱。

IDS 不同于 DB2,它包含預定義的權限。在數(shù)據(jù)庫級別上授予這些權限。如果一個用戶被授予這些權限中的一種,該用戶將獲得一組特權。下面列出了這些權限。

  • 連接特權
  • 資源特權
  • DBA 特權

DBA 特權將授予所以資源特權以及維護數(shù)據(jù)庫系統(tǒng)所需的所有其他特權。這和 DB2 中的 DBADM 權限有些相像。這是 IDS 中數(shù)據(jù)庫訪問的最高特權級別。

為易于理解,下面列出了其中一些 DB2 和 IDS 特權。想要了解更詳盡的列表,請參考 DB2 Information Center
表 5. 特權

DB2 IDS Remarks
CONNECT 連接特權 允許用戶訪問數(shù)據(jù)庫。要對數(shù)據(jù)庫進行任何訪問,用戶至少要有一個連接特權。
CREATETAB
CREATE_EXTERNAL_ROUTINE
CREATEIN
資源特權 授權所有連接特權,并且允許用戶創(chuàng)建新表、索引和過程。
CREATETAB
LBAC
表級和列級特權 可以訪問特定表并且數(shù)據(jù)庫管理員可以控制表內的列。表的創(chuàng)建者或具有資源特權或 DBA 權限的用戶可以創(chuàng)建表。數(shù)據(jù)庫管理員可以授權所有不同表級的特權,如選擇、插入、刪除、更新、索引、更改、引用等。

除此之外,IDS 還允許用戶創(chuàng)建特定于數(shù)據(jù)庫的用戶組,稱之為 角色。當創(chuàng)建角色后,將用戶分配到該角色并進一步授予角色權限。在 IDS 中,在數(shù)據(jù)庫級別定義角色。







鎖機制

為改善并發(fā)性,DB2 和 IDS 結合使用了鎖和隔離級別。

鎖是一種用來將數(shù)據(jù)資源與單個事務關聯(lián)起來的機制,其用途是當某個資源與擁有它的事務關聯(lián)在一起時,控制其它事務如何與該資源交互。(我們稱與被鎖定的資源關聯(lián)的事務持有或擁有該鎖。)DB2 數(shù)據(jù)庫管理器和 IDS 用鎖來禁止事務訪問其它事務寫入的未提交數(shù)據(jù)(除非使用了未提交的讀隔離級別),并禁止其它事務在擁有鎖的事務使用限制性隔離級別時對這些行進行更新。事務一旦獲取了鎖,則在終止之前,就一直持有該鎖;該事務終止時釋放鎖,其它事務就可以使用被解鎖的數(shù)據(jù)資源了。

在 DB2 中,鎖可以放置在數(shù)據(jù)庫對象如表空間、表和行中。IDS 允許應用程序開發(fā)人員將鎖放在不同的對象上,如數(shù)據(jù)庫、表、頁或行、以及索引。

鎖類型

鎖具有幾種不同的類型,下面列出了其中一些。要了解更多關于鎖的內容,請參考 參考資料 一節(jié)中的 DB2 和 Informix 信息中心。

  • Intent None (IN)
  • Exclusive (X)
  • Update (U)
  • Super Exclusive (Z)

鎖屬性

所有鎖具有如下的基本屬性:

  • 對象: 標識被鎖定的數(shù)據(jù)資源。DB2 數(shù)據(jù)庫管理器在需要時鎖定數(shù)據(jù)資源(如表空間、表和行)。
  • 大小: 指定要鎖定的數(shù)據(jù)資源部分的物理大小。鎖并不總是必須控制整個數(shù) 據(jù)資源。例如,DB2 數(shù)據(jù)庫管理器可以讓應用程序獨占地控制表中的特定行,而不是 讓該應用程序獨占地控制整個表。
  • 持續(xù)時間: 指定了鎖被持有的時間長度。事務的隔離級別通??刂屏随i 的持續(xù)時間。
  • 方式: 指定了鎖的擁有者所允許的訪問類型,以及對鎖定數(shù)據(jù)資源的并發(fā)用 戶許可的訪問類型。這個屬性通常稱為鎖狀態(tài)。

鎖定升級

所有的鎖都要求存儲空間。因為可用的存儲空間不是無限制的,DB2 數(shù)據(jù)庫管理器必須限制可用于鎖的空間數(shù)量??梢酝ㄟ^ maxlock 數(shù)據(jù)庫配置參數(shù)實現(xiàn)此目的。在 IDS 中,可以通過設置 LOCKS 配置參數(shù)進行控制。為了防止某個特定的數(shù)據(jù)庫代理超出設置的鎖空間限制,當獲得大量鎖時,將自動執(zhí)行稱為鎖定升級的進程。IDS 還提供了一個選項動態(tài)增加獲得的鎖的數(shù)量。







工具和實用程序

包含在 DB2 和 IDS 中的工具提供了既省時又可減少錯誤發(fā)生的圖形化界面。大量的工具可以幫助 DBA 和應用程序開發(fā)人員完成各自的任務。這里只重點介紹其中一些工具:常見的數(shù)據(jù)移動和數(shù)據(jù)維護實用工具。

DB2 Control Center

Control Center 是用來管理 DB2 服務器的。它為您提供了實例和數(shù)據(jù)庫的概觀,并允許您在 DB2 中執(zhí)行大部分的數(shù)據(jù)庫操作。正如在圖 15 中看到的一樣,左面的面板(對象窗格)展示了本地和遠程系統(tǒng)中的三種結構,右面的面板(內容窗格)提供了所選的具體項的更多詳細內容。


圖 15. DB2 Control Center
DB2 Control Center

Informix Server Administrator (ISA)

ISA 是基于 Web 的跨平臺的數(shù)據(jù)庫服務器管理工具,用于監(jiān)視多個 Informix 服務器。ISA 可以用來檢查 Informix 實例配置、顯示 Informix 實例的存儲信息、顯示 VP 的信息,還可以用來添加和創(chuàng)建 dbspace,以及監(jiān)視 Informix 服務器的性能。


圖 16. Informix Server Administrator (ISA)
Informix Server Administrator (ISA)

更多工具

下面將對其他工具進行簡要說明:

  • Configuration Assistant: 一個 DB2 工具,可用于建立客戶機/服務器之間的通信并維護注冊表變量,除此之外它還可以執(zhí)行更多工作。
  • Configuration Advisor: 對數(shù)據(jù)庫進行調整以獲得最佳性能是一個非常困難的任務。DB2 配置參數(shù)在決定性能方面起到非常重要的作用,它們可以影響數(shù)據(jù)庫或數(shù)據(jù)庫管理器的操作特性。DB2 Configuration Advisor 向導為數(shù)據(jù)庫管理員提供了一個很好的起點,對能夠做出改善的配置參數(shù)進行初始設置(如果需要的話)。要了解該主題的更多文章,請參考 參考資料 一節(jié)。
  • Developer Workbench: DB2 9 引入了一種全新的免費應用程序開發(fā)工具,這個工具叫做 DB2 Developer Workbench (DWB),它是基于 Eclipse 框架的。DWB 是用于創(chuàng)建、編輯、調試、部署和測試 DB2 存儲過程和用戶定義函數(shù)的一站式中心。還可以使用 DWB 開發(fā) SQLJ 應用程序,并創(chuàng)建、編輯和運行 SQL 語句和 XML 查詢。
  • Onmonitor: IDS 中的 Onmonitor 實用工具可用來創(chuàng)建一個 Informix 實例、修改或查看 Informix 實例的配置、創(chuàng)建 dbspaces、向 dbspace 添加塊以及檢查數(shù)據(jù)庫信息。
  • Onperf: IDS 中的圖形化監(jiān)視工具。Onperf 實用工具可以用來執(zhí)行例程系統(tǒng)監(jiān)視和性能監(jiān)視。

數(shù)據(jù)移動實用工具

數(shù)據(jù)移動工具是用來將數(shù)據(jù)從一個數(shù)據(jù)庫移動到另一個數(shù)據(jù)庫,或將數(shù)據(jù)從一個環(huán)境中移動到另一個環(huán)境(比如從測試環(huán)境移動到生產(chǎn)環(huán)境)??梢詮囊粋€數(shù)據(jù)庫卸載或導出數(shù)據(jù),然后再將數(shù)據(jù)導入或加載到另一個數(shù)據(jù)庫。DB2 的 EXPORT、IMPORT 和 LOADData 實用工具可用于此目的。在 IDS 中,這些工具分別被稱為 dbexport、dbimport 和 dbload 實用工具。

和上面提到的實用工具不同,DB2 提供了 db2move 實用工具來將全部數(shù)據(jù)從一個數(shù)據(jù)庫移動到另一個數(shù)據(jù)庫,db2look 實用工具可以生成 DDL 和統(tǒng)計信息。DDL 可被用來在另一個數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫對象,從而復制數(shù)據(jù)庫結構。和這些工具不同,IDS 提供了 High Performance Loader (HPL) 使用工具,可以從 ASCII 文件中卸載和加載數(shù)據(jù)。

數(shù)據(jù)維護實用工具

數(shù)據(jù)被物理地分布到跨多個表空間容器,這種方式對訪問數(shù)據(jù)的應用程序執(zhí)行方式產(chǎn)生重大影響。DB2 和 IDS 使用目錄表中的統(tǒng)計信息來制定最佳訪問計劃。

要對 DB2 中所有表或一組表的統(tǒng)計信息進行更新,可使用 REORGCHK 命令以及 UPDATE STATISTICS 選項。在 IDS 中,使用 UPDATE STATISTICS 命令更新統(tǒng)計信息。

db2pd 和 onstat

DB2 提供了一個名為 db2pd 的實用工具,用于收集 DB2 實例和數(shù)據(jù)庫的統(tǒng)計信息。db2pd 提供了 20 多個選項顯示關于數(shù)據(jù)庫事務、表空間、表統(tǒng)計信息、動態(tài) SQL、數(shù)據(jù)庫配置和其他很多數(shù)據(jù)庫細節(jié)的信息。單個 db2pd 命令可以檢索多個領域的信息,并把結果保存到文件中。也可以在特定時期內調用該工具一定的次數(shù),幫助您了解隨著時間的變化數(shù)據(jù)庫中的變動情況。該工具可用于故障檢修、問題確定、數(shù)據(jù)庫監(jiān)控、性能調優(yōu)和幫助應用程序的開發(fā)設計。要了解更多信息,請參考 參考資料 一節(jié)。

Onstat 是一個 IDS 實用工具,當執(zhí)行此命令時,可讀取共享內存結構或片段并打印和 IDS 相關的診斷信息。onstat 實用工具可用來監(jiān)視 IDS 的性能,它提供了很多選項可用于查看磁盤讀寫操作、緩沖區(qū)使用情況的信息、用戶級監(jiān)視信息、CPU 統(tǒng)計信息、和 LRU 隊列相關的信息、網(wǎng)絡級統(tǒng)計信息,還可用于分析鎖。

結束語

本文簡要討論了 DB2 和 Informix 的不同方面,例如編輯、體系結構、進程、內存模型、數(shù)據(jù)庫和存儲模型。您還了解了如何在 DB2 和 Informix 中進行備份和恢復。現(xiàn)在您應該能夠開始利用 RDBM 技能深入研究 DB2 和 Informix ,并對其進行實驗。建議您閱讀更多不同的文章并使用這兩種產(chǎn)品來獲得更深層次的知識。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多