小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

對具有數(shù)據(jù)庫分區(qū)功能的 DB2 UDB for Linux, UNIX and Windows Version 8 的生動介紹(第 2 部分)

 hx99 2006-09-04


Raul F. Chong, 數(shù)據(jù)庫顧問, IBM 多倫多實驗室

2004 年 5 月 01 日

本文介紹了具有數(shù)據(jù)庫分區(qū)功能(Database Partitioning Feature,DPF)的 DB2 UDB for Linux, UNIX and Windows Version 8。本文是一個分為兩部分的系列中的第 2 部分。

簡介

本系列文章的 第 1 部分 介紹了 Linux、UNIX? 和 Windows? 環(huán)境下的 IBM? DB2? Universal Database?(UDB)。其中還描述了一些實例、配置參數(shù)、連通性(connectivity)信息以及各種不同的數(shù)據(jù)庫對象。作為本系列的第 2 部分,本文介紹了 DB2 UDB Enterprise Server Edition (ESE) 上提供的數(shù)據(jù)庫分區(qū)功能(Database Partitioning Feature,DPF)。有了 DPF 功能,數(shù)據(jù)庫就具有可擴展性,從而可以添加新的機器,并將數(shù)據(jù)庫延伸到這些機器上。這意味著可以從為數(shù)據(jù)庫新添加的每一臺機器上獲得更多的 CPU、更多的內(nèi)存和更多的磁盤。具有 DPF 功能的 DB2 UDB ESE 是管理數(shù)據(jù)倉庫、數(shù)據(jù)挖掘和在線分析處理(online analytical processing,OLAP)等工作的理想選擇。它同樣適用于在線事務(wù)處理(online transaction processing,OLTP)工作。注意,啟用該功能并沒有什么技術(shù)需求,只需購買所需的許可就行了。從用戶的角度來看,可以像往常一樣連接到數(shù)據(jù)庫,然后發(fā)出查詢,而不需要知道實際上數(shù)據(jù)庫是分布在數(shù)臺機器上的。

第 1 部分 討論的是單分區(qū)(single-partition)環(huán)境,不過其中的知識仍然適用于多分區(qū)(multi-partition)環(huán)境。所有的概念仍然是一樣的,不過我們需要指出一些實現(xiàn)上的不同之處。例如,我們將解釋配置文件、連通性信息等駐留在哪一臺機器上。我們還將介紹一些新的概念,比如分區(qū)(partition)、分區(qū)組(partition group)、協(xié)調(diào)節(jié)點(coordinator node)等等,這些概念都與單分區(qū)環(huán)境無關(guān)。

與第 1 部分一樣,這里也使用一些圖來可視化地解釋概念。在本文中,我用 DB2 這個詞來指代 DB2 Universal Database Enterprise Server Edition Version 8.1 for Linux, UNIX and Windows。我建議您將本文打印出來,而不是在線閱讀,因為后面我會經(jīng)常引用到這些圖。首先我們會簡要地解釋一些概念,在最后一節(jié)中,我們會將這些概念聯(lián)系到一個案例學(xué)習(xí)當(dāng)中去。

注意:

DB2 UDB ESE with DPF 在版本 8 之前的版本是 DB2 UDB Enterprise Extended Edition (EEE)。





回頁首


數(shù)據(jù)庫分區(qū)

將一個數(shù)據(jù)庫分區(qū)時,我們把它分成一些獨立的部分,每一部分都包含各自的數(shù)據(jù)、配置文件、索引和事務(wù)日志。每一部分就是一個數(shù)據(jù)庫分區(qū)??梢詫⒍鄠€分區(qū)分派到一臺物理機器上。有時候,這些分區(qū)也叫做邏輯分區(qū)(logical partition),這些邏輯分區(qū)共享機器上的資源。

單分區(qū)數(shù)據(jù)庫是一種只有一個分區(qū)的數(shù)據(jù)庫。在本系列的第 1 部分中,我們就談到了這種類型的環(huán)境。

多分區(qū)數(shù)據(jù)庫(也稱分區(qū)數(shù)據(jù)庫),是具有兩個或多個分區(qū)的數(shù)據(jù)庫。這種類型的數(shù)據(jù)庫正是我們在本系列的當(dāng)前部分所要討論的。取決于硬件環(huán)境,您可以按照幾種配置來對數(shù)據(jù)庫分區(qū)。圖 1 展示了物理分區(qū)的配置,每臺機器上有一個分區(qū)。


圖 1 - 每臺機器一個分區(qū)的數(shù)據(jù)庫分區(qū)配置
每臺機器一個分區(qū)的數(shù)據(jù)庫分區(qū)配置

注意: 在圖 1 中,SMP 系統(tǒng)可以用單處理器(uniprocessor)系統(tǒng)代替。對于使用 DB2 with DPF 的環(huán)境來說,單處理器系統(tǒng)目前已經(jīng)相當(dāng)少見了,因此在圖中我們將其省略了。

圖 2 展示了更多的多分區(qū)配置,其中每臺機器上有數(shù)個分區(qū)。


圖 2 - 每臺機器有數(shù)個分區(qū)的數(shù)據(jù)庫分區(qū)配置
圖 2 - 每臺機器有數(shù)個分區(qū)的數(shù)據(jù)庫分區(qū)配置
注意: 在版本 8 之前,使用的是術(shù)語“節(jié)點(node)”,而不是“分區(qū)(partition)”。隨著版本 8 的發(fā)行,仍然有一些概念、命令和消息在使用這個術(shù)語。還應(yīng)注意的是, 節(jié)點目錄這一概念與 分區(qū) 的概念沒有絲毫的關(guān)系。

為了利用在 第 1 部分中所學(xué)到的知識,同時也為了想像出如何在 DPF 系統(tǒng)中拆分 DB2 環(huán)境,我們在圖 3 中展示了在本系列 第 1 部分 中那個圖的部分復(fù)制,并且還展示了它是如何被拆分成三個分區(qū)、每臺 SMP 機器一個分區(qū)的。這樣,我們就展示了如何將 DB2 環(huán)境從一種單分區(qū)多處理器配置(如圖 1 中的 I 所示)變?yōu)橐环N多分區(qū)多處理器配置(如圖 1 中的 II 所示)。

我們已經(jīng)將原始圖中的機器更改為使用 Linux 操作系統(tǒng),而不是使用 Windows 操作系統(tǒng)。DPF 在 Linux/UNIX 環(huán)境中要比在 Windows 環(huán)境中更流行一些,因此我們主要討論 Linux/UNIX 這兩種平臺,不過大多數(shù)概念在 Windows 中是一樣的。


圖 3 - DB2 UDB ESE with DPF 中的 DB2 環(huán)境
DB2 UDB ESE with DPF 中的 DB2 環(huán)境

從圖 3 中可以看出,DB2 環(huán)境是“劈開”的,現(xiàn)在它駐留在三臺不同的多處理器機器上,這些機器運行著相同的操作系統(tǒng)(對于我們這里的例子是 Linux),并且在相同的 fixpak 級別上運行著相同的 DB2 版本(版本 8.1)。注意,這個圖的目的 不是說明如何從一個單分區(qū)數(shù)據(jù)庫系統(tǒng)遷移到一個多分區(qū)數(shù)據(jù)庫系統(tǒng),而是可視化地展示在一個多分區(qū)系統(tǒng)的 安裝上,文件將被放置在什么地方。

還應(yīng)謹記的是,所有參與 DPF 環(huán)境的機器都必須通過某種通信設(shè)備互聯(lián)起來,這種通信設(shè)備可以是使用 TCPIP 協(xié)議的網(wǎng)絡(luò)。每臺機器上都預(yù)留了一些 TCPIP 端口,用于這種“分區(qū)間(interpartition)”通信。例如,默認情況下,Linux 中的服務(wù)文件(/etc/services)在安裝之后會作如下更新(假設(shè)您選擇創(chuàng)建 db2inst1 實例):


                                    DB2_db2inst1		60000/tcp
                                    DB2_db2inst1_1		60001/tcp
                                    DB2_db2inst1_2		60002/tcp
                                    DB2_db2inst1_END	60003/tcp
                                    db2c_db2inst1		50000/tcp
                                    

默認情況下,端口 60000 到 60003 被預(yù)留用于分區(qū)間通信。您需要根據(jù)當(dāng)前配置的分區(qū)數(shù)目,以正確的條目號更新服務(wù)文件。

在只涉及同一臺機器內(nèi)的分區(qū)時,這些分區(qū)之間的通信仍然需要上述設(shè)置。只有在 AIX 中,才可以通過將 DB2 注冊變量 DB2_FORCE_FCM_BP 設(shè)置為 YES 來迫使分區(qū)間的通信在內(nèi)存中執(zhí)行。

默認情況下,端口 50000 用于連接到 db2inst1 實例。當(dāng)客戶機需要連接到一個 DPF 系統(tǒng)時,它需要發(fā)出本系列 第 1 部分中描述到的,并且在 連通性快捷表一文中也作了解釋的一些命令。在這些命令中使用的主機名可以來自任何參與 DPF 環(huán)境的機器。除非在 CONNECT 語句中使用了 NODE 選項,否則所選擇的機器將成為協(xié)調(diào)節(jié)點。本文的后面會對協(xié)調(diào)節(jié)點的概念加以描述。

注意:對于參與 DPF 環(huán)境的每臺機器,服務(wù)文件中的 DB2 條目應(yīng)該是相同的。




回頁首


節(jié)點配置文件(db2nodes.cfg)

db2nodes.cfg 文件包含關(guān)于數(shù)據(jù)庫分區(qū)和這些分區(qū)所在的服務(wù)器的信息,這些服務(wù)器將參與到一個實例中。在某些情況下,該文件的信息用于判定命令的作用域。本文后面的“在 DPF 環(huán)境中發(fā)出命令和 SQL 語句”一節(jié)將更詳細地討論命令的作用域。

圖 4 展示了 db2nodes.cfg 文件的一個例子,它用于 4 臺 UNIX 服務(wù)器的一個群集,其中每臺服務(wù)器上創(chuàng)建兩個分區(qū)(圖 2 中的選項 IV)。


圖 4 - 每臺服務(wù)器上 2 個邏輯分區(qū)的 4 臺 UNIX 服務(wù)器的群集所使用的 db2nodes.cfg
每臺服務(wù)器上 2 個邏輯分區(qū)的 4 臺 UNIX 服務(wù)器的群集所使用的 db2nodes.cfg

在 Linux/UNIX 環(huán)境中,對應(yīng)于 db2nodes.cfg 文件的列是:


                                    Partition_number Hostname  Logical_Port netname  resourcename 

分區(qū)號(partition number),即 db2nodes.cfg 文件中的首列,表明了用于標識 DB2 內(nèi)分區(qū)的數(shù)字。在這個圖中,我們可以看到總共有 8 個分區(qū),分區(qū)號從 0 開始。對分區(qū)的編號必須按照升序進行,但是可以從任何數(shù)字開始。數(shù)字之間允許有間隔。注意,編號的方式很重要,因為這在命令或 SQL 語句中要考慮到,在本文接下來的幾節(jié)中就可以看到這一點。

第 2 列是創(chuàng)建分區(qū)時所在服務(wù)器的 TCP/IP 主機名。

第 3 列是可選的,但是如果要在一臺服務(wù)器上創(chuàng)建不止一個分區(qū),那么就必須使用這一列。該列指定服務(wù)器內(nèi)分區(qū)的邏輯端口,它在一臺服務(wù)器內(nèi)必須是惟一的。對于圖 4 中高亮顯示的例子,我們可以看到用于服務(wù)器“myserverb”的 db2nodes.cfg 條目與物理機器之間的映射。

第 4 列,即 netname,也是可選的,用于支持有多個活動 TCP/IP 接口、每個接口有其自己的主機名的主機。

第 5 列,即 resourcename,是可選的,僅適用于 AIX、HP-UX 和 Solaris 操作系統(tǒng)。它指定了分區(qū)應(yīng)該從哪個操作系統(tǒng)資源開始。

在 Windows 平臺上,還存在一個列,即計算機名(computer name),這一列包含一個分區(qū)所在機器的計算機名。這些列的順序是:


                                    Partition_number  Hostname	Computer_name    Logical_Port    netname
                                    

db2nodes.cfg 文件必須作如下放置:

  • 在 Linux 和 UNIX 平臺上,放置在實例屬主的 SQLLIB 目錄下。
  • 在 Windows 平臺上,放置在 SQLLIB\\<Instance name> 目錄下。

 

在圖 3 中,它應(yīng)該包括在 Linux3 機器中(在那里沒有顯示出,因為我們不想在那個圖中引入新的概念)。

在 Linux 和 UNIX 系統(tǒng)上,可以用任何 ASCII 編輯器或使用 DB2 命令來編輯 db2nodes.cfg 文件。在 Windows 上,只能使用 db2ncrt 和 db2ndrop 命令來創(chuàng)建和刪除數(shù)據(jù)庫分區(qū),而不應(yīng)該直接編輯 db2nodes.cfg 文件。

還可以使用 db2start 命令,分別通過 add dbpartitionnum 和 drop dbpartitionnum 子句,向 DB2 實例和 db2nodes.cfg 文件添加分區(qū)或從中刪除分區(qū)。





回頁首


在 DPF 環(huán)境中安裝 DB2

在 DPF 環(huán)境中,需要在每臺參與進來的機器上本地安裝 DB2。為了方便在其他機器上安裝 DB2,我們建議在第一臺機器上第一次安裝 DB2 的時候創(chuàng)建一個響應(yīng)文件。創(chuàng)建好這個響應(yīng)文件后,就可以將這個文件傳輸?shù)狡渌麢C器上,并在每臺機器上使用命令 db2setup -r <response file> 來運行無人值守安裝。

安裝盤里的 DB2 安裝代碼也可以放在一個共享磁盤上,然后就可以從這個磁盤本地安裝 DB2。例如,在圖 3 中,假設(shè) Linux2 機器上有一個磁盤,我們已經(jīng)將安裝盤上的安裝代碼復(fù)制到了這個磁盤中。這個磁盤是供其他兩臺機器(Linux1 和 Linux3)共享的。接著,可以從每臺機器上執(zhí)行 db2setup 命令來本地安裝 DB2,這樣每臺機器將擁有它自己的本地目錄 /opt/IBM/db2/V8.1,該目錄包含安裝的 DB2 二進制文件。您可能會想,另一種方法是只在 Linux2 這臺機器上安裝 DB2,而將安裝的二進制文件與 Linux1 和 Linux3 共享,但是這種配置是不受支持的。

注意:在 Linux 中,安裝的 DB2 二進制文件是存放在本地目錄 /opt/IBM/db2/V8.1 中的。在其他平臺上,DB2 安裝在其他目錄中。應(yīng)使用 db2level 命令確定安裝的代碼存放在本地機器的哪個地方。




回頁首


DPF 環(huán)境中的一個實例

分區(qū)這個概念只適用于數(shù)據(jù)庫這一級,而不適用于實例這一級。圖 3 可能會令您覺得實例也可以分區(qū)。然而,在 DPF 環(huán)境中的實際情況是,每臺機器上會單獨創(chuàng)建一個實例,這些實例都使用相同的特征:同樣的實例名,同樣的口令,以及共享的主目錄(home directory)。

在 Linux 和 UNIX 中,一個實例映射到一個操作系統(tǒng)用戶,因此,當(dāng)創(chuàng)建一個實例時,該實例將擁有自己的主目錄。例如,在大多數(shù)安裝中,/home/<user name> 被用作主目錄。在 DPF 環(huán)境中,在每臺分區(qū)的機器上單獨創(chuàng)建的所有實例都必須使用相同的名稱和口令。此外,對于所有實例,相應(yīng)操作系統(tǒng)用戶的主目錄必須是相同的目錄,這個目錄必須在一個共享磁盤(NFS 共享)上創(chuàng)建。圖 5 展示了一個例子。


圖 5 - 分區(qū)環(huán)境中的一個實例
分區(qū)環(huán)境中的一個實例

在圖 5 中,三臺 Linux 機器(Linux1、Linux2 和 Linux3)中的每一臺機器上都已創(chuàng)建了實例“myInst”。myInst 映射到一個有相同名稱的操作系統(tǒng)用戶,在此圖中它有一個主目錄 /db2home/myInst。注意,/db2home/myInst 這個目錄是由所有這三臺 Linux 機器共享的,因為它駐留在 Linux3 中的一個共享磁盤上。既然該實例的主目錄存放在 Linux3 機器本地,因而這臺機器被認為是 DB2 實例屬主機器。

圖 5 還顯示了 Database Administration Server (DAS) 用戶 db2as 是在 DPF 環(huán)境中每臺分區(qū)的機器上本地創(chuàng)建的。不管機器上所包含的分區(qū)有多少個,每臺物理機器上只能有一個 DAS。DAS 用戶的主目錄不能放置在共享磁盤上。有一種選擇是,使用不同的用戶 id 和口令在不同機器上創(chuàng)建 DAS。

注意:在 DPF 環(huán)境中的每臺分區(qū)機器上,應(yīng)確保實例的口令是一致的,否則分區(qū)的系統(tǒng)看上去就像被掛起一樣,因為各分區(qū)之間不能相互交談。




回頁首


實例屬主機器

前面已指出,在 DPF 環(huán)境中,DB2 實例屬主機器是擁有物理地存有實例主目錄的磁盤的機器。圖 3 所示的實例屬主機器在主目錄中的 sqllib 目錄或該目錄的子目錄下有一些文件:

  • 實例級概要注冊表(instance level profile registry)。
  • 數(shù)據(jù)庫管理器配置文件(dbm cfg)。
  • System db 目錄。
  • Node 目錄。
  • DCS 目錄。

如果更改了這些文件中任何參數(shù)的值或連通性信息,那么參與該環(huán)境的所有機器都將能夠看到更改,因為只是更新了一個共享的文件。例如,如果在 Linux1 這臺機器上通過下面的命令將 dbm cfg 參數(shù) intra_parallel 的值從 NO 改為 YES:


                                    db2 update dbm cfg using intra_parallel yes
                                    

然后在 Linux2 機器上發(fā)出以下命令:


                                    db2 get dbm cfg
                                    

那么就可以從 Linux2 看到更改生效了,因為只是更新了物理地存放在機器 Linux3 上單獨的一個共享文件。從任何分區(qū)發(fā)出這些命令都將影響在 db2nodes.cfg 文件中指定的所有分區(qū)。在 Linux/UNIX 環(huán)境中,您將收到來自每個分區(qū)的消息。 案例學(xué)習(xí) 這一節(jié)將演示如何執(zhí)行上述操作。





回頁首


將一個數(shù)據(jù)庫分區(qū)

為了將數(shù)據(jù)庫“分區(qū)”,在每臺參與該環(huán)境的不同機器上以相同的名稱本地創(chuàng)建一個目錄。以圖 1 為例,假設(shè)已經(jīng)在每臺機器的本地上創(chuàng)建了目錄 /data。然后,執(zhí)行命令:


                                    create database MYDB2 on /data
                                    

就會自動建立下面的目錄結(jié)構(gòu):


                                    /data/<instance name>/NODExxxx/SQLyyyyy
                                    

其中:

/data: 在 create database 命令中指定的目錄。在執(zhí)行 create database 命令之前,這個目錄必須已經(jīng)存在。

<instance name>: 實例名。例如“myInst”。

NODExxxx: 用于區(qū)分將要使用哪個分區(qū),其中“xxxx”代表在 db2nodes.cfg 文件中所指定的分區(qū)號,在本文的后面我們將討論這個文件。

SQLyyyyy: 用于標識數(shù)據(jù)庫,其中“yyyyy”代表一個號碼。如果在系統(tǒng)中只創(chuàng)建了一個數(shù)據(jù)庫,那么 yyyyy 就等于 00001,如果在系統(tǒng)中有 3 個數(shù)據(jù)庫,那么就有三個不同的目錄:SQL00001、SQL00002 和 SQL00003。為了將數(shù)據(jù)庫名映射到這些目錄上,可以使用以下命令查看本地數(shù)據(jù)庫目錄:


                                    db2 list db directory on /data 

在 SQLyyyyy 目錄中,存在一些用于表空間的子目錄,而這些子目錄中的文件又包含數(shù)據(jù)庫數(shù)據(jù)(假設(shè)所有表空間都被定義為 SMS)。圖 6 展示了分區(qū)的數(shù)據(jù)庫的一個可視化例子。

圖 6 - 在 /data 目錄中創(chuàng)建的一個分區(qū)的數(shù)據(jù)庫
在 /data 目錄中創(chuàng)建的一個分區(qū)的數(shù)據(jù)庫

如果沒有在 create database 命令中指定路徑,那么就會默認地在由 dbm cfg 參數(shù) DFTDBPATH 指定的目錄中創(chuàng)建數(shù)據(jù)庫,這個目錄默認為實例屬主機器的主目錄。于是在此場景中創(chuàng)建的目錄結(jié)構(gòu)如下:


                                    /db2home
                                    /myInst
                                    /NODE0000
                                    /SQL00001
                                    /NODE0001
                                    /SQL00001
                                    /NODE0002
                                    /SQL00001
                                    

這種分區(qū)并不是最佳的,因為所有數(shù)據(jù)庫數(shù)據(jù)都放在一個與其他機器共享的磁盤上。在 DPF 環(huán)境中,按照這種方法創(chuàng)建數(shù)據(jù)庫實際上違背了分區(qū)的本意。

注意:在創(chuàng)建數(shù)據(jù)庫之前,應(yīng)更改 dbm cfg 參數(shù) DFTDBPATH 的值,或確保在 create database 命令中包括了一個路徑。不管采用何種方式,DFTDBPATH 或路徑都應(yīng)指向在 DPF 系統(tǒng)中所有參與的機器上以相同名稱本地創(chuàng)建的一個目錄。這個目錄必須提前創(chuàng)建好。同樣,為了創(chuàng)建 SAMPLE 數(shù)據(jù)庫,需在命令中指定路徑,如下所示:db2sampl <path>




回頁首


DPF 環(huán)境中的配置文件

在前一節(jié)中我們已指出,實例級概要注冊表、數(shù)據(jù)庫管理器配置(dbm cfg)文件、系統(tǒng)數(shù)據(jù)庫目錄、節(jié)點目錄和 DCS 目錄都是實例屬主機器的一部分,它們是沒有被分區(qū)的。那么,對于其他配置文件,情況又是怎樣呢?

環(huán)境變量:
在分區(qū)的環(huán)境中,每臺參與進來的機器都可以有不同的環(huán)境變量。

全局級概要注冊表(global level profile registry)變量:
存放在文件 default.env 中,該文件位于 /var 下的一個子目錄中。對于每臺機器,都存在該文件的一個不同的本地副本。

數(shù)據(jù)庫配置文件(db cfg):
db cfg 存放在文件 SQLDBCON 中,該文件位于所指的數(shù)據(jù)庫的相應(yīng)目錄中。在分區(qū)的數(shù)據(jù)庫環(huán)境中,對于每個數(shù)據(jù)庫分區(qū)都存在一個單獨的 SQLDBCON 文件。

本地數(shù)據(jù)庫目錄:
本地數(shù)據(jù)庫目錄存放在所指的數(shù)據(jù)庫相應(yīng)目錄下的 SQLDBDIR 文件中。本地數(shù)據(jù)庫目錄的目錄名與系統(tǒng)數(shù)據(jù)庫目錄相同,系統(tǒng)數(shù)據(jù)庫目錄存放在實例目錄中。對于每個數(shù)據(jù)庫分區(qū)都存在一個獨立的 SQLDBDIR 文件。

注意:全局級概要注冊表變量、數(shù)據(jù)庫配置文件參數(shù)以及本地數(shù)據(jù)庫目錄條目等的值在每個數(shù)據(jù)庫分區(qū)上可能不相同,不過我們還是建議這些值在所有分區(qū)上都應(yīng)該是相同的。




回頁首


DPF 環(huán)境中的日志

每個數(shù)據(jù)庫分區(qū)都應(yīng)該獨立地維護自己的日志。因此,每個分區(qū)中的 db cfg 參數(shù)“path to log files”不應(yīng)該都指向共享磁盤目錄,而應(yīng)該指向本地目錄。在每個分區(qū)中,默認的日志路徑將包括一個 NODE000x 子目錄,作為該日志路徑的一部分。例如,在圖 3 中所示的 DPF 環(huán)境中,這個參數(shù)的值是:


                                    For Partition 0:  /datalogs/db2inst1/NODE0000/SQL00001/SQLOGDIR/
                                    For Partition 1:  /datalogs/db2inst1/NODE0001/SQL00001/SQLOGDIR/
                                    For Partition 2:  /datalogs/db2inst1/NODE0002/SQL00001/SQLOGDIR/
                                    

如果要手動地更新這個路徑,可以使用 db cfg 參數(shù) NEWLOGPATH。在后面的小節(jié)中我們將看到,db2_all 這個命令只需執(zhí)行一次就可以影響所有分區(qū)。





回頁首


編目分區(qū)

當(dāng)創(chuàng)建一個數(shù)據(jù)庫時,也會默認地創(chuàng)建一些表空間。其中有一個表空間就是 SYSCATSPACE,它包含了 DB2 編目(Catalog)。在 DPF 環(huán)境中,SYSCATSPACE 不能分區(qū),但是它必須駐留在一個分區(qū)內(nèi),這個分區(qū)就是編目(Catalog)分區(qū)。發(fā)出 create database 命令時所在的那個分區(qū)就成為新數(shù)據(jù)庫的編目分區(qū)。所有對系統(tǒng)表的訪問都必須經(jīng)過這個數(shù)據(jù)庫分區(qū)。

圖 3 展示了駐留在 Linux1 機器上的 SYSCATSPACE,create database 命令就是從這個分區(qū)發(fā)出的,因而它就成為編目分區(qū)。如果要為某個特定實例創(chuàng)建了多個數(shù)據(jù)庫,那么應(yīng)確保從不同分區(qū)發(fā)出 create database 命令,以使得這些數(shù)據(jù)庫相應(yīng)的編目表都創(chuàng)建在不同的分區(qū)上。

