本節說明有關 Application Server 8.1 中包含的 HADB 實作的其他重要資訊。
已實作新的管理指令 hadbm setadminpassword,以允許變更用於資料管理的密碼。此指令包含可指示要使用哪個管理代理程式以及舊密碼和新密碼的選項。如需更多資訊,請參閱 hadbm setadminpassword 線上手冊。
現有的管理指令 hadbm listpackages 已被修改。之前,此指令沒有運算元,並會列出相關管理網域中的所有套裝軟體。修改後,此指令採用選擇性套裝軟體名稱運算元,並只列出具有該名稱的套裝軟體。如果未提供運算元,則會列出所有套裝軟體。如需更多資訊,請參閱 hadbm listpackages 線上手冊。
現有的管理指令 hadbm createdomain 已被修改。hostlist 運算元經過延伸還可指定管理代理程式的連接埠號碼。這樣,僅使用 hostlist 運算元即可完全指定網域。對於向下相容性,仍然支援舊運作方式。如需更多資訊,請參閱 hadbm createdomain 線上手冊。
管理系統的某些錯誤訊息已被修改。此修改意在改善錯誤訊息的可懂性、一致性和準確性。而實際修改未在此版本說明中列出。
安裝和解除安裝運作方式略有變更。安裝或解除安裝 HADB 應始終保留符號連結 /opt/SUNWhadb/4,但並非始終如此。
已經停用在指令行上輸入密碼作為指令選項的可能性。這適用於所有將密碼作為指令行選項的 hadbm 指令。對於 hadbm 指令,之前可以下列方式輸入密碼︰
密碼檔案
指令行選項
互動式輸入
方法 2 (指令行選項) 被認為是不安全的,因此已被停用。如果以此方式輸入密碼,則會發出警告訊息。請改為使用方法 1 (密碼檔案) 或方法 3 (互動式輸入)。在下一發行版本中,在指令行使用密碼將被淘汰。請注意,這適用於所有具有指令行密碼選項的 hadbm 指令。
HADB 已升級,以使用 JGroups Version 2.2,並且其原始碼與 HADB 一起發行。為支援從舊的 HADB 版本進行線上升級,JGroups 2.1 和 2.2 均與 HADB 一起發行。對於 JGroups 2.1,僅發行位元碼。
如果您要將 HADB 配置為使用以下某一檔案系統,則請注意以下重要事項︰
ext2 與 ext3 — 對於 Red Hat Application Server 3.0,HADB 支援 ext2 和 ext3 檔案系統。對於 Red Hat Application Server 2.1,HADB 僅支援 ext2 檔案系統。
Veritas – 在 Solaris 平台上使用 Veritas 檔案系統時,訊息 WRN:Direct disk I/O mapping failed 會寫入歷史檔案。此訊息表示 HADB 無法開啟資料和記錄裝置的直接 I/O。直接 I/O 是一種效能增強功能,可以降低 CPU 寫入磁碟頁面的消耗。它也會減少管理作業系統中的壞資料頁面的耗用時間。
若要同時使用直接 I/O 與 Veritas 檔案系統,請使用以下方法中的一種︰
在透過選項 mincache=direct 掛載的檔案系統上建立資料和記錄裝置。此選項會套用至檔案系統上建立的所有檔案。請參閱 mount_vxfs(1M) 指令,以取得詳細資訊。
使用 Veritas Quick I/O 工具對檔案系統檔案執行原始 I/O。請參閱「VERITAS File System 4.0 Administrator's Guide for Solaris 」,以取得詳細資訊。
請注意,這些配置尚未經過 Application Server 8.1 2005Q2 Update 2 測試。
請參閱「Application Server Enterprise Edition High Availability Administration Guide」, 以取得有關使用 Application Server 軟體安裝和配置 HADB 的資訊。
使用者應保留 HADB 歷史檔案、管理代理程式配置檔案、記錄檔和儲存庫,以及所有安裝路徑之外的資料裝置。否則,應在升級之前執行此作業。若要移動管理儲存庫和配置檔案︰
請停止所有舊管理代理程式並保持 HADB 節點處於執行狀態。
在每個節點上,將儲存庫目錄移動至新位置。
在每個節點上,將 dbconfig 目錄複製到新位置。
在每個主機上,更新 mgt.cfg 檔案,並設定正確的 dbconfig 路徑和儲存庫目錄。
使用已更新的 mgt.cfg 檔案啟動管理代理程式。
若要從 HADB 版本 4.4.x 升級至版本 4.4.2-7,請執行以下步驟︰
如有必要,執行上述升級前作業。
在所有 HADB 主機上安裝 HADB 4.4.2-7 版 (位於與 4.4.x 版不同的其他路徑上,例如位於 /opt/SUNWhadb/4.4.2-7 上)。
在 hadbm 用戶端主機上安裝 HADB 4.4.2-7 版 (如果這些主機上的路徑與 HADB 主機上的路徑不同)。
停止在 HADB 主機上執行的所有管理代理程式。
使用新版本的軟體和舊配置檔案啟動管理代理程式程序。在剩餘的步驟中,請使用新版本的 bin 目錄中的 hadbm 指令。
在管理網域中註冊套裝軟體 (預設套裝軟體名稱變為 V4.4,因此其他套裝軟體的名稱可能需要避免與現有的具有相同名稱之套裝軟體發生衝突):
hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-7 V4.4.2-7 |
執行 hadbm listpackages 指令並檢查是否已在網域中註冊新的套裝軟體。
重新啟動包含新 hadbm 4.4.2-7 版的資料庫。如有必要移動裝置和歷史檔案,請在同一單一作業中執行線上升級與設定裝置和歷史檔案的新路徑。
hadbm set packagename=V4.4.2-7,devicepath=new_devpath, historypath=new_histpath |
否則,如果裝置和歷史檔案已經存在於安裝目錄之外,請執行以下指令,這個指令僅會輪替地重新啟動節點︰
hadbm set packagename=V4.4.2-7 database name |
檢查資料庫是否處於「正在執行」的狀態 (使用 hadbm status 指令),以及是否運作正常並可為用戶端作業事件提供服務。
如果一切正常,則稍後可移除舊的安裝。在取消註冊舊的套裝軟體之前,請先從 ma 儲存庫移除所有對舊的套裝軟體之參照。否則,hadbm unregisterpackage 將會失敗並顯示「套裝軟體正在使用中」。虛擬重新配置作業 (例如 hadbm set connectiontrace=same as previous value) 將會移除所有對舊套裝軟體的參照。現在,取消註冊舊套裝軟體︰
hadbm unregisterpackage [--hosts=host-list] old pacakge name |
從系統中移除舊的安裝。
在 Solaris 上,若要測試升級是否成功,請檢查是否正確執行升級︰
確保正在執行的程序使用新的二進位檔。在所有 HADB 節點中,檢查以下各項︰
new path/bin/ma -v new path/bin/hadbm -v |
檢查資料庫是否正在執行。以下指令應該顯示所有 HADB 節點處於「正在執行」狀態。
new path/bin/hadbm status -n |
確保使用 HADB 的產品已將其指標變更為指向新的 HADB 路徑。
使用 HADB 的產品可以執行自己的升級測試以驗證 HADB 升級也可以工作。
線上升級之後,如果新的版本無法正常工作,請重新使用舊的 HADB 版本。但是,如果變更管理代理程式儲存庫,則 HADB 本身可能被降級,但新的管理代理程式必須保持執行狀態。
本節列出有關 HADB 部署和升級的其他資訊。
僅在本機磁碟上儲存裝置、記錄和歷史檔案,請勿使用遠端掛載的檔案系統。
如果一個主機上具有多個節點,則建議您保持裝置屬於不同磁碟上的每個節點。否則,磁碟競爭狀態會降低效能。此問題可從歷史檔案中顯示的訊息 (如 BEWARE - last flush/fputs took too long) 得知。當單一節點具有多個資料裝置檔案時,建議您對這些裝置檔案使用獨立的磁碟。
使用本機磁碟 (最好對資料檔案使用獨立的磁碟,而非一個磁碟) 以在 HADB 主機上安裝 HADB 二進位檔。NFS 延遲或磁碟競爭狀態可能導致節點重新啟動,並在歷史檔案中顯示警告「Process blocked for nnn, max block time is nnn」。
請勿將 HADB 裝置、歷史檔案、管理代理程式目錄和代理程式配置檔案置於 HADB 套裝軟體路徑。這會導致在升級至更新版本並刪除舊套裝軟體路徑時出現問題。
此 HADB 版本正式支援最多 28 個節點;24 個使用中資料節點,4 個備用節點。
建議您使用相同版本的 JDBC 驅動程式和 HADB 伺服器。
不支援 IPv6,僅支援 IPv4。
在 Windows 上的指令行長度限制在 2048 位元組之內。
必須為 UDP 多重播送配置網路。
由於在 RedHat Enterprise Linux 3.0 update 1 至 3 中曾出現過度交換,因此不建議將其作為部署平台。此問題已在 RedHat Enterprise Linux 3.0 update 4 中修正。
執行具有即時優先權之 NSUP 的可能性。
節點監督員 (NSUP) 程序 (clu_nsup_srv ) 在及時交換「活動訊號」訊息的協助下,可確保 HADB 的高可用性。當 NSUP 與其他導致資源匱乏的程序佈建在相同位置時,計時會受到影響。結果是虛假的網路分割和節點重新啟動 (會先在歷史檔案中顯示警告「Process blocked for n seconds」) 造成作業事件中斷和其他異常。
若要解決此問題,clu_nsup_srv (位於 installpath/lib/server) 必須包含 suid 位元集,且檔案必須由 root 所有。這可透過以下指令手動歸檔︰
# chown root clu_nsup_srv # chmod u+s clu_nsup_srv |
如此會導致在啟動時將 clu_nsup_srv 程序作為使用者 root 執行,並且依次允許程序在啟動後自動授予自己即時優先權。為了避免因使用 setuid 而造成任何安全性影響,會在每次開始時設定即時優先權,而且優先權一旦變更,程序即恢復有效的 uid。其他 HADB 程序會將其優先權降低為分時共用優先權。
若 NSUP 無法設定即時優先權,則會發出警告「Could not set realtime priority」(unix: errno will be set to EPERM),其會寫入 ma.log 檔案,並在沒有即時優先權的情況下繼續。
在某些情況下不可能設定即時優先權,例如︰
安裝在 Solaris 10 非全域區域中時
在 Solaris 10 中呼叫 PRIV_PROC_LOCK_MEMORY (允許程序在實體記憶體中鎖定頁面) 和/或 PRIV_PROC_PRIOCNTL 優先權時
使用者關閉 setuid 權限
使用者將軟體安裝為 tar 檔案 (App.server 的非根安裝選項)
clu_nsup_srv 程序不會大量消耗 CPU,其佔用空間很小且使用即時優先權來執行它不會影響效能。
對於 Solaris,為 HADB 配置 IP 網路多重路徑 (僅在 Solaris 9 經過測試)。
Sun 建議將執行 HADB 的 Solaris 主機進行網路多重路徑設定,以確保最高的可能網路可用性。在「IP Network Multipathing Administration Guide」中,詳細介紹了網路多重路徑設定。如果您決定配合使用多重路徑和 HADB,請參閱「IP Network Multipathing Administration Guide」中的「Administering Network Multipathing」小節 ,以便在您根據以下說明調整多重路徑設定以配合使用 HADB 之前,設定多重路徑。「IP Network Multipathing Administration Guide」是「Solaris 9 System Administrator Collection」中的一部份,並可以從 http://docs.sun.com 下載。
設定網路介面故障偵測時間
為了讓 HADB 能夠正確支援多重路徑容錯移轉,網路介面故障偵測時間不得超過 1000 毫秒,如 /etc/default/mpathd 中之 FAILURE_DETECTION_TIME 參數所指定。若原始值高於此值,請編輯檔案並將此參數的值變更為 1000︰
FAILURE_DETECTION_TIME=1000 |
為了使變更生效,發出以下指令︰
pkill -HUP in.mpathd |
與 HADB 配合使用的 IP 位址
如在「Solaris IP Network Multipathing Administration Guide」中所說明的,多重路徑涉及將實體網路介面分組為多重路徑介面群組。在此群組中的每個實體介面均具有兩個相關的 IP 位址︰實體介面位址和測試位址。只有實體介面位址可以用於傳輸資料,而測試位址僅供 Solaris 內部使用。如果執行 hadbm create --hosts,每個主機均應該僅使用多重路徑群組中的一個實體介面位址來指定。
範例
假設主機 1 和主機 2 分別具有兩個實體網路介面。在每個主機上,這兩個介面均設定為多重路徑群組,且執行 ifconfig -a 會產生以下結果︰
主機 1
bge0: flags=1000843<mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 6 inet 129.159.115.13 netmask ff000000 broadcast 129.159.115.255 |
主機 2
bge0: flags=1000843<mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge0:1: flags=9040843<mtu 1500 index 3 inet 129.159.115.21 netmask ff000000 broadcast 129.159.115.255 bge1: flags=1000843<mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00 broadcast 129.159.115.255 groupname mp0 bge1:1: flags=9040843<mtu 1500 index 4 inet 129.159.115.23 netmask ff000000 broadcast 129.159.115.255 |
其中,這兩個主機上的實體網路介面即會列為 bge0 和 bge1 介面。如「IP Network Multipathing Administration Guide」中所述,列為 bge0:1 與 bge1:1 的介面是多重路徑測試介面 (因而在 ifconfig 輸出中標為 DEPRECATED)。
若要在此環境中設定 HADB,請從每個主機中選取一個實體介面。在此範例中,從主機 1 中選擇 129.159.115.10,從主機 2 中選擇 129.159.115.20。每個主機若要使用一個資料庫節點建立資料庫,請將以下引數用於 hadbm create︰
--host 129.159.115.10,129.159.115.20 |
每個主機若要使用兩個資料庫節點建立資料庫,請使用以下引數︰
--host 129.159.115.10,129.159.115.20,129.159.115.10,129.159.115.20 |
在這兩種情況下,在每個主機上均應將 ma.server.mainternal.interfaces 變數設定為 129.159.115.0/24。
不可能從 4.2 或 4.3 線上升級至 4.4。但是,4.4 支援線上升級至將來的版本。若要從 4.4.1 升級至 4.4.2,請執行以下步驟︰
在所有 HADB 主機上安裝 4.4.2 (在與 4.4.1 路徑不同的路徑上—例如 /opt/SUNWhadb/4.4.2-6)。
在 hadbm client 主機上安裝新版本。
在 HADB 主機上,停止正在執行的所有管理代理程式。
使用新版本的軟體和舊配置檔案啟動管理代理程式程序。在其餘的步驟中,請使用新版本 bin 目錄中的 hadbm 指令。
在管理網域中註冊套裝軟體 (此處預設套裝軟體名稱變為 V4.4,所以可能會要求其他套裝軟體名稱,以避免與具有相同名稱的現有套裝軟體發生衝突):
hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-6 V4.4.2 |
重新啟動新版本的資料庫 (以下指令會輪替地重新啟動節點):
hadbm set packagename=V4.4.2 database_name |
檢查資料庫狀態是否為「正在執行」(使用 hadbm status 指令),以及是否正常工作並為用戶端作業事件提供服務。
若均能正常運作,則稍後即可移除舊的安裝。
在取消註冊舊的套裝軟體之前,請先從 ma 儲存庫移除所有對舊的套裝軟體的參照。否則,hadbm unregisterpackage 將會失敗,並顯示「套裝軟體正在使用中」。虛擬重新配置作業 (例如 hadbm set connectiontrace=<same_as_previous_value>) 將會移除所有對舊套裝軟體的參照。現在,取消註冊舊套裝軟體︰
hadbm unregisterpackage [--hosts=<host_list>] <old_package_name> |
依照 HADB 安裝說明中的說明,從檔案系統中移除舊的安裝。
無法在表中建立 UNIQUE 輔助索引。
在集合表示式中不允許使用 (DISTINCT column) 表示式,除非此表示式為唯一選取的表示式。
所有的表在建立時均必須包含主鍵規格 (亦即不支援不包含主鍵的表)。
不支援 FULL OUTER JOIN。
不支援屬於表子查詢的 IN 子查詢,例如:
SELECT SNAME FROM S WHERE (S1#,S2#) IN (SELECT S1#,S2# FROM SP WHERE P#='P2') |
不支援 NOT NULL 和 PRIMARY KEY 之外的限制。
可為資源指定新的所有者。但是,執行此作業時,不會將授予目前所有者的權限授予新的所有者。
不支援兩個或兩個以上巢式 NOT EXISTS 子查詢,其中每個子查詢均未 (直接) 與查詢外層級相關聯。
不支援欄權限。
僅允許在 VALUES 陳述式中使用列值建構子。
在列值建構子中不接受子查詢作為值表示式。
建立主鍵時不能使用以下資料類型:
REAL
FLOAT
DOUBLE PRECISION
DECIMAL
NUMERIC
Application Server 包括 HTTP、IIOP 和 JMS 用戶端的負載平衡功能、HTTP 階段作業容錯移轉支援、EJB 叢集功能和容錯移轉支援、高度可用的 EJB 計時器、分散式作業事件恢復功能、支援應用程式持續升級的功能和用於儲存 J2EE 應用程式之暫態狀態的高可用性資料庫。
可用性允許容錯移轉保護叢集中的 Application Server 實例。如果某個 Application Server 實例發生故障,則其他 Application Server 實例將承擔指定給該故障伺服器的階段作業。階段作業資訊儲存在 HADB 中。HADB 支援 HTTP 階段作業、有狀態階段作業 Bean 的持續性和單次登入憑證。