DB2 Version 10.1 for Linux, UNIX, and Windows

DB2_COMPATIBILITY_VECTOR レジストリー変数

DB2_COMPATIBILITY_VECTOR レジストリー変数は、1 つ以上の DB2® 互換フィーチャーを有効にします。 これらのフィーチャーによって、DB2 製品以外のリレーショナル・データベース製品用として作成されたアプリケーションを、DB2 バージョン 9.5 以降にマイグレーションするタスクが容易になります。

このレジストリー変数は、Linux、UNIX、および Windows オペレーティング・システムでサポートされます。

このレジストリー変数に 16 進値を指定することにより、個々の DB2 互換フィーチャーを有効にすることができます。 変数値のビットごとに、異なるフィーチャーを有効にします。 値を以下に示します。
  • NULL (デフォルト)
  • 0000 - FFFF
  • ORA (Oracle アプリケーション用の DB2 互換フィーチャーを最大限に活用する)
  • SYB (Sybase アプリケーション用の DB2 互換フィーチャーを最大限に活用する)
  • MYS (MySQL アプリケーション用の DB2 互換フィーチャーを最大限に活用する)
ORASYB、または MYS の値を設定することが推奨されます。
重要: こうしたフィーチャーは、互換性に関する特定の目的で必要な場合にのみ使用可能にしてください。 DB2 互換フィーチャーを有効にすると、一部の SQL 動作が、SQL 参照情報に記載されている動作と一致しなくなります。 互換フィーチャーがご使用の SQL アプリケーションにどのような影響を与える可能性があるかを判別するには、互換フィーチャーの関連資料を参照してください。

レジストリー変数の設定

次の表は、各互換フィーチャーを有効にするために必要な設定を示しています。

表 1. DB2_COMPATIBILITY_VECTOR レジストリー変数の値
ビット位置 (16 進値) 互換フィーチャー 説明
1 (0x01) ROWNUM 疑似列 ROWNUM を ROW_NUMBER() OVER() の同義語として使用することを可能にし、ROWNUM を SQL ステートメントの WHERE 節に含めることを許可します。
2 (0x02) DUAL 表 DUAL 表への非修飾参照を SYSIBM.DUAL として解決します。
3 (0x04) 外部結合演算子 外部結合演算子 (+) のサポートを有効にします。
4 (0x08) 階層照会 CONNECT BY 節を使用した階層照会のサポートを有効にします。
5 (0x10) NUMBER データ・タイプ 1 NUMBER データ・タイプおよび関連する数値処理のサポートを有効にします。 このサポートを有効にしてデータベースを作成すると、number_compat データベース構成パラメーターはオンに設定されます。
6 (0x20) VARCHAR2 データ・タイプ 1 VARCHAR2 データ・タイプと NVARCHAR2 データ・タイプ、および関連する文字ストリング処理のサポートを有効にします。 このサポートを有効にしてデータベースを作成すると、varchar2_compat データベース構成パラメーターはオンに設定されます。
7 (0x40) DATE データ・タイプ 1 DATE データ・タイプを、日付と時刻の値を結合した TIMESTAMP(0) データ・タイプとして変換処理できるようにします。 例えば、日付互換性モードでの「VALUES CURRENT DATE」は、2011-02-17-10.43.55 のような値を戻します。 このサポートを有効にしてデータベースを作成すると、date_compat データベース構成パラメーターはオンに設定されます。
8 (0x80) TRUNCATE TABLE TRUNCATE ステートメント用の代替セマンティクスを有効にします。 IMMEDIATE がオプションのキーワードであり、指定がない場合にデフォルトになります。 TRUNCATE ステートメントが論理作業単位内の最初のステートメントではない場合、TRUNCATE ステートメントが実行される前に暗黙的なコミット操作が実行されます。
9 (0x100) 文字リテラル バイト長が 254 以下である文字定数および GRAPHIC ストリング定数に、(VARCHAR データ・タイプでも VARGRAPHIC データ・タイプでもなく) CHAR データ・タイプまたは GRAPHIC データ・タイプを割り当てることを可能にします。
10 (0x200) コレクション・メソッド 配列で first、last、next、previous などの演算を実行するメソッドの使用を可能にします。 また、配列内の特定の要素の参照に、大括弧の代わりに括弧を使用できるようにします。例えば、array1(i) は array1 の要素 i を参照します。
11 (0x400) Oracle データ・ディクショナリー互換ビュー 1 Oracle データ・ディクショナリー互換ビューの作成を可能にします。
12 (0x800) PL/SQL のコンパイル 2 PL/SQL ステートメントおよび言語要素のコンパイルと実行を可能にします。
13 (0x1000) インセンシティブ・カーソル SELECT ステートメントで FOR UPDATE が明示的に指定されていない場合に、WITH RETURN が定義されたカーソルをインセンシティブにできるようにします。
14 (0x2000) INOUT パラメーター INOUT パラメーター宣言の DEFAULT 指定を可能にします。
15 (0x4000) LIMIT 節と OFFSET 節 全選択ステートメント、UPDATE ステートメント、および DELETE ステートメントにおいて、MySQL 互換かつ PostgreSQL 互換である LIMIT 節および OFFSET 節の使用を可能にします。
17 (0x10000) SQL データ・アクセス・レベルの適用 ルーチンが実行時に SQL データ・アクセス・レベルを適用できるようにします。
18 (0x20000) Oracle データベース・リンク構文 他のデータベース内のオブジェクトにアクセスするための Oracle データベース・リンク構文を有効にします。
  1. このフィーチャーは、データベースの作成中にのみ適用できます。 データベースの作成後にこのフィーチャーを有効または無効にした場合は、それ以後に作成されるデータベースに対してのみ適用されます。
  2. 『PL/SQL サポートに関する制約事項』PL/SQL サポートに関する制約事項を参照してください。

使用法

db2set コマンドを使用して、DB2_COMPATIBILITY_VECTOR レジストリー変数を設定および更新します。
  • サポートされているすべての Oracle 互換フィーチャーを有効にするには、レジストリー変数の値を ORA (16 進値 30FFF と等価) に設定します。
  • サポートされているすべての Sybase 互換フィーチャーを有効にするには、レジストリー変数の値を SYB (16 進値 3004 と等価) に設定します。
  • 現在のところ、MySQL 互換フィーチャーのうちサポートされているのは、LIMIT 節と OFFSET 節の有効化 (0x4000) のみです。
インスタンスを停止して再始動するまで、レジストリー変数の新規設定は反映されません。 また、変更を反映するには、DB2 パッケージの再バインドも必要です。 明示的に再バインドされなかったパッケージは、次回の暗黙的再バインド時に変更を反映します。

DB2_COMPATIBILITY_VECTOR レジストリー変数を設定する場合、データベースを Unicode データベースとして作成します。

例 1

この例では、サポートされているすべての Oracle 互換フィーチャーを有効にするようにレジストリー変数を設定する方法を示しています。
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

例 2

この例では、ROWNUM (0x01) と DUAL (0x02) の両方を有効にするようにレジストリー変数を設定する方法を示しています。
db2set DB2_COMPATIBILITY_VECTOR=03
db2stop
db2start

例 3

この例は、DB2_COMPATIBILITY_VECTOR レジストリー変数をリセットしてすべての互換フィーチャーを無効にする方法を示しています。
db2set DB2_COMPATIBILITY_VECTOR=
db2stop
db2start
以下のいずれかのフィーチャーが有効になっているときにデータベースを作成すると、この db2set コマンドの実行後も、そのデータベースではこれらのフィーチャーを引き続き使用できます。