weblogic server transaction basics

40
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1 日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2014226WebLogic Server Transaction Basics

Upload: oracle-fusion-middleware

Post on 08-May-2015

834 views

Category:

Technology


8 download

DESCRIPTION

「WebLogic Server Transaction Basics」 分散トランザクションの基本概念からWebLogic Serverでのトランザクション設定やモニタ方法をご紹介します。また、トランザクション回復サービスなどの障害発生時の対応のポイントも紹介します。 日本オラクル  オラクルユニバーシティ 岡田 大輔

TRANSCRIPT

Page 1: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 1

日本オラクル株式会社 オラクルユニバーシティ 岡田 大輔 2014年 2月26日

WebLogic Server Transaction Basics

Page 2: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 3: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 3

Agenda

分散トランザクションとは?

– Java Transaction API

– 分散トランザクションとは?

WebLogic Serverのトランザクション設定

– ドランザクションの設定

– モニタリング

– リソースの設定

Page 4: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 4

分散トランザクションとは?

Page 5: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 5

トランザクションとは?

データストアに対して"all or nothing"手法で永続化を行う処理

– 分散環境においてデータの整合性を保つためには必須

ACID特性を満たす

– Atomicity(原子性) – 処理は成功か失敗のいずれか

– Consistency(一貫性) – 処理前後ではデータの一貫性が保たれる

– Isolation(独立性) – 同時に実行される複数の処理は互いに干渉しない

– Durability(永続性) – 確定したトランザクションの結果は確実に永続化される

Page 6: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 6

Java EEにおけるトランザクション仕様

JTA(Java Transaction API)

– X/Open DTPモデルをベースにした分散トランザクションAPI

– トランザクションマネージャとトランザクション参加者であるアプリケーション、リソースマネージャが使用する標準インタフェースを提供

javax.transaction.* - トランザクションマネージャとトランザクション参加者との規約

javax.transaction.xa.* - トランザクションマネージャ(TM)とリソースマネージャ(RM)間の規約

JTS (Java Transaction Service)

– JTAをサポートするトランザクションマネージャ実装を提供

– OMG Object Transaction Service(OTS) 1.1 仕様に対応したJava実装のサービス

Page 7: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 7

X/Open DTPモデル

Application Program (AP)

Transaction Manager (TM)

Resource Manager (RM) Resource Manager

(RM) Resource Manager (RM)

XA

APはトランザクション境界を指定

APはRMを介してリソースを使用

TMとRMをトランザクション情報を交換

Page 8: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 8

トランザクションマネージャとリソースマネージャ

トランザクションマネージャ(TM)

– アプリケーションに代わってグローバルトランザクションの管理を行うサーバソフトウェアコンポーネント

– アプリケーションからのグローバルトランザクションの開始/終了要求に基づいて、そのトランザクションに関与する全てのリソースマネージャと通信してトランザクションを制御

2フェーズコミット(2PC)を制御

– WebLogic Serverではインスタンスごとにトランザクションマネージャが存在する

リソースマネージャ(RM)

– データやプロセスへのアクセスを提供するインタフェースおよび関連ソフトウェアであり、トランザクション処理機能とアクセスの永続化機構を有する

Page 9: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 9

ローカルトランザクションとグローバルトランザクション

ローカルトランザクション

– トランザクションマネージャが介在しないトランザクション

– リソースマネージャが直接トランザクションを制御する

非XAドライバを使ったDB接続

非XAのJMS接続ファクトリを使用したJMSメッセージング

ローカルトランザクション

Page 10: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 10

ローカルトランザクションとグローバルトランザクション

グローバルトランザクション(分散トランザクション)

– トランザクションマネージャが介在するトランザクション

– TMがJMSやXA DataSourceなどトランザクションに関与する複数のRMを調整して、トランザクションの制御を行う

1TXでDB, JMSにアクセスする (2PC)

1TXで2つ以上のDBにアクセスする(2PC)

TXがEJBコンテナによって開始された場合(EJBコンテナはサーバ上のTMを利用)

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

Page 11: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 11

2フェーズコミット (2PC)

2PCプロトコルは複数のRMをまたぐ単一トランザクションを調整する方法

– PrepareフェーズとCommitフェーズと呼ばれる2つのフェーズを用いてトランザクション特性を満たす

トランザクションのコミット処理

(UserTransaction.commt()/TransactionManager.commit()) により2PCが開始される

コーディネータはグローバルトランザクションを操作し、サブコーディネータは自身のサーバに関連したトランザクション・ブランチを操作する

Page 12: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 12

WebLogic Serverの2PCプロセス

