程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 如何綜合掌握 DB2 和 Informix

如何綜合掌握 DB2 和 Informix

編輯:DB2教程
    ·在Windows中使用Cygwin環境下的gcc編
    ·Informix入門之---SQL函數整理
    ·Informix-SPL(過程)語法詳解
    ·我找到的INFORMIX 培訓教材
    ·Informix SQL語句詳解(1)
    ·Informix 高級培訓教材(三)
    ·INFORMIX ONLINE 7.x for sco 安裝步
    ·Informix7.30的安裝及管理
    ·使用 Informix 系統目錄(1)
    ·INFORMIX SQL技巧

2007 年 1 月 25 日

數據庫技術是一個不斷發展的知識領域。利用對某種產品目前所具有的知識並將它應用到另一種相似的產品,這種方法使您能夠跟上不斷更新的技術的腳步。這篇文章演示了如何使用從 Informix 或 DB2 9 中獲得的技術來學習這兩種技術中的另外一種,並對 IBM? Informix? Dynamic Server (IDS) 10 和 IBM DB2? 9 中使用的技術進行了比較。

簡介

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


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

版本和平台支持

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 中可用的版本。


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

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

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

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

在 DB2 中,一個實例就提供了一個獨立的環境,在其中可以創建數據庫,並在數據庫中運行應用程序。

由於存在這些獨立的環境,兩個或更多實例可以具有相同名稱的數據庫。圖 1 中,數據庫 MYDB2 和實例 DB2 相關聯,而另一個數據庫 MYDB2 和一個不同的實例 MYINST 相關聯。

實例允許用戶擁有獨立自主的環境,用於生產、測試和開發。 如何綜合掌握 DB2 和 Informix(圖一) DB2 中和實例相關的命令

db2icrt instance_name —— 創建一個實例 db2idrop instance_name —— 丟棄一個實例 set db2instnace=instance_name —— 設置當前實例db2start —— 啟動當前實例db2stop —— 停止當前實例

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

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


圖 1. DB2 體系結構概覽
如何綜合掌握 DB2 和 Informix(圖二)

如何綜合掌握 DB2 和 Informix(圖一)

環境變量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 實例。

    ·在Windows中使用Cygwin環境下的gcc編
    ·Informix入門之---SQL函數整理
    ·Informix-SPL(過程)語法詳解
    ·我找到的INFORMIX 培訓教材
    ·Informix SQL語句詳解(1)
    ·Informix 高級培訓教材(三)
    ·INFORMIX ONLINE 7.x for sco 安裝步
    ·Informix7.30的安裝及管理
    ·使用 Informix 系統目錄(1)
    ·INFORMIX SQL技巧

可以使用 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 和 Informix(圖三)

如何綜合掌握 DB2 和 Informix(圖四)
如何綜合掌握 DB2 和 Informix(圖一) 如何綜合掌握 DB2 和 Informix(圖一)
如何綜合掌握 DB2 和 Informix(圖五)
回頁首

進程模型

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

代理

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

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

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

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


圖 3. DB2 進程模型(用於非分區數據庫)
如何綜合掌握 DB2 和 Informix(圖六)

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

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

下面列出了一些每個數據庫系統使用的重要線程或進程:

  • db2pclnr:緩沖池頁面清除程序。
  • db2logmgr:日志管理器。該進程為可恢復的數據庫管理日志文件。
  • db2loggr:該進程操作日志文件用於處理事務進程和恢復。
  • db2dlock:用於檢測死鎖。
  • db2taskd:用於後台數據庫任務的分發。進程通過調用 db2taskp 執行該任務。

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

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


圖 4. IDS 內存體系結構和後台進程
如何綜合掌握 DB2 和 Informix(圖七)

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

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

