Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

第 3 章 管理高可用性資料庫

本章說明 Sun Java System Application Server Enterprise Edition 環境中的高可用性資料庫 (HADB),並說明如何配置和管理 HADB。建立和管理 HADB 之前,必須首先確定系統拓樸,然後在不同的機器上安裝 HADB 軟體。

本章說明以下主題:

使用 HADB 管理代理程式

管理代理程式 ma 在 HADB 主機上執行管理指令。管理代理程式還可在 HADB 節點管理程序失敗時將其重新啟動,從而確保 HADB 節點管理程序的可用性。

管理代理程式指令語法

管理代理程式 ma 指令的語法是:

ma [common-options] 
[ service-options] 
config-file

其中:

表 3–1 管理代理程式共用選項

選項 

說明 

預設 

--define name=value-D

指定特性名稱,其中,特性為配置檔案中定義的特性之一。此選項可重複多次。

無 

--help-? 

顯示說明資訊。 

False 

--javahome path-j

使用位於 path 的 Java Runtime Environment (1.4 或更高版本)。

無 

--systemroot path-y

作業系統根的路徑,通常在 %SystemRoot% 中設定。 

無 

--version-V 

顯示版本資訊。 

False 

管理代理程式指令語法說明將管理代理程式做為 Windows 服務啟動的選項。-i、-r 和 -s 選項互斥,亦即一次只能使用其中一個。

在 Windows 中,在配置檔案或指令行指定特性值路徑時,使用雙引號 (") 替換包含空格的檔案路徑。使用雙引號和反斜線替換冒號 (:) 磁碟分隔符號和反斜線 (\) 目錄分隔符號,如下所示:"\:"\\

表 3–2 管理代理程式服務選項 (僅適用於 Windows)

選項 

說明 

預設 

--install-i 

將代理程式安裝做為 Windows 服務,並啟動該服務。僅使用 -i、-r 和 -s 選項其中之一。 

False 

--name servicename-n

在主機上執行多個代理程式時,使用指定的服務名稱。 

HADBMgmt Agent 

--remove-r 

停止服務並從 Windows 服務管理員刪除代理程式。僅使用 -i、-r 和 -s 選項其中之一。 

False 

--service-s 

將代理程式做為 Windows 服務執行。僅使用 -i、-r 和 -s 選項其中之一。 

False 

自訂管理代理程式配置

HADB 包括可用於自訂管理代理程式設定的配置檔案。啟動管理代理程式而未指定配置檔案時,代理程式將使用預設值。如果指定了配置檔案,管理代理程式將使用該檔案中的設定。可以在網域中的所有主機上重複使用該配置檔案。

Procedure在每台 HADB 主機上自訂管理代理程式配置

  1. 編輯管理代理程式配置檔案,並依需求設定值。

  2. 啟動管理代理程式,並將自訂的配置檔案指定為引數。

配置檔案

使用 Java Enterprise System,檔案中的所有項目均已加入註釋。使用預設配置無需進行變更。若要自訂管理代理程式配置,請從檔案中移除註釋,按需變更值,然後啟動管理代理程式,並將配置檔案做為引數指定。

管理代理程式配置檔案安裝於:

如果使用獨立安裝程式,則管理代理程式配置檔案安裝於:

下表說明配置檔案中的設定。

表 3–3 配置檔案設定

設定名稱 

說明 

預設 

console.loglevel

主控台記錄層級。有效值為 SEVERE、ERROR、WARNING、INFO、FINE、FINER 及 FINEST 

警告 

logfile.loglevel

記錄檔記錄層級。有效值為 SEVERE、ERROR、WARNING、INFO、FINE、FINER 及 FINEST 

資訊 

logfile.name

記錄檔名稱和位置。必須為具有讀取/寫入存取權限的有效路徑。 

Solaris 和 Linux:/var/opt/SUNWhadb/ma/ma.log

Windows:HADB_install_dir\ma.log

ma.server.type

用戶端協定。僅支援 JMXMP。 

jmxmp 

ma.server.
jmxmp.port

用於內部 (UDP) 和外部 (TCP) 通訊的連接埠號。必須為正整數。建議範圍為 1024-49151。 

1862 

ma.server.
mainternal.interfaces

用於多介面機器進行內部通訊的介面。必須為有效的 IPv4 位址遮罩。網域中的所有管理代理程式必須使用同一子網路 

例如,如果主機具有兩個介面 10.10.116.61 和 10.10.124.61,則使用 10.10.116.0/24 來使用第一個介面。斜線後的數字表示子網路遮罩中的位元數。 

無 

ma.server.
dbdevicepath

儲存 HADB 裝置資訊的路徑。 

Solaris 和 Linux:/var/opt/SUNWhadb/4

Windows:HADB_install_dir \device

ma.server.
dbhistorypath

儲存 HADB 歷史檔案的路徑。 

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代。) 

ma.server.
dbconfigpath

儲存節點配置資料的路徑。 

Solaris 和 Linux:/var/opt/SUNWhadb/dbdef

Windows:C:\Sun\SUNWhadb\dbdef

repository.dr.path

網域儲存庫檔案的路徑。 

Solaris 和 Linux:/var/opt/SUNWhadb/repository

Windows:C:\Sun\SUNWhadb\repository

啟動管理代理程式

可以使用以下兩種方法啟動管理代理程式:

將管理代理程式做為服務啟動

將管理代理程式做為服務啟動,可確保其繼續執行,除非系統關閉或您明確停止它。

在安裝了 Java Enterprise System 的 Solaris 或 Linux 上將管理代理程式做為服務啟動

若要將管理代理程式做為服務啟動,請使用以下指令:

/etc/init.d/ma-initd start

若要停止服務,請使用以下指令:

/etc/init.d/ma-initd stop

在安裝了 Java Enterprise System 的 Windows 上將管理代理程式做為服務啟動

若要將管理代理程式做為 Windows 服務啟動,請使用以下指令: HADB_install_dir\bin\ma -i [config-file ]

選擇性引數 config-file 用於指定管理代理程式配置檔案。僅在要變更預設管理代理程式配置時使用配置檔案。

若要停止管理代理程式並做為服務移除 (取消註冊),請使用以下指令:HADB_install_dir\bin\ma -r [ config-file ]

若要執行管理,請選擇 [管理工具] | [服務] 來執行啟動和停止服務、停用自動啟動等作業。

在安裝了獨立的應用程式伺服器的 Solaris 或 Linux 上將管理代理程式做為服務啟動

若要將管理代理程式做為服務啟動,請使用以下指令:

HADB_install_dir/bin/ma-initd start

若要停止服務,請使用以下指令:

HADB_install_dir/bin/ma-initd stop

在安裝了獨立的應用程式伺服器的 Windows 上將管理代理程式做為服務啟動

若要將管理代理程式做為 Windows 服務啟動,請使用以下指令: HADB_install_dir\bin\ma -i [config-file ]

選擇性引數 config-file 用於指定管理代理程式配置檔案。僅在要變更預設管理代理程式配置時使用配置檔案。

若要停止管理代理程式並做為服務移除 (取消註冊),請使用以下指令:HADB_install_dir\bin\ma -r [ config-file ]

若要執行管理,請選擇 [管理工具] | [服務] 來執行啟動和停止服務、停用自動啟動等作業。

確保自動重新啟動管理代理程式

在 Windows 平台上,將管理代理程式做為服務啟動後,請即使用 Windows 管理工具將服務啟動類型設定為「自動」,並設定所需的回復選項。

在 Solaris 和 Linux 平台上,使用本小節中的程序來確保管理代理程式在 ma 程序失敗或作業系統重新開機時的可用性。對於生產部署,同樣適宜執行此作業。

以下程序可確保管理代理程式僅在系統進入以下執行層級時啟動:

進入其他執行層級會停止管理代理程式。

Procedure在安裝了 Java Enterprise System 的 Solaris 或 Linux 上配置自動重新啟動

開始之前

本小節假設您對作業系統初始化和執行層級已有基本的瞭解。如需有關這些主題的資訊,請參閱作業系統文件。

  1. 確定您的系統預設執行層級為 3 或 5。

    若要檢查系統的預設執行層級,請檢視 /etc/inittab 檔案,並在頂部查找類似於以下行的行:

    id:5:initdefault:

    本範例中為預設執行層級 5。

  2. 建立至檔案 /etc/init.d/ma-initd 的以下符號連結:


    /etc/rc0.d/K20ma-initd
    /etc/rc1.d/K20ma-initd
    /etc/rc2.d/K20ma-initd
    /etc/rc3.d/S99ma-initd
    /etc/rc5.d/S99ma-initd
    /etc/rcS.d/K20ma-initd
  3. 重新開機。

