ヘッダーをスキップ
Oracle® Services for Microsoft Transaction Server開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58888-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 Oracle Microsoft Transaction Serverのトラブルシューティング

この章では、Oracle Microsoft Transaction Serverのトラブルシューティングについて説明します。

この章の項目は次のとおりです。

Oracle Services for Microsoft Transaction Serverパフォーマンスの追跡

トレース・ファイルには、Oracle Services for Microsoft Transaction Serverパフォーマンスに関する情報が記録されています。この情報には、次のものが含まれます。

  • エラー

  • 登録要求とその結果

  • 準備、コミットおよび終了の要求とその結果

レジストリ・パラメータは、次のタスクを実行するoramts.dll内で追跡を処理します。

  • OracleデータベースをMicrosoft Transaction Serverと統合するためのAPIを実装します。

  • リソース・ディスペンサとして機能し、プール済のOracle Call Interface(OCI)接続を提供します。

  • プールされていないOCI接続を持つクライアントを、Microsoft分散トランザクション・コーディネータ(MS DTC)によって開始されたトランザクションに登録できるようにします。

  • Oracle Services for Microsoft Transaction Serverと通信して、MS DTCによって開始されたトランザクションにOracle Databaseを登録します。

MTSベースのCOMコンポーネントは、データベースの専用Oracleサーバーおよび共有Oracleサーバーの両方に対する接続を取得できます。次に、このコンポーネントでは、これらのデータベースの間にあらかじめ存在するデータベース・リンクを使用して、もう1つのデータベースで、データ操作言語を使用した分散更新が試行されます。共有サーバーからの分散更新には成功しますが、専用サーバーからの分散更新は失敗します。

追跡を処理するレジストリ・パラメータは、Oracle Services for Microsoft Transaction Serverのインストール中に\\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEIDに自動的に設定されます。

Oracle Services for Microsoft Transaction Serverを使用して、すべてのアプリケーションを再インストールします。また、OracleMTSRecoveryServiceのトレースに関連するパラメータを変更した場合は、Windowsサービスを再起動します。

表6-1は、ORAMTS_CP_TRACE_LEVELトレース値の範囲を示しています。

表6-1 ORAMTS_CP_TRACE_LEVELトレース・レジストリ・パラメータの値

レベル 説明

0

トレースを無効化します。レジストリ・パラメータがレジストリにも、環境変数としても設定されていない場合は、トレースが無効になります。これはレベルを0に設定することと同じです。

1

エラーのみトレース。

2

エラーに加えて重要なイベントをトレース。

3

このレベルはサポートされていません。このパラメータを3に設定すると、レベル2のトレースが有効になります。

4

関数の入力と出力、重要なイベント、およびエラーをトレース。

5

参照カウント関数と、コンストラクタおよびデストラクタの入力と出力をトレース。



注意:

Oracle MTS Recovery Serviceでは、ORACLE_BASE\ORACLE_HOME\oramts\traceディレクトリにもトレース・ファイル出力が生成されます。

接続プールに影響するOracle Netの変更の修正

OraMTSレイヤーoramts.dllが提供する接続プールでは、接続のネット・サービス名使用して、アプリケーションのプール済の接続を識別します。ネット・サービス名の変更時に、プール済の接続が存在する場合は、接続プールを使用しているアプリケーションを停止して、再起動する必要があります。この変更には、tnsnames.oraファイルでのネット・サービス名のホストまたはデータベース・システム識別子(SID)の変更も含まれます。

この変更により、現在プール済の、旧ネット・サービス名に対応するすべての接続が破棄され、新たにプールされる接続は変更されたネット・サービス名を使用するようになります。この中には、Microsoft Transaction Serverコンポーネントのホストになっているあらゆるアプリケーションが含まれます。

接続プールを空にするには、次のようにします。

  • アプリケーションがプロセス外のMicrosoft Transaction Serverコンポーネント(サーバー・パッケージ)である場合は、次のアプリケーションを実行します。

    C:\> mtxstop
    

    これにより、接続プールが空になります。

  • アプリケーションがインプロセスのMicrosoft Transaction Serverコンポーネント(ライブラリ・パッケージ)である場合は、アプリケーションを終了します。これにより、接続プールも空になります。

複数のデータベースを使用するアプリケーションの設計

