データベース・ディレクトリーおよびファイル

データベースを作成するとき、デフォルトの情報を含むデータベースに関する情報は、 ディレクトリー階層内に保管されます。

階層ディレクトリー構造が自動的に作成されます。 CREATE DATABASE コマンドのディレクトリー・パスまたはドライブを指定することによって、構造のロケーションを指定することができます。ロケーションを指定しない場合、デフォルトのロケーションが使用されます。

CREATE DATABASE コマンドでデータベース・パスとして指定したディレクトリーに、インスタンスの名前を使用するサブディレクトリーが作成されます。

インスタンス名サブディレクトリー内に、 パーティション・グローバル・ディレクトリー が作成されます。 パーティション・グローバル・ディレクトリーには、新規データベースと関連付けられるグローバル情報が入ります。 パーティション・グローバル・ディレクトリーの名前は NODExxxx/SQLyyyyy です。ここで、xxxx はデータ・パーティション番号、yyyyy はデータベース・トークン (>=1 の数値) です。

partition-global ディレクトリーの下に、 メンバーの固有 ディレクトリーが作成されます。 メンバー固有のディレクトリーには、ローカル・データベース情報が含まれています。 メンバー固有のディレクトリーの名前は MEMBERxxxx です。ここで、 xxxxメンバー 番号です。
  • Db2® pureScale® 環境では、 メンバーごとに MEMBER0000MEMBER0001などという名前の メンバー固有のディレクトリーがあります。
  • パーティション・データベース環境では、 メンバー 番号は、対応するパーティション番号と 1 対 1 のマッピングを持つため、 メンバー およびパーティションごとに 1 つの NODExxxx ディレクトリーが存在します。 メンバー固有のディレクトリーは、常に MEMBERxxxx という名前になり、常にパーティション・グローバル・ディレクトリーに置かれます。
  • Enterprise Server Edition 環境は、単一の メンバー上で稼働し、 MEMBER0000という 1 つの メンバー固有のディレクトリーを持ちます。

パーティション・グローバル・ディレクトリー

パーティション・グローバル・ディレクトリーのパスは your_instance/NODExxxx/SQLxxxxx です。

パーティション・グローバル・ディレクトリーには、以下のファイルが入ります。
  • 相対パスを指定するか、パスをまったく指定しないグローバル・デッドロック・ファイル書き込みイベント・モニター・ファイル。
  • 表スペース情報ファイル。

    ファイル SQLSPCS.1 および SQLSPCS.2 には、表スペース情報が入ります。 これらのファイルは、バックアップのため、相互に重複しています。

  • ストレージ・グループ制御ファイル。

    ファイル SQLSGF.1 および SQLSGF.2 には、データベースの自動ストレージ機能に関連したストレージ・グループ情報が入ります。 これらのファイルは、保守とバックアップのため、相互に重複しています。 これらのファイルは、 CREATE DATABASE コマンドを使用してデータベースを作成するとき、または非自動ストレージ・データベースを Db2 10.1 以降にアップグレードするときに、データベース用に作成されます。

  • TEMPORARY 表スペース・コンテナー・ファイル。

    新規コンテナーのデフォルト・ディレクトリーは instance/NODExxxx/<db-name>です。 ファイルは、各 メンバーによってローカルに管理されます。 表スペース・ファイル名は、ファイル名に member 番号を挿入することによって、 メンバー ごとに固有になります。例えば、 /storage path/SAMPLEDB/T0000011/C0000000.TMP/SQL00002.MEMBER0001.TDA のようになります。

  • グローバル構成ファイル。

    グローバル構成ファイル SQLDBCONF には、データベース全体で一貫性を保つ必要がある単一の共有リソースを参照するデータベース構成パラメーターが入ります。 このファイルを編集しないでください。 構成パラメーターを変更するには、 UPDATE DATABASE CONFIGURATION コマンドと RESET DATABASE CONFIGURATION コマンドを使用します。

  • 履歴ファイル。

    DB2RHIST.ASC ヒストリー・ファイルとそのバックアップ DB2RHIST.BAK には、バックアップ、リストア、表のロード、表の再編成、表スペースの変更、およびデータベースに対するその他の変更に関する履歴情報が入ります。

  • ロギングに関連したファイル。

    グローバル・ログ制御ファイル SQLOGCTL.GLFH.1、 SQLOGCTL.GLFH.2には、データベース・レベルのリカバリー情報が含まれています。例えば、データベースがオフラインで、 メンバー間で共通のログ・チェーンを維持しているときに、新しい メンバー の追加に関連した情報などです。 ログ・ファイル自体は、パーティション・グローバル・ディレクトリー内の LOGSTREAMxxxx ディレクトリー ( メンバーごとに 1 つ) に保管されます。

  • ロック・ファイル。

    インスタンス・データベース・ロック・ファイル SQLINSLK および SQLTMPLK は、データベースがデータベース・マネージャーの 1 つのインスタンスでしか使われないようにします。

  • 自動ストレージ・コンテナー

