データベースに関する情報を記述したりデータベースの管理を制御するのに使用できるパラメーターがいくつかあります。 次のグループに分けることができます。
次のパラメーターは、 Query Enabler の制御を記述しています。
このパラメーターは、 DB2 クエリー・パトローラーがインストールされているときに使用されます。 データベース構成パラメーター dyn_query_mgmt が "ENABLE" に設定されており、 動的照会のコストがユーザーまたはグループの trap_threshold (DB2 クエリー・パトローラーのユーザー・プロファイル表で指定されている) を上回る場合、 DB2 クエリー・パトローラーはこの照会を採用します。 trap_threshold はコスト・ベースのトリガーで、 DB2 クエリー・パトローラーでの照会の採用をユーザーが設定するのに使用します。 動的照会が採用されると、 実行時パラメーターを指定するダイアログが表示されます。
dyn_query_mgmt が "DISABLE" に設定されている場合、 照会は採用されません。
次のパラメーターは、 データベースの一般的な情報を記述します。
copyprotect 以外のパラメーターは、情報提供専用です。
このパラメーターは、構成ファイルのリリース・レベルを指定します。
このパラメーターは、 データベースを使用できるデータベース・マネージャーのリリース・レベルを示します。 移行が完了していないか、または失敗した場合は、 移行されていないデータベースのリリース・レベルが示されるので、 release パラメーター (データベース構成ファイルのリリース・レベル) とは違っていることがあります。 それ以外の場合、database_level の値は release パラメーターの値と同じになります。
このパラメーターは、 データベースを作成するときに使用した領域を示します。 データベース・マネージャーは、 この領域を用いて、 country パラメーターの値を判別します。 データベース・マネージャーが領域を使用する方法の詳細については、 概説およびインストール を参照してください。
このパラメーターは、 データベースを作成するときに使用した国別コードを示します。 country パラメーターは、 territory パラメーターから派生しています。 詳細については、概説およびインストール を参照してください。
このパラメーターは、 データベースを作成するときに使用したコード・セットを示します。 データベース・マネージャーは、 コード・セットを用いて codepage パラメーターの値を判別します。 データベース・マネージャーがコード・セットを使用する方法の詳細については、 概説およびインストール を参照してください。
このパラメーターは、 データベースを作成するときに使用したコード・ページを示します。 codepage パラメーターは、 codeset パラメーターから派生しています。 詳細については、概説およびインストール を参照してください。
このパラメーターは、 GET DATABASE CONFIGURATION API を使用する場合に限り表示できます。 コマンド行プロセッサーまたはコントロール・センターからは、表示できません。
このパラメーターは、データベースの照合情報を 260 バイトで提供します。 最初の 256 バイトは、データベースの照合順序を指定します。 「n」番目のバイトには、 データベースのコード・ページ中で基本 10 進表記が「n」になっているコード・ポイントの、分類重みがあります。
最後の 4 バイトには、照合順序のタイプに関する内部情報があります。 この内部情報は、 データベースのプラットフォームにとって適当な整数として扱うことができます。 次の 3 つの値があります。
この内部タイプ情報を使用する場合は、 さまざまなプラットフォームでデータベースの情報を検索するときに生じる可能性のあるバイト逆転について考慮する必要があります。
照合順序は、データベースを作成するときに指定することができます。
このパラメーターは、コピー保護属性を使用可能にします。 省略時では使用不能になっています。 バージョン 2 より前のバージョンのデータベース・マネージャーでは、 省略時設定でコピー保護属性が使用可能です。
このパラメーターは UNIX ベースの環境には適用されません。
copyprotect パラメーターを設定しても、 データベース・バックアップ・ユーティリティーおよびデータベース復元ユーティリティーは影響されません。 コピー保護のデータベースを、 バックアップを実行して別のワークステーションに復元し、 カタログおよびアクセスを行うことができます。
警告: データベース・マネージャーまたはオペレーティング・システムを再インストールする際には、 その前にすべてのデータベースからコピー保護を除去してください。 コピー保護を除去しないと、 データベースにアクセスしようとしたときにエラーが生じます。 再インストールが終わってから、コピー保護を使用可能にすることができます。
次のパラメーターは、 DB2 データ・リンク・マネージャーと関連があります。
このパラメーターは、 生成されるファイル・アクセス制御トークンが有効な時間間隔 (秒単位) を指定します。 トークンが有効な秒数は、トークンの生成時から開始されます。 データ・リンク・ファイル・システム・フィルターは、この満了時刻が入ったトークンの妥当性を検査します。
ファイル・アクセス制御トークンの詳細については、 DB2 Data Links Manager Quick Beginnings を参照してください。
このパラメーターの省略時値は、60 秒です。 -1 は、トークンが効果的に満了しないことを暗黙指定します。
このパラメーターは、 "READ PERMISSION DB" を指定する DATALINK 列に適用されます。
このパラメーターは、 データベースにファイルがリンクされるときにアーカイブ・サーバー (ADSM サーバーなど) で作成されるファイルの追加コピー数を指定します。
このパラメーターの省略時値はゼロ (0) です。
このパラメーターは、"Recovery=Yes" を指定する DATALINK 列に適用されます。
このパラメーターは、 DROP DATABASE の発行後にアーカイブ・サーバー (TSM サーバーなど) でファイルが保存される時間間隔 (日数) を指定します。
このパラメーターの省略時値は 1 日です。 値がゼロ (0) であれば、 DROP コマンドまたはステートメントの発行時にファイルがただちにアーカイブ・サーバーから削除されます。 (DATALINK 列で ON UNLINK DELETE パラメーターが指定されない限り、 実際のファイルは削除されません。)
このパラメーターは、 "Recovery=Yes" を指定する DATALINK 列に適用されます。
このパラメーターは、 DATALINK ファイル・アクセス制御トークンの生成で使われるアルゴリズムを指定します。 値 MAC1 (メッセージ確認コード) は値 MAC0 より安全なメッセージ確認コードを生成しますが、 パフォーマンスのオーバーヘッドも大きくなります。
ファイル・アクセス制御トークンの詳細については、 DB2 Data Links Manager Quick Beginnings を参照してください。
このパラメーターは、 "READ PERMISSION DB" を指定する DATALINK 列に適用されます。
このパラメーターは、 ファイル・アクセス制御トークンで大文字を使用するかどうかを指定します。 値 "YES" は、 アクセス制御トークンの文字がすべて大文字であることを指定します。 値 "NO" は、そのトークンに大文字と小文字の両方を含められることを指定します。
ファイル・アクセス制御トークンの詳細については、 DB2 Data Links Manager Quick Beginnings を参照してください。
このパラメーターは、 "READ PERMISSION DB" を指定する DATALINK 列に適用されます。
このパラメーターは、データ・リンク・サポートを使用可能にするかどうかを指定します。 値 "YES" は、ネイティブのファイル・システム (たとえば、 AIX 上の JFS) に格納されているファイルをリンクするデータ・リンク・マネージャーで、 データ・リンク・サポートが使用可能であることを指定します。 値 "NO" は、データ・リンク・サポートが使用不能であることを指定します。
次のパラメーターは、データベースの状態を記述しています。
このパラメーターをオンに設定すると、データベースにアクセスする前に、 データベースの全バックアップを実行しなければならないことが示されます。 このパラメーターは、データベース構成が変更された場合にのみオンとなり、 データベースは回復不能状態から回復可能状態に移行します (つまり、 最初は logretain および userexit パラメーターは両方とも NO に設定されましたが、 その後、一方または両方のパラメーターが YES に設定され、 データベース構成の更新が受け入れられたということです)。
データベースが一貫性を保っているかどうかを示します。
YES は、 すべてのトランザクションがコミットまたはロール・バックされている、 つまり、一貫性があることを示しています。 データベースが一貫性を保っているときにシステムが「破損」した場合、 データベースを使用可能にするために特別の処置を行う必要はありません。
NO は、保留中のトランザクション、 または保留中の他のタスクがデータベースにあること、つまり、 データは現時点では一貫性がないことを示します。 データベースの一貫性がないときにシステムが「破損」した場合、 データベースを使用可能にするためには、 RESTART DATABASE コマンドを使ってデータベースを再始動する必要があります。 RESTART DATABASE コマンドの詳細については、 コマンド解説書 を参照してください。
このパラメーターは、次のいずれかの状態を示します。
データベースまたは表スペースは、 (ROLLFORWARD DATABASE を使用して) 回復しない限りアクセスできません。 ROLLFORWARD DATABASE について詳しくは、コマンド解説書 を参照してください。
このパラメーターを設定すると、 ログ・ファイルが、ロールフォワード回復用に保存されていることが示されます。
logretain パラメーターの設定値が活動状態になった時点で、 このパラメーターが設定されます。
このパラメーターを ON に設定すると、データベース・マネージャーでロールフォワード回復が使用できることと、 データベース・マネージャーが呼び出したログ・ファイルを保存および検索するときにユーザー出口プログラムが使用されることが示されます。
このパラメーターは、 RESTORE PENDING 状況がデータベースにあるかどうかを示します。
複数ページ・ファイル割り振りは、 挿入パフォーマンスを上げるために使用されます。 これは SMS 表スペースにだけ適用されます。 これが使用可能になっていると、すべての SMS 表スペースがこれに影響されます。 すなわち、個別の SMS 表スペースを選択することはできません。
このパラメーターの省略時値は NO です。すなわち、 複数ページ・ファイル割り振りは使用可能になりません。
データベースの作成後、このパラメーターを YES に設定し、 複数ページ・ファイル割り振りが可能になっていることを示すことができます。 これは、 db2empfa ツールを使用して行われます。 ひとたび YES に設定された後は、このパラメーターを NO に変更することはできません。
次のパラメーターは、コンパイラーに影響する情報を提供します。
このパラメーターは、SQL ステートメントのコンパイル時に、 算術計算エラーと検索変換エラーをエラーまたは警告として処理することを決める省略時値を設定します。 静的 SQL ステートメントの場合は、 このパラメーターの値はバインド時のパッケージに関連付けられます。 動的 SQL DML ステートメントでは、このパラメーターの値は、 ステートメントを準備するときに使用されます。
警告: データベースの dft_sqlmathwarn 値を変更すると、 算術式を含む検査制約、トリガー、および視点の動作も変わることがあります。 このため、 変更がデータベースのデータ保全性に影響することがあります。 データベースに対する dft_sqlmathwarn の設定変更は、 新しい算術例外の処理動作が検査制約、トリガー、 および視点にどのように影響するかを注意深く検討した後でのみ行ってください。 変更後に、引き続き変更するときも同様に注意深い検討が必要です。
例として、次のような除算を含む検査制約について考えてみます。
A/B > 0
dft_sqlmathwarn が "No" の場合は、 B=0 を INSERT すると、このゼロによる除算は算術計算エラーとして処理されます。 この挿入操作は DB2 がその制約を検査できないため失敗します。 dft_sqlmathwarn を "Yes" に変更すると、 ゼロによる除算は算術計算の警告として処理され、結果は NULL になります。 この結果の NULL によって、">" 述部は UNKNOWN と評価され、 挿入操作は成功します。 dft_sqlmathwarn を "No" に戻すと、 同一行への挿入試行は失敗します。これは、 ゼロによる除算エラーによって DB2 が制約を評価できないためです。 dft_sqlmathwarn が "Yes" だったときに B=0 を挿入された行は、 表の中に保持され、選択することができます。 制約を評価させた行の更新は失敗となりますが、 一方、制約の再評価を必要としない行の更新は成功します。
dft_sqlmathwarn を "No" から "Yes" に変更する前に、 算術式の NULL を明示的に処理するように制約を書き直すことを考えてください。 次に例を示します。
( A/B > 0 ) AND ( CASE WHEN A IS NULL THEN 1 WHEN B IS NULL THEN 1 WHEN A/B IS NULL THEN 0 ELSE 1 END = 1 )
これは、A と B がともにヌル可能であれば使用することができます。 また、A または B のいずれかがヌル可能でない場合は、 対応する IS NULL WHEN 文節を取り除くことができます。
dft_sqlmathwarn を "Yes" から "No" に変更するときは、 その前に、矛盾するおそれのあるデータをまず検査してください。 そのために、たとえば、次のような述部を使用することができます。
WHERE A IS NOT NULL AND B IS NOT NULL AND A/B IS NULL
矛盾する行が分離されているときは、 dft_sqlmathwarn を変更する前にその矛盾を訂正するような適切なアクションをとる必要があります。 また、変更した後も、算術式の制約を手作業で検査し直すことができます。 そのためには、まず、 影響される表を検査保留状態 (SET CONSTRAINTS ステートメントに OFF 文節を付ける) に置き、 次にその表の検査を要求します (SET CONSTRAINTS ステートメントに IMMEDIATE CHECKED 文節を付ける)。 矛盾するデータは算術計算エラーとして指示され、そのため制約は評価されません。
推奨事項: 算術例外を含んでいるような照会の処理が特に必要でないかぎり、 省略時値は NO に設定してください。 そのような照会を含むときは YES に指定します。 別のデータベース・マネージャーでは発生する算術例外に関係なく結果が得られるような SQL ステートメントを処理する場合は、 このようなことが起こり得ます。
このパラメーターは、 CURRENT DEGREE 特殊レジスターおよび DEGREE バインド・オプションの省略時値を指定します。
省略時値は 1 です。
値 1 は、 区画内並行処理を行わないことを意味します。 値 -1 は、プロセッサー数と照会のタイプに基づいて、 区画内並行処理の程度を最適化プログラムが決定することを意味します。
SQL ステートメントの区画内並行処理の程度は、 CURRENT DEGREE 特殊レジスターまたは DEGREE バインド・オプションを使用してステートメントのコンパイル時に指定されます。 活動アプリケーションに対する実行時区画内並行処理の最大度は SET RUNTIME DEGREE コマンドによって指定されます。 照会の最大並列処理度 (max_querydegree) 構成パラメーターは、 すべての SQL 照会に対する、照会の区画内並行処理の最大度を指定します。
実際の実行時程度は、次の中の最も小さいものになります。
照会最適化クラスは、SQL 照会のコンパイル時に、 最適化プログラムに異なる最適化の程度を使用するように指示するために使用されます。 このパラメーターは、 SET CURRENT QUERY OPTIMIZATION ステートメントも QUERYOPT バインド・コマンドも使用しないときに使用される省略時の照会最適化クラスを設定することによって、 柔軟性を高めるものです。
現在定義されている照会最適化クラスは、次のとおりです。
推奨事項: 適切な照会最適化クラスを選択するための情報および指針は、 最適化クラスの調整に説明してあります。
プログラムがどのようにしてデータベース構成パラメーターを検索し、 修正できるかについてさらに詳しくは、管理 API 解説書 を参照してください。
このパラメーターには、 CURRENT REFRESH AGE 特殊レジスターが指定されていない場合の、 REFRESH AGE の省略時値を指定します。 このパラメーターは、 タイム・スタンプ期間の値を、 データ・タイプ DECIMAL(20,6) で指定します。 この時刻期間は、 特定の REFRESH DEFERRED 要約表に対する REFRESH TABLE ステートメントを処理してから、 どれくらいの期間、 その要約表を照会の最適化に使用できるかを示しています。 CURRENT REFRESH AGE の値が 99999999999999 (ANY) であり、 QUERY OPTIMIZATION クラスが 5 以上の場合、 REFRESH DEFERRED 要約表は、 動的 SQL 照会の処理を最適化するものと見なされます。
このパラメーターは、 RUNSTATS コマンドに WITH DISTRIBUTION オプションを指定して実行したときに収集される「頻度が高い値」の数を指定します。 このパラメーターの値を大きくすると、 統計を収集するときの統計ヒープの量 (stat_heap_sz) も増えます。
最適化プログラムは、 「頻度が高い値」の統計を使って、 ある列でのデータ値の分散を調べます。 値を高く設定すると、SQL 最適化プログラムが利用できる情報量は増えますが、 追加のカタログ・スペースが必要になります。 0 を指定すると、ユーザーが分散統計を要求した場合でも、 値の頻度に関する統計は保存されません。
このパラメーターを更新すると、最適化プログラムは、 一様に分散していないデータについて、 ある種の述部 (=、<、>、IS NULL、 IS NOT NULL) の選択性をより正確に見積もることができます。 選択性をより正確に計算できれば、 より効率のよいアクセス・プランを選択することができます。
このパラメーターの値を変更した場合は、 次の作業を行ってください。
詳細については、分布統計の収集と使用を参照してください。
推奨事項: このパラメーターを更新するときは、 一般的に選択述部を使用している (最も重要な表の中の) 最も重要な列が、 どの程度一様になっていないかを判別する必要があります。 SQL SELECT ステートメントを使用すると、 列に含まれる各値の出現箇所の数が順序付けられてランキングになって示されます。 均一に配分されている列、固有の列、長い列、または LOB 列については、 考慮しないでください。 このパラメーターの場合、実際に適切な値の範囲は 10 から 100 です。
高頻度値の統計を収集する処理では、 CPU とメモリー・リソース (stat_heap_sz) がかなり必要となるので注意してください。
このパラメーターは、RUNSTATS コマンドに WITH DISTRIBUTION オプションを指定して実行したときに収集される、 変位数の数を制御します。 このパラメーターの値を大きくすると、 統計を収集するときの統計ヒープの量 (stat_heap_sz) も増えます。
最適化プログラムは、「変位数」の統計を用いて、 ある列でのデータ値の分散を調べます。 値を高く設定すると、SQL 最適化プログラムが利用できる情報量は増えますが、 追加のカタログ・スペースが必要になります。 0 または 1 に指定すると、分散統計を収集するようユーザーが要求しても、 変位数の統計は保存されません。
このパラメーターを更新すると、最適化プログラムは、一様に分散していないデータについて、 範囲述部の選択性をより正確に見積もることができます。 最適化プログラムの決定において、この情報は、 索引走査か表走査のどちらを選択するかに強く影響します。 (頻度の高い値の範囲にアクセスするには表走査、 頻度の低い値の範囲には索引走査を使用するのが効果的です。)
このパラメーターの値を変更した場合は、 次の作業を行ってください。
詳しくは、分布統計の収集と使用を参照してください。
推奨事項: このパラメーターの省略時値を使用した場合、 一方向範囲述部 (>、>=、<、または <=) の見積時のエラーは最大で約 2.5 %、 BETWEEN 述部の見積時のエラーは最大で約 5% です。 変位値の数を決めるときの経験則は、次のとおりです。
たとえば、変位値を 25 にすると、BETWEEN 述部の場合の見積エラーは最大で 4%、 ">" 述部の場合の見積エラーは最大で 2% ということになります。 このパラメーターの、実際に適切な値の範囲は 10 から 50 です。