虛擬進程(VP)

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

  • CPU VP:該類執行大多數進程,它的目的就是執行數據庫服務器進程的所有 CPU 密集型任務。管理員可以根據需要通過數據庫服務器增加或減少 CPU VP 類的數量。
  • KAIO VP:Kernel Asynchronous I/O VP 運行內部線程來對原始設備執行 I/O。
  • AIO VP:該類用來執行 I/O 從而操作系統文件(也稱為成熟文件)。
  • 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 和 Informix(圖八)
      ·在Windows中使用Cygwin環境下的gcc編
      ·Informix入門之---SQL函數整理
      ·Informix-SPL(過程)語法詳解
      ·我找到的INFORMIX 培訓教材
      ·Informix SQL語句詳解(1)
      ·Informix 高級培訓教材(三)
      ·INFORMIX ONLINE 7.x for sco 安裝步
      ·Informix7.30的安裝及管理
      ·使用 Informix 系統目錄(1)
      ·INFORMIX SQL技巧


    本文將介紹實例共享內存和數據庫共享內存。

    實例共享內存

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

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

    • 審計緩沖區大小(audit_buf_sz): 該參數指定審計數據庫時使用的緩沖區的大小。這將用於 db2audit 實用工具。

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

    數據庫內存模型

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


    圖 6. DB2 數據庫共享內存
    如何綜合掌握 DB2 和 Informix(圖九)

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

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

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

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


    圖 7. 高級 IDS 實例體系結構
    如何綜合掌握 DB2 和 Informix(圖十)

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

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

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

    數據庫創建和存儲模型

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

    表空間

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

    表空間管理

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

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

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

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

    圖 8 顯示了一個具有五個表空間的數據庫:一個目錄表空間、兩個常規表空間、一個長表空間和一個系統臨時表空間。沒有創建用戶臨時表空間。其中有 8 個容器。


    圖 8. 具有表空間和緩沖池的 DB2 數據庫
    如何綜合掌握 DB2 和 Informix(圖十一)

    可使用以下命令創建此類數據庫和表空間。

    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

    使用上面這組命令將創建緩沖池和表空間。現在來看一下 DB2 中的容器和緩沖池是什麼。

    容器

    每個表空間都有一個或多個容器。重申一次,您可以認為容器是孩子,而表空間是其父母。每個容器只能屬於一個表空間,但是一個表空間可以擁有許多容器。可以將容器添加到 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,下面將做簡要介紹。

    • 常規 dbspace: 常規 dbspace 用來存放數據庫對象,如系統目錄表、用戶表和索引。
    • 臨時 dbspace:臨時 dbspace 屬於常規 dbspace,數據庫服務器在存儲臨時表時將使用到它。當使用臨時 Blobspace 時,數據庫服務器並不記錄日志。由於這樣做減少了 I/O 和檢查點操作因而改善了數據庫性能。
    • Blobspaces: blobspace 是由一個或多個塊組成的邏輯單元。blobspace 用來存儲文本和字節數據。數據庫服務器將存儲在 blobspace 中的數據直接寫入到磁盤。不會對 blobspace 對象記錄日志。
    • Sbspaces: sbspace 是由一個或多個塊組成的邏輯單元。sbspace 用來存儲智能大對象。智能大對象由字符大對象(CLOBs)和二進制大對象(BLOBs)數據類型組成。可以對存儲在 sbspace 中的數據庫對象記錄日志。使用 Informix API(一個應用程序)可以存儲或檢索存儲在 sbspace 中的智能 LOB。
    • Extspaces: extspace 是與一個字符串相關聯的邏輯名稱,該字符串表示外部數據的位置。在對數據庫進行開發時(擴展 IDS 的功能)將用到 extspace。可以使用相應的用戶定義的訪問方法來訪問 extspace 中的內容。

    舉例來說,如果運行下面的數據定義語言(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 和塊的 IDS 數據庫
    如何綜合掌握 DB2 和 Informix(圖十二)

    如圖 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。

      ·在Windows中使用Cygwin環境下的gcc編
      ·Informix入門之---SQL函數整理
      ·Informix-SPL(過程)語法詳解
      ·我找到的INFORMIX 培訓教材
      ·Informix SQL語句詳解(1)
      ·Informix 高級培訓教材(三)
      ·INFORMIX ONLINE 7.x for sco 安裝步
      ·Informix7.30的安裝及管理
      ·使用 Informix 系統目錄(1)
      ·INFORMIX SQL技巧

    備份和恢復

    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 中的備份實用工具
    如何綜合掌握 DB2 和 Informix(圖十三)

    日志類型

    • 活動日志:只要滿足下列兩個條件中的任意一個,則可認為日志是活動的:
      • 該日志包含該日志包含沒有提交或回滾的事務
      • 該日志包含已提交但尚未刷新到數據庫磁盤(外部化)的事務。
    • 聯機歸檔日志; 這些日志包含已提交並外部化的事務的信息。和活動日志位於同一目錄。
    • 脫機歸檔日志: 歸檔日志從活動日志所在目錄移動到其他目錄或媒體中即為脫機歸檔日志。可以手工或自動進行移動。

    除了上面討論的日志,IDS 還把日志分類為邏輯日志和物理日志。可是使用 DB2 中的 LOGPrima(最完善的虛擬主機管理系統)RY 和 LOGSECONDARY 數據庫配置參數定義日志文件的數量。在 IDS 中,可以通過設置配置參數 LOGFILES 完成此操作。和 DB2 中的 LOGSECONDARY 相似,IDS 提供了動態記錄日志選項。可以通過設置配置參數 DYNAMIC_LOGS 啟用該選擇。要了解更多關於日志類型的內容,請參考 參考資料 一節中的 DB2 和 IDS 信息中心。

    日志機制

    IDS 和 DB2 具有相似的日志機制。下面將簡要介紹這兩種類型的機制:

    • 循環日志: 循環日志是 DB2 的默認日志模式。正如其名字所暗示的一樣,這種類型的日志可以以循環模式重用日志。例如,如果具有 4 種主要日志,將按照這樣的順序使用:Log #1、Log #2、Log #3、Log #4、Log #1、Log #2 等等。只要日志中包含關於已經提交並外部化到數據庫磁盤上的事務的信息,就可以以循環日志的形式重用該日志。換而言之,如果日志仍然是活動日志,那麼就不能重用該日志。

      在 IDS 中,始終以循環的方式使用邏輯文件。然而,可以對這些邏輯文件進行備份以用於日後恢復。可以將邏輯文件備份到 LTAPEDEV 配置參數中說明的路徑。

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

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

    備份機制

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

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

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

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

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

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

      圖 11. 增量備份
      如何綜合掌握 DB2 和 Informix(圖十四)

      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  

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

      Figure 12. Delta 備份
      如何綜合掌握 DB2 和 Informix(圖十五)

      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.


    表空間和 dbspace 級恢復
    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 和 Informix(圖十六)

      ·在Windows中使用Cygwin環境下的gcc編
      ·Informix入門之---SQL函數整理
      ·Informix-SPL(過程)語法詳解
      ·我找到的INFORMIX 培訓教材
      ·Informix SQL語句詳解(1)
      ·Informix 高級培訓教材(三)
      ·INFORMIX ONLINE 7.x for sco 安裝步
      ·Informix7.30的安裝及管理
      ·使用 Informix 系統目錄(1)
      ·INFORMIX SQL技巧


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

    IDS 安全機制


    圖 14. IDS 安全模型
    如何綜合掌握 DB2 和 Informix(圖十七)

    IDS 認證

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

    權限和特權

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

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

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

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

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

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

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

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

    為易於理解,下面列出了其中一些 DB2 和 IDS 特權。想要了解更詳盡的列表,請參考 DB2 Information Center。
    表 5. 特權
    DB2 IDS Remarks CONNECT 連接特權 允許用戶訪問數據庫。要對數據庫進行任何訪問,用戶至少要有一個連接特權。 CREATETAB
    CREATE_EXTERNAL_ROUTINE
    CREATEIN 資源特權 授權所有連接特權,並且允許用戶創建新表、索引和過程。 CREATETAB
    LBAC 表級和列級特權 可以訪問特定表並且數據庫管理員可以控制表內的列。表的創建者或具有資源特權或 DBA 權限的用戶可以創建表。數據庫管理員可以授權所有不同表級的特權,如選擇、插入、刪除、更新、索引、更改、引用等。

    除此之外,IDS 還允許用戶創建特定於數據庫的用戶組,稱之為 角色。當創建角色後,將用戶分配到該角色並進一步授予角色權限。在 IDS 中,在數據庫級別定義角色。

    鎖機制

    為改善並發性,DB2 和 IDS 結合使用了鎖和隔離級別。

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

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

    鎖類型

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

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

    鎖屬性

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

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

    鎖定升級

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



    工具和實用程序

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

    DB2 Control Center

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


    圖 15. DB2 Control Center
    如何綜合掌握 DB2 和 Informix(圖十八)

    Informix Server Administrator (ISA)

    ISA 是基於 Web 的跨平台的數據庫服務器管理工具,用於監視多個 Informix 服務器。ISA 可以用來檢查 Informix 實例配置、顯示 Informix 實例的存儲信息、顯示 VP 的信息,還可以用來添加和創建 dbspace,以及監視 Informix 服務器的性能。


    圖 16. Informix Server Administrator (ISA)
    如何綜合掌握 DB2 和 Informix(圖十九)

    更多工具

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

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

    數據移動實用工具

    數據移動工具是用來將數據從一個數據庫移動到另一個數據庫,或將數據從一個環境中移動到另一個環境(比如從測試環境移動到生產環境)。可以從一個數據庫卸載或導出數據,然後再將數據導入或加載到另一個數據庫。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 ,並對其進行實驗。建議您閱讀更多不同的文章並使用這兩種產品來獲得更深層次的知識。

    參考資料

    學習

    • 您可以參閱本文在 developerWorks 全球站點上的 英文原文 。

    • IBM DB2 Database for Linux, UNIX, and Windows Information Center:從這裡查看使用 DB2 家族的產品和特性所需的信息。

    • “DB2 9 新特性”(developerWorks, 2006 年 2 月):探究 DB2 9 的新 XML(標准化越來越近了) 技術並了解 IBM 目前把 DB2 看作是一種混合型(或多結構)的 DBMS 的原因。

    • DB2 architecture and process overvIEw:從這裡獲得有關 DB2 體系結構和進程的綜合信息,幫助您理解為特定主題提供了詳細信息。

    • 探究更多 DB2 9 特性:
      • “DB2 9 中的 purexml(標准化越來越近了):如何查詢您的 XML(標准化越來越近了) 數據?”(developerWorks,2006 年 6 月)
      • “DB2 Label-Based Access Control, a practical guide, Part 1: Understand the basics of LBAC in DB2”(developerWorks,2006 年 5 月)
      • “Introducing DB2 9, Part 2: Table partitioning in DB2 9”(developerWorks,2006 年 5 月)
      • “Row compression in DB2 9”(developerWorks,2006 年 10 月)
      • “DB2 9 self-tuning memory management”(developerWorks, November 2006 年 11 月):通過一系列練習了解並掌握如何管理這個新的特性。
      • “DB2 Developer Workbench,第 1 部分:Developer Workbench 概念和基本任務”(developerWorks,2006 年 8 月)

    • “DB2 performance tuning using the DB2 Configuration Advisor”(developerWorks,2004 年 5 月):熟悉不同數據庫配置參數以及使用 Configuration Advisor 向導進行性能調優。

    • “db2pd 工具”(developerWorks,2005 年 4 月):學習如何使用該工具來跟蹤事務、表空間、表統計信息、動態 SQL 以及所有配置設置。

    • DB2 Express-C, 為社區提供的 DB2 Express Edition 的免費版本

    • IBM Informix Dynamic Server v10.0 Information Center 從這裡獲得關於 IDS v10.0 的更多信息。

    • Informix library:查閱大量 Informix 手冊。

    • “IBM Informix Dynamic Server, Version 10.0 的新特性”(developerWorks,2005 年 3 月):了解 IBM IDS, v10.0 的一些關鍵特性。.

    • “Optimize your BAR Performance using parallel backups with Informix Dynamic Server”(developerWorks,2006 年 11 月):閱讀 ON-Bar,一個並行備份和恢復序列,並查找關於配置參數和 dbspace sizing 的討論來實現您的性能目標。

    • “Informix Dynamic 版本對比”(developerWorks,2006 年 4 月):了解基本的許可規則,以及 IDS 服務器家族成員之間的不同特性。

    • 訪問 developerWorks Informix Zone 閱讀其中的文章和教程。

    • developerWorks Information Management zone:了解更多關於 DB2 的信息。獲得技術文檔、how-to 文章、培訓、下載、產品信息等。

    • 隨時關注 developerWorks 技術活動和網絡廣播。


    獲得產品和技術

    • 下載 DB2 Enterprise Server Edition 的免費試用版。

    • 下載 Informix Dynamic Server 的免費試用版。

    • 使用 IBM 試用軟件 構建您的下一個開發項目,可直接從 developerWorks 下載獲得。


    討論

    • 參與論壇討論。

    • 通過參與 developerWorks blog 加入 developerWorks 社區。



    作者簡介

    如何綜合掌握 DB2 和 Informix(圖一) 如何綜合掌握 DB2 和 Informix(圖一)

    Suma Shastry 是位於印度 IBM 軟件實驗室 Information Management 團隊的一名項目主管。她在 DB2 方面擁有六年的工作經驗,主要從事 DB2 工具的開發。她是 IBM 認證的 DB2 DBA,並且在 SVT、FVT、回歸和測試自動化方面具有豐富的專業知識。


    如何綜合掌握 DB2 和 Informix(圖一) 如何綜合掌握 DB2 和 Informix(圖一)

    Mohan 是位於印度 IBM 軟件實驗室的一名 DB2 應用程序開發人員。他主要從事 DB2 樣例開發工作,是經過認證的 IBM DB2 高級 DBA,應用程序開發人員以及 DB2 Problem Determination Master。他還在 SVT 和 FVT方面具有豐富的工作經驗。


    如何綜合掌握 DB2 和 Informix(圖一) 如何綜合掌握 DB2 和 Informix(圖一)

    Prasad 是位於 ISL 的 IBM Informix Development 團隊的一名顧問軟件工程師,從事 Informix Classics 產品的開發。他在 Informix 產品開發方面具有多年的豐富工作經驗,他是一名數據庫管理員,同時還是一位應用程序開發人員。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved