Oracle Tuxedoアプリケーションは、型付きバッファ内のデータを送受信します。Tuxedoバッファ・タイプには、Tuxedoサービスの入力メッセージと出力メッセージが記述されます。TSAM Plusは、Tuxedoサービスの入出力バッファにカプセル化されているユーザー・ペイロードを収集したり、収集したペイロードをOracle Database、Hadoopまたはローカル・ファイルに保存したり、ペイロードをさらに集計および分析するためにエクスポートする一連のAPIやツールを提供できます。
サポートされているユーザー・ペイロード・バッファ・タイプ
表7-1に、ユーザー・ペイロードでサポートされるOracle Tuxedoバッファ・タイプを示します。
表7-1
ユーザー・ペイロードでサポートされるOracle Tuxedoバッファ・タイプ
|
|
|
|
|
送信時にエンコードもデコードも行われない文字配列(多くの場合NULL文字を含む)。
|
|
|
CARRAYに相当するもので、XATMIとの互換性のために提供されています。
|
|
|
|
|
|
|
|
|
|
|
|
VIEWに相当するもので、XATMIとの互換性のために提供されています。
|
|
|
VIEWに相当するもので、XATMIとの互換性のために提供されています。
|
|
|
32ビット識別子またはオフセットを使用した、FML32フィールド化バッファ。
|
|
|
32ビット識別子、カウンタ変数、およびサイズ変数を使用した、C構造体またはFML32 VIEW。
|
|
|
|
TSAM Plusでは、収集されたユーザー・ペイロードについて、Oracle Database、Hadoop、ローカル・ファイルなどの様々な種類の記憶域がサポートされています。
Oracle Database内のユーザー・ペイロード・レコード
表7-2に示すように、ユーザー・ペイロード・データはTSAM Plusデータベース内の表
MON_PAYLOADに格納されます。
表7-2
MON_PAYLOAD内のユーザー・ペイロード・データ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ドメインID。 DOMAINIDが UBBCONFIGで設定されていない場合はnullです。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tuxedoバッファ・タイプ・インデックス。 weblogic.wtc.jatmi.StandardTypesで定義されています。
|
|
|
|
|
|
|
Tuxedoサブ・バッファ・タイプ。viewまたはview32名です。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このレコードがTSAM Plusエージェントから報告されたときにタイムスタンプ。
|
ユーザー・ペイロード・データは、HDFSに格納できます。JRE 1.7以上が必要です。
ペイロードをHadoopファイル・システムに格納するには、LMSを起動する前に環境
JAVA_HOMEとライブラリ・パスを設定する必要があります。さらに、LMS -Tオプションを設定しないか、1に設定する必要があります。
Linuxシステムの場合は、ライブラリ・パス
LD_LIBRARY_PATHを
libjvm.soに含める必要があります。
export JAVA_HOME=/home/user1/jdk1.7.0_21
export HADOOP_HOME=/home/user1/hadoop-2.6.0
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server/:$LD_LIBRARY_PATH
AIXシステムの場合は、
LD_LIBRARY_PATHではなく
LIBPATHを設定します。
export LIBPATH=/usr/$JAVA_HOME/jre/lib/ppc64/classic:$JAVA_HOME/jre/libppc64:$JAVA_HOME/jre/lib/ppc64/j9vm
ペイロード・データをHadoopファイル・システムに出力する場合は、TSAM Plusによってペイロード・キーとデータを格納するためのペイロード・ファイルが生成されます。各マシンは毎日異なるファイルを作成します。
その形式は、
<domain>_<machine>_<yyyymmdd>.payloadです。新しいhadoopファイルが毎日生成され、ファイル・サイズに制限はありません。
TSAM Plusでは、Hadoop SequenceFileフォーマット(Hadoop 2.6 ver=6)を使用してペイロードをHDFSに格納します。各ペイロード・レコードには、キーと値データが含まれます。レコード(
org.apache.hadoop.io.BytesWritable)は、Javaクラス
com.oracle.tsam.payload.PayloadRecordを使用して解析できます。
レコードのキー・クラスは
org.apache.hadoop.io.LongWritableで、値クラスは
org.apache.hadoop.io.BytesWritableです。両方ともレコードとして格納されます。
次に、ペイロードのSequenceFileフォーマットを示します。
|
•
|
version - 3バイトのマジック・ヘッダーSEQとその後に1バイトの実際のバージョン番号(SEQ4、SEQ6など)
|
|
•
|
compression - このファイル内のキー/値に対して圧縮をオンにするかどうかを指定するブール。ペイロード・ファイルには0が使用されます。
|
|
•
|
blockCompression - このファイル内のキー/値に対してブロック圧縮をオンにするかどうかを指定するブール。ペイロード・ファイルには0が使用されます。
|
|
•
|
metadata - このファイルの SequenceFile.Metadata。 0x0,0x0,0x0,0x0
|
|
•
|
sync - ヘッダーの終わりを示す同期マーカー。
|
|
•
|
Value - キーと値が含まれるペイロード・レコード
|
ローカル・ファイル内のユーザー・ペイロード・レコード
ローカル・ファイル内のユーザー・ペイロード・レコードの命名およびコンテンツ・フォーマットは、Hadoopのルールと同じです。
UBBCONFIGのLMSサーバーCLOPTパラメータを使用して、ペイロード・データの格納先ローカル・ファイル・ディレクトリを指定できます。たとえば、ペイロード・データを
/u01/common/patches/oracle/payloadにあるファイルに格納するには、
UBBCONFIGファイルで次を構成します。
LMS SRVGRP=LMSGRP SRVID=2 CLOPT="-A -- -l <tsam_manager_host>:7001/tsam -p /u01/common/patches/oracle/payload"
TSAM Plusコンソールからのユーザー・ペイロード記憶域の指定
ユーザー・ペイロード・データの保管方式を指定するには、次の手順に従います。
|
1.
|
TSAM Plusコンソールの最上部のメニュー・バーで、 「管理」→「グローバル・パラメータ」をクリックします。
|
|
2.
|
「TSAM Plusグローバル・プロパティ」タブで、記憶域として「データベース」、「Hadoop」、「ローカル・ファイル」のいずれかを選択します。
|
|
3.
|
「Hadoop」を選択した場合は、引き続き次のフィールドを指定します。
|
ユーザー・ペイロード・データを格納するHadoop URLを指定します。Hadoop URLには、ホスト名、ポートおよびペイロード・ファイル・ディレクトリを含める必要があります。例:
hdfs://localhost:8080/tmp/tuxPayload/
サービスまたは呼出しパスのユーザー・ペイロード・データ収集ポリシーを定義できます。たとえば、呼出しパスの場合、収集ポリシーを構成するには、次の手順に従います。
|
1.
|
TSAM Plusコンソールの最上部のメニュー・バーで、 「ポリシー」→「Tuxedoモニタリング・ポリシー」をクリックします。
|
|
2.
|
「モニタリング・ポリシー・リスト」ページで、 「追加」をクリックして 「ポリシーの編集」ページにアクセスします。
|
|
3.
|
左側の「Tuxedoコンポーネント」フィルタ領域で、モニターするTuxedoドメインを選択します。
|
|
4.
|
「コール・パス」タブで、 「有効化」を選択して呼出しパス・メトリックの収集を有効にします。
|
|
5.
|
「ペイロード収集の定義」ボタンをクリックして、ペイロード収集ルールを構成します。
|
|
6.
|
「ペイロード収集の定義」ページで対応するチェック・ボックスを選択して、リクエスト・ペイロードまたはレスポンス・ペイロード(あるいはその両方)の収集を有効にすることができます。リクエスト・ペイロードの収集を有効にした場合は、 「初期コールされたサービスのみ」を選択または選択を解除して、初期コールされたサービスのペイロードのみを収集するかどうかを決定できます。
|
|
7.
|
「OK」をクリックします。次に、ポリシーを有効にします。
|
|
注意:
|
呼出しパスのユーザー・ペイロード・データ収集ポリシーは、他のドメインには伝播できません。
|
これで、最も一般的なユーザー・ペイロード収集ポリシーの定義が完了しました。定義したスコープに属するすべてのペイロードが収集され、指定したペイロード記憶域に保存されます。
データ基準を定義すると、型付きバッファの値が基準を満たす場合にのみTSAM Plusによってペイロードが収集されます。たとえば、STRINGタイプ・バッファがHelloという語で始まる場合、またはFML32タイプ・バッファのACCOUNT_IDフィールドの値が1000を超える場合にペイロードが収集されます。
|
1.
|
「ペイロード収集の定義」ダイアログで 「データ基準」タブに移動します。サポートされているすべてのバッファ・タイプがドロップダウン・リストに表示されます。
|
|
2.
|
基準を定義するバッファ・タイプを選択し、 「追加」をクリックします。
|
「1つまたは複数のデータ基準エントリの追加」というタイトルの表が表示されます。
|
|
|
|
|
|
|
FML/FML32の場合は、FMLフィールド表定義ファイル内のフィールド名です。サポートされているフィールド・タイプは、short、long、float、double、charおよびstringです。他のタイプのフィールドは、ドロップダウン・リストに表示されません。
VIEWが付くすべてのバッファ・タイプの場合は、VIEW表定義ファイルでVIEWキーワードの後に定義されているVIEW名です。
|
|
|
|
値は、VIEW表定義ファイル内のVIEWフィールド名(CNAME)です。サポートされているフィールド・タイプは、FMLフィールドと同じです。
|
|
|
|
|
|
|
|
数値フィールドの場合、オプションは>、>=、<、<=、==、!=です。
英字フィールドの場合、オプションは==、!=、%%、!%です。
|
|
|
|
FMLブール式の値部分(演算子の後)です。ここでは演算子は許可されません。
FMLブール式で定義されているすべての構文に適合している必要があります。FMLブール式の詳細は、オンラインのOracle Tuxedoドキュメントを参照してください。
|
|
|
|
|
|
|
|
この領域は、3つの相互に排他的なラジオ・ボタンで構成されています。
「一般」タブでリクエスト・ペイロードとレスポンス・ペイロードの両方の収集が有効になっている場合は、3つのすべてのボタン(「入出力」、「入力」および「出力」)が有効になります。そうでない場合は、対応するラジオ・ボタンのみが有効になります。
「入出力」を選択した場合、リクエスト・バッファとレスポンス・バッファの両方に対して現在の基準式が有効になります。
「入力」または「出力」を選択した場合は、現在の基準に対してリクエスト・バッファまたはレスポンス・バッファのみが評価されます。
|
|
|
|
この列には、1つの追加ボタンと1つの削除ボタンが含まれます。
複数のデータ基準式エントリを表に追加できます。ポリシーの保存時に、エントリごとにFMLブール式が形成され、同じ表内の様々なエントリは論理的AND関係を持ちます。
|
|
3.
|
すべての基準式エントリを定義したら、 「発行」をクリックして構成を保存します。
|
データ基準リスト・ページに戻ったら、新しく作成したデータ基準をリスト表で検索できます。
|
•
|
同じバッファ・タイプに対して複数のデータ基準を追加できます。これらは論理的OR関係を持ちます。つまり、ペイロードが収集されると、どのデータ基準も満たされます。
|
|
•
|
バッファ・タイプが FML32/FML/VIEW32/VIEW/X_C_TYPE/X_COMMONの場合は、データ基準を定義する前に、 「データ管理」→「フィールド表管理」タブ・ページでフィールド表定義ファイルをアップロードする必要があります。
|
結果フィルタでは、バッファ・タイプごとに、ランタイム・ペイロード・データ値に関係なく収集するフィールドや文字シーケンスの範囲などを定義します。データ基準とは対照的に、不要なフィールドを除外するための相対的な静的定義です。
結果フィルタの定義は、データ基準を定義する操作によく似ています。違いは次のとおりです。
結果フィルタ・リスト・ページでは、各バッファ・タイプを1つの結果フィルタでのみ定義できます。
結果フィルタ・エントリ定義ページでは、様々なフィルタ・エントリは論理的OR関係を持ちます。つまり、実行時には、TSAM Plusは結果フィルタのすべての定義済エントリを収集しようとします。
|
注意:
|
Tuxedoサービス呼出しに対して呼出しパスとサービスの両方の結果フィルタを有効にした場合は、呼出しパスに対するフィルタが有効になります。
|
収集されたユーザー・ペイロード・データのエクスポート
Oracle TSAMデータベース、ローカル・ファイルまたはHadoopに格納されているユーザー・ペイロード・データは、バイナリ形式です。データ・分析がしやすいように、エクスポートAPIまたはペイロード・ダンプ・ツールを使用してデータをテキスト形式またはXML形式にエクスポートできます。
表7-4に、ユーザー・ペイロード・データをエクスポートするためのAPIを示します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hadoop記憶域のペイロード・レコード・イテレータ
|
|
|
|
|
|
ペイロード・メトリックをダンプするコマンド行ツール
|
|
|
|
|
|
|
|
|
TSAMデータベース記憶域のペイロード・レコード・イテレータ
|
|
|
ペイロード・メトリックのTSAM Plusデータベース記憶域
|
|
|
|
|
データ・エクスポート用のAPIを使用する場合は、
$TSAMDIR/libの下の
CLASSPATHに、
CLASSPATH=payloadapi.jar:com.bea.core.jatmi_2.0.0.0.jar:com.oracle.tuxedo.tjatmi_12.1.3.0.jar:commons-cli-1.2.jarを含める必要があります。
ペイロードをHadoop dfsからエクスポートする場合は、次のように
HADOOP_HOMEを設定します。
HADOOP_HOME=/home/user/hadoop-2.6.0/
ペイロードをOralce Databaseからエクスポートする場合は、
CLASSPATHに
ojdbc6.jarを含めます。
java.lang.AutoCloseable, java.io.Closeable, java.lang.Iterable<PayloadRecord>
FilePayloadRepository、HadoopPayloadRepository、TSAMDBPayloadRepository
public interface PayloadRepository
extends java.lang.Iterable<PayloadRecord>, java.io.Closeable
com.oracle.tsam.payload.FilePayloadIterator
java.util.Iterator<PayloadRecord>
public class FilePayloadIterator
implements java.util.Iterator<PayloadRecord>
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public FilePayloadIterator(org.apache.hadoop.io.SequenceFile.Reader reader)
リーダーを使用してFilePayloadIteratorを作成します。
hasNext in interface java.util.Iterator<PayloadRecord>
public PayloadRecord next()
next in interface java.util.Iterator<PayloadRecord>
remove in interface java.util.Iterator<PayloadRecord>
com.oracle.tsam.payload.FilePayloadRepository
PayloadRepository, java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<PayloadRecord>
public class FilePayloadRepository
implements PayloadRepository
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public FilePayloadRepository(java.lang.String path)
throws java.io.IOException
パスを使用してFilePayloadRepositoryを作成します
public java.util.Iterator<PayloadRecord> iterator()
iterator in interface java.lang.Iterable<PayloadRecord>
throws java.io.IOException
close in interface java.io.Closeable
close in interface java.lang.AutoCloseable
public java.io.File getFile()
com.oracle.tsam.payload.HadoopPayloadIterator
java.util.Iterator<PayloadRecord>
public class HadoopPayloadIterator
implements java.util.Iterator<PayloadRecord>
Hadoop記憶域のペイロード・レコード・イテレータ
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public HadoopPayloadIterator(java.lang.String HadoopURL,
java.lang.String[] MatchFiles)
throws java.io.IOException
hasNext in interface java.util.Iterator<PayloadRecord>
public PayloadRecord next()
next in interface java.util.Iterator<PayloadRecord>
throws java.io.IOException
remove in interface java.util.Iterator<PayloadRecord>
com.oracle.tsam.payload.HadoopPayloadRepository
PayloadRepository, java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<PayloadRecord>
public class HadoopPayloadRepository
implements PayloadRepository
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public HadoopPayloadRepository(java.lang.String HadoopURL,
java.lang.String Machine,
java.util.Date StartDate,
throws java.io.IOException
Constructs a HadoopPayloadRepository with a Hadoop URL and filters of domain name, machine name, start date, and end date
public java.util.Iterator<PayloadRecord> iterator()
iterator in interface java.lang.Iterable<PayloadRecord>
throws java.io.IOException
close in interface java.io.Closeable
close in interface java.lang.AutoCloseable
public java.lang.String getHadoopURL()
com.oracle.tsam.payload.payloaddump
ペイロード・メトリックをダンプするコマンド行ツール
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public static void main(java.lang.String[] args)
throws org.apache.commons.cli.ParseException,
java.lang.ClassNotFoundException,
javax.xml.parsers.ParserConfigurationException,
java.text.ParseException,
必須パラメータです。ペイロード・リポジトリのURL。データベースURL、Hadoop URLまたはファイル・パスを指定できます。
SQL問合せ条件。URLがデータベースURLに指定されている場合にのみ使用できます。
XMLまたはテキスト。デフォルトの出力タイプはxmlです。
出力タイプがテキストの場合に必要なフィールド名。TuxedoタイプCARRAY、X_OCTETおよびSTRINGの場合、fieldnamesは、ユーザー・ペイロード・ポリシーの結果フィルタで指定されているaliasNamesです。urlがデータベースURLに指定され、servicenameが指定されている場合、デフォルトのfieldnamesはサービス契約情報から取得されます。urlがデータベースURLに指定され、policynameとservicenameの両方が指定されている場合、デフォルトのfieldnamesはサービス契約情報とポリシーの結果フィルタの結合結果です。
org.apache.commons.cli.ParseException
java.lang.ClassNotFoundExceptionjava.sql.SQLException
javax.xml.parsers.ParserConfigurationException
com.oracle.tsam.payload.PayloadRecord
public class PayloadRecord
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public PayloadRecord(java.lang.String dOMAINID,
java.lang.String serviceName,
java.lang.String correlationID,
PayloadValue payloadValue)
public java.lang.String getdOMAINID()
public void setdOMAINID(java.lang.String dOMAINID)
public java.lang.String getLMID()
public void setLMID(java.lang.String lMID)
public short getGroupID()
public void setGroupID(short groupID)
public short getServerID()
public void setServerID(short serverID)
public java.lang.String getServiceName()
public void setServiceName(java.lang.String serviceName)
public java.lang.String getCorrelationID()
public void setCorrelationID(java.lang.String correlationID)
public java.lang.String getECID()
public void setECID(java.lang.String eCID)
public PayloadType getPayloadType()
public void setTperrno(java.lang.Short tperrno)
public PayloadType getPayloadType()
public void setPayloadType(PayloadType payloadType)
public PayloadValue getPayloadValue()
public void setPayloadValue(PayloadValue payloadValue)
public java.util.Date getLogtime()
public void setLogtime(java.util.Date logtime)
com.oracle.tsam.payload.PayloadValue
public class PayloadValue
ペイロード・メトリック2種類の出力形式があります。
|
•
|
テキスト: テキスト・モードのデータベース・エクスポート形式と同じであるため、BIデータ・ソースとしてデータベース表にインポートできます。
|
|
注意:
|
出力データのシーケンスは、String [] fieldNamesを使用して定義できます。fieldnamesを指定しない場合、フィールドはデフォルトの順序で出力されます。埋込みバッファは出力されません。
|
|
•
|
XML: フォーマッタは、型付きバッファCARRAY、X_OCTET、STRING、FML、FML32、VIEW、VIEW32、X_C_TYPE、X_COMMONおよびXMLをXML形式に変換できます。バッファがネストされている場合は、ネストされたすべてのバッファも変換されます。
|
CARRAY/X_OCTET/STRINGの場合、ペイロードはXML形式の要素に変換されます。CARRAYは、base64文字列にエンコードされます。要素名は、パラメータelemNameに指定された値です。
FML/FML32/VIEW/VIEW32/X_C_TYPE/X_COMMONの場合、フォーマッタは型付きバッファのすべてのフィールドを変換します。これらの種類の型付きバッファがネストされている場合は、ネストされたすべてのバッファも変換されます。
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public PayloadValue(short valueTypeIndex,
public java.lang.String[] getFieldNames()
public java.lang.String toXMLString(java.lang.String encoding)
throws java.io.IOException, javax.xml.parsers.ParserConfigurationException,
javax.xml.parsers.ParserConfigurationException
public java.lang.String toText(char delimiter,
throws java.io.IOException,
javax.xml.parsers.ParserConfigurationException,
ペイロード値をテキストに変換し、そのテキストはデータベース表にインポートできます。埋込みフィールドは戻り値に含まれません。enclosureと等しい文字は複製されます。
delimiter - delimiter character
enclosure - enclosure character
javax.xml.parsers.ParserConfigurationException
public java.lang.String toText()
throws java.io.IOException,
javax.xml.parsers.ParserConfigurationException,
ペイロード値をテキストに変換し、そのテキストはデータベース表にインポートできます。delimiterのデフォルト設定=タブであり、enclosure='"'です。埋込みフィールドは戻り値に含まれません。
javax.xml.parsers.ParserConfigurationException
public java.lang.String toText(char delimiter,
java.lang.String[] fieldNames)
throws java.io.IOException,
javax.xml.parsers.ParserConfigurationException,
ペイロード値の指定したフィールドをテキストに変換し、そのテキストはデータベース表にインポートできます。埋込みフィールドは戻り値に含まれません。enclosureと等しい文字は複製されます。
javax.xml.parsers.ParserConfigurationException
public java.lang.String toText(java.lang.String[] fieldNames)
throws java.io.IOException,
javax.xml.parsers.ParserConfigurationException,
ペイロード値の指定したフィールドをテキストに変換し、そのテキストはデータベース表にインポートできます。デフォルト設定は、delimiter=tabおよびenclosure='"'です。埋込みフィールドは戻り値に含まれません。
javax.xml.parsers.ParserConfigurationException
com.oracle.tsam.payload.TSAMDBPayloadIterator
java.util.Iterator<PayloadRecord>
public class TSAMDBPayloadIterator
implements java.util.Iterator<PayloadRecord>
TSAMデータベース記憶域のペイロード・レコード・イテレータ。
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public TSAMDBPayloadIterator(java.lang.String whereConditionalExpression,
throws java.sql.SQLException
hasNext in interface java.util.Iterator<PayloadRecord>
public PayloadRecord next()
next in interface java.util.Iterator<PayloadRecord>
remove in interface java.util.Iterator<PayloadRecord>
com.oracle.tsam.payload.TSAMDBPayloadRepository
PayloadRepository, java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<PayloadRecord>
public class TSAMDBPayloadRepository
implements PayloadRepository
ペイロード・メトリックのTSAM Plusデータベース記憶域。
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public TSAMDBPayloadRepository(java.lang.String TSAMDBURL)
throws java.sql.SQLException,
java.lang.ClassNotFoundException
TSAM PlusデータベースURLを使用してTSAMDBPayloadRepositoryを作成します
java.lang.ClassNotFoundException
public TSAMDBPayloadRepository(java.sql.Connection connection)
TSAMデータベース接続を使用してTSAMDBPayloadRepositoryを作成します。
public java.util.Iterator<PayloadRecord> iterator()
iterator in interface java.lang.Iterable<PayloadRecord>
public java.util.Iterator<PayloadRecord> iterator(java.lang.String whereConditionalExpression)
throws java.sql.SQLException
入力されたSQL問合せ条件からイテレータを取得します
whereConditionalExpression - SQL query condition, for an example, "where DOMAINID='DOMAIN1' and LMID='L1' and GROUPID=1 and SERVERID=1 and SVCNAME='toupper' and PAYLOADTYPE=1"
フィールド
PAYLOADTYPEでは、1はリクエストを、2は応答を意味します。
throws java.io.IOException
close in interface java.io.Closeable
close in interface java.lang.AutoCloseable
public java.sql.Connection getConnection()
public java.lang.String[] getFieldNames(java.lang.String domainID,
java.lang.String serviceName,
throws java.lang.Exception
serviceName - service name
payloadType - payload type
java.lang.Enum<PayloadType>
com.oracle.tsam.payload.PayloadType
java.io.Serializable, java.lang.Comparable<PayloadType>
extends java.lang.Enum<PayloadType>
クラスjava.lang.Enumから継承されたメソッド
compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
クラスjava.lang.Objectから継承したメソッド
getClass, notify, notifyAll, wait, wait, wait
public static final PayloadType request
public static PayloadType[] values()
この列挙型の定数を含む配列を、宣言されている順序で返します。このメソッドは、次のようにして定数を反復するために使用できます。
for (PayloadType c : PayloadType.values())
public static PayloadType valueOf(java.lang.String name)
指定された名前を持つ、この型の列挙型定数を返します。文字列は、この型の列挙型定数を宣言するのに使用した識別子と厳密に一致している必要があります。(不適切な空白文字は許可されません。)
java.lang.IllegalArgumentException - この列挙型に、指定された名前を持つ定数がない場合
java.lang.NullPointerException - 引数がnullの場合
リスト7-1に、ペイロード・メトリックをTSAM Plusデータベースから読み取り、データをテキスト・ファイルにエクスポートする例を示します。
public class DBPayloadSample {
public static void main(String[] args) throws IOException {
TSAMDBPayloadRepository tSAMDBPayloadRecordRepository = new TSAMDBPayloadRepository(
"jdbc:oracle:thin:@localhost:1521:orcl",
Iterator<PayloadRecord> iterator = tSAMDBPayloadRecordRepository
.iterator("where DOMAINID='DOMAIN1' and svcname='toupper' and PAYLOADTYPE=1");
String[] fieldNames = tSAMDBPayloadRecordRepository.getFieldNames(
"DOMAIN1", "toupper", PayloadType.request);
Writer writer = new FileWriter("payload.txt");
for (int i = 0; i < fieldNames.length - 1; i++) {
writer.append("\"" + fieldNames[i] + "\"\t");
writer.append("\"" + fieldNames[fieldNames.length - 1] + "\"");
while (iterator.hasNext()) {
PayloadValue payloadValue = iterator.next().getPayloadValue();
writer.append(payloadValue.toText(fieldNames));
tSAMDBPayloadRecordRepository.close();
ファイルpayload.txtの出力形式は、次のとおりです。
"STRINGFIELD1 ""STRINGFIELD2 ""INTFIELD1 ""SHORTFIELD1"
リスト7-2に、ペイロード・メトリックをHadoopから読み取り、データをXMLファイルにエクスポートする例を示します。
public class HadoopPayloadSample {
public static void main(String[] args) throws IOException {
HadoopPayloadRepository hadoopPayloadRecordRepository = new HadoopPayloadRepository(
"hdfs://localhost:8080/tmp/tuxPayload/");
Iterator<PayloadRecord> iterator = hadoopPayloadRecordRepository
Writer writer = new FileWriter("payload.txt");
while (iterator.hasNext()) {
PayloadRecord payloadRecord = iterator.next();
if ("DOMAIN1".equals(payloadRecord.getdOMAINID())
&& "toupper".equals(payloadRecord.getServiceName())
&& (payloadRecord.getPayloadType() == PayloadType.request)) {
PayloadValue payloadValue = iterator.next().getPayloadValue();
writer.append(payloadValue.toXml());
hadoopPayloadRecordRepository.close();
ペイロード・ダンプ・ツールを実行する前に、次を構成する必要があります。
CLASSPATH=payloadapi.jar:com.bea.core.jatmi_2.0.0.0.jar:com.oracle.tuxedo.tjatmi_12.1.3.0.jar:commons-cli-1.2.jar
|
•
|
ペイロードをHadoop dfsからエクスポートする場合は、次のように HADOOP_HOMEを設定します。
|
export HADOOP_HOME=/home/user/hadoop-2.6.0/
|
•
|
ペイロードをOralce Databaseからエクスポートする場合は、 CLASSPATHに ojdbc6.jarを含めます。
|
ペイロード・ダンプ・ツール・コマンドは、次の形式です。
payloaddump -url <URL> [-username <username> -password <password>] -payloadtype request|reply [-wherecondition <wherecondition>] [-domainid <domainid>] [-servicename <servicename>] [-outputtype xml|text] [-fieldnames <fieldnames>] [-o outputFile]
たとえば、ペイロードをHadoopからエクスポートするには、次のコマンドを実行します。
java com.oracle.tsam.payload.payloaddump -url "hdfs://localhost:9000/data/" -payloadtype reply -outputtype xml
ペイロードをTSAM Plusデータベースからエクスポートするには、次のコマンドを実行します。
java com.oracle.tsam.payload.payloaddump -url "jdbc:oracle:thin:@localhost:1521:tsam" -username tsam -password tsam -payloadtype reply -outputtype xml