日曜日 7 12, 2009

OpenMQ/WebLogic JMSメッセージ管理ツールQBrowserのバージョン2.5.1をリリースしました。

ちょっとツリービューを追加してみました。
ドラッグアンドドロップも可能です。

詳しくはリリースノートをご覧ください。

日曜日 7 05, 2009

OpenMQ/WebLogic JMSメッセージ管理ツールQBrowserのバージョン2.5.0をリリースしました。

変更概要は以下の通りです。
[ローカルメッセージ]
・メッセージをzip形式のファイルに保存することが可能。
・保存したローカルメッセージは、QBrowser共通フォーマットであるため、どのMQ用のQBrowserでも
使用可能(開いたり、ドロップしたりできる:OpenMQ⇔WebLogicなど)
・保存したメッセージファイルを任意の宛先にドロップ可能
・保存したメッセージを元に新規作成パネルを開く
・メッセージのコピー/ペースト(ローカルストア→任意宛先)

[ローカルストア]
・ローカルフォルダに紐づく、QBrowser内で利用可能な仮想宛先
・通常の宛先と同じように、以下が可能
- 通常宛先(Queue, Topic)からローカルストアへメッセージを転送(コピー)
- ローカルストアから通常宛先へメッセージを転送
・ローカルストアへ転送されたメッセージはファイルとして永続化。
・特定のTopicメッセージの受信をトリガに、メッセージを自動でローカルストアへコピーする設定が可能
(Topicタブ、ローカルストアタブを右クリック)
・ローカルストア内のメッセージをコピー/他の宛先へペースト

[javax.jms.StreamMessage, javax.jms.Messageサポート]
・送信、転送、閲覧が可能
・これらの情報を流用して新規作成パネルを開く

[送信パネル]
・TextMessageボディ/Userプロパティ/StreamMessage/MapMessageのString属性編集パネルに、テキストファイルをドラッグアンドドロップすると中身をパネルにコピー

[その他]
・進捗ダイアログウインドウの高速化/バッファリング改善
・キーショートカット機能追加
・メッセージ一覧情報を作成するときには、一覧に必要な情報以外は保持しない。
必要になった時点でオンデマンドでメモリに展開する。(メモリ節約)

ローカルストアパネル

金曜日 6 12, 2009

OpenMQ/WebLogic MQ用 JMSメッセージ管理ツール「QBrowserV2」のバージョン2.4.0をリリースしました。

メッセージパネル(編集、詳細)を中心にリニューアルしました。

以下からQBrowserV2_2.4.0をダウンロードしてください。詳しい使い方はZIPを解凍して出てくる「ForOpenMQ起動方法ReadMe.txt」と「ForWebLogic起動方法ReadMe.txt」をご覧ください。

変更概要は以下の通りです。
・MapMessage対応(入力、表示)
・メッセージパネルを表ベースにリニューアル(JMSヘッダ、ユーザプロパティ、MapMessage)
・Stringプロパティ選択時のエディタ画面
・その他BugFix
(詳しくはリリースノートをご覧ください)

金曜日 5 08, 2009

こんにちは。
5月の連休の合間を利用して、Myはうすが提供しているメッセージキュー管理ツールを更新してみました。今回のリリース(2.3.0)でWebLogic MQに対応しました。

以下からQBrowserV2_2.3.0をダウンロードしてください。詳しい使い方はZIPを解凍して出てくる「ForOpenMQ起動方法ReadMe.txt」と「ForWebLogic起動方法ReadMe.txt」をご覧ください。

UIはJIDE Common Layer Open Source Projectを使用しリニューアルしました。OSSのパワーを実感した開発の日々(正味3日)でした。。。

変更概要は以下の通りです。

・WebLogic MQに対応 (付属のrun_wls_mq.bat/run_wls_mq_for_default_install_location.batを使用)
・JIDE Common Layer(OSS:https://jide-oss.dev.java.net/)を使用し、UIをリニューアル
・完全国際化(日本語、英語)

[UI部変更]
・宛先コンボボックスにTOPIC名も表示
・メッセージテーブルをタブ化し、複数宛先を並行表示
・アイコンメニュー追加

[追加機能]
・TOPICサブスクライブ(購読)メニュー/ボタン追加
・サブスクライブ(購読)一時停止/再開機能
・メッセージテーブルの行を右クリック→選択メッセージ転送
・メッセージテーブルの行を右クリック→選択メッセージ削除
・宛先リスト更新機能(QBrowser外で追加されたものを出す)
・ルックアンドフィール動的変更メニュー
・メッセージ送信時、永続化モードと圧縮モード選択

[仕様変更]
・起動時にJMSサーバに接続出来ない場合、エラーダイアログボックスとヒントを表示
・使用中にJMSサーバとの接続が切れた場合、別スレッドでバックグラウンドで接続試行
・宛先名を選択すると、選択された宛先タブが表示される(タブがない場合作成)
・削除最適化/スピードアップ
・テーブル全選択時、「全て選択」が「選択解除」へ
・(2.2.0から)宛先名を空欄にしてsearchすると、現在の全宛先を対象に検索

[WebLogic MQ]
・宛先自動検索機能(キュー、トピック、分散キュー/分散トピックなど)

GPLv2ライセンスですので、ソースコード含めご自由にお使いくださいませ。
バグレポートなどご協力いただけると幸いです・・・

土曜日 4 18, 2009

こんにちは。キューデータ管理ツールQBrowserV2に少しだけ機能追加してみました。
久々の更新ということでバージョンはV2.2.0としました。

以下からQBrowserV2_2.2.0をダウンロードしてください。

[追加機能]
Browseボタンの右に「Search」ボタンを追加し、メッセージの検索機能を追加しました。

Searchボタンを押すと、メッセージ検索ウィンドウがポップアップします。検索したい宛先名と必要があればメッセージセレクタ文字列を入力して、OKボタンを押せば検索結果がメインウインドウに表示されます。メッセージセレクタはJMS仕様のMessageSelector構文を使用します(少しSQLに似ています)。メッセージセレクタ文字列を入力しないと指定された宛先のメッセージを全件出力します。

メッセージセレクタにちょっと取っ付きにくいという方のために、だいたいの構文を集めたテンプレートを付けています。また、セレクタ文字列を入力して検索すると、文字列が履歴としてテンプレートに入るようになっています。

[オマケ]
各種情報照会ウィンドウの文字ずれが出ないようにしてみました。もう少しすっきり見えると思います。

金曜日 10 26, 2007

前回はHADB自体の設定を行いました。
今回はMQ側をHADBを使うように設定してみたいと思います。

MQ側のコンフィグ設定

1.HADBのJDBCURLを取得する

-bash-3.00# ./hadbm get --all hastore
Please enter the password for the admin system user:***********
2007-10-04 06:52:48.394 INFO    hadbm get --all=true --quiet=false --version=false --yes=false --force=false --echo=false
Attribute             Value
ConnectionTrace       false
CoreFile              false
DataBufferPoolSize    200
DataDeviceSize        1024
DevicePath            /opt/SUNWappserver/hadb/4.4.3-6/device
EagerSessionThreshold 50
EagerSessionTimeout   120
EventBufferSize       0
HistoryPath           /opt/SUNWappserver/hadb/4.4.3-6/history
InternalLogBufferSize 12
JdbcUrl               jdbc:sun:hadb:129.158.34.188:15005,129.158.34.187:15045,129.158.34.188:15025,129.158.34.187:15065
LogBufferSize         48
MaxTables             1100
NumberOfDataDevices   1
NumberOfLocks         50000
NumberOfSessions      100
PackageName           V4.4.3.6
PortBase              15000
RelAlgDeviceSize      128
SessionTimeout        1800
SQLTraceMode          none
StartRepairDelay      20
StatInterval          600
SysLogFacility        local0
SysLogLevel           WARNING

2.これの以下の部分をNotepadなどにメモしておく
JdbcUrl               jdbc:sun:hadb:129.158.34.188:15005,129.158.34.187:15045,129.158.34.188:15025,129.158.34.187:15065

3.config.propertiesに以下を設定
config.propertiesは、

<<MQインストールフォルダ>>\mq\var\instances\<<ブローカ名>>\\props

フォルダにあります。もし<<ブローカ名>>フォルダがまだ存在しない場合には以下のコマンドで
ブローカ定義を作ってください
#UNIXは
/var/imq/instances/ブローカ名/props

にあります。

コマンドの例

cd C:\software\MQ4.1\mq\bin
imqbrokerd -name broker1 -port 7676

config.properties中の最後の部分に以下を設定

imq.instanceconfig.version=300
imq.brokerid=broker1
imq.persist.store=jdbc
imq.persist.jdbc.dbVendor=hadb
# Replace 'server list' with your comma-separated list of servers.
imq.persist.jdbc.hadb.property.serverList=129.158.34.188:15005,129.158.34.187:15045,129.158.34.188:15025,129.158.34.187:15065
# Replace username.
imq.persist.jdbc.hadb.user=system
imq.persist.jdbc.hadb.needpassword=true
imq.persist.jdbc.hadb.password=adminadmin

・imq.persist.jdbc.hadb.property.serverListにはさきほどメモしておいたJDBCURLを「jdbc:sun:hadb:」を抜いた形で指定します。

broker2用

imq.instanceconfig.version=300
imq.brokerid=broker2
imq.persist.store=jdbc
imq.persist.jdbc.dbVendor=hadb
# Replace 'server list' with your comma-separated list of servers.
imq.persist.jdbc.hadb.property.serverList=129.158.34.188:15005,129.158.34.187:15045,129.158.34.188:15025,129.158.34.187:15065
# Replace username.
imq.persist.jdbc.hadb.user=system
imq.persist.jdbc.hadb.needpassword=true
imq.persist.jdbc.hadb.password=adminadmin

broker3用

imq.instanceconfig.version=300
imq.brokerid=broker3
imq.persist.store=jdbc
imq.persist.jdbc.dbVendor=hadb
# Replace 'server list' with your comma-separated list of servers.
imq.persist.jdbc.hadb.property.serverList=129.158.34.188:15005,129.158.34.187:15045,129.158.34.188:15025,129.158.34.187:15065
# Replace username.
imq.persist.jdbc.hadb.user=system
imq.persist.jdbc.hadb.needpassword=true
imq.persist.jdbc.hadb.password=adminadmin

4.<<MQインストールフォルダ>>\mq\lib\extにhadbjdbc4.jarをコピーする

コピー先例:C:\software\MQ4.1\mq\lib\ext

#Unixでは/usr/share/lib/imq/ext

hadbjdbc4.jarの格納場所は9.1withHADBの<<インストールディレクトリ>>\hadb\4.4.3-6\lib

例:
C:\Sun\AppServer91withHADB\hadb\4.4.3-6\lib
#UNIXでは
/opt/SUNWappserver/hadb/4.4.3-6/lib

5.Q4.1を起動します

C:\Sun\MQ4.1\mq\bin>imqbrokerd -name broker1 -port 7676 -tty
[22/9/2007:23:56:59 JST]
==================================================================
Sun Java(tm) System Message Queue 4.1
Sun Microsystems, Inc.
バージョン:  4.1  (Build 36-e)
コンパイル:  Thu 07/26/2007

Copyright (c) 2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
==================================================================
Java ランタイム: 1.5.0_12 Sun Microsystems Inc. D:\jdk1.5.0_12\jre
[22/9/2007:23:56:59 JST] ライセンス: Sun Java(tm) System Message Queue 4.1 Enterprise Edition
[22/9/2007:23:56:59 JST]    IMQ_HOME=C:\Sun\MQ4.1\mq
[22/9/2007:23:56:59 JST] IMQ_VARHOME=C:\Sun\MQ4.1\mq\var
[22/9/2007:23:56:59 JST] Windows XP 5.1 x86 psq96026.Japan.Sun.COM (1 cpu) Administrator
[22/9/2007:23:56:59 JST] Java ヒープサイズ: 最大=194432k、現在=16256k
[22/9/2007:23:56:59 JST] 引数: -tty
[22/9/2007:23:56:59 JST] [B1203]: broker1 のブローカ ID から開始します
[22/9/2007:23:56:59 JST] [B1004]: 最小スレッド 1 および最大スレッド 1 と tcp [ 7676, 50, * ] を使用して portmapper サービスを開始します
[22/9/2007:23:56:59 JST] [B1060]: 持続データの読み込み中...
[22/9/2007:23:57:01 JST] プラグイン持続ストアの使用:
        version=410
        brokerid=broker1
        database connection url=129.158.34.188:15005,129.158.34.188:15025
        database user=system
[22/9/2007:23:57:01 JST] [B1170]: プラグイン持続ストアの自動作成が有効です
[22/9/2007:23:57:01 JST] 警告 [B4239]: データベーステーブル MQVER41Sbroker1 から持続ストアバージョンを読み込めませんでした:
java.sql.SQLException: [SELECT STORE_VERSION FROM MQVER41Sbroker1]: HADB-E-11701: Table mqver41sbroker1 not found
[22/9/2007:23:57:01 JST] [B1114]: 持続的ストアが新規に作成されます...
[22/9/2007:23:57:01 JST] データベーステーブル MQVER41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQBKR41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQSES41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQPROP41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQCREC41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQCON41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQCONSTATE41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQDST41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQMSG41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] データベーステーブル MQTXN41Sbroker1 を作成しています...
[22/9/2007:23:57:02 JST] [B1041]: クラスタの初期化に成功しました。
[22/9/2007:23:57:02 JST] [B1004]: 最小スレッド 1 および最大スレッド 1 と tcp [ 0, 100 ] を使用して cluster_discovery サービスを開始します
[22/9/2007:23:57:02 JST] [B1136]: ストアードトランザクションの処理中
[22/9/2007:23:57:02 JST] [B1284]: 0 のクラスタトランザクションが PREPARED 状態のままですが、0 は COMMITTED 状態にあり、リモートブローカが完了するのを待っています
[22/9/2007:23:57:02 JST] 0 のリモートトランザクションのうち、0 が PREPARED 状態、0 が COMMITTED 状態にあります
[22/9/2007:23:57:02 JST] [B1013]: キューの自動作成が有効です
[22/9/2007:23:57:02 JST] [B1144]: デッドメッセージキューの作成中
[22/9/2007:23:57:02 JST] [B1158]: 管理者が送信先 mq.sys.dmq [キュー] を作成しました
[22/9/2007:23:57:03 JST] [B1239]: プラットフォーム MBean サーバーを使用します
[22/9/2007:23:57:03 JST] JESMF classes not present - JESMF support will not be enabled.
[22/9/2007:23:57:03 JST] JMX コネクタサーバー jmxrmi は URL service:jmx:rmi://psq96026/stub/rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LnJlbW90ZS5ybWkuUk1JU2VydmVySW1wbF9TdHViAAAAAAAAAAICAAB4cgAaamF2YS5ybWkuc2VydmVyLlJlbW90ZVN0dWLp/tzJi+FlGgIAAHhyABxqYXZhLnJtaS5zZXJ2ZXIuUmVtb3RlT2JqZWN002G0kQxhMx4DAAB4cHc5AAtVbmljYXN0UmVmMgAADjEyOS4xNTAuMTU0LjI5AAAHJQAAAAAAAAAACB+VdgAAARUtuL/XgAAAeA== で正常に起動しました
[22/9/2007:23:57:04 JST] [B1004]: 最小スレッド 4 および最大スレッド 10 と tcp(host = *, port=0, mode=dedicated) を使用して admin サービスを開始します
[22/9/2007:23:57:04 JST] [B1227]: admin サービス接続認証に file ユーザーリポジトリを使用します
[22/9/2007:23:57:04 JST] [B1004]: 最小スレッド 10 および最大スレッド 1000 と tcp(host = *, port=0, mode=dedicated) を使用して jms サービスを開始します
[22/9/2007:23:57:04 JST] [B1227]: jms サービス接続認証に file ユーザーリポジトリを使用します
[22/9/2007:23:57:04 JST] [B1004]: 最小スレッド 1 および最大スレッド 1 と tcp [ 0.0.0.0/0.0.0.0:1832 ] を使用して cluster サービスを開始します
[22/9/2007:23:57:04 JST] [B1228]: クラスタの ping 間隔は 60 秒です
[22/9/2007:23:57:04 JST] [B1039]: ブローカ "imqbroker@psq96026.Japan.Sun.COM:7676" の準備ができました。

同様にbroker2とbroker3のインスタンスも起動します。

C:\Sun\MQ4.1\mq\bin>imqbrokerd -name broker2 -port 7677 -tty
C:\Sun\MQ4.1\mq\bin>imqbrokerd -name broker3 -port 7678 -tty

6.QK2などのツールにてテストします。

MQ稼動中に、HADBの片方のノードをストップさせるなど
可用性をテストしてみてください。

次回は、HADBのノードを別の物理マシンに追加してOSレベルまたはハードウエアでの障害に対応できるように
HADBを設定してみたいと思います。

月曜日 10 22, 2007

前回はHADBをマシンにインストールしてみました。今回はインストールしたHADB上にドメインとDBを作成して
HADBをFaultTorelant状態に持っていくまでを説明します。
(まだ、1つのマシンにしかノードは作成しません)

[参考:HADBの対障害ステータスについて]
以下の6つのステータスのどれかになります。
・HAfaultTolerant
・FaultTolerant
・Operational
・Non Operational
・Stopped
・Unknown

[各ステータスの説明]
・HAfaultTolerant
DBはフォールトトレラント(対障害状態)にあり、スペアノードがDRU(冗長ユニット)1つにつき最低1つあります。
スペアノードがあると、ノードのペアのうちどちらかが破壊されてもOperational状態に落ちずに
破壊されたノードの代わりにスペアノードが本ノードに「昇格」してサービスを続けます。
スペアを全て使ってしまった場合はHADBのステータスはFaultTolerantになります。

