一般的に、Adabas は他のデータベース管理システムが使用するデータ処理リソース(ディスクストレージ、CPU タイム、処理経過時間)の 10 %~50 %を使用します。 使用するハードウェア機能が少ないため、より少ないリソースを使用してより多くのデータを処理できます。 端末ワークステーションの台数が数千台に及び、テラバイト級のデータを処理する大規模なオンラインアプリケーションを実装しても、レスポンスタイムとコストは小規模システム並みに抑えることができます。
このドキュメントでは、次のトピックについて説明します。
Adabas のアクセスはフィールドを基本にしています。ユーザープログラムは必要なフィールドのみにアクセスしたり、必要なフィールドのみを取得します。 ユーザープログラムのステートメントにより、自動的に Adabas 検索や取得処理を呼び出すことができます。
Adabas には、データベース操作を行う強力で柔軟な一連のダイレクトコールコマンドが備わっています。 Natural または他の第 4 世代データベース言語を使用しないとき、Adabas ダイレクトコールコマンドが Adabas データベースとの直接インターフェイスを提供します。
データベース問い合わせ
読み込み(データストレージまたはアソシエータ)
データベース更新
論理トランザクション処理
特殊コマンド
データベース問い合わせコマンド(S1/S4、S2、S5)は、指定された検索条件に応じて、指定されたレコードまたはレコードグループの ISN を検索して結果を返します。 その他のこの分類に属するコマンド(S8、S9)は、後から処理するための準備として、ISN 結果リストをソートします。
Sx コマンドの結果として返された ISN リストは、後でユーザーセッション中に取得できるように Adabas WORK データセットに格納できます。
これらのコマンドはほとんどの場合、実際にはデータベースを読み取りません。ISN はアソシエータのインバーテッドリストから直接読み込まれます。 オプションとして、ISN のレコードをホールド状態にして、レコードが解放されるまで他のプログラムによる更新を防止できます。また、必要に応じて、最初の ISN のレコードに含まれている追加フィールドの値を、データストレージから読み込むことができます。
L1~L6 コマンドは、データストレージから実際のレコードを読み込みます。 指定したコマンドとコマンドのオプションに応じて、レコードは個別に次のように読み込まれます。
格納された順番
データベース問い合わせコマンドによって作成された ISN リストの順番
ユーザー指定ディスクリプタに応じた論理的な順番
順次アクセスメソッドの詳細は、「順次読み込み」を参照してください。
ホールドオプションを使うと、専用のコマンドでレコードを解放するか、トランザクションが終了するまで、データベースレコードをロックできます。
L9 および LF コマンドは、アソシエータインバーテッドリストまたはフィールド定義テーブル(FDT)から直接情報を読み込みます。このコマンドが返す値は、指定したディスクリプタのインバーテッドリスト値、または指定したデータベースファイルのフィールド定義のいずれかです。
データベース更新コマンド(A1、E1、および N1/N2)は、データベースレコードを変更、削除、または追加し、関連するアソシエータリストを適宜更新します。 新しいレコードの ISN は、ユーザーまたは Adabas が割り当てます。
インバーテッドリストおよびアドレスコンバータは、Adabas が自動的に更新します。 ユーザーからディスクリプタに新しい値が提供された場合、新しいレコードかレコード更新の一部として、Adabas はインバーテッドリストについてすべての必要なメンテナンスを行います。 新しいレコードが追加されたか、レコードが削除された場合、アドレスコンバータが適切に更新されます。 これらの動作は、ユーザーには完全に透過的です。
Adabas 論理トランザクションは、実行中のデータベースオペレーションの論理的な開始(BT)と終了(ET)を定義します。 ユーザー操作または Adabas 自身により異常終了した場合、ユーザーはこれらのコマンドにより最後に失敗したトランザクションを再開できます。 ET/BT コマンドの処理内容は次のとおりです。
トランザクションの開始と終了を定義します。
トランザクションの正常終了を阻止する事態が発生した場合、トランザクション以前の状態に回復します。
トランザクション中に書き込まれたプログラム固有のユーザーデータを読み取ります。
これらのコマンドを使用するプログラムを ET ロジックプログラムと呼びます。 必須ではありませんが、ET ロジックを使用することをお勧めします。 詳細は、「トランザクションロジック」を参照してください。
特殊コマンドは、Adabas データベース環境をメンテナンスするのに必要な維持管理の役割を多数行います。 このグループのコマンドは、次のことを行います。
また、RC コマンドは、ユーザーに対して現在割り当てられている 1 つ以上のコマンド ID を解放するか、1 つまたは全グローバルフォーマット ID を削除します。
RE コマンドは、C3、CL、または ET コマンドにより以前に Adabas システムファイルに格納されたユーザーデータを読みます。
ほとんどの大規模データベースシステムでは、複合検索を実行すると処理時間が非常に長くなります。 Adabas は、この問題を解決できるように処理を効率化しました。 現在、使用されている多くの Adabas アプリケーションでは、最大 150 個の複合選択条件が動的に作成されます。 データは 5 千万件を超えるレコードを持つファイルから即時に取得されます。
問い合わせを解決するために、複数ファイルの検索が必要になることがよくあります。 複数ファイルの検索は、複数検索コマンド、物理的にカップリングされたファイル、またはソフトファイルカップリングを使用して実行されます。 カップリングファイルの詳細は、「カップリングファイル」を参照してください。
あるコマンドで取得された値が次のコマンドの検索値として使われる場合に、複数検索コマンドが使用されます。 この処理は 2 つのファイルに制限されません。
あいまい一致(完全一致ではなく類似一致に基づいたデータ取得など)は、ハイパーディスクリプタを使用して実装できます。 ハイパーディスクリプタにより、マルチプルバリューインデックスが使用可能となります。つまり、1 つのデータフィールドに異なる複数の検索インデックスエントリを作成できるようになります。 パイパーディスクリプタの詳細は、「ハイパーディスクリプタ」を参照してください。
Adabas では、順次アクセスメソッドとランダムアクセスメソッドの両方がサポートされます。 それぞれのコールでは、別々の Adabas アクセスパスおよびコンポーネントが使用されます。最も効率的な方法は、必要とする情報の種類および取得が必要なレコード数によって異なります。
物理順 にレコードを取得する場合、データストレージに格納された順番に従ってレコードが取得されます。 各レコード内のフィールドを、取得したい値を持つフィールドだけに制限できます。 また、開始 ISN を指定すると、指定された ISN により識別されたレコードの後に物理的に位置するレコードから順次読み込みが開始されます。
Adabas はアソシエータをバイパスしてデータストレージに直接アクセスし、最初のデータブロック(または指定された ISN 以降の最初のレコード)を読み込みます。最後のブロックが読み込まれるまでレコードが順番に読み込まれます。 物理順は、大量のレコードを処理する最も高速な方法です。
ISN 順 にレコードを取得する場合、ISN 順に従ってレコードが取得されます。 Adabas はデータベース問い合わせコマンド(Sx)を使用して、ISN リストを構築およびソートします。このリストは、GET NEXT オプションを指定して L1/L4 コマンドを使用して読み込むことができます。 読み込み時に Adabas は、アドレスコンバータを使用して各 ISN の RABN を検出します。次にデータストレージからレコードを読み込んで返します。
論理順 にレコードを取得する場合、レコードはディスクリプタ値によって取得されます。 Adabas はインバーテッドリスト内で値を検出し、アドレスコンバータを使用して、値に関連した ISN の RABN を検出します。次に、データストレージからレコードを取得します。
論理順の読み込みにより、指定されたディスクリプタの 1 つの値または値の範囲に関連したすべてのレコードが取得されます。 レコードはディスクリプタ値の昇順または降順にソートされて返され、各ディスクリプタ値内では ISN で昇順または降順にソートされます。 開始値および終了値を指定できます。 また、値が返されるフィールドを指定することができます。 論理的な読み込みは、特定のフィールドでソートされたレコードが必要な場合に便利です。
Adabas には、特別な読み込みコマンド(L9)が準備されており、ディスクリプタとして存在する値の範囲とその各値を含むレコードの数を求めるために使用します。 このようなデータ取得方法をヒストグラムと呼びます。 L9 コマンドは、データレコードへのアクセスを必要としません。アソシエータ内に格納されているインバーテッドリストのみにアクセスします。
Adabas では、S1/S2/S4 コマンドを使用して検索条件を満たすレコードを選択します。見つかったレコードの数およびその ISN リストが返されます。 S1/S4 コマンドは、ISN を昇順で返します。S2 コマンドでは、返される ISN のソート順を指定できます。
検索条件を次のものから構成することができます。
単一ファイル内の 1 つ以上のフィールド
2 個以上の物理的にカップリングされたファイル内のフィールド
ソフトカップリング機能に基づく検索、読み込み、内部リストのマッチング
検索条件は、ディスクリプタとして定義されていない 1 つ以上のフィールドで構成してもかまいません。 非ディスクリプタが使用されていると、Adabas はユーザーに返すレコードを判断するために、読み込み処理を実行します。 検索条件内にディスクリプタだけが使用されている場合、Adabas はアソシエータのインバーテッドリストを使ってこの条件を処理するため、読み込み処理は実行しません。
注意:
ADAM 機能は、メインフレームプラットフォームのみで利用できます。
Adabas ダイレクトアクセスメソッド(ADAM)は、ファイル上の特定のディスクリプタフィールドにおけるランダムアクセスのパフォーマンスを改善します。 ADAM はフィールド値を使用して、レコードストレージの相対ブロックアドレス(RABN)を計算します。 また、ADAM ディスクリプタは、選択条件内の他のディスクリプタと同様に使用されます。さらに、論理順次処理にも使用されます。 どのようなファイルに対しても、データベースへのロード時にこのオプションを選択できます。
Adabas のトリガおよびストアドプロシージャ機能は、Adabas に必要不可な部分ですが、この機能を使用するには、Natural(「Natural アプリケーション開発環境」を参照)が必要です。 オンライントリガメンテナンス機能には、Adabas Online System アドオン製品を使用してアクセスできます。
プロシージャは、Natural の標準機能を使用して記述され、テストされた Natural サブプログラムです。
トリガは、特定の条件に合致した場合に、Adabas が自動的に実行するプロシージャです。 一連の条件は、Adabas に送信されるコマンドごとに特定されます。条件の基準はターゲットファイル番号と、任意指定のコマンドタイプまたはフィールド(または両方)です。 コマンドタイプとは、検索、読み込み、格納、更新、および削除の各コマンドを指します。 フィールドは、コマンドの対応するフォーマットバッファ内にある必要があります。
ストアドプロシージャは Adabas によって実行されますが、ストアドプロシージャを使用する多くのアプリケーションからの専用のユーザーコールによって直接、呼び出されます。 複数のクライアントで使用されるプログラムをサーバー上の Adabas ファイルに格納すると、サーバーとの間で送受信するデータのトラフィック量を削減できます。
トリガであるか、ストアドプロシージャであるかにかかわらず、同じタイプのパラメータがサブプログラムに渡されます。
Adabas のトリガとストアドプロシージャ機能により、両方のタイプのプロシージャの実装および維持が可能です。 ストアドプロシージャは Adabas の機能として装備されており、アプリケーションに拡張性を提供します。 用途は次のとおりです。
アプリケーションに対するさまざまなセキュリティおよび監査機能の実装
データの検証と操作が可能な、一貫した一元的な環境の実現。検証と操作は、アプリケーションから手動で行うか、または Adabas が自動的に実行します(トリガが定義されている場合)。
Adabas には、異なるアーキテクチャ間で双方向にデータを変換する機能が装備されています。 これにより、Web ベースアプリケーションから、または Windows 版 Natural などの PC ベースアプリケーションからの、TCP/IP プロトコルを介したメインフレームデータベースへのアクセスのサポートが可能になります。
データベースは、ADADEF によってアクティブ化されている場合、これらの UES 機能を使用できます。
Adabas は、英数字(A)およびワイド文字(W)フォーマットのフィールドに対して文字データ変換を実行します。 Unicode、2 バイト文字セット(DBCS)、マルチバイト文字セット(MBCS)など、幅広い文字セットまたはコードページがサポートされます。
データベースおよびファイルレベルの両方にエンコードキーを定義することにより英数字フィールドが拡張され、ワイド文字データがサポートされます。ファイルレベルのエンコードは、データベースエンコードよりも優先します。 エンコードは、データを保存するフォーマットを指定します。 これは、ローカルユーザーと交換するデータのデフォルトフォーマットとしても使用されます。 ファイルエンコードは、EBCDIC グループに属している必要があります。
ワイド文字フィールドは、英数字フィールドと同様に、エンコードのデフォルトはデータベースおよびファイルレベルの両方に定義され、ファイルエンコードは、データベースエンコードよりも優先します。 デフォルトエンコードは Unicode です。
さらに、Adabas は下位バイトファーストまたは IEEE 規格の浮動小数値などの数字データの変換をサポートします。
クライアントアプリケーションでは、ADALINK コードがデフォルトのアーキテクチャ(ASCII、バイトスワップ、および IEEE 規格浮動小数点など)を判別します。 クライアントアプリケーションは、セッションのオープン(OP コマンド)を使用して異なるエンコードまたはアーキテクチャを指定して、このデフォルト設定を無効にします。
多くのユーティリティが特殊なエンコードおよびアーキテクチャ設定に対応しています。
アーキテクチャおよびエンコード間の上位と下位方向の互換性を確保するために、ユーザーエンコードに対して同じまたはスーパーセットになる文字セットを持つファイルエンコードが選択される必要があります。 例えば、US-EBCDIC と ISO-8850-1 は同じ文字セットを持ちます。
照合ディスクリプタは、英数字またはワイド文字フォーマットのフィールドに対して定義できます。 文化的に正しい並び順(つまり辞書に掲載される順番)に従ってキーを生成するなどの目的で、照合ディスクリプタ出口がコールされると、ディスクリプタ値はアルゴリズムに従って取得されます。
更新が競合する環境で、ユーザーまたは Adabas のセッションが中断されたときに、データの整合性を維持するための機能が Adabas には備わっています。
この機能はオンラインまたは従来のバッチ更新の両方で利用できます。 オンラインのトランザクションを基本とした処理では、データベースのトランザクションは完全性が保たれます。 バッチモードの更新では、チェックポイントの書き込みおよび更新のバックアウト/再生成が行われるので、失敗した場合でも再スタートできるようになっています。
Adabas のデータ保護、リカバリ、およびユーザー再スタートは、論理トランザクションの概念に基づいています。論理トランザクションとは、データベース内の情報に論理的な不整合が生じないように、ユーザーの定義に従って、全体的に実行する必要がある処理の最小単位のことです。
論理トランザクションは 1 つ以上の Adabas コマンドで構成されます。これらのコマンドが実行されることによって、業務の論理ユニットを完了するために必要なデータベースの読み込みおよび更新が行われます。 論理トランザクションは、レコードをホールド状態にする最初のコマンドで始まり、ET(トランザクションの終了)、BT(トランザクションのバックアウト)、CL(クローズ)、または OP(オープン)コマンドが同じユーザーに発行されたときに終了します。
OP(オープン)または RE(ET データの読み込み)コマンドを使用して、C3、CL、または ET コマンドにより格納されたユーザー再スタートデータを取得できます。 このデータは、トランザクションから出力された各チェックポイントとともに、Adabas データプロテクションログにも書き込まれ、ADASEL ユーティリティを使用して読み込むことができます。
ET コマンドは、論理トランザクションの終了時点で発行しなければなりません。 ET コマンドの実行が正常に完了すると、後続のユーザーまたは Adabas セッションの中断に関係なく、トランザクション中に行われた更新処理のすべては物理的にデータベースに適用されます。
ET コマンドを正常に実行できない場合、そのトランザクションの実行中に発生した更新は、BT コマンドを手動で発行するか、または自動バックアウトルーチンの自動処理のいずれかによってバックアウトされます。
Adabas には、分散環境(並行して存在する複数のローカルまたはリモートのデータベースまたはシステムイメージ、またはその両方)において、グローバルデータベーストランザクションの実行をサポートするニュークリアス機能が組み込まれています。
2 フェーズコミットプロトコルでは、リソースマネージャ(RM)と呼ばれるグローバルトランザクションの処理に関与しているすべてのデータベース管理システム(DBMS)は、それぞれの処理対象のトランザクションを全体としてコミットまたはロールバックします。 第 1 フェーズでは、調整コンポーネント(トランザクションマネージャ、つまり TM)が、関連する RM がコミットできるように準備します。 第 1 フェーズが成功した場合のみ、TM は RM にコミットするように指示します(第 2 フェーズ)
このシナリオでは、Adabas は RM として機能します。 Adabas のアドオン製品 Adabas Transaction Manager がオペレーティングシステムイメージ内の調整役として機能します。また Entire Net-Work を利用して複数のシステムイメージにわたって調整することもできます。
また、この新しいプロトコルは、Adabas とその他の DBMS を統合します。 このプロトコルは既存のアプリケーションシステムおよび Natural に対して透過的です。
Adabas には、CICS により制御されるインターフェイスが含まれています。このインターフェイスは CICS リソースマネージャインターフェイス(RMI)に準拠しています。 このインターフェイスは適切な Adabas コマンドを発行して、2 フェーズコミットプロトコルと連携します。
競合更新は、2 人以上のユーザー(マルチユーザーモード)が同一 Adabas ファイル(複数の場合もあり)を更新するときに発生します。 競合更新環境におけるデータ保全性を保証するために使用する Adabas 機能には、レコードのホールド/解放、リソースのデッドロック回避、および排他的制御更新が含まれます。
Adabas のレコードホールド機能を使用すると、複数のユーザーは同時に同じレコードを更新することができなくなります。 S4(ホールド付き検索)コマンド、L4/L5/L6(ホールド付き読み込み)コマンド、ホールドオプションを指定した A1/E1(更新/削除)コマンド、N1/N2(ホールド付きレコード追加コマンド)、または HI(レコードのホールド)コマンドを使用して、1 つのユーザーが特定のレコードをホールド状態にできます(つまり、そのレコードの ISN がホールドキューに入ります)。
ホールド状態が要求されたレコードがすでに他のユーザーまたはユーティリティによりホールドされている場合、レコードホールドコマンドを発行したユーザーは、レコードが使用可能になるまで待機状態になります。使用可能になった時点で、Adabas はコマンドを実行します。 待機状態になることを回避する場合は、レスポンスコードを返すように要求できます。
ホールド状態のレコードは、レコードをホールドしないユーザーによるアクセス(検索および読み込み)が可能です。
ホールド状態のレコードは、ET または CL コマンドを発行することにより解放されます。 ET および BT コマンドでは、選択的にレコードを解放するオプションを利用できます。 CL コマンドは、ホールド状態にあるすべてのレコードをコマンド発行元ユーザーに解放します。
2 つのユーザーがそれぞれレコードをホールドし、一方のユーザーがホールドしたレコードをもう一方のユーザーがそれぞれ待機する状態になった場合に、リソースのデッドロックが発生します。 Adabas は、デッドロックの可能性を検知すると、一方のユーザーを待機状態に設定してから、もう一方のユーザーにレスポンスコードを返すことにより、このようなユーザーデッドロックを回避します。
論理トランザクションコマンド(ET/BT)を使用するユーザーは、ET ロジックユーザーと呼ばれます。
ユーザーセッションの間、ユーザーは交互に 1 つ以上の Adabas ファイルの排他制御を要求することができます。 排他制御が要求されているファイルが、別のユーザーまたはユーティリティが更新するためにまだオープンしていなければ、ユーザーに排他制御が許可されて、排他更新(EXU)ユーザーとなります。 Adabas では、EXU ユーザーは非 ET ロジックユーザーとして扱われます。
Adabas は、EXU ユーザーに対して ISN をホールド状態にしません。 Adabas は、排他ファイル制御で更新されるファイルに対しては、ホールドロジック処理を無効にします。
ET コマンドを使用する代わりに、EXU ユーザーは参照ポイントとして動作するチェックポイントを要求できます。例えば、チェックポイント後に適用された更新を取り消すことができます。
Adabas では、次をタイムアウトすることができます。
指定されたリミットを超過したトランザクション
指定された期間、非アクティブなユーザー
Adabas では、ET ロジックユーザーに対してトランザクションタイムリミットを指定できます。 タイムリミットは、ADARUN の TT パラメータで指定します。OP コマンドを使用して、特定のユーザーに対する優先設定が可能です。
トランザクションが指定されたリミットを超過すると、Adabas は BT(トランザクションのバックアウト)コマンドを生成し、トランザクション処理中に発生した更新情報をすべて削除して、ホールドされているすべてのレコードを解放します。 ユーザーはその後にバックアウトされたトランザクションを初めから繰り返すか、または別のトランザクションを開始することができます。
すべてのユーザーが非アクティビティタイムリミットの対象となります。各ユーザータイプ、および各ユーザータイプ内の特定のユーザーに対して異なるリミットを設定できます。
ユーザーが指定されたリミットを超過した場合、ユーザーの状態によって処理が異なります。
ET ロジックユーザーの場合、Adabas は現在のトランザクションをバックアウトして、ホールドされているすべてのレコードおよびコマンド ID を解放し、ユーザーのファイルリストを削除します。
EXU ユーザーの場合、Adabas はユーザーのファイルリストを削除して、すべてのコマンド ID を解放します。 ユーザーは EXU ユーザー状態ではなくなり、アクセスオンリーユーザーとなります。
アクセスオンリーユーザーの場合、Adabas はユーザーのファイルリストを削除します。
バックアウト リカバリ、および タイムアウト(「タイムアウトの制御」を参照)、Adabas がトランザクションを正常に完了できないと判断したときのプログラムエラー、Adabas、ハードウェアまたはオペレーティングシステムの障害、または電源の障害により、ユーザーまたは Adabas セッションが中断された場合、再スタートが必要です。
ユーザーセッションは、一連の Adabas コールから成り、オープン(OP)コマンドで開始し、クローズ(CL)コマンドで終了させることができます。 ユーザーとは、バッチモードプログラム、あるいは端末を使用する人を意味します。 各ユーザーの一意性は、ユーザー ID、マシン、アドレススペース、および端末 ID により確保されます。
Adabas セッションは、Adabas がアクティブになったときに開始され、Adabas が終了するまで継続します。 この間に、Adabas ニュークリアスは、データベースに対して行われたすべての変更内容の正確な履歴として、一連のプロテクションエントリを作成します。 この一連のプロテクションエントリは、WORK データセット(パート 1)に書き込まれ、さらにプロテクションログへもブロックごとに書き出されます。 各ブロックにはニュークリアスのセッション番号、固有のブロック番号およびタイムスタンプが含まれています。
トランザクションを処理中のユーザープログラムは、トランザクションが正常に完了できないことを検知できます。 この場合、BT(トランザクションのバックアウト)コマンドが使用されて、不完全なトランザクションが削除されるか、バックアウトされます。
ユーザープログラムエラーにより、データベースに論理的な誤りが生じた場合、ADASAV および ADARES ユーティリティを使用して影響を受けたファイルをリカバリする必要があります。
Adabas ニュークリアスが異常終了する原因となる何らかの障害が発生すると、Adabas が再アクティブ化されるときに自動プロシージャが実行され、データベースが物理的、論理的に正常な状態になります。 部分的に実行された更新コマンドはすべてリセットされ、未完了トランザクションはすべてバックアウトされます。
この自動プロシージャは、データベースの修復、自動再スタート、および自動バックアウトの 3 段階で構成されています。
障害の発生時にバッファフラッシュが完了していた場合に、データベースを修復すると、データベースは障害発生直前の状態に復帰します。 つまり、データベース内のすべてのブロックは、ニュークリアスが正常に実行される状態となります。
自動再スタートは、システム障害の発生時に部分的に実行されていた 1 つの更新コマンドによる更新部分をバックアウトします。 これによりデータベース内部の整合性が解決され、物理的な保全性が保証されます。
ET ロジックユーザーに対してのみ実行される自動バックアウトは、システム障害の発生時に部分的に実行されていたユーザートランザクションの更新をバックアウトします。 Adabas は、自動再スタートに続いて内部 BT(トランザクションのバックアウト)を実行し、最新のトランザクションがバックアウトされたことをユーザーに通知します。
自動バックアウトルーチンは、HALT コマンドで終了した ET セッションの終了時に実行されます。 また、自動バックアウトルーチンは、次の Adabas セッションで自動的に実行され、正常に完了しなかったトランザクションで実行されたすべての更新部分を削除します。
自動バックアウトの実行後は、データベースには論理的に完了したトランザクションの更新のみが反映されます。
注意:
ET
ユーザーは、BT(トランザクションのバックアウト)コマンドを発行して、いつでも手動で未完了のトランザクションのバックアウトを行うことができます。
「データベースの完全性の維持」を参照してください。
Adabas、ハードウェアまたはオペレーティングシステムの障害によりデータベースに物理的な障害が発生した場合、ADASAV および ADARES ユーティリティを使用してデータベースを再作成する必要が生じる場合があります。
ハードウェアによっては、I/O 処理中に電源障害が発生すると、処理していた Adabas ブロックが破壊されることがあります。 このような損傷は自動再スタート中に検出することができないため、予期しないレスポンスコードやデータベース更新の喪失といった問題が後で発生する可能性があります。
ADARUN の IGNDIB=YES パラメータが設定されている場合、自動再スタートルーチンは、バッファフラッシュがセッションの中断が発生したときにアクティブだったかどうかをチェックします。 バッファフラッシュが処理中だった場合、自動再スタートは終了して、Adabas は可能性のある問題をユーザーに警告して、バッファフラッシュの処理中に更新していたファイルのリストを通知します。 DBA は、電源障害が発生していないかどうか調べる必要があります。
セッションの中断の原因によって、対処方法が異なります。
電源障害が原因の場合、ADASAV および ADARES ユーティリティを使用して、影響を受けたファイルをリカバリすることを強くお勧めします。
原因が電源障害ではないことが確実で、出力ハードウェア上の情報の保全性が保証できる場合は、データベースはすぐに再アクティブ化できます。 データベースのリカバリは必要ありません。
エラー処理およびメッセージバッファリング機能は、DBA の介入をほとんど必要とすることなく、特定タイプのエラーを自動的に分析および回復するため、24X7 オペレーションの実装に有効です。 また、追加情報も生成されるため、ユーザー独自によるエラー診断と、Software AG によるエラー診断が可能です。
ラップアラウンド方式のメッセージバッファは、コンソールや DDPRINT メッセージへのオンラインアクセスが不可能になった場合に、後から Adabas Online System で調査するために Adabas メッセージを収集します。 バッファは、問題分析とパフォーマンスチューニングに有効です。
このバッファリングのエラー処理機能は、オペレータコンソールまたは Adabas Online System から起動できます。
Adabas ニュークリアスの操作に不可欠なユーザー出口およびハイパー出口は、クリティカル(デフォルト)またはクリティカルではないとマークすることができます。
クリティカルなユーザー出口については、エラー処理およびメッセージバッファリング機能による影響はありません。出口内の異常終了により、Adabas ニュークリアスも異常終了します。
クリティカルではないユーザー出口については、メッセージバッファリング機能がアクティブな Adabas ニュークリアスを維持し、場合によってはその出口の起動を止めて、出口エラー発生時のニュークリアスのダンプを取得し、システムログにメッセージを発行して DBA に問題を通知します。 DBA は次に診断情報を調べ、問題を解決します。次に、修正された出口をロードして再アクティブ化します。
拡張機能(プラグインルーチンまたは PIN)は、ニュークリアスが処理を継続できるようにしながらアベンドの原因を分析し、場合によっては原因を特定します。 各 PIN サービスルーチンは、事前に定義された条件に遭遇すると、これを処理し、Adabas ニュークリアスに次のどちらかを許可します。
異なる方法で異常終了するときは、アクティブなままにする。
エラーリカバリの補助として、拡張エラー診断を出力する。
異常発生時のレジスタが利用可能なため、PIN の実行中は、大部分の Adabas 機能が PIN に対して有効です。 PIN は、ニュークリアスが処理を継続しても安全かどうかを判断し、適切なメッセージを出力して DBA に知らせます。
ニュークリアスが実行できるかどうかにより、PIN は、通常の処理を再開するために制御を Adabas ニュークリアスに移す(通常レスポンスコードを伴う)か、エラー処理およびメッセージバッファリング機能に制御を返して、Adabas ニュークリアスが異常終了できるようにします。
PIN を使用すると、特定のレスポンスコードまたは ABEND コードをデバッグしやすくするために、さまざまな状況に合わせてダンプをわかりやすい形式で出力させることもできます。
特別な PIN ルーチンのユーザー出口を使用して、レスポンスコードおよびアベンドについての詳細情報を得ることができます。 ユーザー出口では、特定のレスポンスコード、またはレスポンスコード/サブコードの組み合わせを監視するように指定することができます。 ユーザー出口を修正すると、それをリロードし、データベースをダウンさせることなく変更を有効にすることができます。