接下來的步驟

若要關閉自動啟動和停止代理程式,請移除這些連結或將連結名稱中的字母 K 和 S 變更為小寫。

Procedure在安裝了獨立應用程式伺服器的 Solaris 或 Linux 上配置自動重新啟動

  1. 在 shell 中,將目前目錄變更至 HADB_install_dir/bin

  2. 編輯 shell 程序檔 ma-initd

    請確定程序檔中 HADB_ROOT 和 HADB_MA_CFG 的預設值表現您的安裝:

    • HADB_ROOT 為 HADB 安裝目錄 HADB_install_dir

    • HADB_MA_CFG 為管理代理程式配置檔案的位置。如需更多資訊,請參閱自訂管理代理程式配置

  3. ma-initd 複製至目錄 /etc/init.d

  4. 建立至 /etc/init.d/ma-initd 檔案的以下符號連結:


    /etc/rc0.d/K20ma-initd
    /etc/rc1.d/K20ma-initd
    /etc/rc2.d/K20ma-initd
    /etc/rc3.d/S99ma-initd
    /etc/rc5.d/S99ma-initd
    /etc/rcS.d/K20ma-initd
接下來的步驟

若要關閉自動啟動和停止代理程式,請移除這些連結或將連結名稱中的字母 K 和 S 變更為小寫。

在主控台模式下啟動管理代理程式

您可能希望在主控台模式下手動啟動管理代理程式,以便進行試用或測試。請勿在生產環境中以此方式啟動管理代理程式,因為 ma 程序在系統或程序失敗後不會重新啟動,並在指令視窗關閉時終止。

在安裝了 Java Enterprise System 的 Solaris 或 Linux 上的主控台模式下啟動管理代理程式

若要在主控台模式下啟動 HADB 管理代理程式,請使用以下指令:

opt/SUNWhadb/bin/ma [config-file]

預設管理代理程式配置檔案為 /etc/opt/SUNWhadb/mgt.cfg

若要停止管理代理程式,請結束程序或關閉 shell 視窗。

在安裝了 Java Enterprise System 的 Windows 上的主控台模式下啟動管理代理程式

若要在主控台模式下啟動管理代理程式,請使用以下指令:

HADB_install_dir\bin\ma [config-file]

選擇性引數 config-file 為管理代理程式配置檔案的名稱。如需有關配置檔案的更多資訊,請參閱自訂管理代理程式配置

若要停止代理程式,請結束此程序。

在安裝了獨立應用程式伺服器的 Windows 上的主控台模式下啟動管理代理程式

若要在主控台模式下啟動管理代理程式,請使用以下指令:

HADB_install_dir\bin\ma [config-file]

選擇性引數 config-file 為管理代理程式配置檔案的名稱。如需更多資訊,請參閱自訂管理代理程式配置

若要停止管理代理程式,請結束此程序。

在安裝了獨立應用程式伺服器的 Solaris 或 Linux 上的主控台模式下啟動管理代理程式

若要在主控台模式下啟動 HADB 管理代理程式,請使用以下指令:

HADB_install_dir/bin/ma [config-file]

預設管理代理程式配置檔案為 HADB_install_dir/bin/ma.cfg

若要停止管理代理程式,請結束程序或關閉 shell 視窗。

使用 hadbm 管理指令

使用 hadbm 指令行公用程式可管理 HADB 網域、其資料庫實例和節點。hadbm 公用程式 (也稱為管理用戶端) 將管理請求傳送至做為管理伺服器的指定管理代理程式,其具有存取儲存庫中的資料庫配置的權限。

本小節說明 hadbm 指令行公用程式,包括以下主題:

指令語法

hadbm 公用程式位於 HADB_install_dir/bin 目錄中。hadbm 指令的一般語法為:

hadbm subcommand  
[-short-option [option-value]] 
[--long-option [option-value]] 
[operands]

子指令識別要執行的作業。子指令是區分大小寫的。大多數指令具有一個運算元 (通常為 dbname),但有些沒有,有些具有兩個。

這些選項修改 hadbm 如何執行子指令。選項須大小寫相符。每個選項均具有長形式和短形式。短形式之前為一個破折號 (-),長形式之前為兩個破折號 (--)。除必須存在以打開某項功能的布林選項之外,大多數選項均需要引數值。選項不是成功執行指令所必需的。

如果子指令需要資料庫名稱,但未指定,hadbm 將使用預設資料庫 hadb


範例 3–1 hadbm 指令範例

以下說明 status 子指令:

hadbm status --nodes

安全性選項

出於安全原因,所有 hadbm 指令均需要管理員密碼。使用 --adminpassword 選項可在建立資料庫或網域時設定密碼。然後,在該資料庫或網域上執行作業時必須指定該密碼。

出於進階安全性考量,可使用 --adminpasswordfile 選項指定包含密碼的檔案,而不是在指令行輸入密碼。使用以下行在密碼檔案中定義密碼:

HADBM_ADMINPASSWORD=password

使用密碼替代 password。該檔案中的任何其他內容均被忽略。

如果同時指定了 --adminpassword--adminpasswordfile 選項,--adminpassword 具有優先順序。如果需要密碼,但未在指令中指定,hadbm 會提示您需要密碼。


備註 –

僅可以在建立資料庫或網域時設定管理員密碼,而且以後無法變更。


除管理員密碼外,HADB 還需要資料庫密碼以執行修改資料庫模式的作業。使用以下指令時必須同時使用這兩個密碼:hadbm createhadbm addnodeshadbm refragment

可使用 --dbpassword 選項在指令行指定資料庫密碼。與管理員密碼類似,您還可以將密碼輸入檔案,並使用 --dbpasswordfile 選項指定檔案位置。使用以下行在密碼檔案中設定密碼:

HADBM_DBPASSWORD=password

為了測試或試用,可以使用 --no-adminauthentication 選項在建立資料庫或網域時關閉密碼認證。如需更多資訊,請參閱建立資料庫建立管理網域

下表概括了 hadbm 安全性指令行選項。

表 3–4 hadbm 安全性選項

選項 (短形式) 

說明 

--adminpassword=password

-w 

指定資料庫或網域的管理員密碼。如果在建立資料庫或網域時使用此選項,必須在每次使用 hadbm 在資料庫或網域上作業時提供此密碼。 

使用此選項或 --adminpasswordfile,但不同時使用。 

--adminpasswordfile=filepath

-W 

指定包含資料庫或網域管理員密碼的檔案。如果在建立資料庫或網域時使用此選項,必須在每次使用 hadbm 在資料庫或網域上作業時提供此密碼。 

使用此選項或 --adminpassword,但不同時使用。 

--no-adminauthentication 

-U 

建立資料庫或網域時使用此選項指定無需管理員密碼。出於安全性原因,請勿在生產部署中使用此選項。 

--dbpassword= password

-p 

指定資料庫密碼。如果在建立資料庫時使用此選項,則每次使用 hadbm 指令在資料庫上作業時均必須提供該密碼。建立 HADB 系統使用者密碼。至少 8 個字元。使用此選項或 --dbpasswordfile,但不同時使用。

--dbpasswordfile= filepath

-P 

指定包含 HADB 系統使用者密碼的檔案。使用此選項或 --dbpassword,但不同時使用。

一般選項

一般指令選項可與任何 hadbm 子指令配合使用。所有選項均為布林選項 (預設值為 false)。下表說明 hadbm 一般指令選項。

表 3–5 hadbm 一般選項

選項 (短形式) 

說明 

--quiet 

-q 

不出現訊息執行子指令,無任何說明訊息。 

--help 

-? 

顯示此指令的簡要說明和所有受支援的子指令。無需子指令。 

--version 

-V 

顯示 hadbm 指令的版本詳細資訊。無需子指令。

--yes 

-y 

在非互動模式下執行子指令。 

--force 

-f 

非互動執行指令,且在符合指令的發佈條件時不丟出錯誤。 

--echo 

-e 

顯示子指令、所有選項及其使用者定義的值或預設值,然後執行該子指令。 

--agent=URL

-m 

管理代理程式的 URL。URL 為:hostlist:port,其中 hostlist 為逗號分隔的主機名稱或 IP 位址清單,port 為管理代理程式在其上作業的連接埠號。