Oracleクライアントは、2種類の方法でデータベースへの接続を確立できます。

  • 通常のOracleクライアントは、専用サーバー構成を使用してデータベースへの接続を確立します。専用サーバー構成では、1つのクライアントが1つのOracleサーバー・プロセスに対応します。

  • 高負荷の環境で拡張性を得るために、Oracleクライアントは共有サーバー構成を使用できます。共有サーバー構成では、1つのOracleサーバー・プロセスを複数のクライアント接続で共有することが可能です。

Microsoft Transaction Serverは、分散トランザクションを通じてデータベースと通信します。専用サーバー構成では、他のデータベースからの分散更新(データベース・リンクをまたがるデータ操作言語文)は使用できません。ただし、データベースへの元の接続が共有サーバー構成を使用して確立された場合は、他のデータベースからの分散更新が可能です。

共有サーバー構成でDML文を使用するには、tnsnames.oraファイルに次のパラメータを設定します。

SERVER=dedicated

これにより、Oracle Net Listenerが専用接続を提供します。図6-1はこのプロセスを表しています。

図6-1 MTSアプリケーションからの分散DML文

図6-1の説明が続きます
図6-1「MTSアプリケーションからの分散DML文」の説明


関連項目:

『Oracle Database Net Services管理者ガイド』

様々な種類の接続プールの使用

Oracle Net接続プーリング: Oracle Net接続プーリングはサーバー側の機能で、Oracle Databaseが共有サーバー・サポート用に構成されている場合にのみ実装されます。Oracle Net接続プーリングを使用すると、共有サーバーに対する物理的なネットワーク接続数を最小限にすることができます。これは、ディスパッチャの接続を複数のクライアント・プロセス間で共有することによって実現されます。

Microsoft Transaction Server接続プーリング: Microsoft Transaction Serverは、メモリーやデータベース接続などの特定のリソースのプールを可能にする、リソース・プーリング・インフラストラクチャを提供します。

OCI接続プーリング: OCI接続プーリング・レイヤーでは、MTSのリソース・プーリングと連携して、プール済のOracleクライアント/サーバー・セッションを提供します。また、OCI接続プーリング・レイヤーではOracle Net接続のキャッシュも行い、クライアント/サーバー・セッションの設定時間を短縮します。

インダウト・トランザクションの使用

Oracleでは、次の構成で分散トランザクションを使用します。

  • 分散データベース構成(データベース・リンクを使用した分散更新など)

  • トランザクションの結果を調整するための外部トランザクション・マネージャ(Tuxedo、MS DTCなど)

2フェーズ・コミット・プロトコルにより、これらのトランザクションが完了します。フェーズ1では、トランザクション・マネージャ(TM)が、TMのトランザクションに関与する各種リソース・マネージャに、基礎となる分散トランザクションの準備を要求します。フェーズ2では、TMがトランザクションをコミットするか終了するかを決定し、リソース・マネージャに基礎となるトランザクションのコミットまたは終了を要求します。リソース・マネージャがフェーズ2の通知の受信に失敗した場合、基礎となる分散トランザクションはインダウトになります。

OracleをMicrosoft Transaction Serverと統合するために、データベースで分散トランザクションが使用されます。分散トランザクションは、MS DTCによって調整されるトランザクションに対応します。トランザクションがコミットまたは終了できない(2フェーズ・コミットのフェーズ2)場合に、分散トランザクションがインダウトになる可能性があります。これは、Microsoft Transaction Serverアプリケーション・サーバー・プロセス、データベースまたはネットワークで障害が発生した場合に起こります。

Microsoft Transaction Server管理者ユーザー・アカウントの削除

Microsoft Transaction Server管理者ユーザー・アカウントは、oramtsadmin.sqlスクリプトを実行すると作成されます。Microsoft Transaction Serverでトランザクションを調整しているデータベースを後から変更した場合、旧データベースから管理者ユーザー・アカウントのスキーマを削除できます。

Microsoft Transaction Server管理者ユーザー・アカウントを削除するには、次のようにします。

  1. SQL*Plusを起動します。

    c:\> sqlplus /NOLOG
    
  2. データベースにSYSDBAとして接続します。

    SQL> CONNECT / AS SYSDBA
    
  3. 次のコマンドを入力して、管理者ユーザー・アカウントのスキーマを削除します。

    SQL> DROP USER mtsadmin_username CASCADE;
    

    mtsadmin_usernameはMicrosoft Transaction Server管理者ユーザー・アカウントです(デフォルトはmtssys)。


関連項目:

新規データベースのMicrosoft Transaction Server管理者ユーザー・アカウントの作成については、第3章「リカバリのシナリオ管理」を参照してください。