對于一個已有的數(shù)據(jù)庫,可以通過發(fā)出命令 list db directory 來確定哪個分區(qū)是編目分區(qū)。該命令的輸出就是每個條目的“Catalog database partition number”字段,該字段表明了給定數(shù)據(jù)庫的編目分區(qū)號。有一種選擇是,您可以從不同機器連接到數(shù)據(jù)庫,然后發(fā)出 list tablespaces show detail 命令。只有編目分區(qū)會顯示 SYSCATSPACE 表空間。





回頁首


分區(qū)組

分區(qū)組是一個邏輯層,它允許將一個或多個分區(qū)組成一組,以便對該組中的所有分區(qū)統(tǒng)一執(zhí)行某些操作。一個數(shù)據(jù)庫分區(qū)可以同時屬于多個分區(qū)組。當(dāng)創(chuàng)建一個數(shù)據(jù)庫時,DB2 將創(chuàng)建三個默認的分區(qū)組,這三個組是不能刪除的:

  • IBMDEFAULTGROUP: 這是用于您所創(chuàng)建的任何表的默認分區(qū)組。它由在 db2nodes.cfg 中定義的所有數(shù)據(jù)庫分區(qū)組成。這個分區(qū)組不能修改。表空間 USERSPACE1 就是在這個分區(qū)組中創(chuàng)建的。
  • IBMTEMPGROUP: 所有系統(tǒng)臨時表將使用這個分區(qū)組。它也是由 db2nodes.cfg 中定義的所有數(shù)據(jù)庫分區(qū)組成的。表空間 TEMPSPACE1 就是在這個分區(qū)組中創(chuàng)建的。
  • IBMCATGROUP: 這個分區(qū)組包含編目表(表空間 SYSCATSPACE),因此,它只包括數(shù)據(jù)庫的編目分區(qū)。這個分區(qū)組不能修改。

要創(chuàng)建新的數(shù)據(jù)庫分區(qū)組,可以使用 create database partition group 語句。該語句將在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫分區(qū)組,將指定的數(shù)據(jù)庫分區(qū)指派給這個分區(qū)組,然后在數(shù)據(jù)庫系統(tǒng)編目表中記錄下該分區(qū)組的定義。

例如,下列語句將在 db2nodes.cfg 文件中指定的所有分區(qū)上創(chuàng)建一個分區(qū)組“pgrpall”:


                                    create database partition group pgrpall on all dbpartitionnums
                                    

要創(chuàng)建由分區(qū) 2 和分區(qū) 3 組成的數(shù)據(jù)庫分區(qū)組“pg23”,可以發(fā)出下面這個命令:


                                    create database partition group pg23 on dbpartitionnums (2,3)
                                    

其他相關(guān)的分區(qū)組語句/命令有:

  • alter database partition group,該語句用于添加或刪除組中一個分區(qū)。
  • drop database partition group,該語句用于刪除一個分區(qū)組。
  • list database partition group,該命令用于列出所有分區(qū)組(IBMTEMPGROUP 不會列出)。




回頁首


DPF 環(huán)境中的緩沖池

在圖 3 中,我們展示了分布在不同分區(qū)上的緩沖池。解釋這個圖時,對于緩沖池的解釋不同于其他對象,因為緩存在緩沖池中的數(shù)據(jù)不是像圖中隱含的那樣分區(qū)的。實際情況是,在 DPF 環(huán)境中,緩沖池可以根據(jù)不同的分區(qū)來量身定做。通過使用帶有 DATABASE PARTITION GROUP 子句的 CREATE BUFFERPOOL 語句,可以將一個緩沖池與一個給定的分區(qū)組關(guān)聯(lián)起來。這意味著,您可以靈活地為分區(qū)組中定義的特定分區(qū)來定義緩沖池。此外,在分區(qū)組中每個分區(qū)上緩沖池的大小也可以因需求而變化。例如,下面的語句將在分區(qū)組“pg1”中創(chuàng)建緩沖池“bpool_1”,我們假設(shè)這個分區(qū)組由分區(qū) 2、3 和 4 組成:


                                    CREATE BUFFERPOOL bpool_1 DATABASE PARTITION GROUP pg1 1
                                    SIZE 10000
                                    EXCEPT ON DBPARTITIONNUM (3 TO 4) SIZE 5000
                                    

分區(qū)組 pg1 中的每個分區(qū)上將定義一個緩沖池 bpool_1,其大小是 10000。分區(qū) 3 和 4 將有一個大小為 5000 的緩沖池。我們使用一個類比,假設(shè)在每個分區(qū)上單獨地發(fā)出 CREATE BUFFERPOOL 語句,其中每個分區(qū)上緩沖池的名稱是一樣的,但是指定不同的大小,那么相應(yīng)的語句就是:


                                    在分區(qū) 2 中:   CREATE BUFFERPOOL bpool_1 SIZE 10000
                                    在分區(qū) 3 中:   CREATE BUFFERPOOL bpool_1 SIZE 5000
                                    在分區(qū) 4 中:   CREATE BUFFERPOOL bpool_1 SIZE 5000
                                    

注意,上述語句是為了讓類比清晰化,執(zhí)行以上所示的這些語句時,系統(tǒng)將試圖使用所有分區(qū)創(chuàng)建一個緩沖池。這與使用 CREATE BUFFERPOOL 的 DATABASE PARTITION GROUP 子句有所不同。

此外,緩沖池可以與多個分區(qū)組相關(guān)聯(lián)。這意味著,緩沖池的定義將被應(yīng)用于給定的相關(guān)分區(qū)組中的所有分區(qū)。





回頁首


DPF 環(huán)境中的表空間