預設為 localhost:1862。 

備註:此選項對於 hadbm addnodes 無效。

環境變數

為方便起見,可以設定環境變數而非指定指令選項。下表說明對應 hadbm 指令選項的環境變數。

表 3–6 HADB 選項與環境變數

長形式 

短形式 

預設 

環境變數 

--adminpassword 

-w 

無 

$HADBM_ADMINPASSWORD 

--agent 

--m 

localhost:1862 

$HADBM_AGENT 

--datadevices 

-a 

1

$HADBM_DATADEVICES 

dbname 

無 

hadb

$HADBM_DB 

--dbpassword 

-p 

無 

$HADBM_DBPASSWORD 

--dbpasswordfile 

-P 

無 

$HADBM_DBPASSWORDFILE 

--devicepath 

-d 

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

$HADBM_DEVICEPATH 

--devicesize 

-z 

無 

$HADBM_DEVICESIZE 

--echo 

-e 

False 

$HADBM_ECHO 

--fast 

-F 

False 

$HADBM_FAST 

--force 

-f 

False 

$HADBM_FORCE 

--help 

-? 

False 

$HADBM_HELP 

--historypath 

-t 

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代)。 

$HADBM_HISTORYPATH 

--hosts 

-H 

無 

$HADBM_HOSTS 

--interactive 

-i 

True 

$HADBM_INTERACTIVE 

--no-refragment 

-r 

False 

$HADBM_NOREFRAGMENT 

--portbase 

-b 

15200 

$HADBM_PORTBASE 

--quiet 

-q 

False 

$HADBM_QUIET 

--repair 

-R 

True 

$HADBM_REPAIR 

--rolling 

-g 

True 

$HADBM_ROLLING 

--saveto 

-o 

無 

$HADBM_SAVETO 

--set 

-S 

無 

$HADBM_SET 

--spares 

-s 

$HADBM_SPARES 

--startlevel 

-l 

normal 

$HADBM_STARTLEVEL 

--version 

-V 

False 

$HADBM_VERSION 

--yes 

-y 

False 

$HADBM_YES 

配置 HADB

本小節說明以下基本 HADB 配置作業:

建立管理網域

hadbm createdomain 指令可建立包含指定 HADB 主機的管理網域。此指令可初始化主機和持續性配置存放區之間的內部通訊通道。

該指令語法為:

hadbm createdomain
 [--adminpassword=password |--adminpasswordfile=
file | --no-adminauthentication] [--agent=maurl]
 hostlist

hostlist 運算元是以逗號分隔的 HADB 主機清單,其中每一個均為有效的 IPv4 網路位址。希望位於新網域中的所有主機都包括在 hostlist 中。

請參閱一般選項,以取得指令選項說明。

使用此指令之前,請確定 HADB 管理代理程式可在 hostlist 中的每台主機上執行。此外,管理代理程式還必須:

hadbm 建立管理網域之後,會啟用網域中的所有主機。然後管理代理程式即可以用於管理資料庫了。建立 HADB 網域之後是建立 HADB 資料庫。如需有關建立 HADB 資料庫的更多資訊,請參閱建立資料庫


範例 3–2 建立 HADB 管理網域

以下範例在四個指定的主機上建立管理網域:

hadbm createdomain --adminpassword= password host1,host2,host3,host4

hadbm 成功執行指令後,會顯示以下訊息:

Domain host1,host2,host3, host4 created.

建立 HADB 網域後,將 HADB 套裝軟體的路徑和版本與管理代理程式一同註冊。


建立資料庫

使用 hadbm create 指令手動建立資料庫。

使用此指令建立資料庫之前,請首先建立管理網域並註冊 HADB 套裝軟體。如果在執行 hadbm create 時尚未執行這兩個步驟,則會隱式執行這兩個步驟。雖然這看似需要較少的工作,但任何指令中出現故障均會很難除錯。而且,hadbm create 是不可分割的,即如果其中一個隱式指令失敗,則已成功執行的指令將不會回復。因此,最好僅在建立網域並註冊 HADB 套裝軟體之後建立資料庫。

例如,如果 hadbm createdomainhadbm registerpackage 成功執行,但 hadbm create database 失敗,hadbm createdomainhadbm registerpackage 進行的變更將繼續。

Procedure建立資料庫

  1. 建立管理網域。

    如需更多資訊,請參閱建立管理網域

  2. 註冊 HADB 套裝軟體。

    如需更多資訊,請參閱註冊 HADB 套裝軟體

  3. 使用 hadbm create 指令建立資料庫。

    如需有關指令語法的資訊,請參閱以下小節。

hadbm create 指令語法

hadbm create [--package= name] [--packagepath= path] [--historypath= path] [--devicepath= path] [--datadevices= number ] [--portbase= number] [--spares=number ] [--set=attr-val-list ] [--agent=maurl] [--no-cleanup] [ --no-clear ] [ --devicesize =size] [--dbpassword=password | --dbpasswordfile=file ] --hosts=host list [-- adminpassword=password | -- adminpasswordfile=file | -- no-adminauthentication ] [dbname ]

dbname 運算元指定資料庫名稱,該名稱必須是唯一的。若要確保資料庫名稱的唯一性,請使用 hadbm list 指令列出現有資料庫名稱。請使用預設資料庫名稱,除非需要建立多個資料庫。例如,若要在同一組 HADB 機器上建立具有獨立資料庫的多個叢集,請為每個叢集使用獨立的資料庫名稱。

hadbm create 指令將錯誤訊息寫入主控台,而非記錄檔。

表 3–7 說明特殊的 hadbm create 指令選項。請參閱一般選項,以取得其他指令選項說明。

表 3–7 hadbm create 選項

選項 (短形式) 

說明 

預設 

--datadevices= number

-a 

每個節點上的資料裝置數 (1 到 8 [含])。資料裝置從 0 開始計數。 

--devicepath= path

-d 

裝置路徑。有四個裝置: 

  • DataDevice

  • NiLogDevice (節點內部記錄裝置)

  • RelalgDevice (相關代數查詢裝置)

  • NoManDevice (節點管理員裝置)。

    此路徑必須存在且可寫入。若要為每個節點或每個裝置設定不同的此路徑,請參閱設定異質多工式裝置路徑

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

預設由管理代理程式配置檔案中的 ma.server.dbdevicepath 指定。如需更多詳細資訊,請參閱配置檔案

--devicesize= size

-z 

每個節點的裝置大小。如需更多資訊,請參閱指定裝置大小

遵循增加現有節點的儲存空間中的說明增加裝置大小。

1024MB 

最大大小小於最大作業系統檔案大小或 256 GB。最小大小為: 

(4 x LogbufferSize + 16MB) / n

其中,n 為選項 --datadevices 指定的資料裝置數。

--historypath= path

-t 

歷史檔案的路徑。此路徑必須已經存在且可寫入。 

如需有關歷史檔案的更多資訊,請參閱清除和歸檔歷史檔案

預設由管理代理程式配置檔案中的 ma.server.dbhistorypath 指定。如需詳細資訊,請參閱配置檔案

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代。) 

--hosts= hostlist

-H 

以逗號分隔的資料庫中節點之主機名稱或 IP 位址 (僅 IPv4) 清單。使用 IP 位址可避免對 DNS 查詢的依賴性。主機名稱必須為絕對的。localhost127.0.0.1 不能用做主機名稱。

請參閱指定主機,以取得更多資訊。

無 

--package=name -k

HADB 套裝軟體名稱 (版本)。如果找不到套裝軟體,將註冊預設套裝軟體。 

已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 

無 

--packagepath=path-L

HADB 軟體套裝軟體的路徑。僅當套裝軟體未在網域中註冊時使用。 

已停用此選項。使用 hadbm registerpackage 指令在網域中註冊套裝軟體。 

無 

--portbase= number

-b 

用於節點 0 的連接埠基底號。在步驟 20 中自此數字開始為後繼節點指定連接埠基底號。每個節點使用其連接埠基底號及接下來連續的五個已編號連接埠。 

若要在同一機器上執行數個資料庫,請明確配置連接埠號。 

15200 

--spares= number

-s 

備援節點數。此數字必須等於或小於在 --hosts 選項中指定的節點數。

--set=attr-val-list

-S 

以逗號分隔的資料庫配置屬性 (格式為 name =value) 清單。如需資料庫配置屬性說明,請參閱清除和歸檔歷史檔案

無 


範例 3–3 建立資料庫範例

