Oracle Tuxedo アプリケーション実行時の管理

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Oracle Tuxedo アプリケーションのトラブルシューティング

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

 


障害の種類の判別

トラブルシューティングの最初のステップとして、まずどこで障害が発生したかを判別します。ほとんどのアプリケーションでは、障害の発生源として以下の 6 か所が考えられます。

障害が発生した場所を特定できたら、各箇所の担当者と協力して障害を解決してください。たとえば、ネットワーキングに関する障害が発生した場合は、ネットワーク管理者と協力して解決してください。

アプリケーション障害の原因の判別

アプリケーション障害の原因を検出するには、次の手順に従います。

  1. ユーザ ログ (ULOG) 内で、Oracle Tuxedo システムの警告メッセージとエラー メッセージを調べます。
  2. 発生した問題を反映していると思われる内容のメッセージをいくつか選択します。各メッセージのカタログ名とメッセージ番号を書き留めておき、該当するメッセージをシステム メッセージで調べます。マニュアルの各項目には次の情報が含まれています。
    • メッセージが示すエラーの詳細内容
    • エラーを解決するための推奨措置
  3. ULOG 内でアプリケーションの警告メッセージとエラー メッセージを調べます。
  4. アプリケーション サーバおよびアプリケーション クライアントによって生成された警告とエラーを調べます。このようなメッセージは通常、標準出力ファイルおよび標準エラー ファイルに送られます (デフォルト名はそれぞれ stdout および stderr)。
    • stdout ファイルおよび stderr ファイルは APPDIR 変数で定義されたディレクトリにあります。
    • クライアントサイドとサーバサイドに設定されている stdout ファイルおよび stderr ファイルの名前は、変更されている場合があります。stdout ファイルと stderr ファイルの名前を変更するには、コンフィグレーション ファイル内で、該当するクライアントとサーバの定義にそれぞれ -e または -o を指定します。詳細については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「servopts(5)」を参照してください。
  5. APPDIR 変数で定義されたディレクトリにコア ダンプがないかどうかを調べます。dbx などのデバッガを使用してスタック トレースを実行します。コア ダンプが見つかった場合は、アプリケーション開発者に通知します。
  6. sar(1) などのコマンドを実行してシステム アクティビティ レポートを表示し、システムが正しく機能しない原因を調べます。以下の原因が考えられます。
    • システムのメモリが不足している。
    • カーネルが正しくチューニングされていない。

Oracle Tuxedo システムでの障害の原因の判別

システム障害の原因を検出するには、次の手順に従います。

  1. ユーザ ログ (ULOG) 内で、Oracle Tuxedo システムの警告メッセージとエラー メッセージを調べます。
    • TPEOS メッセージは、オペレーティング システムにエラーが発生したことを示します。
    • TPESYSTEM メッセージは、Oracle Tuxedo システムにエラーが発生したことを示します。
  2. 発生した問題を反映していると思われる内容のメッセージをいくつか選択します。各メッセージのカタログ名とメッセージ番号を書き留めておき、該当するメッセージをシステム メッセージで調べます。マニュアルの各項目には次の情報が含まれています。
    • メッセージが示すエラーの詳細内容
    • エラーを解決するための推奨措置
  3. 次の手順でデバッグの準備をします。
    • suspend サービスを停止します。
    • tmboot -n -s(server) -d1 を実行します (このコマンドを実行してもサーバは起動しませんが、サーバを起動するためのコマンドラインが出力されます)。dbx などのデバッガを指定して、このコマンドラインを使用してください。

 


非請求メッセージのブロードキャスト

イベント ブローカのイベント サマリ (システム全体に渡るサマリ) 生成機能とメカニズム (イベントにより通知を発行) により、トラブルシューティングの機能が拡張されます。イベント ブローカは、Oracle Tuxedo のシステム イベント (サーバの停止やネットワークの障害など) やアプリケーション イベント (ATM 機のメモリ不足など) の詳細を報告します。あるイベントに関する非請求通知を受信した Oracle Tuxedo クライアントは、呼び出すサービス ルーチンを指定したり、以降のデータの格納先とするアプリケーション キューを指定することができます。また、非請求通知を受信した Oracle Tuxedo サーバは、サービス要求を指定したり、データの格納先とするアプリケーション キューを指定できます。

  1. 非請求メッセージを送信するには、次のコマンドを入力します。
  2. broadcast (bcst) [-m machine] [-u usrname] [-c cltname] [text] 
    注意 : デフォルトでは、メッセージはすべてのクライアントに送信されます。
  3. ただし、メッセージの送信先を次のいずれかに制限することもできます。
    • 特定のマシン (-m machine)
    • 特定のクライアント グループ (-c client_group)
    • 特定のユーザ (-u user)

メッセージは、80 文字以内で記述します。システムは STRING バッファ型でメッセージを送信します。つまり、クライアントの非請求メッセージ処理関数 (tpsetunsol(0) で指定) では、この型のメッセージを処理できなければなりません。この場合、tptypes() 関数を使用すると便利です。

関連項目

 


システム ファイルの保守

ファイル システムを保守するため、次のタスクを定期的に行う必要があります。

注意 : このファイル形式は、TUXCONFIGTLOG、および /Q で使用されます。

汎用デバイス リスト (UDL: Universal Device List) の出力

UDL を出力するには、次の手順に従います。

  1. tmadmin -c を実行します。
  2. 次のコマンドを入力します。
  3. lidl
  4. UDL を取得するデバイスを指定する方法は、次の 2 つです。
    • lidl コマンドラインで次のように指定します。
    • -z device_name [devindx]
    • 希望するデバイスの名前に環境変数 FSCONFIG を指定します。

VTOC 情報の出力

VTOC 情報を出力するには、次の手順に従います。

  1. tmadmin -c を実行します。
  2. すべての VTOC テーブル エントリの情報を取得するには、次のコマンドを入力します。
  3. livtoc
  4. VTOC を取得するデバイスを指定する方法は、次の 2 つです。
    • lidl コマンドラインで次のように指定します。
    • -z device name [devindx]
    • 希望するデバイスの名前に環境変数 FSCONFIG を指定します。

デバイスの再初期化

デバイス リスト内のデバイスを再初期化するには、次の手順に従います。

  1. tmadmin -c を実行します。
  2. 次のコマンドを入力します。
  3. initdl [-z devicename] [-yes] devindx
    注意 : devindx には、破棄するファイルのインデックスを指定します。
  4. 次の方法のいずれかでデバイスを指定できます。
    • -z オプションの後にデバイス名を指定します (上記を参照)。
    • デバイス名に環境変数 FSCONFIG を指定します。
  5. コマンドラインで -yes オプションを指定すると、ファイルを削除するかどうかを確認するプロンプトは表示されません。

デバイス リストの作成

デバイス リストを作成するには、次の手順に従います。

  1. tmadmin -c を実行します。
  2. 次のコマンドを入力します。
  3. crdl [-z devicename] [-b blocks]
    • devicename [devindx] には、希望するデバイス名を指定します。新しいデバイスに名前を割り当てる別の方法として、環境変数 FSCONFIG に希望するデバイス名を設定することもできます。
    • blocks には、必要なブロックの数を指定します。デフォルト値は 1000 です。
    • 注意 : TLOG に関連する管理オーバーヘッド用に 35 ブロックが必要なため、TLOG を作成する場合は、35 より大きい値を割り当てます。

デバイス リストの破棄

devindx のインデックスを持つデバイス リストを破棄するには、次の手順に従います。

  1. tmadmin -c を実行します。
  2. 次のコマンドを入力します。
  3. dsdl [-z devicename] [yes] [devindx]
    注意 : devindx には、破棄するファイルのインデックスを指定します。
  4. 次の方法のいずれかでデバイスを指定できます。
    • -z オプションの後にデバイス名を指定します (上記を参照)。
    • デバイス名に環境変数 FSCONFIG を指定します。
  5. コマンドラインで yes オプションを指定すると、ファイルを破棄するかどうかを確認するプロンプトは表示されません。

 


障害回復時の注意事項

Oracle Tuxedo システムの機能性を最適にするには、環境がある程度安定している必要があります。Oracle Tuxedo の管理サブシステムには、ネットワーク、マシン、およびアプリケーション プロセスの障害から回復するための優れた機能が用意されていますが、これらも完璧ではありません。Oracle Tuxedo システムが以下のように機能することを理解しておいてください。

SYSTEM_ACCESSFASTPATH モデル (デフォルト) を使用するアプリケーション クライアントおよびアプリケーション サーバは、Oracle Tuxedo 共有データ構造へのダイレクト メモリ アクセスが可能です。FASTPATH モデルを使用すると、Oracle Tuxedo システムの性能を最大限に引き出すことができます。Oracle Tuxedo システムでは、オペレーティング システムが提供する IPC (InterProcess Communication) 機能とファイル システム機能を使用します。

アプリケーションで、これらの機能を誤って使用して Oracle Tuxedo 共有メモリまたは Oracle Tuxedo ファイル記述子に書き込みを行った場合や、誤ってほかの Oracle Tuxedo システム リソースを使用した場合は、データが破壊されたり、Oracle Tuxedo の機能が損なわれたり、アプリケーションが停止したりするおそれがあります。

アプリケーション クライアント、アプリケーション サーバ、および Oracle Tuxedo 管理プロセスは、重要な部分 (つまり、共有メモリ内の共有情報の更新) で実行されている可能性があるため、ユーザや管理者がこれらのプロセスを直接終了するのは適切ではありません。メモリの更新中に重要な部分への割り込みを行うと、内部データ構造に矛盾が生じるおそれがあります。これは、Oracle Tuxedo システム固有の問題ではなく、共有データを使用するすべてのシステムに共通の問題です。Oracle Tuxedo ユーザ ログ内のエラー メッセージがロックやセマフォを参照している場合、このようなデータの破壊が発生したことを示している可能性があります。

アプリケーションの可用性を最大にするには、Oracle Tuxedo システムの冗長性管理機能 (複数サーバ、マルチ マシン、マルチ ドメインなどの機能) を活用します。アプリケーションの機能を分散しておくと、1 つの領域で障害が発生した場合でもオペレーションを継続できます。

 


分断されたネットワークの修復

この節では、ネットワーク分断の原因を見つけ、回復するためのトラブルシューティングについて説明します。1 つまたは複数のマシンから MASTER マシンにアクセスできない場合は、ネットワークが分断されています。アプリケーションの管理者は、ネットワークの分断を見つけ、回復する責任があります。

ネットワークの分断は、次のいずれかの原因で発生します。

分断されたネットワークの回復手順は、分断された原因によって異なります。

分断されたネットワークの検出

分断されたネットワークは、次のいずれかの方法で検出できます。

ULOG のチェック

ネットワークで問題が発生すると、Oracle Tuxedo システムの管理サーバは ULOG へメッセージを送り始めます。ULOG がリモート ファイル システム上で設定されている場合、すべてのメッセージは同じログに書き込まれます。したがって、1 つのファイルで tail(1) コマンドを実行し、画面に表示される障害メッセージを調べることができます。

ただし、リモート ファイル システムが、障害のあるネットワークを使用している場合、リモート ファイル システムが使用できない場合があります。

コード リスト 9-1 ULOG エラー メッセージの例
151804.gumby!DBBL.28446: ... : ERROR: BBL が分断されています。machine=SITE2

ネットワーク、サーバ、およびサービスに関する情報の収集

次のリストは、分断されたネットワークおよびそのネットワーク上のサーバとサービスに関する情報を収集する tmadmin セッションの例です。次の 3 つの tmadmin コマンドが実行されます。

ネットワーク接続の回復

この節では、一時的なネットワーク障害および重大なネットワーク障害からの回復方法を説明します。

一時的なネットワーク障害からの回復

一時的なネットワーク障害は、BRIDGE によって自動的に回復され、再接続が行われるため、通常ユーザ側ではこの障害の発生はわかりません。ただし、一時的なネットワーク障害を手動で回復する必要がある場合は次の手順に従います。

  1. MASTER マシンで tmadmin(1) セッションを開始します。
  2. reconnect コマンド (rco) を実行し、分断されていないマシンと分断されたマシンの名前を指定します。
  3. rco non-partioned_node1 partioned_node2

重大なネットワーク障害からの回復

重大なネットワーク障害を回復するには、次の手順に従います。

  1. MASTER マシンで tmadmin セッションを開始します。
  2. pclean コマンドを実行して、分断されたマシンの名前を指定します。
  3. pcl partioned_machine
  4. アプリケーション サーバを移行するか、または障害の修復後にマシンを再起動します。

 


障害が発生したマシンの復元

障害が発生したマシンを復元する手順は、マシンが MASTER マシンであるかどうかによって異なります。

障害が発生した MASTER マシンの復元

障害が発生した MASTER マシンを復元するには、次の手順に従います。

  1. Oracle Tuxedo のプロセスに対する IPC 資源がすべて除去されていることを確認します。
  2. ACTING MASTER (SITE2) で tmadmin セッションを開始します。
  3. tmadmin
  4. 次のコマンドを入力して MASTER (SITE1) で BBL を起動します。
  5. boot -B SITE1

    SITE1pclean を実行していない場合、BBL は起動できません。

  6. tmadmin セッションで、以下のように入力して、MASTER サイト (SITE1) で再度 DBBL を実行します。
  7. MASTER
  8. 障害が発生したマシンからアプリケーション サーバとデータを移行した場合は、再起動するか、または移行を元に戻します。

障害が発生した非マスタ マシンの復元

障害が発生した非マスタ マシンを復元するには、次の手順に従います。

  1. MASTER マシンで tmadmin セッションを開始します。
  2. pclean を実行し、分断されたマシンをコマンドラインで指定します。
  3. マシンの問題を修正します。
  4. MASTER マシンから BBL を起動して、障害の発生したマシンを復元します。
  5. 障害が発生したマシンからアプリケーション サーバとデータを移行した場合は、再起動するか、または移行を元に戻します。

次のリストでは、非マスタ マシン SITE2 を復元する例を示します。

コード リスト 9-3 障害が発生した非マスタ マシンの復元の例
$ tmadmin
tmadmin - Copyright © 1987-1990 AT&T; 1991-1993 USL. All rights reserved

> pclean SITE2
DBBL のクリーニングをしています。

システムが安定するまで 10 秒間お待ちください。
掲示板から 3 個の SITE2 サーバを削除しました。

> boot -B SITE2
TUXEDO 管理プロセスを起動します。

Exec BBL -A :

on SITE2 -> プロセス ID=22923 を起動しました。
1 個のプロセスを起動しました。
> q

 


システム コンポーネントの置換

Oracle Tuxedo システムのコンポーネントを置換するには、次の手順に従います。

  1. 置換したい Oracle Tuxedo システム ソフトウェアをインストールします。
  2. 変更によって影響を受ける次のアプリケーションの部分を停止します。
    • ライブラリが更新された場合は、Oracle Tuxedo システム サーバを停止します。
    • 関連する Oracle Tuxedo システムのヘッダ ファイルまたは静的ライブラリが置換された場合は、アプリケーションのクライアントとサーバを停止して再度ビルドする必要があります。ただし、Oracle Tuxedo システムのメッセージ カタログ、システム コマンド、管理サーバ、または共有オブジェクトが置換された場合、アプリケーションのクライアントとサーバのビルドは必要ありません。
  3. 関連する Oracle Tuxedo システムのヘッダ ファイルおよび静的ライブラリが置換される場合は、アプリケーションのクライアントとサーバを再度ビルドします。
  4. 停止したアプリケーション部分を再起動します。

 


アプリケーション コンポーネントの置換

アプリケーションのコンポーネントを置換するには、次の手順に従います。

  1. アプリケーション ソフトウェアをインストールします。アプリケーション ソフトウェアの構成要素には、アプリケーション クライアント、アプリケーション サーバ、および管理ファイル (FML フィールド テーブルなど) があります。
  2. 置換するアプリケーション サーバを停止します。
  3. 必要に応じて、新しいアプリケーション サーバをビルドします。
  4. 新しいアプリケーション サーバを起動します。

 


手動によるサーバのクリーンアップと再起動

デフォルトでは、Oracle Tuxedo システムはデッド プロセスに関連付けられた資源 (キューなど) をクリーンアップし、BBL スキャン中に定期間隔で掲示板 (BB) から再起動可能な停止したサーバを再起動します。ただし、ほかの時点でもクリーンアップを要求できます。

デッド プロセスに関連付けられた資源のクリーンアップ

デッド プロセスに関連付けられた資源を直ちにクリーンアップするには、次の手順に従います。

  1. tmadmin セッションを開始します。
  2. bbclean machine を入力します。

bbclean コマンドには、オプションの引数として、クリーンアップされるマシンの名前を指定できます。

引数
結果
指定しない場合
デフォルト設定のマシン上の資源がクリーンアップされます。
マシンを指定する場合
指定したマシン上の資源がクリーンアップされます。
DBBL
DBBL (Distinguished Bulletin Board Liaison) およびすべてのサイトの掲示板の資源がクリーンアップされます。

ほかの資源のクリーンアップ

ほかの資源をクリーンアップするには、次の手順に従います。

  1. tmadmin セッションを開始します。
  2. pclean machine を入力します。
注意 : machine には値を指定する必要があります。これは必須引数です。

指定するマシン
結果
分断されていないマシン
pcleanbbclean を呼び出します。
分断されたマシン
pclean は、分断されていないすべての掲示板からサーバとサービスの全エントリを削除します。

このコマンドは、不意に分断が生じた後でシステムを正常に復元する場合に便利です。

 


Oracle Tuxedo CORBA サーバの起動順序の確認

Oracle Tuxedo CORBA アプリケーションの起動に失敗した場合、テキスト エディタでアプリケーションの UBBCONFIG ファイルを開き、SERVERS セクションでサーバが正しい順序で起動されているかどうかを確認します。Oracle Tuxedo CORBA 環境での正しいサーバの起動順序は以下のとおりです。この規則に違反した場合、Oracle Tuxedo CORBA アプリケーションは起動しません。

サーバの起動順序

  1. システムのイベント ブローカ、TMSYSEVT
  2. -N および -M オプションが設定された TMFFNAME サーバ。NameManager サービスを (MASTER として) 起動します。このサービスは、アプリケーション側で提供される名前とオブジェクト参照のマッピングを維持します。
  3. -N オプションのみ設定された TMFFNAME サーバ。スレーブ NameManager サービスを起動します。
  4. -F オプションが設定された TMFFNAME サーバ。FactoryFinder を起動します。
  5. ファクトリを宣言するアプリケーション サーバ。

詳細については、『Oracle Tuxedo アプリケーションの設定』の「CORBA C++ サーバの起動順序」を参照してください。

 


Oracle Tuxedo CORBA サーバのホスト名形式と大文字/小文字の確認

プログラマが Bootstrap オブジェクト コンストラクタまたは TOBJADDR で指定したネットワーク アドレスは、サーバ アプリケーションの UBBCONFIG ファイルにあるネットワーク アドレスと完全に一致していなければなりません。アドレスの形式や、大文字/小文字も識別されます。アドレスが一致しない場合、Bootstrap オブジェクト コンストラクタの呼び出しが失敗し、一見無関係と思われる以下のエラー メッセージが表示されます。

ERROR: クライアントからの非公式の接続 (アドレス
<tcp/ip address>/<port-number>) です。

たとえば、ネットワーク アドレスが、サーバ アプリケーションの UBBCONFIG ファイルにある ISL コマンドラインのオプション文字列で //TRIXIE:3500 に指定されている場合、Bootstrap オブジェクト コンストラクタや TOBJADDR で //192.12.4.6:3500 または //trixie:3500 のいずれかを指定すると、接続が失敗します。

UNIX システムでは、ホスト システムで uname -n コマンドを使用して大文字/小文字を指定します。Windows システムでは、ホスト システムで [コントロール パネル] の [ネットワーク] を使用して大文字/小文字を指定します。

 


Oracle Tuxedo CORBA クライアントの起動失敗の原因

Oracle Tuxedo CORBA アプリケーションを実行する Windows サーバで、一部のインターネット ORB 間プロトコル (IIOP) クライアントを起動した後、//host:port が正しく指定されているにもかかわらず、一部のクライアントで Bootstrap オブジェクトを作成できず、InvalidDomain メッセージが返される場合は、以下の手順を実行できます。関連情報については、「Oracle Tuxedo CORBA サーバのホスト名形式と大文字/小文字の確認」を参照してください。

  1. regedt32 (レジストリ エディタ) を起動します。
  2. [ローカル マシン上の HKEY_LOCAL_MACHINE] ウィンドウを表示します。
  3. 以下のキーを選択します。
  4. HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥Afd¥Parameters
  5. [編集] メニューの [値の追加] を使って以下の値を追加します。
  6. DynamicBacklogGrowthDelta: REG_DWORD : 0xa

    EnableDynamicBacklog: REG_DWORD: 0x1

    MaximumDynamicBacklog: REG_DWORD: 0x3e8

    MinimumDynamicBacklog: REG_DWORD: 0x14

  7. Windows を再起動し、変更を有効にします。

これらの値を追加することにより、5 つの保留接続が保持される静的接続キュー (バックログ) が、動的接続バックログに置き換えられます。この動的接続バックログには、最小 20 エントリ (最小 0x14)、最大 1000 エントリ (最大 0x3e8) を格納でき、最小値から最大値の間で 10 ずつ増加できます (0xa 間隔)。

これらの設定は、システムが受信した接続にのみ適用されますが、IIOP リスナでは受け付けられません。マイクロソフトでは、最小値 20、間隔 10 という値を推奨しています。最大値はマシンによって異なりますが、マイクロソフトでは Windows サーバの場合 5000 を超えない値を推奨しています。

 


トランザクションのアボートとコミット

この節では、トランザクションのアボートとコミットの方法について説明します。

トランザクションのアボート

トランザクションをアボートするには、次の手順に従います。

  1. 次のコマンドを入力します。
  2. aborttrans (abort) [-yes] [-g groupname] tranindex
  3. tranindex の値を決定するために、printtrans コマンド (tmadmin コマンド) を実行します。
  4. groupname が指定されると、メッセージがそのグループの TMS に送信され、そのグループのトランザクションに「アボート済み」のマークが付けられます。グループが指定されないと、メッセージはトランザクション コーディネータの TMS に送信され、トランザクションのアボートを要求します。アボート処理を制御するには、トランザクション内のすべてのグループにアボート メッセージを送信する必要があります。

このコマンドは、トランザクション コーディネータのサイトが分断されているか、またはクライアントがコミットまたはアボートを呼び出す前に終了してしまった場合に便利です。タイムアウト値が大きいと、トランザクションは、アボートされるまでトランザクション テーブルに残ります。

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

トランザクションをコミットするには、次のコマンドを入力します。

committrans (commit) [-yes] [-g groupname] tranindex
注意 : groupname および tranindex は必須引数です。

トランザクションがプリコミットされていないか、またはアボート済みのマークが付いている場合、操作は失敗します。トランザクションを完全にコミットするため、このメッセージはすべてのグループに送信しなければなりません。

committrans コマンドの使用上の注意

committrans コマンドの使用には注意が必要です。このコマンドは、次の 2 つの条件に合致する場合にのみ実行できます。

また、クライアントが tpcommit() でブロックされることもありますが、これはタイムアウトになります。管理コミットを実行する場合には、そのことをクライアントに必ず知らせてください。

 


トランザクション使用時における障害回復

管理対象のアプリケーションにデータベース トランザクションが含まれる場合は、ディスク破損の障害後に回復したデータベースにアフター イメージ ジャーナル (AIJ) を適用する必要があります。または、この回復アクティビティのタイミングをサイトのデータベース管理者 (DBA) と調整することが必要になる可能性もあります。通常はエラーが発生すると、データベース管理ソフトウェアが自動的にトランザクションのロールバックを行います。ただしデータベース ファイルを格納するディスクが永久的に破損した場合は、システム管理者または DBA が介入してロールフォワード オペレーションを行うことが必要になることもあります。

データベースの一部を含むディスクが、水曜日の午後 3 時に破損したと想定します。この例では、シャドウ ボリューム (ディスク ミラーリング) が存在しないとします。

  1. Oracle Tuxedo アプリケーションを停止します。停止方法については、『Oracle Tuxedo アプリケーションの設定』の「アプリケーションの起動と停止」を参照してください。
  2. データベースの最新のフル バックアップを取得し、ファイルを復元します。たとえば、先週の日曜日午前 12 時 1 分現在のデータベースのフル バックアップ バージョンを復元します。
  3. 月曜日、火曜日、の順に、インクリメンタル バックアップ ファイルを適用します。たとえば、この場合は火曜日の午後 11 時までのデータベースを復元するとします。
  4. 火曜日の午後 11 時 15 分から水曜日の午後 2 時 50 分までのトランザクションを含むトランザクション ジャーナル ファイル (AIJ) を適用します。
  5. データベースを再度オープンします。
  6. Oracle Tuxedo アプリケーションを再起動します。

データベースのロールフォワード プロセスの具体的な説明については、リソース マネージャ (データベース製品) のマニュアルを参照してください。

 


アプリケーションが正しく停止しない場合の IPC ツールの使用

IPC 資源とは、メッセージ キュー、共有メモリ、セマフォなどのオペレーティング システムの資源のことです。tmshutdown コマンドを使って Oracle Tuxedo アプリケーションが正常に停止すると、IPC 資源はすべてシステムから削除されます。ただし、アプリケーションが正常に停止せず、システムに IPC 資源が残る場合もあります。このような場合は、アプリケーションを再起動できなくなります。

この問題の解決策として、IPCS コマンドを実行するスクリプトを使用して IPC リソースを削除し、特定のユーザが保有するすべての IPC リソースを解放する方法があります。しかし、この方法では IPC 資源の識別が困難です。たとえば、Oracle Tuxedo アプリケーションの資源か、特定の Oracle Tuxedo アプリケーションに属する資源か、または Oracle Tuxedo システムとは無関係の資源かを識別することができません。誤って IPC 資源を削除するとアプリケーションが破損する可能性があるため、資源の種類を識別できることは重要です。

Oracle Tuxedo の IPC ツール (tmipcrm コマンド) を使用すると、実行中のアプリケーションで Oracle Tuxedo システムによって割り当てられている IPC リソース (コア システムと Workstation コンポーネントのみ) を削除できます。

IPC リソースを削除するコマンドは、TUXDIR/bin に格納されている tmipcrm です。このコマンドは、バイナリ形式のコンフィグレーション ファイル (TUXCONFIG) を読み込み、このファイルの情報を使用して掲示板に書き込みます。tmipcrm を使用できるのは、ローカル サーバ マシンに対してのみです。Oracle Tuxedo のコンフィグレーションのリモート マシンにある IPC リソースは削除できません。

このコマンドを実行するには、次のコマンドラインを入力します。

tmipcrm [-y] [-n] [TUXCONFIG_file]

IPC ツールを使用すると、Oracle Tuxedo システムで使用されるすべての IPC 資源を一覧表示したり、IPC 資源を削除することができます。

注意 : このコマンドは、TUXCONFIG 環境変数を正確に設定するか、またはコマンドラインで適切な TUXCONFIG ファイルを指定しないと利用できません。

 


マルチスレッド化またはマルチコンテキスト化されたアプリケーションのトラブルシューティング

マルチスレッド化またはマルチコンテキスト化されたアプリケーションのデバッグ

シングルスレッドのアプリケーションと比較すると、マルチスレッド化されたアプリケーションのデバッグは困難です。そのため、管理者側で、マルチスレッド化されたアプリケーションの作成基準となる方針を決めておくと便利です。

マルチスレッド化されたアプリケーションでの保護モードの制限

実行中のアプリケーションが保護モードの場合、そのアプリケーションは ATMI 呼び出しが実行されたときのみ共有メモリにアタッチされます。保護モードにしておくと、Oracle Tuxedo の共有メモリが不正なアプリケーション ポインタによって誤って上書きされるのを防ぐことができます。

保護モードで実行中のマルチスレッド アプリケーションには、アプリケーション コードを実行するスレッドと、Oracle Tuxedo の関数呼び出しにより掲示板の共有メモリにアタッチされるスレッドが混在している場合があります。したがって、ATMI 呼び出しで掲示板にアタッチされたスレッドが少なくとも 1 つあると、保護モードを実行しても、アプリケーション コードを実行するスレッドを不正なアプリケーション ポインタから保護できず、Oracle Tuxedo の共有メモリが上書きされる場合があります。つまり、マルチスレッド化されたアプリケーションでは、保護モードの効果が制限されています。

この制限を解除する方法はありません。マルチスレッド化されたアプリケーションを実行するときは、シングルスレッドのアプリケーションのときほど、保護モードを信頼できない点に注意してください。


  ページの先頭       前  次