可以在一些特定的分區(qū)中創(chuàng)建表空間,方法是將該表空間與一個給定的分區(qū)組相關(guān)聯(lián)。我們可以使用帶有 IN DATABASE PARTITION GROUP 子句的 CREATE TABLESPACE 語句來實現(xiàn)。該語句允許用戶靈活地指定使用哪些分區(qū)來實際地存儲他們的表。例如,語句:


                                    CREATE REGULAR TABLESPACE mytbls IN DATABASE PARTITION GROUP pg1
                                    MANAGED BY SYSTEM USING (‘ data‘   BUFFERPOOL bpool_1
                                    

創(chuàng)建表空間 mytbls,這個表空間橫跨分區(qū) 2、3 和 4(假設(shè) pg1 是由這些分區(qū)組成的分區(qū)組)。此外,該表空間與前面一節(jié)中定義的緩沖池 bpool_1 相關(guān)聯(lián)。注意,如果提供了表空間和相關(guān)緩沖池之間有沖突的分區(qū)信息,那么該表空間的創(chuàng)建將會失敗。例如,如果緩沖池 bpool_1 是為分區(qū) 5 和 6 創(chuàng)建的,而表空間 mytbls 是為分區(qū) 2、3 和 4 創(chuàng)建的,那么在創(chuàng)建這個表空間時就會發(fā)生錯誤。





回頁首


協(xié)調(diào)節(jié)點

通常,對于每個數(shù)據(jù)庫連接,都會有一個相應(yīng)的 DB2 代理來執(zhí)行 DB2 工作。代理可以看作是一個進程(在 Linux/UNIX 中)或者是一個線程(在 Windows 中),它代表應(yīng)用程序執(zhí)行 DB2 工作。有很多不同類型的代理,其中有一種就是協(xié)調(diào)代理(coordinator agent)。協(xié)調(diào)代理與應(yīng)用程序通信,接收請求和發(fā)送回復(fù)。它可以要么自己滿足請求,要么將工作委托給多個子代理來處理請求。

一個給定應(yīng)用程序的協(xié)調(diào)節(jié)點就是協(xié)調(diào)代理所在的那個分區(qū)。協(xié)調(diào)節(jié)點也可以用 SET CLIENT CONNECT_NODE 命令來設(shè)置。當(dāng)應(yīng)用程序發(fā)出一個查詢時,協(xié)調(diào)節(jié)點將這些數(shù)據(jù)庫請求的各部分發(fā)送給其他分區(qū)上的一些子代理,而來自其他分區(qū)的所有結(jié)果在發(fā)送回應(yīng)用程序之前,又會在協(xié)調(diào)節(jié)點上合并起來。

任何分區(qū)都可能成為協(xié)調(diào)節(jié)點,因此在圖 3 中,我們沒有專門指出哪一個分區(qū)作為協(xié)調(diào)節(jié)點。如果想知道更多關(guān)于 DB2 代理和 DB2 進程模型的信息,請參閱本文參考資料那一節(jié)。





回頁首


在 DPF 環(huán)境中發(fā)出命令和 SQL 語句

假設(shè)有 20 臺物理機器,每臺機器上有 2 個分區(qū)。如果要向每臺物理機器或分區(qū)發(fā)出一條條的命令,那么任務(wù)量就比較可觀了。幸運的是,DB2 提供了兩個主命令,這兩個命令可以執(zhí)行所有機器或分區(qū)上的其他命令:

rah:
當(dāng)想要為每臺物理機器執(zhí)行另一個命令時,就可以使用這個命令。例如,如果想為 20 臺物理機器創(chuàng)建一個目錄,那么可以發(fā)出下面的命令:


                                    rah ")mkdir /tmp/$USER"
                                    

其中 ‘ ‘ 字符表明在 $RAHENV 中指定的用戶概要表和文件是被限制長度的。另外,還可以使用一些其他字符。要得到對這些字符的解釋,可以發(fā)出命令: rah ?

db2_all:
當(dāng)想為每個數(shù)據(jù)庫分區(qū)執(zhí)行另一個命令時,就可以使用這個命令。例如,如果想更改每個分區(qū)中 SAMPLE 數(shù)據(jù)庫的 db cfg 參數(shù) logfilsiz,就可以發(fā)出以下命令:


                                    db2_all ";db2 UPDATE DB CFG FOR sample USING LOGFILSIZ 500"
                                    

如果分號(;)字符放在雙引號里面,那么請求就會在所有分區(qū)上同時運行。在 db2_all 命令中可以使用的字符與 rah 命令中可以使用的字符是一樣的。

對于 rah 或 db2_all,執(zhí)行的命令幾乎可以是您在交互提示符下能輸入的任何東西,包括依次執(zhí)行的一些命令。在 Linux 和 UNIX 平臺上,可以使用分號(;)隔開多個命令。在 Windows 上,可以使用“和”符號(&)隔開多個命令。但是在最后那個命令后面不要使用分隔符字符。

命令和 SQL 語句的作用域
一個命令(例如 db2 get db cfg,db2 list tablespaces 等等)的作用域受限于會話所依附的分區(qū)。
對于以 db2_all 打頭的命令,其作用域就是從 db2nodes.cfg 中可以得到的整個分區(qū)列表。
一條 SQL 語句的作用域是 db2nodes.cfg 文件中所有分區(qū)的集合(如果使用了 WHERE DBPARTITIONNUM= 謂詞則另當(dāng)別論)。

使用數(shù)據(jù)庫分區(qū)表達式
在一個分了區(qū)的數(shù)據(jù)庫中,如果有不止一個數(shù)據(jù)庫分區(qū)駐留在同一臺物理機器上,則不能為這些數(shù)據(jù)庫分區(qū)指定相同的設(shè)備或路徑。您可以手動地指定一個惟一的容器來存放每個數(shù)據(jù)庫分區(qū),或者也可以在命令或語句中使用數(shù)據(jù)庫分區(qū)表達式,以根據(jù) db2nodes.cfg 文件中的分區(qū)號生成一些值。下面的例子應(yīng)該可以澄清這一概念:假設(shè)您發(fā)出了如下命令:


                                    CREATE TABLESPACE TS2
                                    MANAGED BY DATABASE USING
                                    (file ‘ data/TS2/container $N+100‘ 5000)
                                    


在一個由 4 個數(shù)據(jù)庫分區(qū)組成的系統(tǒng)中,上述命令將創(chuàng)建下面幾個容器:

                                    /data/TS2/container100 - on DATABASE PARTITION 0
                                    /data/TS2/container101 - on DATABASE PARTITION 1
                                    /data/TS2/container102 - on DATABASE PARTITION 2
                                    /data/TS2/container103 - on DATABASE PARTITION 3
                                    

數(shù)據(jù)庫分區(qū)表達式是由參數(shù) ‘ $N (注意在 $N 之前有一個空格)指定的。表 1 展示了用于創(chuàng)建容器的其他一些參數(shù)。運算符是從左往右計算的,其中 ‘ ‘ 代表模數(shù)(除法的余數(shù))。假設(shè)我們所指的分區(qū)號是 3,在表 1 中“值”列顯示了解析數(shù)據(jù)庫分區(qū)表達式所得到的結(jié)果。

v

數(shù)據(jù)庫分區(qū)表達式

例子

[空格]$N

" $N"

3

[空格]$N+[數(shù)字]

" $N+500"

503

[空格]$N%[數(shù)字]

" $N%2"

1

[空格]$N+[數(shù)字]%[數(shù)字]

" $N+15%13"

5

[空格]$N%[數(shù)字]+[數(shù)字]

" $N%2+20"

21





回頁首


DB2NODE 環(huán)境變量

在本系列的 第 1 部分 中,我們談到了環(huán)境變量 DB2INSTANCE 用于在數(shù)據(jù)庫系統(tǒng)中不同實例之間進行切換。環(huán)境變量 DB2NODE 的用途也是類似的,但它是用于在 DPF 系統(tǒng)中的不同分區(qū)之間切換。默認情況下,對于給定服務(wù)器,活動分區(qū)是在 db2nodes.cfg 文件中以邏輯端口 0 定義的那個分區(qū)。為了切換活動分區(qū),在 Windows 中可以使用 SET 命令,在 Linux/UNIX 中可以使用 export 命令。在更改了這個變量以后,應(yīng)確保終止從任何分區(qū)到數(shù)據(jù)庫的所有連接,否則所作的更改就不能生效。

例如,使用圖 4 中所示的 db2nodes.cfg 文件,您有 4 臺服務(wù)器,每臺服務(wù)器上有 2 個邏輯分區(qū)。如果登錄到了服務(wù)器 myserverb,那么您所執(zhí)行的任何命令將影響到分區(qū) 2,分區(qū) 2 也就是擁有邏輯端口 0 的那個分區(qū),當(dāng)然這個分區(qū)就是那臺服務(wù)器的活動分區(qū)。如果要將分區(qū) 0 切換成活動分區(qū),那么在 Linux 系統(tǒng)中可以這樣來更改:


                                    DB2NODE=0
                                    export DB2NODE
                                    db2 terminate
                                    

(僅僅是不存在來自任何分區(qū)的連接還不夠,還應(yīng)確保發(fā)出了“terminate”命令)。

注意,分區(qū) 0 是在服務(wù)器 myservera 中。我們甚至可以使這個分區(qū)成為服務(wù)器 myserverb 的活動分區(qū)。為了確定哪一個是活動節(jié)點,您可以在連接到一個數(shù)據(jù)庫后發(fā)出如下語句:


                                    db2 "values (current dbpartitionnum)"
                                    





回頁首


分區(qū)圖和分區(qū)鍵

至此,您應(yīng)該對如何設(shè)立一個 DPF 環(huán)境有一個較好的理解了。現(xiàn)在是時候來理解如何跨不同分區(qū)執(zhí)行數(shù)據(jù)行的分發(fā)了。圖 7 展示了這種分發(fā)的一個例子。


圖 7 - 在 DPF 環(huán)境中分發(fā)數(shù)據(jù)行
在 DPF 環(huán)境中分發(fā)數(shù)據(jù)行

分區(qū)圖(partitioning map)是內(nèi)部生成的一個數(shù)組,它或者包含對應(yīng)于多分區(qū)數(shù)據(jù)庫分區(qū)組的 4,096 個條目,或者包含對應(yīng)于單分區(qū)數(shù)據(jù)庫分區(qū)組的一個條目。數(shù)據(jù)庫分區(qū)組里的分區(qū)號是以一種循環(huán)(round-robin)方式指定的。

分區(qū)鍵(partitioning key)是一個列(或者一組列),用于確定某一行特定數(shù)據(jù)所在的那個分區(qū)。分區(qū)鍵是在一個表上使用 CREATE TABLE 語句來定義的。

當(dāng)創(chuàng)建或修改一個數(shù)據(jù)庫分區(qū)組時,會有一個分區(qū)圖與之關(guān)聯(lián)。DB2 使用分區(qū)圖再加上分區(qū)鍵以及散列算法(hashing algorithm)來確定數(shù)據(jù)庫分區(qū)組中哪一個數(shù)據(jù)庫分區(qū)將存儲給定的一行數(shù)據(jù)。

對于圖 7 中的例子,假設(shè)我們已經(jīng)在分區(qū) 0、1、2 和 3 上定義了分區(qū)組“pg0123”。這樣將自動創(chuàng)建一個關(guān)聯(lián)的分區(qū)圖,也就是擁有 4096 個條目的一個數(shù)組,這些條目包含值 0,1,2,3,0,1,2,3... (默認情況下,分區(qū)號以循環(huán)的方式存儲,不過這可以更改)。另外再假設(shè)已經(jīng)創(chuàng)建了表“mytable”,它有一個分區(qū)鍵,這個分區(qū)鍵由 col1、col2 和 col3 這三列組成。對于每一行,分區(qū)鍵各列的值被傳遞給散列算法,散列算法將返回從 0 到 4095 的一個輸出數(shù)字。這個數(shù)字對應(yīng)于在分區(qū)圖數(shù)組中的一個條目,這個條目包含了這一行數(shù)據(jù)所在分區(qū)的分區(qū)號的值。在圖 5 中,如果散列算法返回了一個輸出值 7,那么這一行就是存放在分區(qū) p1 中。





回頁首


案例學(xué)習(xí)

現(xiàn)在您已經(jīng)熟悉了 DPF,讓我們通過一個案例學(xué)習(xí)來回顧一下本文中的所有概念。

假設(shè)您的公司正在擴張,最近又買下了兩家其他的公司。由于數(shù)據(jù)大約是呈兩倍增長的,您想知道當(dāng)前的單分區(qū) DB2 數(shù)據(jù)庫服務(wù)器是否能夠處理負載,還是需要 DB2 with DPF。由于您不大熟悉 DB2 with DPF,于是決定使用測試機器來先試一試:用于測試的有兩臺 SMP 機器,每臺機器有 4 個處理器,兩臺機器都運行 Linux 操作系統(tǒng)。之前的 DBA 已經(jīng)在這兩臺機器上安裝了 DB2 UDB ESE with DPF。他已經(jīng)離開了公司,幸好他留下了如圖 8 所示的圖,其中有他的設(shè)計。


圖 8 - DB2 UDB ESE with DPF - 一個案例學(xué)習(xí)
DB2 UDB ESE with DPF - 一個案例學(xué)習(xí)

圖 8 是物理和邏輯設(shè)計的結(jié)合。當(dāng)您用自己的系統(tǒng)所具備的東西來核實這個圖的正確性時,您注意到“mydb1”數(shù)據(jù)庫已經(jīng)被刪除,因此決定重建這個數(shù)據(jù)庫,作為一種實踐。而實例“db2inst1”以及其他數(shù)據(jù)庫仍在那里。下面是您所遵循的步驟:

1. 打開兩個 telnet 會話,每臺 SMP 機器使用一個會話。從其中的一個會話中,發(fā)出 db2stop 命令,之后是 db2start 命令,如圖 9 所示。


圖 9 - db2stop 和 db2start
db2stop 和 db2start

首先注意到的是,對于這兩個命令,沒有必要從每個分區(qū)上發(fā)出它們。只需從任何分區(qū)發(fā)出這兩個命令一次,就可以影響到所有分區(qū)。您還可以知道存在 4 個分區(qū),因為您將從每個分區(qū)收到一條消息。

2. 接著,您想查看 db2nodes.cfg 文件,以檢查分區(qū)的配置。通過使用一些操作系統(tǒng)命令,確定實例 db2inst1 的主目錄,在這個例子中就是 /db2home/db2inst1。因而,文件 db2nodes.cfg 就存放在目錄 /db2home/db2inst1/sqllib 中。這個文件的內(nèi)容如圖 10 所示。


圖 10 - db2nodes.cfg
db2nodes.cfg

圖 10 顯示了這里有 4 個分區(qū),每臺服務(wù)器上兩個分區(qū)。服務(wù)器的主機名是 65658572 和 65658161。

3. 再接著,您想創(chuàng)建數(shù)據(jù)庫“mydb1”,但是想從分區(qū) 0 發(fā)出這個命令,因為您想讓這個分區(qū)成為編目分區(qū)。所以您從會話中發(fā)出語句 db2 "values (current dbpartitionnum)" 來確定哪個分區(qū)是當(dāng)前的活動分區(qū)。接下來再將環(huán)境變量 DB2NODE 改為 0。

就在創(chuàng)建這個數(shù)據(jù)庫之前,您還需檢查 dbm cfg 參數(shù) DFTDBPATH 的值。這就是默認情況下這個數(shù)據(jù)庫創(chuàng)建時所在的路徑。您希望在所有分區(qū)中本地創(chuàng)建所指定的路徑(在這個例子中就是 /db2database ),以便將數(shù)據(jù)分布在這些分區(qū)中。通過使用操作系統(tǒng)命令,您證實了情況正是如此,于是繼續(xù)創(chuàng)建數(shù)據(jù)庫。如圖 11 所示。


圖 11 - 確定并切換活動分區(qū),然后創(chuàng)建數(shù)據(jù)庫
確定并切換活動分區(qū),然后創(chuàng)建數(shù)據(jù)庫

4. 為了證實分區(qū) 0 的確是編目分區(qū),只需發(fā)出一條 list db directory 命令,然后在對應(yīng)于“mydb1”數(shù)據(jù)庫的條目下找到“Catalog database partition number”字段。另外,也可以從每個分區(qū)上發(fā)出一條 list tablespaces 命令。應(yīng)該只有編目分區(qū)才會列出 SYSCATSPACE 表空間。

5. 接下來,您需要在分區(qū) 2 和 3 上創(chuàng)建分區(qū)組 pg23。圖 12 展示了如何完成這一任務(wù)。此外,該圖還展示了如何列出分區(qū)組。這個命令不能列出 IBMTEMPGROUP。


圖 12 - 創(chuàng)建分區(qū)組 pg23
創(chuàng)建分區(qū)組 pg23

6. 現(xiàn)在您想要創(chuàng)建和管理緩沖池。為了在分區(qū)組 pg23 上創(chuàng)建緩沖池 BP23,可以發(fā)出如下命令:


                                    db2 "create bufferpool BP23 database partition group pg23 size 500 "
                                    

圖 13 展示了該條語句。這個圖還展示了如何使用 altER BUFFERPOOL 語句將此緩沖池與另一個分區(qū)組關(guān)聯(lián)起來。

為了列出緩沖池和相關(guān)聯(lián)的分區(qū)組,可以查詢 syscat.bufferpools 視圖或者 sysibm.sysbufferpools 編目表。


圖 13 - 管理緩沖池
管理緩沖池

注意,一個緩沖池可以與任何分區(qū)組相關(guān)聯(lián)。緩沖池的定義將適用于分區(qū)組內(nèi)的所有分區(qū),如果需要的話,可以為分區(qū)指定不同的大小。

7. 為了創(chuàng)建表空間 mytbls1,可發(fā)出如下命令:


                                    db2 "create tablespace mytbls1 in database partition group pg23
                                    managed by system using (‘/data‘) bufferpool bp23"
                                    

8. 為了在表空間 mytbls1 中創(chuàng)建帶有分區(qū)鍵 col1 和 col2 的表 table1,可發(fā)出如下命令:


                                    db2 "create table table1 (col1 int, col2 int, col3 char(10))
                                    in mytbls1
                                    partitioning key (col1, col2)"
                                    

9. 對于 DPF 環(huán)境,創(chuàng)建索引 index1 時沒什么特別之處:


                                    db2 "create index index1 on table1 (col1, col2)"
                                    

在每個分區(qū)上,都要為其數(shù)據(jù)行的子集構(gòu)造該索引。

10. 接下來,假設(shè)您想如圖 14 中所示的那樣,使用帶有 INTRA_PARALLEL YES 的命令 update dbm cfg 將參數(shù) INTRA_PARALLEL 從 NO 更新為 YES。這里也應(yīng)注意,與此同時還發(fā)出了 get dbm cfg 命令,只不過這個命令是從另一個 telnet 會話中發(fā)出的。這個參數(shù)值的更新版本顯示在任何分區(qū)上,這說明您更新的是一個共享文件。


圖 14 - Update dbm cfg
Update dbm cfg

11. 然后,您想測試一下 db2_all 命令,以便只用一個命令就為所有分區(qū)更新 db cfg 文件。圖 15 展示了一個例子。在該圖中的第二個窗口顯示了在一個沒有執(zhí)行過 db2_all 命令的分區(qū)上執(zhí)行 db2_all 命令之前和之后的 get db cfg。


圖 15 - 使用 db2_all 更新 db cfg
使用 db2_all 更新 db cfg

12. 您最后想測試的就是 rah 命令。圖 16 展示了一個使用 rah 創(chuàng)建子目錄的例子。


圖 16 - 使用 rah
使用 rah

您可以看到,rah 命令在每臺機器上工作,而 db2_all 命令則是在每個數(shù)據(jù)庫分區(qū)上工作。

大功告成!





回頁首


致謝

特別感謝 Bill Wilkins (IBM Content Management Partner Enablement 顧問)和 Scott Martin (IBM Innovation Center for Business Partners 顧問),他們對本文進行了技術(shù)性的審校。





參考資料






關(guān)于作者

Raul F. Chong 是 IBM 多倫多實驗室的數(shù)據(jù)庫顧問,主要與 IBM 業(yè)務(wù)伙伴進行合作。Raul 已經(jīng)在 IBM 任職 5 年了,其中有 3 年是在 DB2 技術(shù)支持部(Technical Support)工作,另兩年擔(dān)任顧問,專門從事數(shù)據(jù)庫應(yīng)用程序開發(fā)和從其他 RDBMS 遷移到 DB2 方面的工作。








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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多