Sun GlassFish Enterprise Server 2.1 高可用性 (HA) 管理ガイド

第 11 章 高可用性データベースの管理


注 –

HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』「プロファイル」を参照してください。


この章では、Sun GlassFish Enterprise Server 環境における高可用性データベース (HADB) について説明します。HADB を設定および管理する方法について解説します。HADB の作成および管理をする前に、まずシステムのトポロジを決定して、各種マシンに HADB ソフトウェアをインストールする必要があります。

この章では、次の内容について説明します。

HADB 管理エージェントの使用法

管理エージェント ma は HADB ホスト上で管理コマンドを実行します。HADB ノードスーパーバイザプロセスが失敗すると、管理エージェントはそのプロセスを再起動して、その可用性を確保します。

管理エージェントの起動

管理エージェントは、次のように起動できます。

いずれの場合も、使用しているのが Java Enterprise System であるかスタンドアロン Application Server であるかによって、手順が異なります。

サービスとしての管理エージェントの起動

サービスとして管理エージェントを起動すると、システムが停止するかまたは操作によりシステムを明示的に停止するまで、実行を継続します。コマンドは、インストール環境やプラットフォームによって異なります。

Solaris または Linux 上の Java Enterprise System

管理エージェントをサービスとして起動するには、次のコマンドを使用します。

/etc/init.d/ma-initd start

サービスを停止するには、次のコマンドを使用します。

/etc/init.d/ma-initd stop

Windows 上の Java Enterprise System

管理エージェントを Windows サービスとして起動するには、次のコマンドを使用します。 HADB_install_dir\bin\ma -i [config-file ]

省略可能な引数 config-file は、管理エージェントの設定ファイルを指定します。設定ファイルは、デフォルトの管理エージェント設定を変更する場合にのみ使用してください。詳細については、「管理エージェント設定のカスタマイズ」を参照してください。

管理エージェントを停止してサービスから削除 (登録解除) するには、次のコマンドを使用します。 HADB_install_dir\bin\ma -r [config-file ]

管理を実行するには、「管理ツール 」->「サービス」を選択します。表示されるウィンドウで、サービスの起動と停止、自動起動の無効化などを行えます。

Solaris または Linux 上のスタンドアロン Application Server

管理エージェントをサービスとして起動するには、次のコマンドを使用します。

HADB_install_dir/bin/ma-initd start

サービスを停止するには、次のコマンドを使用します。

HADB_install_dir/bin/ma-initd stop

デフォルト値を変更するには、シェルスクリプト HADB_install_dir/bin/ma-initd を編集します。ma-initd をディレクトリ /etc/init.d にコピーします。スクリプト内の HADB_ROOT と HADB_MA_CFG のデフォルト値を、実際のインストールを反映するように置き換えます。

Windows 上のスタンドアロン Application Server

管理エージェントを Windows サービスとして起動するには、次のコマンドを使用します。 HADB_install_dir\bin\ma -i [config-file ]

省略可能な引数 config-file は、管理エージェントの設定ファイルを指定します。設定ファイルは、デフォルトの管理エージェント設定を変更する場合にのみ使用してください。

管理エージェントを停止してサービスから削除 (登録解除) するには、次のコマンドを使用します。 HADB_install_dir\bin\ma -r [config-file ]

管理を実行するには、「管理ツール 」->「サービス」を選択します。表示されるウィンドウで、サービスの起動と停止、自動起動の無効化などを行えます。

管理エージェントの自動再起動の実現

本稼働環境で、管理エージェントが自動的に再起動するように設定します。そのようにすることで、ma プロセスが 失敗する場合またはオペレーティングシステムが再起動する場合における管理エージェントの有効性が確実になります。

Windows プラットフォームでは、管理エージェントをサービスとして起動したあとに、Windows 管理ツールを使用して、サービスの「スタートアップの種類」を「自動」に設定し、必要に応じて「回復」オプションを指定します。

Solaris および Linux プラットフォームでは、この節の手順を用いて、管理エージェントの自動再起動を設定します。以下の手順を行うと、システムが次のレベルになったときにのみ、管理エージェントが起動します。

それ以外の実行レベルになると、管理エージェントは停止します。

ProcedureSolaris または Linux 上の Java Enterprise System で自動再起動を設定する

始める前に

この節は、オペレーティングシステムの初期化と実行レベルについての基本を理解していることを前提としています。これらのトピックについては、使用しているオペレーティングシステムのドキュメントを参照してください。

  1. システムのデフォルト実行レベルが 3 または 5 であることを確認します。

    システムのデフォルト実行レベルを確認するには、/etc/inittab ファイルを調べ、ファイル上部にある次のような行を探します。

    id:5:initdefault:

    この例は、デフォルト実行レベル 5 を示しています。

  2. 「ソフトリンクの作成」の説明に従って、ファイル /etc/init.d/ma-initd へのソフトリンクを作成します。

  3. マシンをリブートします。

次の手順

エージェントの自動起動および停止を解除するには、これらのリンクを削除するか、リンク名中の文字 K とS を小文字に変更します。

ProcedureSolaris または Linux 上のスタンドアロン Application Server で自動再起動を設定する

  1. シェルで、カレントディレクトリを HADB_install_dir /bin に変更します。

  2. シェルスクリプト ma-initd を編集します。

    スクリプト内の HADB_ROOT および HADB_MA_CFG のデフォルト値を確認して、インストールを反映させます。

  3. ma-initd をディレクトリ /etc/init.d にコピーします。

  4. 「ソフトリンクの作成」の説明に従って、ファイル /etc/init.d/ma-initd へのソフトリンクを作成します。

次の手順

エージェントの自動起動および停止を解除するには、これらのリンクを削除するか、リンク名中の文字 K とS を小文字に変更します。

ソフトリンクの作成

Solaris の場合、次のソフトリンクを作成します。

/etc/rc0.d/K20ma-initd
/etc/rc1.d/K20ma-initd
/etc/rc2.d/K20ma-initd
/etc/rc3.d/S99ma-initd
/etc/rc5.d/K20ma-initd (only for Sun 4m and 4u architecture)
/etc/rc6.d/K20ma-initd
/etc/rcS.d/K20ma-initd

Linux の場合、次のソフトリンクを作成します。

/etc/rc0.d/K20ma-initd
/etc/rc1.d/K20ma-initd
/etc/rc3.d/S99ma-initd
/etc/rc5.d/S99ma-initd
/etc/rc6.d/K20ma-initd

コンソールモードでの管理エージェントの起動

評価やテストのために、コンソールモードで管理エージェントを起動することができます。本稼働環境ではこの方法で管理エージェントを起動しないでください。システムやプロセスの障害のあとで ma プロセスが再起動しなかったり、コマンドウィンドウを閉じたときにプロセスが終了したりするからです。コマンドは、プラットフォームやインストール環境によって異なります。

Solaris または Linux 上の Java Enterprise System

コンソールモードで HADB 管理エージェントを起動するには、次のコマンドを使用します。

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

デフォルトの管理エージェント設定ファイルは /etc/opt/SUNWhadb/mgt.cfg です。

管理エージェントを停止するには、プロセスを終了するか、またはシェルウィンドウを閉じます。

Windows 上の Java Enterprise System

コンソールモードで管理エージェントを起動するには、次のコマンドを使用します。

HADB_install_dir\bin\ma [config-file]

省略可能な引数 config-file は、管理エージェント設定ファイルの名前です。設定ファイルの詳細については、「管理エージェント設定のカスタマイズ」を参照してください。

エージェントを停止するには、プロセスを終了します。

Windows 上のスタンドアロン Application Server

コンソールモードで管理エージェントを起動するには、次のコマンドを使用します。

HADB_install_dir\bin\ma [config-file]

省略可能な引数 config-file は、管理エージェント設定ファイルの名前です。詳細については、「管理エージェント設定のカスタマイズ」を参照してください。

管理エージェントを停止するには、プロセスを終了します。

Solaris または Linux 上のスタンドアロン Application Server

コンソールモードで HADB 管理エージェントを起動するには、次のコマンドを使用します。

HADB_install_dir/bin/ma [config-file]

デフォルトの管理エージェント設定ファイルは HADB_install_dir /bin/ma.cfg です。

管理エージェントを停止するには、プロセスを終了するか、またはシェルウィンドウを閉じます。

Solaris 10 サービス管理機能による管理エージェントの実行

サービス管理機能 (SMF) では、Solaris 10 でサービスを再起動、表示、および管理するメカニズムが提供されます。SMF を使用して、HADB 管理エージェントを起動、再起動、および管理できます。

管理エージェントの障害管理リソース識別子 (FMRI) は svc:/application/hadb-ma です。

管理エージェントコマンドの構文

管理エージェント ma コマンドの構文は、次のとおりです。

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

引数の意味はそれぞれ以下のとおりです。

表 11–1 管理エージェント共通オプション

オプション 

説明 

デフォルト 

--define name=value-D

プロパティー namevalue を割り当てます。このプロパティーは 「設定ファイル」に定義されているプロパティーのいずれかです。このオプションは、複数回繰り返すことができます。

なし 

--help-? 

ヘルプ情報を表示します。 

False 

--javahome path-j

path にある Java Runtime 環境 (1.4 以降) を使用します。

なし 

--systemroot path-y

通常は %SystemRoot% で設定されているオペレーティングシステムルートへのパス。 

なし 

--version-V 

バージョン情報を表示します。 

False 

表 11–2 では、管理サービスを Windows サービスとして起動するためのオプションを説明しています。-i、-r、および -s オプションは相互に排他的であるため、一度に 1 つだけを使用してください。

Windows では、設定ファイルまたはコマンド行にプロパティー値のパスを指定する際に、スペースを含むファイルパスを二重引用符 ( ") で囲んでエスケープします。コロン(:) ドライブセパレータと円記号 (\) ディレクトリセパレータは、 二重引用符と円記号を用いて "\: および "\\ のようにエスケープします。

表 11–2 管理エージェントサービスオプション (Windows のみ)

オプション 

説明 

デフォルト 

--install-i 

エージェントを Windows サービスとしてインストールして、サービスを開始します。-i、-r、および -s オプションから、1 つだけを使用します。 

False 

--name servicename-n

ホスト上で複数のエージェントを実行している場合に、サービスに対して指定した名前を使用します。 

HADBMgmtAgent 

--remove-r 

サービスを停止し、Windows のサービスマネージャーからエージェントを削除します。-i、-r、および -s オプションから、1 つだけを使用します。 

False 

--service-s 

エージェントを Windows サービスとして実行します。-i、-r、および -s オプションから、1 つだけを使用します。 

False 

管理エージェント設定のカスタマイズ

HADB には設定ファイルが組み込まれており、管理エージェント設定のカスタマイズに使用できます。設定ファイルを指定せずに管理エージェントを起動した場合は、デフォルト値が使用されます。設定ファイルを指定した場合、管理エージェントはそのファイルの設定を使用します。同じ設定ファイルをドメイン内のすべてのホストで繰り返し使用することができます。

ProcedureHADB ホストの管理エージェント設定をカスタマイズする

  1. 管理エージェント設定ファイルを編集して、希望する値を設定します。

  2. カスタマイズした設定ファイルを引数に指定して、管理エージェントを起動します。

設定ファイル

Java Enterprise System では、設定ファイル内のすべてのエントリがコメントにされています。デフォルトの設定を使用する場合、変更の必要はありません。管理エージェント設定をカスタマイズするには、ファイルからコメントを削除し、必要に応じて値を変更してから、設定ファイルを引数に指定して、管理エージェントを起動します。

管理エージェント設定ファイルは次の場所にインストールされます。

スタンドアロンインストールプログラムでは、管理エージェント設定ファイルは次の場所にインストールされます。

次の表で、設定ファイルの設定値について説明します。

表 11–3 設定ファイルの設定値

設定値名 

説明 

デフォルト 

console.loglevel

コンソールログレベル。有効な値は、SEVERE、ERROR、WARNING、INFO、FINE、FINER、FINEST。 

WARNING 

logfile.loglevel

ログファイルのログレベル。有効な値は、SEVERE、ERROR、WARNING、INFO、FINE、FINER、FINEST。 

INFO 

logfile.name

ログファイルの名前と場所。読み込み/書き込みアクセスに対して有効なパスである必要があります。 

Solaris および Linux: /var/opt/SUNWhadb/ma/ma.log

Windows: HADB_install_dir\ma.log

ma.server.type

クライアントプロトコル。JMXMP のみサポートされています。 

jmxp 

ma.server.jmxmp.port

内部 (UDP) および外部 (TCP) 通信用のポート番号。正の整数である必要があります。推奨される範囲は 1024 ~ 49151 です。 

1862 

ma.server.mainternal.interfaces

複数のインタフェースを持つマシンの内部通信用のインタフェース。有効な IPv4 アドレスマスクである必要があります。ドメイン内のすべての管理エージェントが必ず同じサブネットを使用する必要があります。 

たとえば、ホストに 10.10.116.61 と 10.10.124.61 の 2 つのインタフェースがある場合、最初のインタフェースを使用するには 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

hadbm 管理コマンドの使用法

hadbm コマンド行ユーティリティーを使用して、HADB ドメイン、そのデータベースインスタンス、およびノードを管理します。hadbm ユーティリティー (管理クライアントとも呼ばれる) は、管理サーバーとして動作している、指定された管理エージェントに管理要求を送信します。管理エージェントにはリポジトリからデータベース設定へのアクセスがあります。

この節では、次のトピックで、hadbm コマンド行ユーティリティーについて説明します。

コマンド構文

hadbm ユーティリティーは、HADB_install_dir /bin ディレクトリにあります。hadbm コマンドの汎用構文は次のとおりです。

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

サブコマンドで実行する操作またはタスクを識別します。サブコマンドは大文字と小文字を区別します。ほとんどのコマンドはオペランドを1 つ (通常は dbname) とります。

オプションを指定することにより、hadbm がサブコマンドを実行する方法を変更できます。オプションは大文字と小文字を区別します。各オプションには長い書式と短い書式があります。省略形の場合はダッシュ 1 つ (-) を前に付け、長い書式の場合はダッシュ 2 つ (--) を前に付けます。boolean 型のオプションを除くほとんどのオプションは引数値を必要とし、この引数値により機能がオンに切り替わります。オプションを指定しないとコマンドが正常に実行されないということではありません。

サブコマンドにデータベース名が必要な場合にデータベース名を指定しないと、hadbm はデフォルトデータベース hadb を使用します。


例 11–1 hadbm コマンドの例

次に示すのは、status サブコマンドの例です。

hadbm status --nodes

セキュリティーオプション

セキュリティー上の理由で、すべての hadbm コマンドには管理者パスワードが必要です。データベースまたはドメインを作成する際に、--adminpassword オプションを使用してパスワードを設定します。それ以降、そのデータベースまたはドメイン上で操作を実行するときには、そのパスワードを指定する必要があります。

さらにセキュリティーを強化するには、パスワードをコマンド行に入力する代わりに、--adminpasswordfile オプションを使用してパスワードを含むファイルを指定します。次の行を用いてパスワードファイルにパスワードを定義します。

HADBM_ADMINPASSWORD=password

password をパスワードに置き換えてください。ファイル内のそれ以外の内容は無視されます。

--adminpassword--adminpasswordfile の両方のオプションを指定した場合は、--adminpassword が優先されます。パスワードが必要なのに、コマンド中に指定されていない場合には、hadbm からパスワードを要求されます。


注 –

管理者パスワードはデータベースまたはドメインを作成するときにのみ設定することができ、あとで変更することはできません。


管理者パスワードに加えて、データベーススキーマを変更する操作を実行するために、HADB ではデータベースパスワードも要求されます。次のコマンドを使用するときには、これらのパスワードが両方必要となります。 hadbm createhadbm addnodes、および hadbm refragment

--dbpassword オプションを使用して、コマンド行にデータベースパスワードを指定します。管理者パスワードと同じように、ファイルにパスワードを書き込み、--dbpasswordfile オプションでファイルの場所を指定することも可能です。次の行を用いてパスワードファイルにパスワードを定義します。

HADBM_DBPASSWORD=password

テストまたは評価の場合は、データベースまたはドメインを作成する際に --no-adminauthentication オプションを指定して、パスワード認証をオフにすることもできます。詳細については、「データベースの作成」および 「管理ドメインの作成」を参照してください。

次の表に、hadbm セキュリティーコマンド行オプションの要約を示します。

表 11–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 サブコマンドにも使用できます。すべてが boolean 型オプションで、デフォルトは false です。次の表で、hadbm 汎用コマンドオプションについて説明します。

表 11–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 コマンドオプションに対応する環境変数について説明します。

表 11–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 オペランドは、それぞれが有効な IPv4 ネットワークアドレスである HADB ホストのコンマ区切りリストです。新規ドメインに組み込むすべてのホストを hostlist に含めてください。

コマンドオプションの説明は、「一般的なオプション」を参照してください。

このコマンドを使用する前に、HADB 管理エージェントが hostlist に含まれているすべてのホスト上で実行中であるかを確認してください。さらに、管理エージェントは次の条件を満たしている必要があります。

hadbm が管理ドメインを作成すると、ドメイン内のすべてのホストが使用可能になります。これで、管理エージェントがデータベースを管理する用意は整いました。HADB ドメインを作成したら、次のステップは、HADB データベースの作成です。HADB データベースの作成に関する詳細については、「データベースの作成」を参照してください。


例 11–2 HADB 管理ドメインの作成

次の例では、指定した 4 つのホスト上に管理ドメインが作成されます。

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

hadbm がコマンドを正常に実行すると、次のメッセージが表示されます。

Domain host1,host2,host3, host4 created.

HADB ドメインを作成したあと、HADB パッケージのパスとバージョンを管理エージェントに登録します。


データベースの作成

hadbm create コマンドを使用して、データベースを手動で作成します。

このコマンドを使用してデータベースを作成する前に、管理ドメインを作成し、HADB パッケージを登録します。hadbm create を実行する時点でこの 2 つのステップをまだ行なっていない場合は、コマンドによってそれらのステップが暗黙に実行されます。このようにすれば行う作業は減るように思えますが、いずれかのコマンドでエラーが生じたときに、デバッグが困難になる場合があります。さらに、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 コマンドは、エラーメッセージをログファイルではなくコンソールに書き込みます。

表 11–7 には、hadbm create コマンドの特殊なオプションが説明されています。追加のコマンドオプションの説明は、「一般的なオプション」を参照してください。

表 11–7 hadbm create オプション

オプション (省略形) 

説明 

デフォルト 

--datadevices= number

-a 

各ノード上のデータデバイスの数。1~8 を含みます。データデバイスには 0 から始まる番号が付けられます。 

--devicepath= path

-d 

デバイスへのパス。デバイスには次の 4 つがあります。 

  • DataDevice

  • NiLogDevice (ノード内部ログデバイス)

  • RelalgDevice (関係代数クエリーデバイス)

  • NoManDevice (ノードマネージャーデバイス)。

    このパスは存在していて、書き込み可能であることが必要です。このパスをノードまたはデバイスごとに異なる設定にする場合は、「異機種システム混在デバイスパスの設定」を参照してください。

Solaris および Linux: /var/opt/SUNWhadb

Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。

デフォルトは、管理エージェント設定ファイル内の ma.server.dbdevicepath によって指定されます。詳細については、「設定ファイル」を参照してください。

--devicesize= size

-z 

各ノードのデバイスサイズ。詳細については、「デバイスサイズの指定」を参照してください。

「既存ノードへの記憶スペースの追加」の説明に従って、デバイスサイズを増やします。

1024M バイト 

最大サイズは、オペレーティングシステムのファイルサイズまたは 256G バイトの小さい方となります。最小サイズは次のとおりです。 

(4 x LogbufferSize + 16M バイト) / n

ここで、n--datadevices オプションで指定されたデータデバイスの番号です。

--historypath= path

-t 

履歴ファイルへのパス。このパスはすでに存在していて、書き込み可能であることが必要です。 

履歴ファイルの詳細については、「履歴ファイルの消去と保存」を参照してください。

デフォルトは、管理エージェント設定ファイル内の ma.server.dbhistorypath によって指定されます。詳細については、「設定ファイル」を参照してください。

Solaris および Linux: /var/opt/SUNWhadb

Windows : REPLACEDIR (実行時に実際の URL に置換される) 

--hosts= hostlist

-H 

データベース内のノードのホスト名または IP アドレス (IPv4 のみ) のコンマ区切りリスト。DNS 検索への依存を避けるため、IP アドレスを使用してください。ホスト名は必ず絶対名にします。localhost127.0.0.1 をホスト名として使用することはできません。Host names

詳細については、「ホストの指定」を参照してください。

なし 

--package=name -k

HADB パッケージの名前 (バージョン)。パッケージが見つからない場合は、デフォルトパッケージが登録されます。 

このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 

なし 

--packagepath=path-L

HADB ソフトウェアパッケージへのパス。パッケージがドメインに登録されていない場合にのみ使用します。 

このオプションは推奨されていません。hadbm registerpackage コマンドを使用して、パッケージをドメインに登録してください。 

なし 

--portbase= number

-b 

ノード 0 で使用されるポートベース番号。以降のノードは、この番号から 20 の間隔でポートベース番号が自動的に割り当てられます。各ノードはそれ自身のポートベース番号とそれに続く 5 つの連続する番号のポートを使用します。 

同じマシン上で複数のデータベースを実行するには、明示的にポート番号を割り当てるように計画します。 

15200 

--spares= number

-s 

スペアノードの数。この数は、偶数かつ --hosts オプションに指定したノード数より少ない数でなければいけません。

--set=attr-val-list

-S 

name =value 書式のデータベース設定属性のコンマ区切りリスト。データベース設定属性の説明は、「履歴ファイルの消去と保存」を参照してください。

なし 


例 11–3 データベースの作成例

次に示すのは、データベースを作成するコマンドの例です。

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

ホストの指定

--hosts オプションを使用して、データベース内のノードのホスト名または IP アドレスのコンマ区切りリストを指定します。hadbm create コマンドは、リスト内のホスト名 (または IP アドレス) ごとに 1 つのノードを作成します。ノードの数は偶数でなければなりません。重複するホスト名を使用すると、同じマシン上に異なるポート番号が指定された複数のノードが作成されます。同じマシン上のノードがミラーノードではなく、異なる DRU からでもないことを必ず確認してください。

ノードには、このオプションでリストされている順番で、ゼロから始まる番号が付けられます。最初のミラー化されたペアはノード 0 と 1、2 番目のミラーペアはノード 2 と 3 となり、以下同様です。奇数番号のノードが一方の DRU に配置され、偶数番号のノードは他方の DRU に配置されます。--spares オプションを指定すると、もっとも大きい番号のノードがスペアノードとなります。

二重ネットワークインタフェースの設定については、「ネットワーク冗長性の設定」を参照してください。

デバイスサイズの指定

--devicesize オプションを使用して、デバイスサイズを指定します。推奨されているデバイスサイズは次のとおりです。

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

説明:

異機種システム混在デバイスパスの設定

ノードまたはサービスごとに異なるデバイスパスを設定するには、hadbm create-- set オプションを使用します。デバイスには、 DataDeviceNiLogDevice (ノード内部ログデバイス)、RelalgDevice (関係代数クエリーデバイス)、および NoManDevice (ノードマネージャーデバイス) の 4 種類があります。各 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 set および hadbm 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 のすべての属性のリストについては、「設定属性」を参照してください。

コマンドオプションの説明は、「一般的なオプション」を参照してください。


例 11–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 の順次再起動が実行されます。順次再起動では、各ノードが一度に 1 つずつ、停止して新規の設定で起動します。このとき HADB サービスは中断されません。

ConnectionTrace または SQLTraceMode を設定した場合、順次再起動は実行されませんが、変更は Application Server インスタンスから作成された新規の HADB 接続に対してのみ反映されます。


設定属性

次の表に、hadbm set での変更と hadbm get での検出が可能な設定属性を一覧表示します。

表 11–8 設定属性

属性 

説明 

デフォルト 

範囲 

ConnectionTrace

True に設定すると、クライアント接続 (JDBC、ODBC) が開始または終了したときに、メッセージが HADB 履歴ファイルに記録されます。 

False 

True または False 

CoreFile

デフォルト値を変更しないでください。 

False 

True または False 

DatabaseName

データベースの名前。 

hadb 

 

DataBufferPoolSize

共用メモリーに割り当てられるデータバッファープールのサイズ。 

200M バイト 

16 ~ 2047M バイト 

DataDeviceSize

ノードのデバイスサイズを指定します。推奨される DataDeviceSize のサイズについては、「デバイスサイズの指定」を参照してください。

最大値は、256G バイトとオペレーティングシステムの最大ファイルサイズの小さい方です。最小値は次のとおりです。 

(4 x LogbufferSize + 16M バイト) / n

ここで、n はデータデバイスの番号です。

1024M バイト 

32 ~ 262144M バイト 

PackageName 

データベースが使用する HADB ソフトウェアパッケージの名前。 

V4.x.x.x 

なし 

DevicePath

デバイスの場所。デバイスは次のとおりです。 

  • データデバイス (DataDevice)

  • ノード内部ログデバイス (NiLogDevice)

  • 関係代数クエリーデバイス (RelalgDevice)

Solaris および Linux: /var/opt/SUNWhadb

Windows: C:\Sun\AppServer\SUNWhadb\vers。ここで、vers は HADB バージョン番号です。

 

EagerSessionThreshold

通常または高速処理 (eager) アイドルセッション有効期限を使用するかどうかを判別します。 

通常のアイドルセッション有効期限では、アイドル状態が SessionTimeout 秒を超過したセッションが期限切れとなります。

並行セッションの数がセッション最大数の EagerSessionThreshold パーセントを超えている場合は、アイドル状態が EagerSessionTimeout 秒を超過したセッションが期限切れとなります。

NumberOfSessions 属性の半分 

0 ~ 100 

EagerSessionTimeout

高速処理 (eager) セッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの秒数。 

120 秒 

0 ~ 2147483647 秒 

EventBufferSize

データベースイベントが記録されるイベントバッファーのサイズ。0 に設定すると、イベントバッファーへのロギングは実行されません。

障害が起きている間、イベントバッファーはダンプされます。これは、障害の原因に関する有用な情報を提供し、試験的な配備の際に役立ちます。 

イベントをメモリーに書き込むと、パフォーマンスが犠牲になります。 

0M バイト

0 ~ 2097152M バイト 

HistoryPath

HADB 履歴ファイルの場所。このファイルの内容は、情報、警告、およびエラーメッセージです。 

これは読み取り専用属性です。 

Solaris および Linux: /var/opt/SUNWhadb

Windows: REPLACEDIR (実行時に実際の URL に置換される) 

 

InternalLogbufferSize

ノード内部ログデバイスのサイズ。データの格納に関連する操作のトラックが保持されます。 

12M バイト 

4 ~ 128M バイト 

JdbcUrl

データベースの JDBC 接続 URL。 

これは読み取り専用属性です。 

なし 

 

LogbufferSize

ログバッファーのサイズ。データに関連する操作のトラックが保持されます。 

48M バイト 

4 ~ 2048M バイト 

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

関係代数クエリーに使用するデバイスのサイズ。 

128M バイト 

32 ~ 262144M バイト 

SessionTimeout

通常のセッション有効期限を使用している場合に、データベース接続がアイドル状態になってから期限切れになるまでの時間。 

1800 秒 

0 ~ 2147483647 秒 

SQLTraceMode

履歴ファイルに書き込まれる実行された SQL クエリーに関する情報の量。 

SHORT に設定すると、SQL セッションのログインとログアウトが記録されます。FULL に設定すると、準備中および実行中のすべての SQL が、パラメータ値を含めて記録されます。

なし 

NONE/SHORT/FULL 

StartRepairDelay

スペアノードが、障害の発生したアクティブノードに対してノード復旧の実行を許可する最大時間。障害の発生したノードがこの時間内に回復できない場合、スペアノードが障害の発生したノードのミラーからデータのコピーを開始してアクティブになります。デフォルト値を変更しないことをお勧めします。 

20 秒 

0 ~ 100000 秒 

StatInterval

HADB ノードがスループットと応答時間の統計情報を履歴ファイルに書き込む間隔。無効にする場合は、0 に設定します。 

次に示すのは、統計情報の行の例です。 

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

ハッシュ記号 (#) の後ろの数字は、StatInterval の間に処理された要求の数です。次の 3 つの数字は、StatInterval の間に完了したトランザクションが処理に要した時間の最小値、平均値、最大値をマイクロ秒で表したものです。パーセント記号 (%) の後ろの数字は、StatInterval の間に 15 ミリ秒以内に正常に完了したトランザクションの数です。

600 秒 

0 ~ 600 秒 

SyslogFacility

syslog にレポートするときに使用する機能。syslog デーモンを設定しておくことをお勧めします (詳細は man syslogd.conf を参照)。

同じマシン上で実行中のほかのアプリケーションによって使用されていない機能を使用します。 

syslog ロギングを無効にするには、none に設定します。

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」に設定した場合は、すべてのメッセージが記録されます。

警告 

nonealert errorwarninginfo 

SyslogPrefix

HADB によって書き込まれるすべての syslog メッセージの前に挿入されるテキスト文字列。

hadb -dbname 

 

TakeoverTime

ノードに障害が発生してから、処理がミラーに引き継がれるまでの時間。デフォルト値を変更しないでください。 

10000 (ミリ秒) 

500 ~ 16000 ミリ秒 

JDBC 接続プールの設定

Enterprise Server は Java Database Connectivity (JDBC) API を使用して HADB と通信します。asadmin configure-ha-cluster コマンドは、クラスタの cluster-name の JDBC 接続プールを HADB 用に自動的に作成します。接続プールの名前は「cluster-name-hadb-pool」です。JDBC リソースの JNDI URL は「jdbc/cluster-name-hastore」です。

通常、接続プールは初期設定のままで十分です。ノードを追加する場合は、通常プールサイズを変更して、アクティブな HADB ノードがそれぞれ 8 つの接続を持つようにします。「ノードの追加」を参照してください。

この章の内容は次のとおりです。

接続プールと JDBC リソースに関する一般情報については、『Sun GlassFish Enterprise Server 2.1 高可用性 (HA) 管理ガイド』を参照してください。

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... の部分を、表 11–10 で説明されている serverList 接続プールの値として使用します。

接続プールの作成

次の表に、HADB 用に必須の接続プール設定を要約します。ノードを追加する際には「通常プールサイズ」を変更し、それ以外の設定は変更しないでください。

表 11–9 HADB 接続プール設定

設定 

HADB 用に必要な値 

名前

HADB JDBC リソースの「プール名」設定がこの名前を参照している必要があります 

データベースベンダー

HADB 4.4 

グローバルトランザクションのサポート

チェックしない/False 

データソースクラス名

com.sun.hadb.jdbc.ds.HadbDataSource

通常プールサイズ

アクティブな HADB ノードごとに 8 つの接続を使用します。詳細については、 『System Deployment Guide』を参照してください。

接続検証が必要

チェックする/True 

検証方法

meta-data

テーブル名

指定しない 

すべての障害ですべての接続を閉じる

チェックしない/False 

トランザクション遮断

repeatable-read

遮断レベルを保証

チェックする/True 

次の表に、HADB 用に必須の接続プールのプロパティーを要約します。ノードを追加する際には serverList を変更し、それ以外のプロパティーは変更しないでください。

表 11–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 に設定します。


例 11–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 では、プロパティー値に含まれるコロン文字 (:) は 2 つの円記号 (\\) でエスケープします。Windows では、コロン文字 (:) を 1 つの円記号 (\) でエスケープします。


JDBC リソースの作成

次の表に、HADB 用に必須の JDBC リソース設定を要約します。

表 11–11 HADB JDBC リソース設定

設定 

説明 

JNDI 名

セッション持続性設定のデフォルトの JNDI 名は jdbc/hastore です。このデフォルト名または別の名前を使用することができます。

可用性サービスを使用可能にするには、store-pool-jndi-name「持続性ストア」プロパティーの値にもこの JDNI 名を指定する必要があります。

プール名

リストから、この JDBC リソースが使用する HADB 接続プールの名前 (または ID) を選択します。詳細については、「ネットワーク冗長性の設定」を参照してください。

データソースが有効

チェックする/True 

HADB の管理

通常、ネットワーク、ハードウェア、オペレーティングシステム、または HADB ソフトウェアを交換またはアップグレードする際には、管理オペレーションを実行する必要があります。次の節では、さまざまな管理オペレーションについて説明します。

ドメインの管理

HADB ドメインで、次の操作を実行できます。

コマンドオプションの説明は、「セキュリティーオプション」および 「一般的なオプション」を参照してください。

ドメインの拡張

extenddomain を使用して、既存の管理ドメインにホストを追加します。コマンド構文は次のとおりです。

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

HADB ホストの IP アドレスは、IPv4 アドレスである必要があります。

詳細については、hadbm-extenddomain(1)を参照してください。

ドメインの削除

deletedomain を使用して、管理ドメインを削除します。コマンド構文は次のとおりです。

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 コマンドには、ノードの起動レベルを指定する、1 つの特別なオプション --startlevel (省略形 -l) があります。

ノード起動レベルは次のとおりです。

その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。


例 11–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 コマンドには、停止したノードを置き換えるスペアノードがないことを示す、1 つの特別なオプション --no-repair (省略形 -R) があります。このオプションを使用しない場合は、スペアノードが起動して、停止したノードの機能を引き継ぎます。

その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-stopnode(1)を参照してください。


例 11–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 コマンドには、ノードの起動レベルを指定する、1 つの特別なオプション --startlevel (省略形 -l) があります。詳細については、「起動レベルオプション」を参照してください。

その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-restartnode(1)を参照してください。


例 11–8 ノードを再起動する例

hadbm restartnode 1

データベースの管理

HADB データベースで、次の操作を実行できます。

データベースの起動

データベースを起動するには、hadbm start コマンドを使用します。このコマンドは、データベースが停止する前に実行していたすべてのノードを起動します。停止後にデータベースを起動しても、個別に停止されてオフラインになっているノードは起動されません。

コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

コマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-start(1)を参照してください。


例 11–9 データベースを起動する例

hadbm start

データベースの停止

データベースを停止してから起動するまでの、データベースが停止している間は、データを使用することができません。データを使用可能にするために、「データベースの再起動」で説明されているようにデータベースを再起動できます。

次の目的で、データベースを停止します。

データベースを停止する前に、そのデータベースを使用する依存 Enterprise Server インスタンスを停止するか、またはそれらのインスタンスが ha 以外の「持続型」を使用するように設定します。

データベースを停止すると、データベース内で実行中のすべてのノードが停止し、データベースの状態が「停止中」になります。データベースの状態の詳細については、「データベースの状態」を参照してください。

データベースを停止するには、hadbm stop コマンドを使用します。コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

コマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-stop(1)を参照してください。


例 11–10 データベースを停止する例

hadbm stop

データベースの再起動

タイムアウトの問題が解消されないなどの異常な動作が見られる場合には、データベースの再起動が必要なこともあります。再起動で問題が解決する場合もあります。

データベースを再起動すると、データベースとそのデータは引き続き使用可能です。HADB を停止してから起動するまでの、HADB が停止している間は、データおよびデータベースサービスを使用することができません。これは、デフォルトで hadbm restart がノードの順次再起動を実行するためです。 このときノードは 1 つずつ順番に停止して起動します。一方、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 内の Application Server スキーマデータストア (テーブル、ユーザー名、パスワードを含む) を消去します。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)を参照してください。

表 11–12 hadbm clear オプション

オプション 

説明 

デフォルト 

--fast

-F 

データベースを初期化している間、デバイスの初期化をスキップします。ディスク記憶装置デバイスが破損している場合は、使用しないでください。 

なし 

--spares= number

-s 

再初期化されたデータベースに配置されるスペアノードの数。この数は、偶数かつデータベース内のノードの数より少ない数である必要があります。 

前回のスペアの数 

次に例を示します。

hadbm clear --fast --spares=2

データベースの削除

既存のデータベースを削除するには、hadbm delete コマンドを使用します。このコマンドは、データベースの設定ファイル、デバイスファイル、および履歴ファイルを削除し、共用メモリーリソースを解放します。削除対象のデータベースは、存在していてかつ停止している必要があります。「データベースの停止」を参照してください。

コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

コマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-delete(1)を参照してください。


例 11–11 データベースを削除する例

次のコマンドを見てください。

hadbm delete

は、デフォルトのデータベース hadb を削除します。


データセッション破損からの回復

次のような症状が見られる場合、セッションデータが破損している可能性があります。

Procedureセッションストアを一貫性のある状態に戻すには

セッションストアが破損していると判断する場合には、次の手順に従って一貫性のある状態に戻します。

  1. セッションストアを消去します。

    この処置で問題が正されたかどうかを判定します。問題が正された場合は、これで処置は終わりです。引き続きサーバーログにエラーが表示されるなど、問題が正されていない場合は、処置を継続します。

  2. すべてのノード上のデータスペースを再初期化して、データベース内のデータを消去します。

    「データベースの解除」を参照してください。

    この処置で問題が正されたかどうかを判定します。問題が正された場合は、これで処置は終わりです。引き続きサーバーログにエラーが表示されるなど、問題が正されていない場合は、処置を継続します。

  3. データベースを削除して再作成します。

    「データベースの削除」および 「データベースの作成」を参照してください。

HADB の拡張

元の HADB 設定を拡張する 2 つの理由があります。

この節では、Enterprise Server クラスタまたはデータベースを停止せずに HADB を拡張する方法について説明します。特に、次の点を扱います。

「HADB マシンの管理」にある関連情報も参照してください。

既存ノードへの記憶スペースの追加

次のような場合に、HADB 記憶スペースを追加します。

ノードに使用されていないディスクスペースがある場合やディスク容量を追加する場合は、既存のノードに記憶スペースを追加することもできます。推奨されているデータデバイスサイズについては、「デバイスサイズの指定」を参照してください。

ノードに記憶スペースを追加するには、hadbm set コマンドを使用してデータデバイスサイズを増やします。

コマンド構文は次のとおりです。

hadbm set DataDeviceSize=size

ここで、size は M バイト単位でのデータデバイスサイズです。

コマンドオプションの説明は、「一般的なオプション」を参照してください。

FaultTolerant またはそれ以上のシステム状態にあるデータベースでは、データデバイスサイズを変更することによって、データや可用性を犠牲にすることなくシステムはアップグレードされます。再設定の間も、データベースは稼働状態を維持します。FaultTolerant またはそれ以上の状態ではないシステムでデバイスサイズを変更すると、データの喪失が生じます。データベースの状態の詳細については、「データベースの状態」を参照してください。


例 11–12 データデバイスサイズを設定する例

次に示すのは、データデバイスサイズを設定するコマンドの例です。

hadbm set DataDeviceSize=1024

マシンの追加

HADB が処理能力や記憶容量をさらに必要としている場合には、マシンを追加します。HADB を実行するマシンを新たに追加するには、第 10 章高可用性 (HA) データベースのインストールと設定で説明されている手順に従って、HADB パッケージをインストールします。このとき、Enterprise Server を一緒にインストールしてもしなくてもかまいません。代替のノードトポロジについては、docs.sun.com で『Sun GlassFish Enterprise Server 2.1 配備計画ガイド』の「トポロジの選択」の章を参照してください。

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 です。データベースの状態は、HAFaultTolerant またはFaultTolerant である必要があります。データベースの状態の詳細については、「データベースの状態」を参照してください。

--devicepath--historypath オプションを指定しない場合、新規ノードは既存データベースと同じデバイスパスを持ち、同じ履歴ファイルを使用します。

ノードを追加すると、既存データの再断片化と再配布が実行されて、システムに新規ノードが組み込まれます。オンラインで再断片化を実行するには、再断片化が終了するまで古いデータと新しいデータを同時に保持できるだけの十分なスペースが HADB ノードのディスクに必要です。つまり、ユーザーデータサイズは、ユーザーデータに使用可能なスペースの 50% を超えてはいけません。詳細については、「デバイス情報の取得」を参照してください。


注 –

システムの負荷が軽いときにノードを追加するのが最善です。



例 11–13 ノードを追加する例

次に例を示します。

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

次の表で、hadbm addnodes の特別なコマンドオプションについて説明します。その他のオプションの説明は、「一般的なオプション」を参照してください。

表 11–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 

データベース内の新規ノード用の新しいホスト名を一覧にしたコンマ区切りリスト。リスト中のコンマで区切られた項目ごとに 1 つのノードが作成されます。ノードの数は偶数でなければなりません。HADB ホストの IP アドレスは、IPv4 アドレスである必要があります。 

重複するホスト名を使用すると、同じマシン上に異なるポート番号が指定された複数のノードが作成されます。同じマシン上のノードがミラーノードではないことを確認してください。 

奇数番号のノードが一方の DRU に配置され、偶数番号のノードは他方の DRU に配置されます。--spares を使用すると、もっとも大きい番号のノードが新規スペアノードとなります。

二重のネットワークインタフェースを持つデータベースを作成した場合も、同じ方法で新規ノードを構成する必要があります。「ネットワーク冗長性の設定」を参照してください。

なし 

データベースの再断片化

データベースを再断片化して、新たに作成したノードにデータを格納します。再断片化により、すべてのアクティブなノードにデータが均一に分散します。

データベースを再断片化するには、hadbm refragment コマンドを使用します。コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。データベースの状態は、HAFaultTolerant またはFaultTolerant である必要があります。データベースの状態の詳細については、「HADB の状態の取得」を参照してください。

コマンドオプションの説明は、「一般的なオプション」を参照してください。詳細については、hadbm-refragment(1)を参照してください。

オンラインで再断片化を実行するには、再断片化が終了するまで古いデータと新しいデータを同時に保持できるだけの十分なスペースが HADB ノードのディスクに必要です。つまり、ユーザーデータサイズは、ユーザーデータに使用可能なスペースの 50% を超えてはいけません。詳細については、「デバイス情報の取得」を参照してください。


注 –

システムの負荷が軽いときにデータベースを再断片化するのが最善です。


何回試してもこのコマンドが失敗する場合は、「データベースの再作成によるノードの追加」を参照してください。


例 11–14 データベースを再断片化する例

次に例を示します。

hadbm refragment

データベースの再作成によるノードの追加

新規ノードを追加して、データデバイススペースの不足やその他の理由からオンラインでの再断片化が何度も失敗する場合は、新規ノードを持つデータベースを再作成します。これは、既存のユーザーデータとスキーマデータの喪失を招きます。

Procedureデータベースの再作成によりノードを追加する

次の手順により、プロセス全体の HADB 可用性を維持することができます。

  1. 各 Enterprise Server インスタンスに対して、次のようにします。

    1. ロードバランサの Enterprise Server インスタンスを無効にします。

    2. セッション持続性を無効にします。

    3. Enterprise Server インスタンスを再起動します。

    4. ロードバランサの Enterprise Server インスタンスを再度有効にします。

    可用性を維持する必要がない場合は、ロードバランサのすべてのサーバーインスタンスを無効にしてすぐに再度有効にできます。こうすることで、時間を節約するとともに、古いセッションデータのフェイルオーバーを防ぎます。

  2. 「データベースの停止」で説明されている手順に従って、データベースを停止します。

  3. 「データベースの削除」で説明されている手順に従って、データベースを削除します。

  4. 「データベースの作成」で説明されている手順に従って、追加のノードでデータベースを再作成します。

  5. 「JDBC 接続プールの設定」で説明されている手順に従って、JDBC 接続プールを再設定します。

  6. セッション持続性ストアを再ロードします。

  7. 各 Enterprise Server インスタンスに対して、次のようにします。

    1. ロードバランサの Enterprise Server インスタンスを無効にします。

    2. セッション持続性を有効にします。

    3. Enterprise Server インスタンスを再起動します。

    4. ロードバランサの Enterprise Server インスタンスを再度有効にします。

    可用性を維持する必要がない場合は、ロードバランサのすべてのサーバーインスタンスを無効にしてすぐに再度有効にできます。こうすることで、時間を節約するとともに、古いセッションデータのフェイルオーバーを防ぎます。

HADB の監視

次の方法で、HADB のアクティビティーを監視できます。

これらの節では、hadbm statushadbm deviceinfo、および hadbm resourceinfo コマンドについて簡潔に説明します。HADB 情報の解釈については、『Sun GlassFish Enterprise Server 2.1』の「Performance」の章を参照してください。

HADB の状態の取得

hadbm status コマンドを使用して、データベースまたはそのノードの状態を表示します。コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

--nodes オプション (省略形 -n) は、データベース内の各ノードに関する情報を表示します。詳細については、「ノードの状態」を参照してください。その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。

詳細については、hadbm-status(1)を参照してください。


例 11–15 HADB 状態を取得する例

次に例を示します。

hadbm status --nodes

データベースの状態

データベースの状態には、データベースの現在の状況が要約されます。次の表で、データベースが取りうる状態の種類について説明します。

表 11–14 HADB の状態

データベースの状態 

説明 

高可用性耐障害 (HAFaultTolerant) 

データベースに耐障害性があり、DRU ごとに少なくとも 1 つのスペアノードを備えている。 

耐障害 

すべてのミラーノードペアが実行中である。 

稼働 

各ミラーノードペア内の少なくとも 1 つのノードが実行中である。 

非稼働 

1 つ以上のミラーノードペアで、両方のノードがなくなっている。 

データベースが非稼働状態である場合は、「データベースの解除」で説明されている手順に従って、データベースを解除します。

停止 

データベース内に実行中のノードがない。 

不明 

データベースの状態を判定できない。 

ノードの状態

--nodes オプションを使用して、hadbm status コマンドでデータベース内の各ノードに関する次の情報を表示させます。

次の節に説明されているように、ノードのロールと状態は変更される場合があります。

ノードのロール

ノードには作成時にロールが割り当てられます。次のいずれかのロールを担います。

ノードの状態

ノードは次のいずれかの状態になります。

デバイス情報の取得

次の目的で、HADB データ (ディスク記憶装置) デバイスの空き領域を監視します。

hadbm deviceinfo コマンドを使用して、データデバイス内の空き領域に関する情報を取得します。このコマンドを実行すると、データベースの各ノードについて次の情報が表示されます。

コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

--details オプションを指定すると、次の追加情報が表示されます。

その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。

詳細については、hadbm-deviceinfo(1)を参照してください。

ユーザーデータ用に使用可能な空き容量を算定するには、合計デバイスサイズから HADB 用に予約済みの容量 (LogBufferSize の 4 倍 + デバイスサイズの 1%) を減算します。ログバッファーのサイズがわからない場合は、コマンド hadbm get logbufferSize を使用してください。たとえば、合計デバイスサイズが 128M バイトで LogBufferSize が 24M バイトの場合、ユーザーデータ用に使用可能な容量は 128 – (4 x 24) = 32M バイトです。この 32M バイトのうち、半分はレプリケートデータ用に使用され、約 1 % が索引用に使用されるため、実ユーザーデータに使用できるのは 25 % だけです。

ユーザーデータに使用可能な容量は、合計サイズと予約済みサイズの差です。将来的にデータを再断片化するのであれば、空き容量がユーザーデータに使用可能な領域の 50% にほぼ等しくなるようにする必要があります。再断片化がふさわしくない場合は、データデバイスを最大限度まで活用することができます。システムのデバイス容量が不足すると、リソース消費警告が履歴ファイルに書き込まれます。

HADB の調整に関する詳細については、『Sun Java System Application Server パフォーマンスチューニングガイド』を参照してください。


例 11–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 GlassFish Enterprise Server 2.1 配備計画ガイド』の「Tuning HADB」の章を参照してください。

コマンド構文は次のとおりです。

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

dbname オペランドにはデータベース名を指定します。デフォルトは hadb です。

次の表で、hadbm resourceinfo の特別なコマンドオプションについて説明します。その他のコマンドオプションの説明は、「一般的なオプション」を参照してください。

詳細については、hadbm-resourceinfo(1)を参照してください。

表 11–15 hadbm resourceinfo コマンドオプション

オプション 

説明 

--databuf

-d 

データバッファープール情報を表示します。 

詳細については、下記 「データバッファープール情報」を参照してください。

--locks

-l 

ロック情報を表示します。 

詳細については、下記 「ロック情報」を参照してください。

--logbuf

-b 

ログバッファー情報を表示します。 

詳細については、下記 「ログバッファー情報」を参照してください。

--nilogbuf

-n 

ノードの内部ログバッファー情報を表示します。 

詳細については、下記 「ノード内部ログバッファー情報」を参照してください。

データバッファープール情報

データバッファープール情報には、次の内容が含まれます。

ユーザートランザクションがレコードに対して操作を実行するときには、そのレコードを含むページはデータバッファープール内になければなりません。そのようになっていないと、miss、つまりページフォルトが発生します。すると、ディスク上のデータデバイスフィルからページが取り出されるまで、トランザクションは待機する必要があります。

ミスの比率が高い場合は、データバッファープールを増やしてください。ミスのカウントは累積回数なので、定期的に hadbm resourceinfo を実行し、二回分のカウントの差を調べて、ミスの比率の傾向を確認します。空き容量が非常に少ないとしても、チェックポイントメカニズムによって新たに使用可能なブロックが作成されるので、心配する必要はありません。


例 11–17 データバッファープール情報の例

次に例を示します。


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

ロック情報

ロック情報には、次の内容が含まれます。

1 つのトランザクションが、ノード上で利用可能なロックの 25% を超えて使用することはできません。そのため、規模の大きい操作を実行するトランザクションは、この制限を認識している必要があります。そのようなトランザクションはバッチ処理で実行するのが最善です。その場合、それぞれのバッチは別個のトランザクションとして扱われ、バッチごとにコミット操作を行うことになります。このような操作が必要となるのは、repeatable read 遮断レベルで実行する read 操作と、deleteinsert、および update 操作が、トランザクション終了後にのみ解放されるロックを使用するからです。

NumberOfLocks を変更するには、「履歴ファイルの消去と保存」を参照してください。


例 11–18 ロック情報の例

次に例を示します。


NodeNO Avail Free Waits
0 50000 20000 101 50000 20000 0

ログバッファー情報

ログバッファー情報には、次の内容が含まれます。

空き容量が非常に少ないとしても、HADB がログバッファーの圧縮を開始するので、心配する必要はありません。HADB は、リングバッファーの先頭から圧縮を開始し、連続するログレコードに対して圧縮を実行します。ノードが実行していないのにミラーノードが受信しているログレコードを HADB が検出すると、圧縮は続行できなくなります


例 11–19 ログバッファー情報の例

次に例を示します。


NodeNO Avail Free
0 16 21 16 3

ノード内部ログバッファー情報

ノード内部ログバッファー情報には、次の内容が含まれます。


例 11–20 内部ログバッファー情報の例

次に例を示します。

NodeNO Avail Free

0 16 21 16 3


HADB マシンの管理

HADB は、ミラーノードにデータをレプリケートすることによって耐障害性を実現します。本稼働環境では、ミラーノードはミラー化するノードとは別の DRU 上にあります。

障害とは、ハードウェアの故障、停電、オペレーティングシステムの再起動など予期しない出来事のことです。HADB は、単一の障害に対する耐性を備えています。 したがって、単一のノード、ミラーノードペアを持たない単一のマシン、同一の DRU に属する 1 つ以上のマシン、単一の DRU 全体などが対象となります。しかし HADB は、二重障害、すなわち 1 つ以上のミラーノードペアで同時に起きた障害からは自動的に回復しません。二重障害が起きた場合は、HADB を解除してセッションストアを再作成する必要があり、このとき HADB のデータはすべて消去されます。

対象のマシンが 1 つか複数かに応じて、保守手順は異なります。

Procedure単一のマシンに対して保守を実行する

この手順は計画的な保守と予定外の保守の両方に適用でき、それによって HADB の利用が中断されることはありません。

  1. 保守手順を実行し、マシンを稼働状態にします。

  2. ma が実行中であることを確認します。

    ma が Windows サービスとして実行されているか、または init.d スクリプトの下で実行されている場合 (配備環境で推奨されている方法)、おそらくそれはオペレーティングシステムによって起動されています。そうでない場合は ma を手動で起動します。「管理エージェントの起動」を参照してください。

  3. マシン上のすべてのノードを起動します。

    詳細については、「ノードの起動」を参照してください。

  4. ノードがアクティブで実行状態であるかどうかを確認します。

    詳細については、「HADB の状態の取得」を参照してください。

Procedureすべての HADB マシンに対して計画的な保守を実行する

計画的な保守には、ハードウェアとソフトウェアのアップグレードなどの操作が含まれます。この手順によって HADB の利用が中断されることはありません。

  1. 1 つ目の DRU 内の各スペアマシンに対して、「単一のマシンに対して保守を実行する」で説明されている手順に従って、単一マシン用の手順を順番に繰り返します。

  2. 1 つ目の DRU 内のアクティブな各マシンに対して、「単一のマシンに対して保守を実行する」で説明されている手順に従って、単一マシン用の手順を順番に繰り返します。

  3. 2 番目の DRU に対して、ステップ 1 と 2 を繰り返します。

Procedureすべての HADB マシンに対して計画的な保守を実行する

この手順は、HADB が 1 つまたは複数のマシン上に配置されている場合に適用されます。保守手順の実行中は、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 カスタマサポートにご連絡ください。