メンバー固有のディレクトリー

メンバー固有のディレクトリーのパスは /NODExxxx/SQLxxxx/MEMBERxxxx です。

このディレクトリーには、作成された最初のデータベースに関連付けられたオブジェクトが入ります。後続のデータベースには、より大きな番号 (SQL00002 など) が付けられます。 これらのサブディレクトリーは、 CREATE DATABASE コマンドで指定したディレクトリー上のこのインスタンスで作成されたデータベースを区別します。

メンバー固有のディレクトリーには、以下のファイルが入ります。
  • バッファー・プール情報ファイル。

    ファイル SQLBP.1 および SQLBP.2 には、バッファー・プール情報が入ります。 これらのファイルは、バックアップのため、相互に重複しています。

  • 履歴ファイル。

    DB2TSCHG.HIS ファイルには、ログ・ファイル・レベルでの表スペース変更の履歴が入っています。 ログ・ファイルごとに、DB2TSCHG.HIS には、ログ・ファイルの影響を受ける表スペースを識別するのに役立つ情報が入っています。 表スペース・リカバリーは、このファイルからの情報を使用して、 表スペース・リカバリー中に処理するログ・ファイルを判別します。 テキスト・エディターで、履歴ファイルの内容を調べることができます。

  • ローカル・イベント・モニター・ファイル。
  • ロギングに関連したファイル。

    ログ制御ファイル SQLOGCTL.LFH.1 とそのミラー・コピーである SQLOGCTL.LFH.2、および SQLOGMIR.LFH には、アクティブ・ログに関する情報が入ります。 Db2 pureScale 環境では、各 メンバー には独自のログ・ストリームとローカル LFH ファイルのセットがあり、それらは各 メンバー固有のディレクトリーに保管されます。

    ヒント: データに使用していないディスクにログ・サブディレクトリーをマップしてください。 そうすることで、ディスクの問題がデータとログの両方ではなく、そのどちらかのみに制限できる場合があります。 データ用に使用していないディスクにログ・サブディレクトリーをマップすると、ログ・ファイルおよびデータベース・コンテナーは、同じディスク・ヘッドの移動で競合することがないため、パフォーマンスにも大きな利点となります。 ログ・サブディレクトリーのロケーションを変更するには、newlogpath データベース構成パラメーターを使用します。
  • ローカル構成ファイル。

    ローカル SQLDBCONF ファイルには、データベース構成情報が入ります。 このファイルを編集しないでください。 構成パラメーターを変更するには、 UPDATE DATABASE CONFIGURATION コマンドと RESET DATABASE CONFIGURATION コマンドを使用します。

  • WLM アドミッション制御の永続データ・ファイル。

    Db2 バージョン 11.5.6以降、 SQLWLMADMDAT バイナリー・ファイルには、前のデータベース・アクティベーションからの WLM アドミッション制御関連情報 (照会のリソース使用量履歴を含む) が含まれます。