以下指令為建立資料庫的範例:

hadbm create --spares 2 --devicesize 1024 --dbpassword secret123
 --hosts n0,n1,n2,n3,n4,n5

指定主機

可使用 --hosts 選項指定以逗號分隔的資料庫節點之主機名稱或 IP 位址清單。hadbm create 指令可為清單中的每個主機名稱 (或 IP 位址) 建立一個節點。節點數必須相等。使用重複主機名稱在同一機器上建立具有不同連接埠號的多個節點。確定同一機器上的節點並非鏡像節點。

節點以此選項中列出的順序自零開始編號。第一個鏡像對為節點零 (0) 和一 (1),第二個為二 (2) 和三 (3),以此類推。奇數編號的節點在一個 DRU 中,偶數編號的節點在其他 DRU 中。使用 --spares 選項,備援節點為編號最大的節點。

如需有關配置雙網路介面的資訊,請參閱配置網路備援

指定裝置大小

使用 --devicesize 選項可指定裝置大小。建議的裝置大小:

(4x / nd + 4l/d) / 0.99

其中,

設定異質多工式裝置路徑

若要為每個節點或服務設定不同的裝置路徑,請使用 hadbm create-- set 選項。有四種類型的裝置:DataDeviceNiLogDevice (節點內部記錄裝置)、RelalgDevice (相關代數查詢裝置) 和 NoManDevice (節點管理員裝置)。每個 name =value 對的語法如下,其中,-devno 僅在 deviceDataDevice 時需要:

node-nodeno.device-devno.Devicepath

例如︰

--set Node-0.DataDevice-0.DevicePath=/disk0,
Node-1.DataDevice-0.DevicePath=/disk 1

還可以設定歷史檔案的異質多工式路徑,如下所示:

node-nodeno.historypath=path

如需有關歷史檔案的資訊,請參閱清除和歸檔歷史檔案

未設定的特定節點或裝置裝置路徑均預設為 --devicepath 值。


備註 –

使用 hadbm sethadbm addnodes 指令變更歷史檔案的裝置路徑和位置。


疑難排解

如果您在建立資料庫時遇到困難,請檢查以下內容:

檢視和修改配置屬性

可以分別使用hadbm get 和 hadbm set 指令檢視和修改資料庫配置。

取得配置屬性值

若要取得配置屬性值,請使用 hadbm get 指令。如需有效屬性清單,請參閱配置屬性。指令語法為:

hadbm get attribute-list | --all  
[dbname]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]

dbname 運算元指定資料庫名稱。預設為 hadb

attribute-list 運算元是以逗號分隔或引號引起的、並以空格分隔的屬性清單。--all 選項顯示所有屬性值。如需 hadbm get 的所有屬性清單,請參閱配置屬性

請參閱一般選項,以取得指令選項說明。


範例 3–4 使用 hadbm get 之範例

hadbm get JdbcUrl,NumberOfSessions

設定配置屬性值

若要設定配置屬性值,請使用 hadbm set 指令。如需有效屬性清單,請參閱配置屬性

hadbm set [dbname] attribute
=value[,attribute=
value...]
 [--adminpassword=password | --adminpasswordfile=file]
 [--agent=maurl]

dbname 運算元指定資料庫名稱。預設為 hadb

attribute=value 清單為以逗號分隔或引號引起的、並以空格分隔的屬性清單。

請參閱一般選項,以取得指令選項說明。

如果此指令成功執行,則會重新啟動資料庫,並使其處於資料庫之前所處狀態或更佳狀態。如需有關資料庫狀態的資訊,請參閱取得 HADB 的狀態。重新啟動 HADB (如重新啟動資料庫中所述)。

無法使用 hadbm set 設定以下屬性,而應在建立資料庫時設定 (請參閱建立資料庫)。


備註 –

使用 hadbm set 設定配置屬性 (除 ConnectionTraceSQLTraceMode 之外) 會導致 HADB 的輪替式重新啟動。在輪替式重新啟動中,會停止每個節點,並使用新的配置啟動,每次一個節點;HADB 服務不會中斷。

如果設定 ConnectionTraceSQLTraceMode,不會發生輪替式重新啟動,但變更會僅對應用程式伺服器實例的 HADB 連線有效。


配置屬性

下表列出可使用 hadbm set 修改和使用 hadbm get 擷取的配置屬性。

表 3–8 配置屬性

屬性 

說明 

預設 

範圍 

ConnectionTrace

如果為 true,則初始化或終止用戶端連線 (JDBC、ODBC) 時在 HADB 歷史檔案中記錄訊息。 

False 

True 或 False 

CoreFile

請勿變更預設值。 

False 

True 或 False 

DatabaseName

資料庫名稱。 

hadb 

 

DataBufferPoolSize

共用記憶體中配置的資料緩衝區池的大小。 

200MB 

16 - 2047 MB 

DataDeviceSize

指定節點的裝置大小。如需有關建議的 DataDeviceSize 之資訊,請參閱指定裝置大小

最大值為 256GB 或最大作業系統檔案大小中的較小值。最小值為: 

(4 x LogbufferSize + 16MB) / n

其中,n 為資料裝置數。

1024MB 

32 - 262144 MB 

PackageName 

資料庫使用之 HADB 軟體套裝軟體的名稱。 

V4.x.x.x 

無 

DevicePath

裝置位置:裝置為: 

  • 資料裝置 (DataDevice)

  • 節點內部記錄裝置 (NiLogDevice)

  • 相關代數查詢裝置 (RelalgDevice)

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

 

EagerSessionThreshold

確定使用的是一般還是急切閒置階段作業過期。 

在一般閒置階段作業過期中,閒置超過 SessionTimeout 秒的階段作業將過期。

同步運作的階段作業數超過最大階段作業數的百分之 EagerSessionThreshold 時,閒置超過 EagerSessionTimeout 秒的階段作業將過期。

NumberOfSessions 屬性的一半 

0 - 100 

EagerSessionTimeout

使用急切階段作業過期時,資料庫連線在過期之前可以閒置的時間 (以秒為單位表示) 。 

120 秒 

0-2147483647 秒 

EventBufferSize

事件緩衝區的大小,在其中記錄資料庫事件。如果設定為 0,將不執行事件緩衝區記錄。

出現故障期間,將傾印事件緩衝區。這可為故障原因提供有價值的資訊,並在試部署期間提供協助。 

將事件寫入記憶體會有效能懲罰。 

0 MB

0-2097152 MB 

HistoryPath

HADB 歷史檔案的位置,該檔案包含資訊、警告和錯誤訊息。 

此為唯讀屬性。 

Solaris 和 Linux:/var/opt/SUNWhadb

Windows:REPLACEDIR (在執行階段由實際 URL 替代。) 

 

InternalLogbufferSize

節點內部記錄裝置大小,該裝置用於追蹤與儲存資料相關的作業。 

12MB 

4 - 128 MB 

JdbcUrl

資料庫的 JDBC 連線 URL。 

此為唯讀屬性。 

無 

 

LogbufferSize

記錄緩衝區大小,該緩衝區可追蹤資料相關的作業。 

48MB 

4 - 2048 MB 

MaxTables

HADB 資料庫中允許的最大表格數。 

1100 

100 - 1100 

NumberOfDatadevices

HADB 節點使用的資料裝置數。 

此為唯讀屬性。 

1 - 8 

NumberOfLocks

HADB 節點配置的鎖定數。 

50000 

20000 -1073741824 

NumberOfSessions

可為 HADB 節點開啟的最大階段作業 (資料庫連線) 數。 

100 

1 - 10000 

PortBase

用於為不同 HADB 程序建立不同的連接埠號之基底連接埠號。 

此為唯讀屬性。 

15200 

10000 - 63000 

RelalgDeviceSize

相關代數查詢中所使用裝置的大小。 

128 MB 

32 - 262144 MB 

SessionTimeout

使用一般階段作業過期時資料庫連線在過期之前可以閒置的時間數。 

1800 秒 

0-2147483647 秒 

SQLTraceMode

有關寫入歷史檔案的已執行 SQL 查詢之資訊量。 

如果為 SHORT,將記錄登入和登出 SQL 階段作業。如果為 FULL,將記錄所有就緒和執行的 SQL 查詢,包括參數值。

NONE 

NONE /SHORT /FULL 

StartRepairDelay

備援節點允許出現故障的使用中節點執行節點回復的最長時間。如果出現故障的節點無法在此時間間隔內回復,備援節點即開始從出現故障的節點的鏡像複製資料,並變為使用中。建議不要變更預設值。 

