db2nodes.cfg 檔案可用來定義參與 DB2® 實例的資料庫分割區伺服器。若您要使用資料庫分割區伺服器通訊的高速交互連接,則 db2nodes.cfg 檔案也可用於指定高速交互連接的 IP 位址或主機名稱。
Linux® 及 UNIX® 作業系統上 db2nodes.cfg 檔案的格式如下所示:
dbpartitionnum hostname logicalport netname resourcesetnamedbpartitionnum
、hostname、logicalport、netname 及 resourcesetname 在下節中定義。
Windows® 作業系統上 db2nodes.cfg 檔案的格式如下所示:
dbpartitionnum hostname computername logicalport netname resourcesetname
在 Windows 作業系統上,db2ncrt 或 START DBM ADD DBPARTITIONNUM 指令會將這些項目新增至 db2nodes.cfg。這些項目也可以由 db2nchg 指令進行修改。您不應直接新增這些文字行或編輯此檔案。
若要調整分割資料庫系統,請針對每一個資料庫分割區伺服器將登錄新增至 db2nodes.cfg 檔案。您為附加之資料庫分割區伺服器選取的 dbpartitionnum 值必須以遞增次序排列,但在此順序中可以有間隙存在。如果您計劃要新增邏輯分割區伺服器,並且希望在此檔案中對節點進行邏輯分組,則可以選擇在 dbpartitionnum 值之間放置間隙。
此為必要登錄項目。
如果在 db2nodes.cfg 檔案中提供主機名稱 (而非 IP 位址),則資料庫管理程式會動態嘗試解析主機名稱。解析可以在本端進行或透過查閱已登錄的「網域名稱伺服器 (DNS)」進行,由機器上的 OS 設定所決定。
從 DB2 9.1 版開始,支援 TCP/IPv4 及 TCP/IPv6 通訊協定。已變更要解析主機名稱的方法。
雖然 9.1 版前版次所使用的方法如 db2nodes.cfg 檔案中所定義地解析字串,但是當在 db2nodes.cfg 檔案中定義簡短名稱時,9.1 版或更新版本中的方法會嘗試解析「完整網域名稱 (FQDN)」。指定為完整主機名稱配置的簡短名稱,這可能會導致在解析主機名稱的程序中發生不必要的延遲。
若要避免在需要主機名稱解析的 DB2 指令中發生任何延遲,請使用下列任何解決方法:
db2 catalog tcpip4 node db2tcp2 remote 192.0.32.67 server db2inst1 with "Look up IPv4 address from 192.0.32.67"
db2 catalog tcpip6 node db2tcp3 1080:0:0:0:8:800:200C:417A server 50000 with "Look up IPv6 address from 1080:0:0:0:8:800:200C:417A"
DB2 會在安裝時,為分割區間的通訊保留 /etc/services 檔案中的埠範圍 (例如 60000 - 60003)。db2nodes.cfg 中的這個 logicalport 欄位可在該範圍中,指定您要指派給特定邏輯分割區伺服器的埠。
如果此欄位沒有登錄,則預設值為 0。然而,如果您在 netname 欄位中新增登錄,則必須在 logicalport 欄位中輸入數字。
如果使用邏輯資料庫分割區,則所指定的 logicalport 值必須從 0 開始, 並以遞增次序繼續 (例如,0、1、2)。
此外,如果您指定了某一資料庫分割區伺服器的 logicalport 登錄,則必須為列示於 db2nodes.cfg 檔案中的每一個資料庫分割區伺服器指定 logicalport。
只有當您不是使用邏輯資料庫分割區或高速交互連接時, 此欄位才是選用欄位。
若已指定此欄位的登錄,則資料庫分割區伺服器之間的所有通訊 (db2start、 db2stop 及 db2_all 指令所產生的通訊除外) 都會以高速交互連接來處理。
只有當您使用高速交互連接來進行資料庫分割區通訊時,此參數才是必要參數。
只有 AIX®、HP-UX 及 Solaris 作業系統才支援此參數。
在 AIX 上,此概念稱為「資源設定」,而在「Solaris 作業系統」中則稱為「專案」。請參閱作業系統文件,以取得資源管理的更多資訊。
在 HP-UX 上,resourcesetname 參數就是 PRM 群組的名稱。請參閱 HP 的 "HP-UX Process Resource Manager,User Guide,(B8733-90007)" 文件以取得更多資訊。
在 Windows 作業系統上,可以透過 DB2PROCESSORS 登錄變數來定義邏輯節點的程序親緣性。
在 Linux 作業系統上,resourcesetname 直欄會定義與系統上「非一致記憶體存取 (NUMA)」節點相對應的號碼。除了具有 NUMA 原則支援的「2.6 核心程式」之外,也必須可以使用系統公用程式 numactl。
如果使用 resourcesetname 參數,就必須指定 netname 參數。
請使用下列範例配置來決定環境中適當的配置。
0 ServerA 0 1 ServerA 1 2 ServerA 2 3 ServerA 3
0 ServerA 0 1 ServerB 0
4 ServerA 0 6 ServerA 1 8 ServerA 2 9 ServerB 0
0 ServerA 0 switch1 1 ServerB 0 switch2 2 ServerB 1 switch2
這些限制適用於下列範例:
以下是如何設定 AIX 作業系統之資源設定的範例。
此範例有一個實體節點,它有 32 個處理器及 8 個邏輯資料庫分割區 (MLN)。 此範例顯示如何為每個 MLN 提供程序相似性。
DB2/MLN1: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00000,sys/cpu.00001,sys/cpu.00002,sys/cpu.00003 DB2/MLN2: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00004,sys/cpu.00005,sys/cpu.00006,sys/cpu.00007 DB2/MLN3: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00008,sys/cpu.00009,sys/cpu.00010,sys/cpu.00011 DB2/MLN4: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00012,sys/cpu.00013,sys/cpu.00014,sys/cpu.00015 DB2/MLN5: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00016,sys/cpu.00017,sys/cpu.00018,sys/cpu.00019 DB2/MLN6: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00020,sys/cpu.00021,sys/cpu.00022,sys/cpu.00023 DB2/MLN7: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00024,sys/cpu.00025,sys/cpu.00026,sys/cpu.00027 DB2/MLN8: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00028,sys/cpu.00029,sys/cpu.00030,sys/cpu.00031
vmo -p -o memory_affinity=1
chuser capabilities= CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH db2inst1
1 regatta 0 regatta DB2/MLN1 2 regatta 1 regatta DB2/MLN2 3 regatta 2 regatta DB2/MLN3 4 regatta 3 regatta DB2/MLN4 5 regatta 4 regatta DB2/MLN5 6 regatta 5 regatta DB2/MLN6 7 regatta 6 regatta DB2/MLN7 8 regatta 7 regatta DB2/MLN8
此範例顯示如何將 PRM 群組用於具有 4 個 CPU 及 4 個 MLN 之機器上的 CPU 共用,且每個 MLN 有 24% 的 CPU 共用,並保留 4% 給其他應用程式。DB2 實例名稱為 db2inst1。
OTHERS:1:4:: db2prm1:50:24:: db2prm2:51:24:: db2prm3:52:24:: db2prm4:53:24::
db2inst1::::OTHERS,db2prm1,db2prm2,db2prm3,db2prm4
prmconfig -i prmconfig -e CPU
1 voyager 0 voyager db2prm1 2 voyager 1 voyager db2prm2 3 voyager 2 voyager db2prm3 4 voyager 3 voyager db2prm4
PRM 配置 (步驟 1-3) 可使用互動式 GUI 工具 xprm 來完成。
在 Linux 作業系統上,resourcesetname 直欄會定義與系統上「非一致記憶體存取 (NUMA)」節點相對應的號碼。除了具有 NUMA 原則支援的 2.6 核心程式之外,numactl 系統公用程式也必須可用。如需 Linux 作業系統上 NUMA 支援的相關資訊,請參閱 numact1 的線上指令說明。
此範例顯示如何設定具有四個節點的 NUMA 電腦,其中每個邏輯節點都與一個 NUMA 節點相關聯。
$ numactl --hardware其輸出結果會與下列顯示畫面類似:
可用:4 個節點 (0-3) 節點 0 大小:1901 MB 節點 0 可用大小:1457 MB 節點 1 大小:1910 MB 節點 1 可用大小:1841 MB 節點 2 大小:1910 MB 節點 2 可用大小:1851 MB 節點 3 大小:1905 MB 節點 3 可用大小:1796 MB
0 hostname 0 hostname 0 1 hostname 1 hostname 1 2 hostname 2 hostname 2 3 hostname 3 hostname 3
以下是如何設定 Solaris 第 9 版專案的範例。
在這個範例中,有個具有 8 個處理器的實體節點:有一個 CPU 將用於預設專案、「應用程式伺服器」將使用三個 CPU,另外四個 CPU 則提供給 DB2。實例名稱為 db2inst1。
create system hostname create pset pset_default (uint pset.min = 1) create pset db0_pset (uint pset.min = 1; uint pset.max = 1) create pset db1_pset (uint pset.min = 1; uint pset.max = 1) create pset db2_pset (uint pset.min = 1; uint pset.max = 1) create pset db3_pset (uint pset.min = 1; uint pset.max = 1) create pset appsrv_pset (uint pset.min = 3; uint pset.max = 3) create pool pool_default (string pool.scheduler="TS"; boolean pool.default = true) create pool db0_pool (string pool.scheduler="TS") create pool db1_pool (string pool.scheduler="TS") create pool db2_pool (string pool.scheduler="TS") create pool db3_pool (string pool.scheduler="TS") create pool appsrv_pool (string pool.scheduler="TS") associate pool pool_default (pset pset_default) associate pool db0_pool (pset db0_pset) associate pool db1_pool (pset db1_pset) associate pool db2_pool (pset db2_pset) associate pool db3_pool (pset db3_pset) associate pool appsrv_pool (pset appsrv_pset)
system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: appsrv:4000:App Serv project:root::project.pool=appsrv_pool db2proj0:5000:DB2 Node 0 project:db2inst1,root::project.pool=db0_pool db2proj1:5001:DB2 Node 1 project:db2inst1,root::project.pool=db1_pool db2proj2:5002:DB2 Node 2 project:db2inst1,root::project.pool=db2_pool db2proj3:5003:DB2 Node 3 project:db2inst1,root::project.pool=db3_pool
0 hostname 0 hostname db2proj0 1 hostname 1 hostname db2proj1 2 hostname 2 hostname db2proj2 3 hostname 3 hostname db2proj3