データベースが作成されると同時に、詳細デッドロック・イベント・モニターも作成されます。 Enterprise Server Edition 環境およびパーティション・データベース環境では、詳細デッドロック・イベント・モニター・ファイルは、カタログ・ノードのデータベース・ディレクトリーに保管されています。 Db2 pureScale 環境では、詳細デッドロック・イベント・モニター・ファイルはパーティション・グローバル・ディレクトリーに保管されます。 イベント・モニターが、 出力するファイルの最大数に達した場合、イベント・モニターは非アクティブ化され、 メッセージが通知ログに書き込まれます。 これにより、イベント・モニターによるディスク・スペースの過度の使用を防ぎます。 必要のない出力ファイルを除去すると、イベント・モニターは次のデータベースの活動化時に再びアクティブになります。

注: 既存の Db2 9.5 または 9.7 データベースを バージョン 11.5にアップグレードする場合、データベース・ログ・ディレクトリーは変更されています。 ユーザー定義のログ・ディレクトリーとして、例えば /usr/logpath を使用している場合であれば、アップグレード後のログ・ファイルの場所は /usr/logpath/NODE0000/LOGSTREAM0000 になります。 デフォルト・データベース・ディレクトリーとして、例えば /home/db2user/db2inst/NODE0000/SQL00001/SQLOGDIR を使用している場合であれば、アップグレード後のログ・ファイルの場所は /home/db2user/db2inst/NODE0000/SQL00001/LOGSTREAM0000 になります。 アップグレード後に、古いログ・ディレクトリーには名前の変更されたログ・ファイルのみが含まれます。 新しいログ・ディレクトリーに関する情報は、db2diag.log ファイルで参照できます。

非自動ストレージ・データベースの SMS データベース・ディレクトリーについての追加情報

非自動ストレージ・データベースでは、デフォルトのシステム管理スペース (SMS) 表スペースが、SQLT* サブディレクトリーにあります。
  • SQLT0000.0 サブディレクトリーには、システム・カタログ表の CATALOG 表スペースが入ります。
  • SQLT0001.0 サブディレクトリーには、デフォルトの TEMPORARY 表スペースが入ります。
  • SQLT0002.0 サブディレクトリーには、デフォルトのユーザー・データ表スペースが入ります。

各サブディレクトリーまたはコンテナーには、SQLTAG.NAM という名前のファイルが作成されます。 このファイルは、サブディレクトリーに使用中のマークを付け、 後続の表スペース作成で、これらのサブディレクトリーが使用されないようにします。

さらに、SQL*.DAT というファイルには、サブディレクトリーまたはコンテナーに含まれている、各表に関する情報が保管されます。 アスタリスク (*) は、各表を示す固有の数字の集合で置き換えられます。 SQL*.DAT ファイルごとに、表タイプ、表の再編成状況、またはその表に索引フィールド、LOB フィールド、または LONG フィールドが存在するかどうかによって、以下のファイルが 1 つ以上存在する可能性があります。
  • SQL*.BKM (MDC 表または ITC 表の場合は、ブロック割り振り情報が入る)
  • SQL*.LF (LONG VARCHAR または LONG VARGRAPHIC データが入る)
  • SQL*.LB (BLOB、CLOB、または DBCLOB データが入る)
  • SQL*.XDA (XML データが入る)
  • SQL*.LBA (SQL*.LB ファイルに関する割り振りおよびフリー・スペース情報が入る)
  • SQL*.INX (索引表データが入る)
  • SQL*.IN1 (索引表データが入る)
  • SQL*.DTR (SQL*.DAT ファイルの再編成についての一時データが入る)
  • SQL*.LFR (SQL*.LF ファイルの再編成についての一時データが入る)
  • SQL*.RLB (SQL*.LB ファイルの再編成についての一時データが入る)
  • SQL*.RBA (SQL*.LBA ファイルの再編成についての一時データが入る)

冗長性を高めるための ctrl_file_recov_path の構成

Db2 11.5.7のリリースでは、重要な制御ファイルのコピーが維持される冗長パスを指定することができます。これは、制御ファイルが誤って削除されたり、破損したり、データベース・パス内でアクセスできなくなったりした場合のリカバリーに役立ちます。 詳しくは、 ctrl_file_recov_path-データベース制御ファイル・リカバリー・パス構成パラメーターを参照してください。