20 秒 

0 - 100000 秒 

StatInterval

HADB 節點將流量和回應時間統計寫入其歷史檔案的間隔。若要停用,請設定為 0。 

此為統計行的範例: 

Req-reply time: # 123, min= 69 avg= 1160 max= 9311 %=100.0

井號 (#) 後的數字為經由 StatInterval 服務的請求數。接下來的三個數字為經由 StatInterval 完成之作業事件的最小、平均和最大時間 (以微秒為單位)。百分號 (%) 後的數字為經由 StatInterval 在 15 毫秒內成功完成的作業事件數。

600 秒 

0 - 600 秒 

SyslogFacility

報告給 syslog 時使用的功能。應該配置 syslog 常駐程式 (請參閱 man syslogd.conf, 以取得詳細資訊)。

使用在同一機器上執行的其他應用程式未使用的功能。 

設定為 none 可停用 syslog 記錄。

local0 

local0、local1、local2、local3、local4、local5、local6、local7、kern、user、mail、daemon、auth、syslog、lpr、news、uucp、 cron、none 

SysLogging

如果為 true,HADB 節點會將資訊寫入作業系統 syslog 檔案。

True 

True 或 False 

SysLogLevel

儲存至作業系統 syslog 檔案的 HADB 訊息之最低層級。將記錄該層級或更高層級的所有訊息。例如,「info」記錄所有訊息。

warning 

nonealert errorwarning info 

SyslogPrefix

插入所有 HADB 寫入 syslog 的訊息之前的文字字串。

hadb -dbname 

 

TakeoverTime

節點出現故障及其鏡像接管之間的時間。請勿變更預設值。 

10000 (毫秒) 

500 - 16000 毫秒 

配置 JDBC 連線池

Application Server 使用 Java 資料庫連結 (JDBC) API 與 HADB 通訊。asadmin configure-ha-cluster 指令可自動建立 JDBC 連線池,以與 HADB 配合使用 (對於叢集 cluster-name)。連線池的名稱為 cluster-name-hadb-pool。JDBC 資源的 JNDI URL 為 jdbc/cluster-name -hastore

連線池的初始配置通常是充足的。增加節點時,請變更持續的池大小,以便每個 HADB 使用中的節點均具有八條連線。請參閱增加節點

本小節包含以下主題:

取得 JDBC URL

設定 JDBC 連線池之前,需要使用 hadbm get 指令如下所示來確定 HADB 的 JDBC URL:

hadbm get JdbcUrl [dbname]

例如︰

hadbm get JdbcUrl

此指令可顯示 JDBC URL,其形式如下:

jdbc:sun:hadb:host:port,
host:port,...

移除 jdbc:sun:hadb: 前綴並使用 host:port, host:port... 部分做為表 3–10 中所述之 serverList 連線池特性的值。

建立連線池

下表概括 HADB 必需的連線池設定。增加節點時變更持續的池大小,但請勿變更其他設定。

表 3–9 HADB 連線池設定

設定 

HADB 必需的值 

名稱

HADB JDBC 資源的池名稱設定必須參照此名稱 

資料庫供應商

HADB 4.4 

全域作業事件支援

取消核取/false 

資料來源類別名稱

com.sun.hadb.jdbc.ds.HadbDataSource

持續的池大小

為每個使用中的 HADB 節點使用 8 條連線。如需更多詳細資訊,請參閱系統部署指南

必需的連線驗證

核取/true 

驗證方法

meta-data

表名稱

不指定 

所有連線故障

取消核取/false 

作業事件隔離

repeatable-read

保證隔離層級

核取/true 

下表概括 HADB 必需的連線池特性。增加節點時變更 serverList,但請勿變更其他特性。

表 3–10 HADB 連線池特性

特性 

說明 

username

用於 asadmin create-session-store 指令的 storeuser 名稱。

password

用於 asadmin create-session-store 指令的密碼 (storepassword)。

serverList

HADB 的 JDBC URL。若要確定此值,請參閱取得 JDBC URL

如果要增加節點至資料庫,必須變更此值。請參閱增加節點

cacheDatabaseMetaData

false 時,必須確保對 Connection.getMetaData() 的呼叫可產生對資料庫的呼叫,這可確保連線是有效的。

eliminateRedundantEndTransaction

true 時,必須透過消除冗余確定和回復請求並在未開啟任何作業事件時忽略這些請求來提昇效能。

maxStatement

在磁碟機敘述池中快取的每條開啟連線的最大敘述數。此特性設定為 20


範例 3–5 建立連線池

此為建立 HADB JDBC 連線池之 asadmin create-jdbc-connection-pool 指令的範例:

asadmin create-jdbc-connection-pool
--user adminname --password secret 
--datasourceclassname com.sun.hadb.jdbc.ds.HadbDataSource
--steadypoolsize=32
--isolationlevel=repeatable-read
--isconnectvalidatereq=true
--validationmethod=meta-data
--property username=storename:password=secret456:serverList=
host\:port,host\:port,
host\\:port,host\:port,
host\:port,host\:port
:cacheDatabaseMetaData=false:eliminateRedundantEndTransaction=true hadbpool

在 Solaris 上,使用雙反斜線 (\\) 替換特性值內的冒號字元 (:)。在 Windows 上,使用單反斜線 (\) 替換冒號字元 (:)。


建立 JDBC 資源

下表概括 HADB 必需的 JDBC 資源設定。

表 3–11 HADB JDBC 資源設定

設定 

說明 

JNDI 名稱

以下為階段作業持續性配置中的預設 JNDI 名稱:jdbc/hastore。可以使用預設名稱或其他名稱。

在啟動可用性服務時,還必須指定此 JNDI 名稱為 store-pool-jndi-name Persistence Store 特性的值。

池名稱

在此 JDBC 資源使用的 HADB 連線池名稱 (或 ID) 清單中選取。如需更多資訊,請參閱配置網路備援

資料來源已啟用

核取/true 

管理 HADB

通常需要在替代或升級網路、硬體、作業系統或 HADB 軟體時執行管理作業。以下小節說明各種管理作業:

管理網域

可以在 HADB 網域上執行以下作業:

請參閱安全性選項一般選項,以取得指令選項說明。

延伸網域

使用 extenddomain 將主機增加至現有管理網域。指令語法為:

hadbm extenddomain  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
hostlist

HADB 主機的 IP 位址必須為 IPv4 位址。

如需更多資訊,請參閱 hadbm-extenddomain(1)

刪除網域

使用 deletedomain to 移除管理網域。指令語法為:

hadbm deletedomain  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]

如需更多資訊,請參閱 hadbm-deletedomain(1)

從網域中移除主機

使用 reducedomain 從管理網域中移除主機。指令語法為:

hadbm reducedomain  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
host_list

如需更多資訊,請參閱 hadbm-reducedomain(1)

列出網域中的主機

使用 listdomain 列出在管理網域中定義的所有主機。指令語法為:

hadbm listdomain  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]

如需更多資訊,請參閱 hadbm-listdomain(1)

管理節點

可以在個別節點上執行以下作業:

啟動節點

可能需要手動啟動因為使其主機離線以便進行硬體或軟體升級或替代而停止的 HADB 節點。而且,可能需要手動啟動由於某些原因 (而非雙重故障) 無法重新啟動的節點。如需有關如何從雙重故障回復的更多資訊,請參閱清除資料庫

多數情況下,應該首先嘗試使用 normal 啟動層級啟動節點。如果 normal 啟動層級失敗或逾時,則必須使用 repair 啟動層級。

若要啟動資料庫中的節點,請使用 hadbm startnode 指令。語法為:

hadbm startnode
 [--adminpassword=password | --adminpasswordfile=file]
 [--agent=maurl]
 [--startlevel=level]
 nodeno
 [dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

nodeno 運算元指定要啟動的節點數。使用 hadbm status 可顯示資料庫中所有節點數。

如需更多資訊,請參閱 hadbm-startnode(1)

啟動層級選項

hadbm startnode 指令具有一個特殊選項,--startlevel (短形式 -l),可指定要啟動節點的層級。

節點啟動層級有:

請參閱一般選項,以取得其他指令選項說明。


範例 3–6 啟動節點範例

hadbm startnode 1

停止節點

可能需要停止節點以修復或升級主機電腦的硬體或軟體。若要停止節點,請使用 hadbm stopnode 指令。指令語法為:

hadbm stopnode  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[--no-repair]  
nodeno  
[dbname]

nodeno 運算元指定要停止的節點數。此節點個數的鏡像節點必須正在執行。使用 hadbm status 可顯示資料庫中所有節點數。

dbname 運算元指定資料庫名稱。預設為 hadb

hadbm stopnode 指令具有一個特殊選項,--no-repair (短形式 -R),表示使用無備援節點替代停止的節點。無此選項時,備援節點會啟動並接管停止的節點。

請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-stopnode(1)


範例 3–7 停止節點範例

hadbm stopnode 1

重新啟動節點

如果發現不正常的運作方式 (例如使用過多的 CPU),則可能需要重新啟動節點。

若要重新啟動資料庫中的節點,請使用 hadbm restartnode 指令。指令語法為:

hadbm restartnode  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[--startlevel=level]  
nodeno  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

nodeno 運算元指定要重新啟動的節點數。使用 hadbm status 可顯示資料庫中所有節點數。

hadbm restartnode 指令具有一個特殊選項,--startlevel (短形式 -l),可指定要啟動節點的層級。請參閱啟動層級選項,以取得更多資訊。

請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-restartnode(1)


範例 3–8 重新啟動節點範例

hadbm restartnode 1

管理資料庫

可以在 HADB 資料庫上執行以下作業:

啟動資料庫

若要啟動資料庫,請使用 hadbm start 指令。此指令可啟動所有在資料庫停止前執行的節點。個別停止 (離線) 的節點不會在資料庫停止後再啟動時啟動。

指令語法為:

hadbm start  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-start(1)


範例 3–9 啟動資料庫範例

hadbm start

停止資料庫

在獨立的作業中停止和啟動資料庫時,資料在停止時不可用。若要使資料可用,可以如重新啟動資料庫中所述重新啟動資料庫。

停止資料庫以:

停止資料庫前,停止使用資料庫的附屬 Application Server 實例,或將其配置為使用持續性類型而非 ha

停止資料庫時,資料庫中所有正在執行的節點均會停止,並且資料庫的狀態變為停止。如需有關資料庫狀態的更多資訊,請參閱取得 HADB 的狀態

若要停止資料庫,請使用 hadbm stop 指令。指令語法為:

hadbm stop  
[--adminpassword=password | --adminpasswordfile= file]  
[--agent=maurl]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-stop(1)


範例 3–10 停止資料庫範例

hadbm stop

重新啟動資料庫

如果發現奇怪的運作方式 (例如一致逾時問題),可能要重新啟動資料庫。某些情況下,重新啟動可以解決這個問題。

重新啟動資料庫時,資料庫及其資料仍然可用。在獨立作業中停止和啟動 HADB 時,如果 HADB 停止,資料和資料庫服務不可用。這是因為,依預設,hadbm restart 執行節點輪替式重新啟動:逐個停止並啟動節點。而 hadbm stop 則是同步停止所有節點。

若要重新啟動資料庫,請使用 hadbm restart 指令。指令語法為:

hadbm restart  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[--no-rolling]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

此指令具有一個特殊選項,--no-rolling (短形式 -g),可指定立即重新啟動導致服務受到損失的所有節點。無此選項時,此指令會將資料庫中的每個節點重新啟動至目前狀態或更佳的狀態。

請參閱一般選項,以取得其他指令選項說明。如需更多資訊,請參閱 hadbm-restart(1)

例如︰

hadbm restart

列出資料庫

若要列出 HADB 實例中的所有資料庫,請使用 hadbm list 指令。指令語法為:

hadbm list  
[--agent=maurl] 
[--adminpassword=password | --adminpasswordfile=file]

請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-list(1)

清除資料庫

在以下情況時清除資料庫:

hadbm clear 指令可停止資料庫節點、清除資料庫裝置,然後啟動節點。此指令可清除儲存在 HADB 中的應用程式伺服器模式資料,包括表格、使用者名稱和密碼。執行 hadbm clear 後,請使用 asadmin configure-ha-cluster 重新建立資料模式、重新配置 JDBC 連線池,並重新載入階段作業持續性存放區。

指令語法為:

hadbm clear  [--fast]  [--spares=number]  
[--dbpassword=password | --dbpasswordfile= file]  
[--adminpassword=password | --adminpasswordfile= file]  
[--agent=maurl] 
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

下表說明特殊的 hadbm clear 指令選項。請參閱一般選項,以取得其他選項說明。

如需更多資訊,請參閱 hadbm-clear(1)

表 3–12 hadbm clear 選項

選項 

說明 

預設 

--fast

-F 

初始化資料庫時略過裝置初始化。如果磁碟儲存裝置損壞,請勿使用。 

不適用 

--spares= number

-s 

經重新初始化的資料庫將具有的備援節點數。必須等於或小於資料庫中的節點數。 

之前的備援數 

例如︰

hadbm clear --fast --spares=2 --dbpassword secret123

移除資料庫

若要移除現有資料庫,請使用 hadbm delete 指令。此指令可刪除資料庫的配置檔案、裝置檔案和歷史檔案,並可釋放共用記憶體資源。要移除的資料庫必須存在且停止。請參閱停止資料庫

指令語法為:

hadbm delete  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-delete(1)


範例 3–11 移除資料庫範例

指令:

hadbm delete

刪除預設資料庫 hadb


回復階段作業資料損壞

以下為階段作業資料可能已損壞的指示:

Procedure使階段作業存放區返回一致狀態

如果您確定階段作業存放區已損壞,請透過以下程序使其返回一致狀態:

  1. 清除階段作業存放區。

    確定此動作是否更正了問題。如果已更正,則停止。如果未更正 (例如仍在伺服器記錄中看到錯誤),則繼續。

  2. 重新初始化所有節點上的資料空間,並清除資料庫中的資料。

    請參閱清除資料庫

    確定此動作是否更正了問題。如果已更正,則停止。如果未更正,例如您在伺服器記錄中仍能看到錯誤,則繼續執行作業。

  3. 刪除並重新建立資料庫。

    請參閱移除資料庫建立資料庫

延伸 HADB

有兩種原因需要延伸原始 HADB 配置:

本小節說明如何不關閉 Application Server 叢集或資料庫延伸 HADB,尤其是:

另請參閱維護 HADB 機器中的相關資訊。

增加現有節點的儲存空間

增加 HADB 儲存空間:

如果節點上存在未使用的磁碟空間或增加磁碟容量時,還可能要增加現有節點的儲存空間。如需有關建議的資料裝置大小之資訊,請參閱指定裝置大小

若要增加節點的儲存空間,請使用 hadbm set 指令增加資料裝置大小。

指令語法為:

hadbm set DataDeviceSize=size

其中,size 為資料裝置大小 (MB)。

請參閱一般選項,以取得指令選項說明。

變更 FaultTolerant 或更高狀態的資料庫資料裝置大小會升級系統,而沒有資料遺失或可用性損失。資料庫在重新配置期間仍在作業。變更非 FaultTolerant 或更好狀態之系統上的裝置大小導致資料遺失。如需有關資料庫狀態的更多資訊,請參閱資料庫狀態


範例 3–12 設定資料裝置大小範例

以下指令為設定資料裝置大小之範例:

hadbm set DataDeviceSize=1024

增加機器

如果 HADB 需要更多處理或儲存容量,您可能要增加機器。若要新增執行 HADB 的機器,請與 Application Server 一同安裝 HADB 套裝軟體或僅安裝套裝軟體,如第 2 章, 安裝和設定高可用性資料庫中所述。如需節點拓樸替代方案的說明,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide」中的第 3 章「Selecting a Topology」

Procedure新增機器至現有 HADB 實例

  1. 在所有新節點上啟動管理代理程式。

  2. 延伸新主機的管理網域。

    如需詳細資訊,請參閱 hadbm extenddomain 指令。

  3. 啟動這些主機上的新節點。

    如需詳細資訊,請參閱增加節點

增加節點

若要增加 HADB 系統的處理和儲存容量,請建立新節點並將其增加至資料庫。

增加節點後,請更新 HADB JDBC 連線池的以下特性:

若要增加節點,請使用 hadbm addnodes 指令。指令語法為:

hadbm addnodes  [--no-refragment]  [--spares=sparecount]  
[--historypath=path]  
[--devicepath=path]  
[--set=attr-name-value-list]  
[--dbpassword=password | --dbpasswordfile=file ]  
[--adminpassword=password | --adminpasswordfile=file]  
--hosts=hostlist  [dbname]

dbname 運算元指定資料庫名稱。預設為 hadb。資料庫必須處於 HAFaultTolerantFaultTolerant 狀態。如需有關資料庫狀態的更多資訊,請參閱取得 HADB 的狀態

如果未指定 --devicepath--historypath 選項,新節點將具有與現有資料庫相同的裝置路徑,並使用相同的歷史檔案。

增加節點執行重新分段並重新分配現有資料作業,以將新節點包括在系統中。線上重新分段需要用於 HADB 節點的磁碟具有足夠空間以同時包含舊資料和新資料,直至重新分段完成,亦即使用者資料大小不得超過使用者資料可用空間的 50%。如需詳細資訊,請參閱取得裝置資訊


備註 –

增加節點的最佳時間為系統負載較輕時。



範例 3–13 增加節點範例

例如︰

hadbm addnodes --dbpassword secret123 -adminpassword=
password --hosts n6,n7,n8,n9

下表說明特殊的 hadbm addnodes 指令選項。請參閱一般選項,以取得其他選項說明。

表 3–13 hadbm addnodes 選項

選項 

說明 

預設 

--no-refragment

-r 

建立節點期間請勿重新分段資料庫。在此情況下,可稍後使用 hadbm refragment 指令重新分段資料庫以使用新節點。如需有關重新分段的詳細資訊,請參閱重新分段資料庫

如果沒有足夠的裝置空間進行重新分段,請重新建立包含更多節點的資料庫。請參閱透過重新建立資料庫增加節點

不適用 

--spares= number

-s 

除現有備援節點之外的新備援節點數。必須等於或小於增加的節點數。 

--devicepath= path

-d 

裝置路徑。裝置為: 

  • DataDevice

  • NiLogDevice (節點內部記錄裝置)

  • RelalgDevice (相關代數查詢裝置)

    此路徑必須已經存在且可寫入。若要為每個節點或每個裝置設定不同的此路徑,請參閱設定異質多工式裝置路徑

Solaris 和 Linux:HADB_install_dir/device

Windows:C:\Sun\AppServer \SUNWhadb\vers,其中 vers 為 HADB 版本編號。

--hosts= hostlist

-H 

以逗號分隔的資料庫新節點的新主機名稱清單。為清單中每個以逗號分隔的項目建立一個節點。節點數必須相等。HADB 主機的 IP 位址必須為 IPv4 位址。 

使用重複主機名稱在同一機器上建立具有不同連接埠號的多個節點。確定同一機器上的節點並非鏡像節點。 

奇數編號的節點在一個 DRU 中,偶數編號的節點在其他 DRU 中。如果使用了 --spares,則新的備援節點為編號最大的節點。

如果使用雙網路介面建立資料庫,必須以相同方式配置新節點 。請參閱配置網路備援

無 

重新分段資料庫

重新分段資料庫以在新建立的節點中儲存資料。重新分段可在所有使用中節點上平均分配資料。

若要重新分段資料庫,請使用 hadbm refragment 指令。指令語法為:

hadbm refragment  [--dbpassword=password | --dbpasswordfile=file]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb。資料庫必須處於 HAFaultTolerantFaultTolerant 狀態。如需有關資料庫狀態的更多資訊,請參閱取得 HADB 的狀態

請參閱一般選項,以取得指令選項說明。如需更多資訊,請參閱 hadbm-refragment(1)

線上重新分段需要用於 HADB 節點的磁碟具有足夠空間以同時包含舊資料和新資料,直至重新分段完成,亦即使用者資料大小不得超過使用者資料可用空間的 50%。如需詳細資訊,請參閱取得裝置資訊


備註 –

重新分段資料庫的最佳時間為系統負載較輕時。


如果此指令在多次嘗試之後仍然失敗,請參閱透過重新建立資料庫增加節點


範例 3–14 重新分段資料庫範例

例如︰

hadbm refragment --dbpassword secret123

透過重新建立資料庫增加節點

如果線上重新分段在新增節點時始終失敗 (由於資料裝置空間不足或其他原因),請重新建立包含新節點資料庫。這將導致現有使用者資料和模式資料遺失。

Procedure透過重新建立資料庫增加節點

此程序可讓您在整個過程中始終維持 HADB 可用性。

  1. 對於每個 Application Server 實例:

    1. 在負載平衡器中停用 Application Server 實例。

    2. 停用階段作業持續性。

    3. 重新啟動 Application Server 實例。

    4. 在負載平衡器中重新啟用 Application Server 實例。

    如果無需維持可用性,可以在負載平衡器中立即停用並重新啟用所有伺服器實例。這會節省時間,並防止過期階段作業資料容錯移轉。

  2. 停止資料庫中所述停止資料庫。

  3. 移除資料庫中所述刪除資料庫。

  4. 建立資料庫中所述重新建立包含附加節點的資料庫。

  5. 配置 JDBC 連線池中所述重新配置 JDBC 連線池。

  6. 重新載入階段作業持續性存放區。

  7. 對於每個 Application Server 實例:

    1. 在負載平衡器中停用 Application Server 實例。

    2. 啟用階段作業持續性。

    3. 重新啟動 Application Server 實例。

    4. 在負載平衡器中重新啟用 Application Server 實例。

    如果無需維持可用性,可以在負載平衡器中立即停用並重新啟用所有伺服器實例。這會節省時間,並防止過期階段作業資料容錯移轉。

監視 HADB

可以透過以下方式監視 HADB 的活動:

這些小節簡要說明 hadbm statushadbm deviceinfohadbm resourceinfo 指令。如需有關解譯 HADB 資訊的資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Performance Tuning Guide」中的「Performance」

取得 HADB 的狀態

使用 hadbm status 指令可顯示資料庫或其節點的狀態。指令語法為:

hadbm status  
[--nodes]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl] 
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

