2007 年 1 月 25 日
數據庫技術是一個不斷發展的知識領域。利用對某種產品目前所具有的知識並將它應用到另一種相似的產品,這種方法使您能夠跟上不斷更新的技術的腳步。這篇文章演示了如何使用從 Informix 或 DB2 9 中獲得的技術來學習這兩種技術中的另外一種,並對 IBM? Informix? Dynamic Server (IDS) 10 和 IBM DB2? 9 中使用的技術進行了比較。
簡介
DB2 9 和 IDS 10 的戰略定位是使數據庫的管理更加便捷,具有眾多內置的特性。其中一些常見特性包括自治管理、對透明的 “靜默” 安裝的支持、對眾多開發范例的支持、最小化磁盤空間需求以及范圍分區。表 1 突出顯示了這些產品的主要特性。關於這兩種產品的更多信息,可參考 參考資料 一節。
版本和平台支持
DB2 9 和 Informix IDS 10 為任何種類的業務提供了正確的數據管理解決方案。這兩種產品都提供了包裝了眾多特性和功能的不同產品版本,以適應大量來自客戶的不同需求。中小型企業可以選擇 Express Editions,而 Workgroup 和 Enterprise Editions 則適合大型企業。連同這些版本,DB2 9 另外提供了兩個版本:Personal Edition 和 Developer Edition,以及一個免費版 DB2 Express-C。表 2 描述了 DB 9 和 Informix IDS 10 中可用的版本。
IDS Express Edition 適合於中型企業。它是一個功能完備的對象關系型數據庫服務器。IDS Express Edition 包括諸如自治管理和簡化安裝這樣的特性。幾乎不需要為其管理的特性支持大量開發范例。最小的磁盤空間需求支持可擴展性。
DB2 Workgroup Server Edition 9 for Linux, UNIX, and Windows體系結構概述 —— 比較 DB2 9 ESE 和 IDS 10
在 DB2 中,一個實例就提供了一個獨立的環境,在其中可以創建數據庫,並在數據庫中運行應用程序。
由於存在這些獨立的環境,兩個或更多實例可以具有相同名稱的數據庫。圖 1 中,數據庫 MYDB2 和實例 DB2 相關聯,而另一個數據庫 MYDB2 和一個不同的實例 MYINST 相關聯。
實例允許用戶擁有獨立自主的環境,用於生產、測試和開發。 DB2 中和實例相關的命令
db2icrt instance_name —— 創建一個實例 db2idrop instance_name —— 丟棄一個實例 set db2instnace=instance_name —— 設置當前實例db2start —— 啟動當前實例db2stop —— 停止當前實例
每一個 DB2 實例可具有一個或多個數據庫。每一個實例具有一個數據庫管理配置文件。此外,每一個數據庫可擁有自己的數據庫配置文件、目錄表、日志、保留的緩沖池區域和表空間。表空間包括常規表空間、長表空間(用於 LOB 數據)、用戶臨時表空間和系統臨時表空間。對於每個數據庫來說,調優參數、資源管理和日志會有所不同,並且可以在數據庫級別上對其進行控制。
環境變量INFORMIXDIR —— 安裝位置 ONCONFIG —— 實例配置文件INFORMIXSERVER —— 實例名稱 INFORMIXSQLHOSTS —— 一個文件的名稱,該文件包含實例主機與端口的相關信息Informix 中與實例相關的命令Oninit -i —— 創建一個實例Oninit —— 啟動當前實例Onmode -k —— 停止當前實例
和 DB2 相似,IDS 實例也提供了一個獨立的環境,在其中創建數據庫,並在數據庫中運行應用程序。每一個實例具有一個默認的 dbspace(rootdbspace)、配置文件、三個系統目錄數據庫(SysMaster、SysUtils 和 SysUsers)、日志和緩沖池。此外,可以在創建實例的同時選擇創建一個 tempdbspace。一個實例可以具有多於一個的 dbspace。dbspace 的類型有常規 dbspace、臨時 dbspace、blobspace、sbspace 和 extspace。與 DB2 不同的是,IDS 數據庫在實例級別上共享日志、緩沖池和臨時 dbspace。此外,每一個數據庫擁有自己的目錄表和用戶表。圖 2顯示了兩個 IDS 實例。
可以使用 oninit -i
命令對 IDS 實例進行實例化。實例名稱由環境變量 INFORMIXSERVER 指定。與 DB2 不同,IDS 沒有刪除實例的顯式命令 。然而,可以改變諸如根路徑的配置參數和服務器編號,然後再使用 oninit -i
命令。這個命令實例化所有和環境相關聯的實例。因此,使用該命令時應該非常謹慎。在 IDS 中創建實例要使用一組環境變量和配置參數,這些內容都在 ONCONFIG 環境變量指定的文件中做了定義。因此,在發出 oninit -i
命令之前設置所有相關的配置參數非常重要。可以使用 Informix 實用工具 onmonitor 或使用任何的編輯器定義配置參數。下面介紹了其中一些配置參數。
ROOTNAME
rootdbs
# 根 dbspace 名稱
ROOTPATH
/dev/online_root
# 包含根 dbspace 的設備的路徑
SERVERNUM
0
# 與 OnLine 實例相對應的惟一 ID
DBSERVERNAME
# 默認數據庫服務器的名稱
LOGFILES
6
# 邏輯日志文件的編號
TAPEDEV
/dev/tapedev
# Tape 設備路徑
LTAPEDEV
/dev/tapedev
# Log tape 設備路徑
LOCKS
2000
# 鎖的最大值
圖 2. IDS 體系結構概覽
回頁首
進程模型
有關 DB2 進程模型的知識可以幫助確定問題的性質,這是因為這些知識可以幫助理解數據庫管理器與其相關的組件如何相互作用。基於 UNIX 的環境使用基於系統進程的體系結構。例如,將 DB2 通信偵聽器作為系統進程進行創建。諸如 Windows 之類的 Intel 操作系統,使用基於線程的體系結構以達到性能最大化。
代理
代理可以被看作是代表應用程序執行所有數據庫操作的工人。有兩種主要類型的 DB2 代理:
當某個代理程序或子代理程序完成其任務時,它就轉為空閒狀態。當子代理程序處於空閒狀態時,其名稱從 db2agntp 變為 db2agnta。空閒代理程序駐留在代理程序池中。這些代理程序可用於來自代表客戶機程序進行操作的協調代理程序,或來自代表現有協調代理程序進行操作的子代理程序的請求。可用的代理程序數取決於數據庫管理器配置參數 maxagents和 num_poolagents。圖 3 顯示了 DB2 進程模型。
圖 3. DB2 進程模型(用於非分區數據庫)
上圖中的每一個圓圈代表示引擎分派單元(EDU),在 Linux/UNIX 平台上稱為進程,而在 Windows 上稱為線程。
db2fmp 是一個受防護的進程。用於在防火牆之外執行受防護的存儲過程和用戶定義的函數。db2fmp 始終是獨立的進程,但是根據它執行的例程類型,也可能是多線程的。
下面列出了一些每個數據庫系統使用的重要線程或進程:
為了使數據庫服務器能發揮作用,必須具備系統控制器(db2sysc)。同樣,啟動其他眾多線程和進程來執行不同任務。下面列出了其中一些。在 參考資料 一節中參考 DB2 信息中心,了解更多關於 DB2 進程的信息。
圖 4. IDS 內存體系結構和後台進程
IDS 由三個主要組件組成:進程,內存和磁盤。剛剛討論了進程組件,本文稍後將討論內存和磁盤組件。
IDS 是一個多線程數據庫服務器。該多線程體系結構使用了很少的進程來執行數據庫活動。通過使用線程,一個進程可以為一個以上的應用程序工作。如果需要的話可以為數據庫服務器動態分配進程,因此才有了動態服務器(Dynamic Server)這個術語。IDS 允許增加可伸縮性。這種多線程實現可以容納大量的事務而只占用較少的額外資源。
虛擬進程(VP)
oninit
進程又稱為虛擬處理器,組成了 IDS。每個 VP 屬於一個 VP 類。一個 VP 類負責執行一組特定任務集。oninit
進程被映射到數據庫服務器使用的不同 VP 類。 下面對每一種 VP 類進行了簡要說明:
內存模型
本文將介紹實例共享內存和數據庫共享內存。
實例共享內存
每個 DB2 實例都有一個實例共享內存。實例共享內存是在數據庫管理器啟動(db2start)時分配的,並隨著數據庫管理器的停止(db2stop)而釋放。這種內存集用於實例級的任務,例如監控、審計和節點間通信。下面的數據庫管理器配置(dbm cfg)參數控制著對實例共享內存以及其中個別內存池的限制:
數據庫內存模型
圖中的完整綠色方框意味著,在數據庫啟動的時候,該內存池是完全分配的,否則,就只分配部分的內存。例如,當一個數據庫第一次啟動時,不管 util_heap_sz 的值是多少,只有大約 16 KB 的內存被分配給實用工具堆。當一個數據庫實用工具(例如備份、恢復、導出、導入和裝載)啟動時,才會按 util_heap_sz 指定的大小分配全額的內存。
數據庫緩沖池 通常是數據庫共享內存中最大的一塊內存。DB2 在其中操縱所有常規數據和索引數據。一個數據庫必須至少有一個緩沖池,並且可以有多個緩沖池,具體要視工作負載的特征、數據庫中使用的數據庫頁面大小等因素而定。
IDS 的共享內存組件 屬於實例級,被分為三個部分,如上面圖 4 所示。
磁盤組件 是一個或多個被分配到數據庫服務器的磁盤空間單元的集合。包括所有維護服務器系統的系統信息,以及所有存儲在磁盤組件內的數據庫數據。IDS 在一個單個計算機上可具有從 1 到 256 個實例,與 DB2 相同。
圖 7. 高級 IDS 實例體系結構
DB2 在四個不同內存集(memory set)拆分和管理內存,這四個內存集是:
每種內存集由各種不同的內存池(亦稱堆)組成。圖 1 也給出了各內存池的名稱。例如,lock list 是屬於數據庫共享內存集的一個內存池。sort heap 是屬於代理私有內存集的一個內存池。
數據庫創建和存儲模型
在 DB2 中,可以使用數據庫創建命令或使用控制中心工具創建數據庫。本文將介紹如何使用命令創建數據庫和數據庫對象。在探討這些命令之前,先來了解一下什麼是表空間。
表空間
表空間是一個包含表、索引、大對象和長數據的存儲結構。表空間謂語數據庫內。它允許您直接將數據庫和表數據的位置分配到容器上。(一個容器可以是一個目錄名、一個設備名或一個文件名。)這種機制可以提供改善的性能和更加靈活的配置。一個數據庫可以具有多於一個的表空間,而一個表空間不能同時屬於多個數據庫。
表空間管理
在 DB2 中,可以有兩種不同的方式管理表空間:, table spaces are managed in two different ways:
ALTER TABLESPACE
命令來擴展容器。還可以釋放未使用的那部分 DMS 容器(從 Version 8 開始)。 當創建數據庫時,將創建三個表空間(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)。 根據表空間的用途和管理方式將它們分類。根據用途有五種不同的表空間:
CREATE DATABASE
命令時創建的。目錄表空間被 DB2 命名為 SYSCATSPACE,它保存了系統目錄表。總是在創建數據庫時創建該表空間。
圖 8 顯示了一個具有五個表空間的數據庫:一個目錄表空間、兩個常規表空間、一個長表空間和一個系統臨時表空間。沒有創建用戶臨時表空間。其中有 8 個容器。
圖 8. 具有表空間和緩沖池的 DB2 數據庫
可使用以下命令創建此類數據庫和表空間。
create database sampleconnect to samplecreate bufferpool BP1 size 1000 pagesize 4 Kcreate bufferpool BP2 size 1000 pagesize 8 Kcreate bufferpool BP3 size 1000 pagesize 32 Kcreate regular tablespace userspace1 pagesize 8 k managed by databaseusing (file 'C1U1' 1000, file 'C2U1' 1000) bufferpool BP2 create regular tablespace userspace2 pagesize 4 k managed by databaseusing (file 'C1U2' 1000) bufferpool BP1 create large tablespace largespace1 pagesize 32 k managed by databaseusing (file 'C1L1' 1000, file 'C2L1' 1000, file 'C3L1' 1000) bufferpool BP3create temporary tablespace systemp1 pagesize 32 k managed by system using (path '/db1/C1T1') bufferpool BP3
容器
每個表空間都有一個或多個容器。重申一次,您可以認為容器是孩子,而表空間是其父母。每個容器只能屬於一個表空間,但是一個表空間可以擁有許多容器。可以將容器添加到 DMS 表空間,或者從 DMS 表空間中刪除容器,而且可以更改容器的大小。只能將容器添加到某個分區中分區數據庫上的 SMS 表空間,在添加之前該分區還未給表空間分配容器。添加新的容器時,將啟動一個自動的重新均衡操作以便將數據分布到所有容器上。要了解更多關於容器和重新均衡操作的內容,請參考 DB2 9 Information Center。
緩沖池
一個緩沖池是與單個數據庫相關聯的,可以被多個表空間使用。當考慮將緩沖池用於一個或多個表空間時,必須保證表空間頁大小和緩沖池頁面大小對於緩沖池所 “服務” 的所有表空間而言都是一樣的。一個表空間只能使用一個緩沖池。創建數據庫時,會創建一個名為 IBMDEFAULTBP 的默認緩沖池,所有的表空間都共享該緩沖池。可以使用 CREATE BUFFERPOOL
語句添加更多的緩沖池。大型緩沖池還會對查詢優化產生影響,因為更多的工作可在內存中完成。要了解更多關於緩沖池的內容,請參考 DB2 9 Information Center。
IDS 中的數據庫創建
現在您已經了解了 DB2 中數據庫是如何創建的以及 如何對表空間進行管理,現在來看一下在 IDS 中 dbspaces 和數據庫是如何彼此相關的。
dbspaces
dbspace 是由一個或多個塊組成的邏輯單元。Chunk 表示存儲的物理單元。數據庫服務器可以使用成熟的(cooked)文件或原始(raw)設備來存儲數據。數據庫是被創建在常規 dbspace 中的,因此在創建數據庫之前必須已經存在一個常規 dbspace。默認的常規 dbspace 稱為 rootdbs,它是在創建 IDS 實例時被創建的。除非 create database
命令中說明要使用另一個常規 dbspace,否則將使用默認 dbspace 創建數據庫。系統目錄表和數據庫本身位於同一個 dbspace 中。同一個 Informix 實例中的任何其他數據庫都可以使用所有的 dbspace。IDS 具有大量的 dbspace,下面將做簡要介紹。
舉例來說,如果運行下面的數據定義語言(data definition language,DDL),首先會創建 2 GB 大小的 dbspace Dbdbspace
,然後在 dbspace Dbdbspace
中創建數據庫 sampledb
。sampledb 的數據庫目錄表位於 Dbdbspace 中。
Onspaces -c -d Dbdbspace -p /work/database/chunk1 -o 0 -s 20480000 where,c For Creating Dbspacep path name for the physical unito offset in K bytess size of dbspace in Kbytesa for adding chunk to a dbspaceCreate database sampledb in Dbdbspace;
如圖 9 所示,數據庫中的所有數據庫對象可以被存儲在一些 dbspace 中。這個例子具有一個默認的 Root Dbspace、三個稱為 Root Dbspace 的常規 dbspace、User Dbspace、Index Dbspace、一個 Temporary Dbspace、一個 Blobspace、一個智能 LOB sbspace 和一個 extspace。上面這個例子中 Database 1 中的數據庫對象跨越了所有可用的 dbspace。表和索引可以駐留在不同的 dbspace 中。為了更好地理解,一個常規 dbspace 被命名為 Index Dbspace,您可以選擇在這個 dbspace 中創建索引。您還可以選擇在根 dbspace 中創建數據庫(盡管這不是一個很好的應用)。在圖 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 中的備份是一個數據庫以及控制信息的副本,可以用於恢復錯誤事件。數據庫備份可以最小化數據的損失並使您能夠使用恢復進程從備份副本中重新構建錯誤的數據庫。IDS 中的備份復制了一個或多個 dbspace、blobspace、spspace 和 Informix 實例的邏輯日志和物理日志。
在 DB2 中使用 BACKUP
命令進行數據庫備份:
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 實現。
ontape 實用工具可以串行化備份 dbspace,而 onbar 可以並行備份 dbspace。
圖 10. IDS 中的備份實用工具
日志類型
除了上面討論的日志,IDS 還把日志分類為邏輯日志和物理日志。可是使用 DB2 中的 LOGPrima(最完善的虛擬主機管理系統)RY 和 LOGSECONDARY 數據庫配置參數定義日志文件的數量。在 IDS 中,可以通過設置配置參數 LOGFILES 完成此操作。和 DB2 中的 LOGSECONDARY 相似,IDS 提供了動態記錄日志選項。可以通過設置配置參數 DYNAMIC_LOGS 啟用該選擇。要了解更多關於日志類型的內容,請參考 參考資料 一節中的 DB2 和 IDS 信息中心。
日志機制
IDS 和 DB2 具有相似的日志機制。下面將簡要介紹這兩種類型的機制:
在 IDS 中,始終以循環的方式使用邏輯文件。然而,可以對這些邏輯文件進行備份以用於日後恢復。可以將邏輯文件備份到 LTAPEDEV 配置參數中說明的路徑。
IDS 將日志文件歸檔到包內,配置參數 LTAPEDEV 為之指定一個有效的路徑或設備。如果該參數值為空,則表示日志沒有被歸檔。
備份機制
現在了解一下 DB2 和 IDS 中不同類型的備份機制。
In DB2(Windows)backup database sample to c:\backupIn IDS ontape -s -L 0 (Level 0 backup)onbar -b -L 0
In DB2 backup database sample tablespace( syscatspace, userspace1,
userspace2 ) online to /db2tbsp/backup1, /db2tbsp/backup2In IDs onbar -b rootdbs, userdbs1, userdbs5
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:\backupIn IDS ontape -s -L 1 (Level 1 backup)onbar -b -L 1
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:\backupIn IDS ontape -s -L 2 (Level 2 backup)onbar -b -L 2
數據庫恢復
在 DB2 中,可以使用恢復實用工具進行數據庫恢復。在 IDS 中,可以使用 ontape 或 onbar 實用工具以及 -r 選項。恢復實用工具使用一個備份文件作為輸入,並使用一個新的或現有的數據庫作為輸出。在 DB2 和 IDS 中,可以對完整的數據庫進行恢復,也可以對表空間(在 IDS 中為 dbspace )進行恢復。在 IDS 中,可以恢復 dbspace、物理日志和邏輯日志。要省略從備份中恢復的邏輯文件,需要使用 -p 選項。如果只對邏輯文件進行恢復,需要使用 -l 選項。IDS 和 DB2 都允許增量恢復。
下面給出了完全恢復、增量恢復、表級和 dbspace 級恢復的例子。
完全恢復
In DB2restore database sample from c:\backup taken at 20060314131259 without rolling forward without promptingIn IDSontape -r onbar -r
In DB2restore database mydb incremental taken at 20060414131259In IDS In case of ontape, it would prompt the user to insert any
incremental or delta backups to be restored.
In DB2restore database sample tablespace( mytblspace1 ) online from /db2tbsp/backup1, /db2tbsp/backup2In IDSOnbar -r userdbs1, userdbs5
數據庫前滾
前滾
命令允許指定時間點(point-in-time)恢復。這意味著該命令可以使您遍歷 DB2 日志,並且可以重做/取消日志中記錄的操作,從而恢復到特定的時間點。在 IDS 中要做到這一點,可通過使用 -p 選項只對 dbspace 和物理日志進行恢復。然後再使用 -l 選項進行其他恢復。注意這些操作需要按照一定順序進行。如果使用 onbar 實用工具,可以回滾到某個時間點或任何一個特定的日志。在 IDS 中,onbar 實用程序支持指定時間點回滾恢復和指定日志恢復。
In DB2rollforward database sample to end of logs and completerollforward database sample to timestamp and complete rollforward database sample to timestamp using local time and complete In IDSonbar -r -t time onbar -r -l logid
安全特性
DB2 和 IDS 安全模型都由兩個主要組件組成:身份驗證和授權。
圖 13. DB2 安全模型
DB2 身份驗證
身份驗證就是使用一種安全機制驗證所提供的用戶 ID 和密碼的過程。用戶和組的身份驗證是使用一種 DB2 之外的設施進行管理的,例如操作系統、域控制器或者 Kerberos 安全系統,這種身份驗證方式與其他數據庫管理系統(DBMS)如 Oracle(大型網站數據庫平台) 和 SQL Server(Windows平台上強大的數據庫平台) 不同,在其他數據庫管理系統中,數據庫本身以及諸如操作系統等外部設施對用戶帳戶進行定義和身份驗證。在連接時如果沒有提供用戶憑證,DB2 將使用用來登錄到發出請求的工作站的用戶 ID 和密碼。
默認情況下,建立一個實例,它將使用用於所有實例級和連接級請求的一種身份驗證類型。數據庫管理器配置參數 AUTHENTICATION 對此做了指定。Version 9 中引入了數據庫管理器參數 SRVCON_AUTH。該參數專門處理與數據庫的連接。所以,舉例來說,如果在 DBM CFG 中具有如下設置:
DB2 GET DBM CFGServer Connection Authentication (SRVCON_AUTH) = KERBEROSDatabase manager authentication (AUTHENTICATION) = SERVER_ENCRYPT
連接到該實例將使用 SERVER_ENCRYPT。然而,與數據庫的連接將使用 KERBEROS 身份驗證。如果沒有為服務器正確地初始化 KERBEROS,但是提供了一個有效的用戶 ID 和密碼,那麼將允許用戶連接到實例,但是不允許連接到數據庫。
下面的表總結了 DB2 中可以的身份驗證類型。在一個客戶機-網關-主機環境中,這些身份驗證選項是在客戶機和網關上設置的,而不是在主機上設置的。
表 3. DB2 中的身份驗證類型
CATALOG DATABASE
命令中使用是無效的。
GSSPLUGIN
可以使用一個外部 GSS-API 插件對身份驗證進行控制。
GSS_SERVER_ENCRYPT
可以使用一個外部 GSS-API 插件對身份驗證進行控制。如果客戶機不支持服務器的 GSS-API 插件中的一種,將使用 SERVER_ENCRYPT 身份驗證類型。 *這些設置只有在 Windows 2000、AIX、Solaris 和 Linux 操作系統下是有效的。
IDS 安全機制
圖 14. IDS 安全模型
IDS 認證
在 IDS 中,有 4 個用於身份驗證的選項,如圖 4 所示。下面對每一種選項進行了簡要說明:
表 4. IDS 安全機制
權限和特權
授權是這樣一個過程:它為提供的用戶 ID 確定關於特定數據庫對象和操作的訪問和權限信息。DB2 在內部存儲和維護用戶和組的授權信息。每次提交一個命令時,DB2 將執行授權檢查以確保您具有正確的權限集來執行操作。
DB2 使用五種不同級別的權限來控制用戶對實例或數據庫執行管理和維護操作。這五種級別是:
特權是用來將在特定數據庫資源上執行某種操作的權利授予單個用戶或組用戶。DB2 中,有兩種不同的特權類型:數據庫特權和對象特權。
數據庫特權應用在整個數據庫中,對於大多數用戶來說,其行為如同在第二個安全檢查點通過驗證的標識,在提供對數據的訪問之前必須要清除該檢查點。和應用於整體數據庫的數據庫特權不同,對象特權只應用在數據庫內特定的對象。這些對象包括模式、表空間、表、索引、視圖、包、例程、序列、服務器和昵稱。
IDS 不同於 DB2,它包含預定義的權限。在數據庫級別上授予這些權限。如果一個用戶被授予這些權限中的一種,該用戶將獲得一組特權。下面列出了這些權限。
DBA 特權將授予所以資源特權以及維護數據庫系統所需的所有其他特權。這和 DB2 中的 DBADM 權限有些相像。這是 IDS 中數據庫訪問的最高特權級別。
為易於理解,下面列出了其中一些 DB2 和 IDS 特權。想要了解更詳盡的列表,請參考 DB2 Information Center。
表 5. 特權
除此之外,IDS 還允許用戶創建特定於數據庫的用戶組,稱之為 角色。當創建角色後,將用戶分配到該角色並進一步授予角色權限。在 IDS 中,在數據庫級別定義角色。
鎖機制
為改善並發性,DB2 和 IDS 結合使用了鎖和隔離級別。
鎖是一種用來將數據資源與單個事務關聯起來的機制,其用途是當某個資源與擁有它的事務關聯在一起時,控制其它事務如何與該資源交互。(我們稱與被鎖定的資源關聯的事務持有或擁有該鎖。)DB2 數據庫管理器和 IDS 用鎖來禁止事務訪問其它事務寫入的未提交數據(除非使用了未提交的讀隔離級別),並禁止其它事務在擁有鎖的事務使用限制性隔離級別時對這些行進行更新。事務一旦獲取了鎖,則在終止之前,就一直持有該鎖;該事務終止時釋放鎖,其它事務就可以使用被解鎖的數據資源了。
在 DB2 中,鎖可以放置在數據庫對象如表空間、表和行中。IDS 允許應用程序開發人員將鎖放在不同的對象上,如數據庫、表、頁或行、以及索引。
鎖類型
鎖具有幾種不同的類型,下面列出了其中一些。要了解更多關於鎖的內容,請參考 參考資料 一節中的 DB2 和 Informix 信息中心。
鎖屬性
所有鎖具有如下的基本屬性:
鎖定升級
所有的鎖都要求存儲空間。因為可用的存儲空間不是無限制的,DB2 數據庫管理器必須限制可用於鎖的空間數量。可以通過 maxlock 數據庫配置參數實現此目的。在 IDS 中,可以通過設置 LOCKS 配置參數進行控制。為了防止某個特定的數據庫代理超出設置的鎖空間限制,當獲得大量鎖時,將自動執行稱為鎖定升級的進程。IDS 還提供了一個選項動態增加獲得的鎖的數量。
工具和實用程序
包含在 DB2 和 IDS 中的工具提供了既省時又可減少錯誤發生的圖形化界面。大量的工具可以幫助 DBA 和應用程序開發人員完成各自的任務。這裡只重點介紹其中一些工具:常見的數據移動和數據維護實用工具。
DB2 Control Center
Control Center 是用來管理 DB2 服務器的。它為您提供了實例和數據庫的概觀,並允許您在 DB2 中執行大部分的數據庫操作。正如在圖 15 中看到的一樣,左面的面板(對象窗格)展示了本地和遠程系統中的三種結構,右面的面板(內容窗格)提供了所選的具體項的更多詳細內容。
圖 15. DB2 Control Center
Informix Server Administrator (ISA)
ISA 是基於 Web 的跨平台的數據庫服務器管理工具,用於監視多個 Informix 服務器。ISA 可以用來檢查 Informix 實例配置、顯示 Informix 實例的存儲信息、顯示 VP 的信息,還可以用來添加和創建 dbspace,以及監視 Informix 服務器的性能。
圖 16. Informix Server Administrator (ISA)
更多工具
下面將對其他工具進行簡要說明:
數據移動實用工具
數據移動工具是用來將數據從一個數據庫移動到另一個數據庫,或將數據從一個環境中移動到另一個環境(比如從測試環境移動到生產環境)。可以從一個數據庫卸載或導出數據,然後再將數據導入或加載到另一個數據庫。DB2 的 EXPORT、IMPORT 和 LOADData 實用工具可用於此目的。在 IDS 中,這些工具分別被稱為 dbexport、dbimport 和 dbload 實用工具。
和上面提到的實用工具不同,DB2 提供了 db2move 實用工具來將全部數據從一個數據庫移動到另一個數據庫,db2look 實用工具可以生成 DDL 和統計信息。DDL 可被用來在另一個數據庫中創建數據庫對象,從而復制數據庫結構。和這些工具不同,IDS 提供了 High Performance Loader (HPL) 使用工具,可以從 ASCII 文件中卸載和加載數據。
數據維護實用工具
數據被物理地分布到跨多個表空間容器,這種方式對訪問數據的應用程序執行方式產生重大影響。DB2 和 IDS 使用目錄表中的統計信息來制定最佳訪問計劃。
要對 DB2 中所有表或一組表的統計信息進行更新,可使用 REORGCHK
命令以及 UPDATE STATISTICS 選項。在 IDS 中,使用 UPDATE STATISTICS
命令更新統計信息。
db2pd 和 onstat
DB2 提供了一個名為 db2pd 的實用工具,用於收集 DB2 實例和數據庫的統計信息。db2pd 提供了 20 多個選項顯示關於數據庫事務、表空間、表統計信息、動態 SQL、數據庫配置和其他很多數據庫細節的信息。單個 db2pd 命令可以檢索多個領域的信息,並把結果保存到文件中。也可以在特定時期內調用該工具一定的次數,幫助您了解隨著時間的變化數據庫中的變動情況。該工具可用於故障檢修、問題確定、數據庫監控、性能調優和幫助應用程序的開發設計。要了解更多信息,請參考 參考資料 一節。
Onstat 是一個 IDS 實用工具,當執行此命令時,可讀取共享內存結構或片段並打印和 IDS 相關的診斷信息。onstat 實用工具可用來監視 IDS 的性能,它提供了很多選項可用於查看磁盤讀寫操作、緩沖區使用情況的信息、用戶級監視信息、CPU 統計信息、和 LRU 隊列相關的信息、網絡級統計信息,還可用於分析鎖。
結束語
本文簡要討論了 DB2 和 Informix 的不同方面,例如編輯、體系結構、進程、內存模型、數據庫和存儲模型。您還了解了如何在 DB2 和 Informix 中進行備份和恢復。現在您應該能夠開始利用 RDBM 技能深入研究 DB2 和 Informix ,並對其進行實驗。建議您閱讀更多不同的文章並使用這兩種產品來獲得更深層次的知識。
參考資料
學習
獲得產品和技術
討論
作者簡介
Suma Shastry 是位於印度 IBM 軟件實驗室 Information Management 團隊的一名項目主管。她在 DB2 方面擁有六年的工作經驗,主要從事 DB2 工具的開發。她是 IBM 認證的 DB2 DBA,並且在 SVT、FVT、回歸和測試自動化方面具有豐富的專業知識。
Mohan 是位於印度 IBM 軟件實驗室的一名 DB2 應用程序開發人員。他主要從事 DB2 樣例開發工作,是經過認證的 IBM DB2 高級 DBA,應用程序開發人員以及 DB2 Problem Determination Master。他還在 SVT 和 FVT方面具有豐富的工作經驗。
Prasad 是位於 ISL 的 IBM Informix Development 團隊的一名顧問軟件工程師,從事 Informix Classics 產品的開發。他在 Informix 產品開發方面具有多年的豐富工作經驗,他是一名數據庫管理員,同時還是一位應用程序開發人員。