ページの本文へ

Hitachi

ソフトウェア

ISAMのFAQをご覧になれます。

Q1. ISAMは、DB製品でしょうか?

いいえ。ISAMは、複数のファイルで構成される索引順編成ファイルを、ファイルシステム上に作成し、操作を行うプログラムです。
トランザクション処理やデータベース言語などのDBMSの機能は持っていません。
したがって、プログラムの実行中に強制終了やOSを再起動したい場合、索引順編成ファイルが不正な状態になることがあります。

Q2. 索引順編成ファイルの障害対策の対処方法を教えてください。

以下の方法で対処してください。

  1. 索引順編成ファイルをファイルの検証ユティリティで検証します。
  2. 索引順編成ファイルの検証結果に応じて、キー定義ファイル、データファイル、キーファイルを回復します。

障害が発生したファイルの種類によって回復方法が異なります。
詳細は、製品付属のマニュアルの「索引順編成ファイルの障害回復」をご確認ください。
なお、不正な状態のまま使い続けた場合、不正箇所が増えて正しいデータを抽出できない場合があります。
データを保証したい場合は、定期的にバックアップを取得し、バックアップから回復する手順も検討してください。

Q3. 分散ISAMを運用するときのホスト名の登録について教えてください。

分散ISAMを運用するには、ホスト名を登録する必要があります(Windows版だけ)。
DNSを使用する場合は、分散ISAMの全クライアントのホスト名、およびサーバのホスト名をDNSサーバに登録してください。
hostsファイルを使用する場合は、分散ISAMの全クライアントのホスト名を、サーバのhostsファイルに登録してください。また、サーバのホスト名をクライアントのhostsファイルに登録してください。
ホスト名の登録を正しく行っていない場合、ISAMファイルのオープン処理に時間がかかる場合があります。

Q4. 索引順編成ファイルの制限値を教えてください。

索引順編成ファイルの制限値は、次のとおりです。

  • レコード長:65,503バイト
  • キー長:255バイト*1
  • キーファイル数:99個*2
  • 合成キーの構成項目数:8個
  • ファイルサイズ:2,147,483,647バイト*3
*1
合成キーの場合は、すべての構成項目のキー長の合計が、255バイト以下でなければなりません。
*2
この値は、一つのプロセスで同時にオープンできるファイルの数から算出したものです。そのプロセスで、他のファイルもオープンされているかどうかによって、索引順編成ファイル管理がオープンできるファイルの数は異なります。
UNIXシステムでは、システムの標準出力等をオープンします。
したがって、UNIXシステムの標準(デフォルト)では99個のファイルをオープンできないことに注意してください。
*3
2,147,483,647バイトは,2GBから1バイトを引いた値です。
Windows 32bitで動作するISAMについては2GBを超える形式のISAMファイルをサポートしています。他の製品については2GBを超える形式のISAMファイルのサポート予定はありません。

Q5. ISAM/DでのAIX版ポート番号の扱いについて教えてください。

AIXシステムでは、一時ポートに割り当てる番号として32768から65535がデフォルトで使用されます。
ISAM/Dのデフォルトポート番号(40007)を使用した場合、ほかのアプリケーションの動作に影響したり、ISAM/Dが起動できなかったりする場合がありますので、次のどちらかの設定をしてください。

  • AIXシステムの一時ポートに割り当てるデフォルト値をnoコマンドなどで変更してください。詳細は、AIXのマニュアルを参照してください。
  • ISAM/Dのサービス名の登録に、一時ポートに割り当てる番号以外を指定してください。同様にクライアント側のポート番号もサーバ側に登録した番号を指定してください。

Q6. COBOLプログラムから索引順編成ファイルにアクセスしたいのですが、ISAM Version7を購入する必要があるでしょうか?

COBOL2002には、COBOLプログラムから索引順編成ファイルにアクセスするためのISAM Version7の機能とISAMユティリティが含まれており、COBOLプログラムからローカルの索引順編成ファイルにアクセスする場合にはISAM Version7の購入は不要です。
ただしCOBOL2002は、ISAM Version7で提供している機能を全て含んではいません。
以下のいずれかに該当する場合にはISAM Version7の購入が別途必要です。

  • C言語のプログラムから索引順編成ファイルにアクセスする場合。
  • ISAM/D Version7のようにISAM Version7を前提とする製品を使用する場合。