・FaultTolerant
DRUの全てのミラーノードのペアが正常に稼動している状態です。FaultTolerant状態ではどこかのノードに障害が発生するとペアを維持できなくなりますが、サービス自体には影響はありません。FaultTolerant状態で片方のノードに障害が起きた場合はHADBのステータスはOperationalとなります。

・Operational
ミラーノードのどちらか一方だけ稼動している状態です。この状態のまま稼動中のノード(既に相方を失っている)がクラッシュするとサービスが停止してしまいます。早急にFaultTolerantより上の状態に戻す必要があります。

・Non Operational
DRU間でノードのペアが丸ごとダウンしている状態です。この状態ではDBはサービスを行うことができません。

・Stopped
DB中で稼動しているノードが1つも存在しない状態です。DB起動前または、hadbm stopコマンドが完了するとこの状態になります。

・Unknown
状態が不明の場合です。

#今回の設定ですと同じマシンにDRUを2つインストールしてしまうので、HADBをインストールしたマシンがクラッシュするとHADBのサービスを継続することができなくなります。
マシンのクラッシュではなく、片方のノードのプロセス障害の場合はHADBは何ら問題なくサービスを提供することができます。
次回、他の物理マシンにもノードを追加して片方のマシンクラッシュに対応できる構成を説明します。

[設定概要]
0.マネージメントエージェントの起動
1.HADBドメインを作成
2.DBをドメイン中に作成
3.SQLでのテスト

0.MAがインストール・起動していなければインストールと起動
windows

cd C:\Sun\HADB\hadb\4.4.3-6\bin
ma -i ma.cfg
net start HADBMgmtAgent

solaris

cd /opt/SUNWappserver/hadb/4/bin
./ma-initd start

マネージメントエージェントとは、HADBの各ノードの管理と監視を行うプロセスです。hadbmコマンドを発行する場合はMAを起動しておく必要があります。

1.マネージメントドメインの作成
windows

hadbm createdomain --adminpassword=adminadmin localhost

solaris

./hadbm createdomain --adminpassword=adminadmin 129.158.34.188

マネージメントドメインはどのホストにDBノードを載せることができるかを管理しています。ノードを作成したい全てのホスト名/IPアドレスがマネージメントドメインに含まれている必要があります。(作成後にhadbm extenddomainコマンドでホストを増やすこともできます)

2.DBの作成

windows

hadbm create --devicesize 1024 --hosts testhost1,testhost1

solaris

./hadbm create --devicesize 1024 --hosts 129.158.34.188,129.158.34.188

--hostsには、HADBのノードをどのホスト(マシン)に作成するかを指定します。
今回は最初の設定ですので、同一マシンに2つのDRUを載せるように設定してみます。この場合は同じホスト名を2回、カンマで区切って指定します。(4つ指定したい場合は4つホスト名をカンマで区切って指定します)。ノードはかならず2以上の偶数で指定する必要があります。

-bash-3.00# ./hadbm create --devicesize 1024 --hosts 129.158.34.188,129.158.34.188
Please enter the password for the database system user:***********
Please retype the password for database system user:***********
WARNING: The --dbpassword option is deprecated since it is insecure. Using this option can compromise your password. Please use either the command prompt or the --dbpasswordfile option.
Please enter the password for the admin system user:***********
2007-09-22 15:59:48.145 INFO    hadbm create --devicesize=1024 --hosts=129.158.34.188,129.158.34.188 --datadevices=1 --no-cleanup=false --no-clear=false --quiet=false --version=false --yes=false --force=false --echo=false --dbpassword=******
2007-09-22 16:00:03.322 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.data-0.1 for node hadb:1
2007-09-22 16:00:03.323 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.noman.1 for node hadb:1
2007-09-22 16:00:03.323 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.relalg.1 for node hadb:1
2007-09-22 16:00:03.324 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.nilog.1 for node hadb:1
2007-09-22 16:00:03.331 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.noman.0 for node hadb:0
2007-09-22 16:00:03.383 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.data-0.0 for node hadb:0
2007-09-22 16:00:03.425 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.nilog.0 for node hadb:0
2007-09-22 16:00:03.450 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hadb.relalg.0 for node hadb:0
2007-09-22 16:00:39.767 INFO    Starting node hadb:1 at level firststart, config version 1, in order to start database
2007-09-22 16:00:39.796 INFO    n:1 NSUP   INF 2007-09-22 16:00:39.795 p:4417 Legal realtime priorities are 0 (lowest) to 59 (highest) set it to:29
2007-09-22 16:00:42.431 INFO    Starting node hadb:0 at level firststart, config version 1, in order to start database
2007-09-22 16:00:42.492 INFO    n:0 NSUP   INF 2007-09-22 16:00:42.491 p:4420 Legal realtime priorities are 0 (lowest) to 59 (highest) set it to:29
Database hadb successfully created and started.

db名をhadbで作成する場合

./hadbm create --devicesize 1024 --hosts 129.158.34.188,129.158.34.188

db名をhastoreで作成する場合

-bash-3.00# ./hadbm create --devicesize 1024 --hosts 129.158.34.188,129.158.34.188 hastore
Please enter the password for the database system user:***********
Please retype the password for database system user:***********
WARNING: The --dbpassword option is deprecated since it is insecure. Using this option can compromise your password. Please use either the command prompt or the --dbpasswordfile option.
Please enter the password for the admin system user:***********
2007-09-22 16:11:13.303 INFO    hadbm create --devicesize=1024 --hosts=129.158.34.188,129.158.34.188 --datadevices=1 --no-cleanup=false --no-clear=false --quiet=false --version=false --yes=false --force=false --echo=false --dbpassword=****** hastore
2007-09-22 16:11:28.130 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.nilog.0 for node hastore:0
2007-09-22 16:11:28.130 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.relalg.0 for node hastore:0
2007-09-22 16:11:28.131 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.noman.0 for node hastore:0
2007-09-22 16:11:28.131 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.data-0.0 for node hastore:0
2007-09-22 16:11:28.155 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.noman.1 for node hastore:1
2007-09-22 16:11:28.156 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.relalg.1 for node hastore:1
2007-09-22 16:11:28.198 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.nilog.1 for node hastore:1
2007-09-22 16:11:28.250 INFO    Initializing device /opt/SUNWappserver/hadb/4.4.3-6/device/hastore.data-0.1 for node hastore:1
2007-09-22 16:12:04.795 INFO    Starting node hastore:0 at level firststart, config version 1, in order to start database
2007-09-22 16:12:04.833 INFO    n:0 NSUP   INF 2007-09-22 16:12:04.833 p:5055 Legal realtime priorities are 0 (lowest) to 59 (highest) set it to:29
2007-09-22 16:12:07.033 INFO    Starting node hastore:1 at level firststart, config version 1, in order to start database
2007-09-22 16:12:07.060 INFO    n:1 NSUP   INF 2007-09-22 16:12:07.060 p:5060 Legal realtime priorities are 0 (lowest) to 59 (highest) set it to:29
Database hastore successfully created and started.

DBの作成が完了したら、HADBデータベースを起動します。
hadbm start データベース名
./hadbm start hastore

HADBデータベースを停止する必要がある場合は停止コマンドを入力します。
hadbm stop データベース名

./hadbm stop hastore

以下のコマンドでHADBの各種設定を照会することができます。

-bash-3.00# ./hadbm get --all hastore
Please enter the password for the admin system user:***********
2007-09-22 16:15:32.138 INFO    hadbm get --all=true --quiet=false --version=false --yes=false --force=false --echo=false hastore
Attribute             Value
ConnectionTrace       false
CoreFile              false
DataBufferPoolSize    200
DataDeviceSize        1024
DevicePath            /opt/SUNWappserver/hadb/4.4.3-6/device
EagerSessionThreshold 50
EagerSessionTimeout   120
EventBufferSize       0
HistoryPath           /opt/SUNWappserver/hadb/4.4.3-6/history
InternalLogBufferSize 12
JdbcUrl               jdbc:sun:hadb:129.158.34.188:15005,129.158.34.188:15025
LogBufferSize         48
MaxTables             1100
NumberOfDataDevices   1
NumberOfLocks         50000
NumberOfSessions      100
PackageName           V4.4.3.6
PortBase              15000
RelAlgDeviceSize      128
SessionTimeout        1800
SQLTraceMode          none
StartRepairDelay      20
StatInterval          600
SysLogFacility        local0
SysLogLevel           WARNING
SysLogPrefix          hadb-hastore
TakeoverTime          10000

HADB内に定義されているドメインを照会してみましょう。

-bash-3.00# ./hadbm listdomain
Please enter the password for the admin system user:***********
2007-09-22 16:19:01.400 INFO    hadbm listdomain --quiet=false --version=false --yes=false --force=false --echo=false
Hostname                         Enabled? Running? Release  Interfaces
testhost1.japan.sun.com Yes      Yes      V4-4-3-6 129.158.34.188

hadbm statusコマンドにて、hadbのサービスの状態を照会することができます。

-bash-3.00# ./hadbm status hastore
Please enter the password for the admin system user:***********
2007-09-22 16:20:30.024 INFO    hadbm status --nodes=false --quiet=false --version=false --yes=false --force=false --echo=false hastore
Database Status
hastore  FaultTolerant

./hadbm get --all hastoreの結果から、JDBCURLを取得する
以下の部分にノードのホスト名/IP:ポート番号が出力されています。
後ほど、MQ側でHADBに接続するときに必要になる文字列です。

JdbcUrl               jdbc:sun:hadb:129.158.34.188:15005,129.158.34.188:15025

[HADBのテスト]

HADBが正常に設定され、DBが作成されてアクセス可能かをテストしてみます。
clusqlユーティリティを使用します。

[clusqlについて]
hadbmには、SQLコマンドインターフェイスとして、clusqlユーティリティが添付されています。
#Oracleで言うところのSQLPlus、Java DBで言うところのIJに相当するものです(詳細機能は違いますが)

hadbmユーティリティがあるのと同じディレクトリへ移動して以下のコマンドを発行します。

./clusql ホスト名:ポート番号(hadbm get --all hastoreで表示されたJDBCURL)

ユーザ名:system
パスワード(デフォルトを変更していない場合):adminadmin

-bash-3.00# ./clusql 129.158.34.188:15025
User name : system
Password  :
SQL: select * from sysroot.alltables;

   schemaid     tableid schemaname                       tablename

          0         302 sysroot                          systbldsc
          0         303 sysroot                          systbldef
          0         304 sysroot                          systbt
          0         308 sysroot                          syslnk
          0         309 sysroot                          syshgh
          0         310 sysroot                          sysacc
          0         104 sysroot                          krnprocedures
          0         105 sysroot                          krnnodes
          0         109 sysroot                          krnnodegroupnodes
          0         301 sysroot                          systbl
          0         305 sysroot                          systbtatt
          0         306 sysroot                          systbtdef
          0         307 sysroot                          sysusr
          0         311 sysroot                          sysnix
          0         312 sysroot                          sysviw
          0         313 sysroot                          sysviwcol
          0         101 sysroot                          krntables
          0         102 sysroot                          krnfragments
          0         103 sysroot                          krnreplicas
          0         106 sysroot                          krnredundancyunits
          0         107 sysroot                          krnsites
          0         108 sysroot                          krnnodegroups

HADB-I-11930: Selected 22 row(s)

これでHADBの設定は完了です。
管理ドメインが作成され、hastoreというDBがMQの永続ストア用に用意されました。
次回はMQ4.1をこのHADBを永続ストアに利用するように設定してみます。

月曜日 10 15, 2007

本編とはちょっと話がそれてしまいますが、今回は番外編ということで
Java DBに同梱されているDBテーブル定義を確認するためのdblookユーティリティの紹介をしたいと思います。

そのデータベースの中にどのようなテーブルが定義されているのか、カラムの属性は何なのかをお手軽に
チェックするにはもってこいのツールです。(これを使わなくてもシステムカタログを照会すれば情報は収集できます)

以下のコマンドを実行します。
#今回はOpen MQ4.1によってどんなテーブルが作成されているのかをチェックしてみます

C:\software\JavaDB\bin>dblook -d jdbc:derby://localhost:1527/hastore
localhost:1527/hastoreの部分は適宜変更してください
<<ホスト名/IPアドレス>>:<<ポート番号>>/<<データベース名>>

-- タイム・スタンプ: 2007-10-04 12:17:39.431
-- ソース・データベース: hastore
-- 接続 URL: jdbc:derby://localhost:1527/hastore
-- appendLogs: false

-- ----------------------------------------------
-- 表用の DDL ステートメント
-- ----------------------------------------------

CREATE TABLE "APP"."MQPROP41CMMDEMOHACLUSTER" ("PROPNAME" VARCHAR(100) NOT NULL, "PROPVALUE" VARCHAR (4096) FOR BIT DATA);

CREATE TABLE "APP"."MQCONSTATE41CMMDEMOHACLUSTER" ("MESSAGE_ID" VARCHAR(100) NOT NULL, "CONSUMER_ID" BIGINT NOT NULL, "STATE" INTEGER, "TRANS

CREATE TABLE "APP"."MQCON41CMMDEMOHACLUSTER" ("ID" BIGINT NOT NULL, "CLIENT_ID" VARCHAR(1024), "DURABLE_NAME" VARCHAR(1024), "CONSUMER" VARCH

CREATE TABLE "APP"."MQCREC41CMMDEMOHACLUSTER" ("RECORD" VARCHAR (4096) FOR BIT DATA NOT NULL, "CREATED_TS" BIGINT NOT NULL);

CREATE TABLE "APP"."MQSES41CMMDEMOHACLUSTER" ("ID" BIGINT NOT NULL, "BROKER_ID" VARCHAR(100) NOT NULL, "IS_CURRENT" INTEGER NOT NULL, "CREATE

CREATE TABLE "APP"."MQMSG41CMMDEMOHACLUSTER" ("ID" VARCHAR(100) NOT NULL, "MESSAGE" BLOB(1048576) NOT NULL, "MESSAGE_SIZE" INTEGER, "STORE_SE

CREATE TABLE "APP"."MQDST41CMMDEMOHACLUSTER" ("ID" VARCHAR(100) NOT NULL, "DESTINATION" VARCHAR (2048) FOR BIT DATA NOT NULL, "IS_LOCAL" INTE

CREATE TABLE "APP"."MQBKR41CMMDEMOHACLUSTER" ("ID" VARCHAR(100) NOT NULL, "URL" VARCHAR(100) NOT NULL, "VERSION" INTEGER NOT NULL, "STATE" IN

CREATE TABLE "APP"."MQTXN41CMMDEMOHACLUSTER" ("ID" BIGINT NOT NULL, "TYPE" INTEGER NOT NULL, "STATE" INTEGER, "AUTO_ROLLBACK" INTEGER NOT NUL

CREATE TABLE "APP"."MQVER41CMMDEMOHACLUSTER" ("STORE_VERSION" INTEGER NOT NULL, "LOCK_ID" VARCHAR(100));

-- ----------------------------------------------
-- 索引用の DDL ステートメント
-- ----------------------------------------------

CREATE INDEX "APP"."MQTXN41CMMDEMOHACLUSTERIDX1" ON "APP"."MQTXN41CMMDEMOHACLUSTER" ("STORE_SESSION_ID");

CREATE INDEX "APP"."MQMSG41CMMDEMOHACLUSTERIDX1" ON "APP"."MQMSG41CMMDEMOHACLUSTER" ("STORE_SESSION_ID", "DESTINATION_ID");

CREATE INDEX "APP"."MQDST41CMMDEMOHACLUSTERIDX1" ON "APP"."MQDST41CMMDEMOHACLUSTER" ("STORE_SESSION_ID");

CREATE INDEX "APP"."MQCONSTATE41CMMDEMOHACLUSTERIDX1" ON "APP"."MQCONSTATE41CMMDEMOHACLUSTER" ("TRANSACTION_ID");

-- ----------------------------------------------
-- キー用の DDL ステートメント
-- ----------------------------------------------

-- primary/unique
ALTER TABLE "APP"."MQTXN41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123210480" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQSES41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209310" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQMSG41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123210260" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQDST41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209950" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQCON41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209610" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQBKR41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209070" PRIMARY KEY ("ID");

ALTER TABLE "APP"."MQCONSTATE41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209750" PRIMARY KEY ("MESSAGE_ID", "CONSUMER_ID");

ALTER TABLE "APP"."MQPROP41CMMDEMOHACLUSTER" ADD CONSTRAINT "SQL071002123209450" PRIMARY KEY ("PROPNAME");

This blog copyright 2009 by naokitakemura