WebLogic Serverでは2PCを3つのステップで処理

– Pre-Prepareフェーズ

トランザクションが完了する前後でアプリケーションがコールバックを受け取れるようにするためにコールバックオブジェクト(javax.transaction.Synchronization)をトランザクションマネージャに登録する

– Prepareフェーズ(フェーズ1)

グローバルトランザクションに参加しているリソースがトランザクションブランチを処理する準備を行う

– Commitフェーズ(フェーズ2)

グローバルトランザクションに参加しているリソースが実際にトランザクションブランチを処理する

Page 13: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 13

フェーズ2 (commit)

フェーズ1 (prepare)

2PC 処理の流れ

データベース1

②prepare

prepared

TLOG

①commit

データベース2

データベース1

③commit

committed

データベース2

committed

アプリケーション

トランザクション

マネージャ

トランザクション

マネージャ

リソース

マネージャ1

リソース

マネージャ2

リソース

マネージャ1

リソース

マネージャ2

Page 14: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 14

WebLogic Serverの トランザクション設定

Page 15: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 15

JTA トランザクション処理

Resource

Factory

begin

enlistResource

commit

Transaction

Manager Connection

Transactional

Resource

Application

Server Application XAResource

getTransactionalResource

getXAResource

start

prepare

commit

getConnection

commit

doWork

new new

new

Page 16: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 16

WebLogic Serverでのトランザクション処理

データベース2

データベース1

トランザクション・サービス

EJBコンテナ1

EJBコンテナ2

UserTransaction ut = ic.lookup("java:comp/UserTransaction") try { ut.begin(); ejb1.callA(); ejb2.callB(); ut.commit(); } catch (Exception e) { try { ut.rollback(); } catch(SystemException se) { throw new Exception(se.getMessage()); } }

JNDI

XID

データソース1

データソース2

@TransactionAttribute

(value=REQUIRED)

public void callA() {

// …

}

@TransactionAttribute

(value=SUPPORTS)

public void callB() {

// …

}

トランザクション境界を決定

(begin - commit)

トランザクションが開始されると関与するリソース・

マネージャを管理

CMTではTransactionAttributeの値によってグローバル・トラン

ザクションに参加

commitはTM

に対して発行

XIDを割当

XIDを受け取ったリソースはTMと通信

Page 17: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 17

トランザクションの設定

トランザクションサービスはWebLogic Server起動時に開始される

– トランザクションの設定

ドメイン・レベルで設定を行う

– ドメインで同じトランザクション設定を使用

– WLS12.1.2はクラスタ単位でも設定可能

– トランザクションのモニタリング

サーバ・レベルでモニタリングを行う

– 管理コンソール, WLST …

– 参加リソース(JDBCデータソース, JMSなど)の設定

リソース・レベルで設定を行う

Page 18: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 18

トランザクション設定 ドメイン設定

トランザクション開始からフェーズ1完了までの持続時間。この時間を超えるとTXはタイムアウトし、ロールバックされる

TMが新しいトランザクションログを作成し、古いトランザクションログを破棄するかどうかを確認する間隔

[10.3.3.0~]トランザクションのフェーズ2

のタイムアウト時間。デフォルト(0)はtransaction-timeout x 2(秒)

Page 19: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 19

クラスタのトランザクション設定 WebLgic Server 12.1.2

TIPS:

WLS12.1.2ではクラスタ単位でJTAを構成可能。 クラスタのJTA設定はドメインのJTA設定よりも優先される

Page 20: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 20

トランザクションログ

未完了のトランザクション情報を格納するログ

– トランザクションログはバイナリ形式のため、直接見ることはできない

– トランザクションログはサーバのデフォルト永続ストアに格納される

デフォルト永続ストア: $DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT

WLS12cではJDBCストアを使用可能(後述)

サーバごとに設定変更可能

Page 21: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 21

JDBC TLOG ストア

TLogをデータベースに永続化可能

– TLog用高信頼性ストレージの代替

– 障害復旧の容易性の向上 (アプリケーションデータ, JMS, TLOGをDBに一括格納可能)

WLS 12.1.1 ~

デフォルト・ストア もしくは JDBC

TLog永続ストア用のデータソースを指定する

- グローバルトランザクション非サポート(非XA)のデータソースを指定

- ストア先のDBにアクセス出来ないと起動に失敗する

Page 22: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 22

トランザクションのモニタ

トランザクションのモニタはサーバ・レベルで行う

– トランザクション統計(JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean)

– トランザクションログストア統計(TransacitonLogStoreRuntimeMBean)

– リソースごとのトランザクション統計

XA (TransactionResourceRuntimeMBean)