--nodes 選項 (短形式 -n) 顯示資料庫中每個節點上的資訊。如需更多資訊,請參閱節點狀態。請參閱一般選項,以取得其他指令選項說明。

如需更多資訊,請參閱 hadbm-status(1)


範例 3–15 取得 HADB 狀態範例

例如︰

hadbm status --nodes

資料庫狀態

資料庫的狀態概括其目前情況。下表說明可能的資料庫狀態。

表 3–14 HADB 狀態

資料庫狀態 

說明 

高可用性錯誤容錯 (HAFaultTolerant) 

資料庫是錯誤容錯的,並且在每個 DRU 上至少有一個備援節點。 

錯誤容錯 

所有鏡像的節點對均啟動並在執行。 

可作業 

每個鏡像的節點對中至少一個節點在執行。 

不可作業 

一個或多個鏡像的節點對均遺失兩個節點。 

如果資料庫不可作業,請按照清除資料庫中的說明清除資料庫。

已停止 

資料庫中沒有節點在執行。 

不明的 

無法確定資料庫的狀態。 

節點狀態

使用 --nodes 選項 hadbm status 指令可顯示資料庫中每個節點的以下資訊:

可以按照以下小節中的說明變更節點的角色和狀態:

節點角色

在建立節點期間為其指定角色,角色可以是以下任意一個:

節點狀態

節點可處於以下任意一種狀態:

取得裝置資訊

監視 HADB 資料 (磁碟儲存) 裝置中的自由空間:

使用 hadbm deviceinfo 指令取得有關資料裝置中自由空間的資訊。此指令可顯示資料庫每個節點的以下資訊:

指令語法為:

hadbm deviceinfo  [--details]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  [dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

--details 選項可顯示以下附加資訊:

請參閱一般選項,以取得其他指令選項說明。

如需更多資訊,請參閱 hadbm-deviceinfo(1)

若要確定可用於使用者資料的可用空間,請用總裝置大小減去為 HADB 保留的空間:4 x LogBufferSize + 1% x 裝置大小。如果不知道記錄緩衝區的大小,請使用指令 hadbm get logbufferSize。例如,如果總裝置大小為 128 MB,LogBufferSize 為 24 MB,則可用於使用者資料的空間為 128 – (4 x 24) = 32 MB。在 32 MB 中,一半用於重複的資料,大約百分之一用於索引,僅 25% 可真正用於使用者資料。

使用者資料可用的空間為總大小和保留大小之間的差。如果將來重新分段資料,自由空間大小必須大約等於使用者資料可用空間的 50%。如果重新分段組無關緊要,則資料裝置可達至其最大值。系統裝置空間不足時,資源使用量警告會寫入歷史檔案。

如需有關調校 HADB 的更多資訊,請參閱Sun Java System Application Server Performance Tuning Guide


範例 3–16 取得裝置資訊範例

以下指令:

hadbm deviceinfo --details

顯示以下範例結果:

NodeNO Totalsize Freesize Usage NReads NWrites DeviceName
0      128       120      6%    10000  5000    C:\Sun\SUNWhadb\hadb.data.0
1      128       124      3%    10000  5000    C:\Sun\SUNWhadb\hadb.data.1
2      128       126      2%     9500  4500    C:\Sun\SUNWhadb\hadb.data.2
3      128       126      2%     9500  4500    C:\Sun\SUNWhadb\hadb.data.3

取得執行階段資源資訊

hadbm resourceinfo 指令可顯示 HADB 執行階段資源資訊。可以使用此資訊協助識別資源內容,並減少效能瓶頸。如需詳細資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Performance Tuning Guide」中的「Tuning HADB」

指令語法為:

hadbm resourceinfo  [--databuf]  [--locks]  [--logbuf]  [--nilogbuf]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]  
[dbname]

dbname 運算元指定資料庫名稱。預設為 hadb

下表說明 hadbm resourceinfo 特殊指令選項。請參閱一般選項,以取得其他指令選項說明。

如需更多資訊,請參閱 hadbm-resourceinfo(1)

表 3–15 hadbm resourceinfo 指令選項

選項 

說明 

--databuf

-d 

顯示資料緩衝區池資訊。 

請參閱以下資料緩衝區池資訊,以取得更多資訊。

--locks

-l 

顯示鎖定資訊。 

請參閱以下鎖定資訊,以取得更多資訊。

--logbuf

-b 

顯示記錄緩衝區資訊。 

請參閱以下記錄緩衝區資訊,以取得更多資訊。

--nilogbuf

-n 

顯示節點內部記錄緩衝區資訊。 

請參閱以下節點內部記錄緩衝區資訊,以取得更多資訊。

資料緩衝區池資訊

資料緩衝區池資訊包含:

使用者作業事件對記錄執行作業時,包含該記錄的頁面必須在資料緩衝區池中。如果不在,將會發生 miss 或頁面錯誤。然後,作業事件必須等待,直至從磁碟上的資料裝置檔案中擷取頁面。

如果遺失率高,請增大資料緩衝區池。因為遺失是累積的,請定期執行 hadbm resourceinfo,並使用兩次執行之間的差異查看遺失率趨勢。如果自由空間非常小,也不必擔心,因為檢查點機制將使新的區段變得可用。


範例 3–17 資料緩衝區池資訊範例

例如︰


NodeNO Avail Free Access Misses Copy-on-Write
0 256 128 100000 50000 10001 256 128 110000 45000 950

鎖定資訊

鎖定資訊如下:

一個單一作業事件無法使用節點上超過 25% 的可用鎖定。因此,執行大量作業的作業事件因該瞭解此限制。最好成批執行此類作業事件,其中每一批必須做為獨立作業事件處理,亦即每一批均進行確定。這是必須的,因為讀取作業以 repeatable read 隔離層級執行,deleteinsertupdate 作業使用僅在作業事件終止後釋放的鎖定。

如要變更 NumberOfLocks,請參閱清除和歸檔歷史檔案


範例 3–18 鎖定資訊範例

例如︰


NodeNO Avail Free Waits
0 50000 20000 101 50000 20000 0

記錄緩衝區資訊

記錄緩衝區資訊為:

如果自由空間非常小,請勿擔心,因為 HADB 會壓縮記錄緩衝區。HADB 從環狀緩衝區開始壓縮,並在連續的記錄上執行壓縮。當 HADB 遇到節點尚未執行且鏡像節點尚未接收的記錄時,壓縮無法繼續


範例 3–19 記錄緩衝區資訊範例

例如︰


NodeNO Avail Free
0 16 21 16 3

節點內部記錄緩衝區資訊

節點內部記錄緩衝區資訊為:


範例 3–20 內部記錄緩衝區資訊範例

例如︰

NodeNO Avail Free

0 16 21 16 3


維護 HADB 機器

HADB 透過複製鏡像節點上的資料實現錯誤容錯。在生產環境中,鏡像節點與其所鏡像之節點位於不同的 DRU 上,如「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide」中所述。

故障指未預期事件,例如硬體故障、電源故障或作業系統重新開機。HADB 可容錯個體故障:即故障發生在一個節點、一台機器 (無鏡像節點對)、屬於同一 DRU 的一台或多台機器或甚至一個完整 DRU 上。但是,HADB 不會自動從雙重故障回復,即一個或多個鏡像節點對同時發生的故障。如果發生雙重故障,則必須清除 HADB,並重新建立其作業事件存放區 (清除其所有資料)。

有不同的維護程序,取決於您需要在一台機器還是多台機器上工作。

Procedure在一台機器上執行維護

此程序適用於規劃的和未規劃的維護,不會中斷 HADB 可用性。

  1. 執行維護程序,並使機器啟動和執行。

  2. 確定 ma 正在執行。

    如果 ma 做為 Windows 服務或在 init.d 程序檔 (建議用於部署) 下執行,則應該已由作業系統啟動。如果沒有,請手動啟動。請參閱啟動管理代理程式

  3. 啟動機器上的所有節點。

    如需更多資訊,請參閱啟動節點

  4. 檢查節點是否為使用中且正在執行。

    如需更多資訊,請參閱取得 HADB 的狀態

Procedure在所有 HADB 機器上執行規劃的維護

規劃的維護包括硬體和軟體升級等作業。此程序不會中斷 HADB 可用性。

  1. 對於第一個 DRU 中的每台備援機器,請逐台重複單一機器程序,如在一台機器上執行維護中所述。

  2. 對於第一個 DRU 中的每台使用中機器,逐台重複單一機器程序,如在一台機器上執行維護中所述。

  3. 為第二個 DRU 重複步驟 1 和步驟 2。

Procedure在所有 HADB 機器上執行規劃的維護

此程序在 HADB 位於一台或多台機器上時適用。在維護程序期間會中斷 HADB 服務。

  1. 停止 HADB。請參閱停止資料庫

  2. 執行維護程序,並使所有機器啟動和執行。

  3. 確定 ma 正在執行。

  4. 啟動 HADB。

    如需更多資訊,請參閱啟動資料庫

    完成最後一步後,HADB 資料再次變得可用。

Procedure發生故障時執行未規劃的維護

  1. 檢查資料庫狀態。

    請參閱取得 HADB 的狀態

    • 如果資料庫狀態為可作業或更佳:

      需要執行未規劃維護的機器包含鏡像節點。為每台出現故障的機器執行單一機器程序,每次一個 DRU。HADB 伺服器不中斷。

    • 如果資料庫狀態為不可作業:

      需要執行未規劃維護的機器包含鏡像節點。此類情況之一為整個 HADB 都在一台出現故障的機器上時。首先啟動並執行所有機器。然後清除 HADB,並重新建立階段作業存放區。請參閱清除資料庫。這會中斷 HADB 服務。

清除和歸檔歷史檔案

HADB 歷史檔案會記錄所有資料庫作業和錯誤訊息。HADB 附加至現有歷史檔案的結尾,因此檔案隨著時間而增長。若要節省磁碟空間並防止檔案變得過大,請定期清除和歸檔歷史檔案。

若要清除資料庫的歷史檔案,請使用 hadbm clearhistory 指令。

指令語法為:

hadbm clearhistory  
[--saveto=path]  
[dbname]  
[--adminpassword=password | --adminpasswordfile=file]  
[--agent=maurl]

dbname 運算元指定資料庫名稱。預設為 hadb

使用 --saveto 選項 (短形式 -o) 可指定在其中儲存舊的歷史檔案之目錄。此目錄必須具有相應的寫入權限。請參閱一般選項,以取得其他指令選項說明。

如需更多資訊,請參閱 hadbm-clearhistory(1)

hadbm create 指令的 --historypath 選項可確定歷史檔案的位置。歷史檔案的名稱格式為 dbname.out. nodeno。如需有關 hadbm create 的資訊,請參閱建立資料庫

歷史檔案格式

歷史檔案中的各訊息包含以下資訊:

有關資源短缺的訊息包含字串「HIGH LOAD」。

無需詳細瞭解歷史檔案中的所有項目。如果出於任何原因您需要更加詳細地研究歷史檔案,請與 Sun 客戶支援連絡。