Q7. ISAMを使用するためにOSの権限設定が必要でしょうか?

Windows版のISAM Version7では、複数アプリケーション間での索引順編成ファイルへの排他を行うために、グローバルオブジェクトを使用します。
そのため、ISAM Version7で作成したユーザプログラムやユティリティを実行するOSのユーザまたはユーザが所属するグループにグローバルオブジェクトの作成権限が必要です。

グローバルオブジェクトの作成権限はWindows OSのポリシーとしてOSの管理ツール内の[ローカルセキュリティポリシー]などで設定します。
なお、ほとんどのWindows OSで、Administratorsグループはデフォルトでグローバルオブジェクトの作成権限が付与されています。

Q8. Windows VistaやWindows Server 2008以降のOSでISAMライブラリを使用したプログラムを実行する場合に注意事項があるでしょうか?

Windows Vista、Windows Server 2008以降のOSでは、ユーザアカウント制御の影響を受けて実行方法に変更があります。
ISAMライブラリを使用したユーザプログラムはOSのユーザ毎に以下実行してください。

  1. Administratorユーザ、Administratorsグループ、PowerUsersグループ*1に属するユーザで実行する場合
    管理者権限に権限昇格して実行してください。
  2. 1以外のユーザ*1で実行する場合
    そのまま実行できます。
*1
ユーザまたはユーザが所属するグループに、Q7のグローバルオブジェクトの作成権限の設定は必要です。

詳細は製品付属の取扱説明書をご確認ください。

Q9. Windows VistaやWindows Server 2008以降のOSでISAMユティリティを実行する場合に注意事項があるでしょうか?

管理者権限に権限昇格して実行が必要なユティリティや、Q8と同様の実行が必要なユティリティがあります。詳細は製品付属の取扱説明書をご確認ください。

Q10. LinuxからWindowsに移行したいのですが、索引順編成ファイルのファイルフォーマットは同じでしょうか?

以下のOS毎に、索引順編成ファイルのフォーマットは異なります。別のOSで索引順編成ファイルを使用する際には索引順編成ファイルの移行作業が必要となります。

  • Windows版のISAM Version7
  • Linux版のISAM Version7
  • AIX版、HP-UX版のISAM Version7

索引順編成ファイルの移行手順例を以下に示します。

  1. 移行元環境で、isconvコマンドを使用して索引順編成ファイルを順編成ファイルへ変換する。
  2. 必要に応じて、1で変換した順編成ファイルのデータをお客様側で変換する。(バイトオーダの変換や文字コードの変換など)
  3. 移行先環境で、iskeydefコマンド、またはisbuild関数、isaddindex関数、またはCOBOLプログラムを使用して索引順編成ファイルを作成する。
  4. 移行先環境で、isconvコマンドを使用して2で変換した順編成ファイルを3で作成した索引順編成ファイルへ変換する。

Q11. 他社のISAM製品と併用してISAMを使用することは可能でしょうか?

ISAMの関数名が他社のISAM製品の関数名と重複しコンパイルできないなど問題が発生することがあり、使用できないことがあります。
詳細は弊社へお問合せください。

Q12. 索引順編成ファイルにアクセスする複数のプログラムの同時実行は可能でしょうか?

可能です。ただし、ISAMではファイルやレコードの排他制御のために、単一の排他資源(共有メモリ、セマフォ、ミューテックス)を使用します。
複数のプログラムが同時に動作した場合、別の索引順編成ファイルにアクセスする場合でも、排他資源アクセスの競合が発生し、シリアライズされ、性能が劣化する場合があります。

ISAM関数を単体で発行する場合は短時間のため、ほとんど影響はありません。
しかし、索引順編成ファイルの全レコードを読み込むように、ISAM関数を多数連続して発行するプログラムを同時実行する場合は、それぞれのプログラムが対象とする索引順編成ファイルが別であっても、性能を検証し、性能に問題がある場合には、実行をずらす運用を検討してください。

なお、以下の場合は、本事象による性能劣化はありません。

  • 索引順編成ファイルのオープン時に排他指定でオープンしているプラグラム。
  • ユティリティの実行(レコード内容の表示ユティリティを除く)。