非XAリソース (NonXAResourceRuntimeMBean)

– 回復サービス(RecoveryRuntimeMBean)

– 現在のトランザクション (JTARuntimeMBeanのJTATransactions属性)

Page 23: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 23

トランザクションモニタ

ロールバックしたトランザクションは原因別の総数が表示される

Page 24: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 24

実行中のトランザクション

Page 25: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 25

トランザクションの手動解決

実行中のトランザクションは手動解決可能

– 障害対応用として使用

– ローカルオプションとグローバルオプション

ローカル: 該当のサーバリソースにのみ影響

グローバル: グローバルトランザクションに参加する全サーバに影響

– トランザクションのステータスによって行える処理が異なる ステータス 強制コミット 強制ロールバック ステータス 強制コミット 強制ロールバック

アクティブ ○ ロールバック中 ○

準備中 ○ ロールバック完了 ○

準備完了 ○ ○ マーク済ロールバック ○

コミット中 ○ トランザクションなし

コミット完了 ○ 不明 ○ ○

Page 26: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 26

ヒューリスティックな終了

2PC処理中にRMによる一方的な決定(commit/rollback)が行われた状態

– インダウト中のTM障害や、トランザクション破棄、トランザクションの手動解決などにより発生

– ヒューリスティックな終了の状態によってスローされる例外が異なる

ヒューリスティックな決定 説明

HeuristicRollback RMがRollbackしてしまった。TMが他のTXブランチをコミットすると不整合発生

HeuristicCommit RMがCommitしてしまった。TMが他のTXブランチをRollbackすると不整合発生

HeuristicMixed 複数のリソースでHeuristicRollbackとHeuristicCommitが発生していることをTMが認識している状態

HeuristicHazard HeuristicMixedが発生しているが、TMがRMのステータスを識別できていない状態

Page 27: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 27

障害時の復旧

WebLogic ServerのTMではトランザクション回復サービスを提供

– サーバ起動時に自動的に実行

– TLogを解析して未完了のトランザクションの解決を行う

2PC処理を完了させる(フェーズ1, フェーズ2)

ヒューリスティックな終了をログに記録

サーバに障害が発生した場合の対応

– ハードウェア障害に対応するにはTLogの複製が必須

高性能Disk or JDBCストア(WLS12c)

– クラスタ構成の場合はサービス移行orサーバ移行可能

TRS(トランザクション回復サービス)

TLogにアクセスできる状態でサーバを起動する

Page 28: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 28

トランザクションに参加可能なリソース

リソース トランザクション開始者 トランザクション参加者 XAResource

Java Client ○

CORBA Client ○

RMI Object ○ ○ (if hosted on WLS)

EJB (BMT) ○

EJB (CMT) ○ ○

JDBC (DataSource) ○ ○ ○

JMS ○ ○ ○

J2EE Connector ○ ○ ○

Servlets/JSP ○

外部リソース ○ ○

Page 29: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 29

EJB(CMT)のトランザクション管理

EJB(CMT)ではEJBコンテナがトランザクション境界を設定

– トランザクション属性で制御可能(@TransactionAttribute)

指定可能なトランザクション属性

– コンテナ – コンポーネント間のトランザクション

TransactionAttribute クライアント(TXなし) クライアント(TXあり)

NEVER △ × 例外発生

NOT SUPPORTED △ △ クライアントTXはSuspend

SUPPORTS △ ○

MANDATORY × 例外発生 ○

REQUIRED ○ ○

REQUIRES NEW ○ ○ クライアントTXはSuspend

×: 呼び出し不可 △:トランザクションなし ○:トランザクションあり

Page 30: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 30

JDBCデータソースのトランザクション対応

分散トランザクションに参加する場合は原則としてデータソース作成時に『XA対応ドライバ』を使用する

非XAドライバを使用する場合は『グローバルトランザクションのサポート』を選択

TIPS: 非XAドライバでグローバルトランザクションを使用する場合は、Connectionの取得前にトランザクションを開始する

Page 31: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 31

Logging Last Resource(LLR)

トランザクションの整合性を保ちつつ2PCトランザクションの最適化を実現

– 2PCに参加するリソースのXA処理のオーバーヘッドを低減

– +「2PCのエミュレート」よりも高い整合性

LLRの注意点

– LLR用のデータソースは非XAドライバを使用

– LLR表は自動生成される(表名の接頭辞は指定可能)

– LLR表を格納するDBはWLSよりも先に起動しておく

LLR表を格納するDBにアクセス出来ないと起動に失敗する

– LLR使用時もTLogは必要

Page 32: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 32

LLR処理

32

XA Data Source

Non-XA Data Source

JMS XA Connection

1 WebLogic Server

(TM) Application

Commit

2

2 2PC:Prepare

3

4

5

5

2PC:Commit

非XAリソース コミット

(ローカルTX)

コミットレコード

挿入

LLR Table

Page 33: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 33

ドメイン間トランザクションの設定

ドメイン間に渡るグローバルトランザクションを実行するにはドメインのセキュリティ設定を追加する

– ドメイン間でのセキュリティコンテキストの伝播のため

クロスドメインセキュリティを設定

ドメイン間の信頼(セキュリティ相互運用モード)

– 考慮事項

ドメイン間トランザクションを参加するリソース名は一意である必要がある

Page 34: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 34

JTAのDebug属性

属性 スコープ 説明

DebugJTAXA weblogic.transaction.xa XAリソースのトレース

DebugJTANonXA weblogic.transaction.nonxa 非XAリソースのトレース

DebugJTA2PC weblogic.transaction.twopc すべての2フェーズ・コミット処理のトレース

DebugJTATLOG weblogic.transaction.tlog トランザクション・ロギング情報のトレース

DebugJTARecovery weblogic.transaction.recovery リカバリ情報のトレース

DebugJTAMigration weblogic.transaction.migration トランザクション・ログの移行に関する情報のトレース

DebugJTALifecycle weblogic.transaction.lifecycle トランザクション・サーバーのライフサイクル(初期化、中断、再開、停止)に関する情報のトレース

DebugJTALLR weblogic.transaction.llr すべてのロギング・ラスト・リソース処理のトレース

DebugJTAHealth weblogic.transaction.health トランザクション・サブシステムの状態に関する情報のトレース

Page 35: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 35

まとめ

WebLogic Serverのトランザクションはドメイン単位で設定する

– WLS12.1.2はクラスタ単位でも設定可能

– 2PCトランザクション処理がある場合は、考慮事項が増える

TXタイムアウト, TLOGストア, 障害回復, …

– モニタリングはサーバ単位で行う

プログラミングモデルは原則としてJava EE準拠

– リソース毎に必要なトランザクション設定を行う

Page 36: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 36

オラクルユニバーシティからのお知らせ

Page 37: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 37

Oracle Universityからのお知らせ

WebLogic Serverの管理方法を体系的に学習したい方に最適な研修コースをご提供しています。

– Classroomトレーニングだけでなく、Live Virtual Classや『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。

Page 38: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 38

コース内容

■Oracle WebLogic Server概要

■ドメインの作成

■Administration Console

■ドメインのモニタリング

■アプリケーションのデプロイメント

■WebLogic Server セキュリティ

■ドメインのバックアップおよびリカバリ

■WebLogic Serverのインストールおよびパッチ適用

■サーバーの起動および停止

■JDBCデータソースの構成

■ノードマネージャ

■WebLogic Serverクラスタリング

■トランザクション・サービスのコンフィグレーション

受講前提条件 ・Linux の基本的な操作方法の理解 ・Java EE の基礎知識(サーブレットや JSP など) ※推奨

対象者 ・Oracle WebLogic Server 管理者

・Javaアプリケーション開発者

・アーキテクト

コース日程 5日間 日程の詳細は Oracle University Webサイト にてご確認ください。

受講料 定価¥374,850(税込) ※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。

Oracle WebLogic Server 12c の運用管理スキルをしっかり習得 待望のWebLogic Server 12c(12.1.2)対応研修がいよいよ提供開始です。

このコースでは、アプリケーション・サーバー管理者がOracle WebLogic Server 12cのインストールおよび設定方法を習得することがで

きます。管理コンソールやコマンドラインツール(WLST)などを使用してドメインを構成する方法やJava EEアプリケーションをサー

バーにデプロイする方法についても説明します。さらに、Oracle WebLogic Server のプロキシとしてOracle HTTP Serverを設定し、

WebLogic Serverクラスタによるアプリケーションのフェイルオーバーとロードバランシングをサポートする方法など、環境構築に必要

なスキルとWebLogic Serverのモニタリングやログ情報の収集など運用に必要なスキルを実機演習を通して習得できます。さらに、

Oracle WebLogic Server 12cで強化されたActive GridLink for RACの構成方法やWebLogic Server 12.1.2の新機能である動的クラスタなど

注目の新機能もカバーします。

Oracle WebLogic Server 12c: 管理 I

ミドルウェア

開催日程 ■ お問い合わせください

Page 39: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 39

Page 40: WebLogic Server Transaction Basics

Copyright © 2014, Oracle and/or its affiliates. All rights reserved. 40