DB2_COMPATIBILITY_VECTOR レジストリー変数

Db2® 製品には、 Oracle、 Sybase、 MySQLなどの他のリレーショナル・データベース製品からアプリケーションをマイグレーションする作業を簡素化するオプション機能が用意されています。 これらのフィーチャーはデフォルトでは非アクティブですが、DB2_COMPATIBILITY_VECTOR_COMPATIBILITY_VECTOR レジストリー変数を使用してフィーチャーのサブセットをアクティブにすることができます。

レジストリー変数の設定

以下の値を DB2_COMPATIBILITY_VECTOR レジストリー変数に対して設定できます。
NULL
互換フィーチャーはアクティブになりません。 これがデフォルトです。
00000000 から FFFFFFFF までの 16 進数
バイナリー・ストリングを表す 16 進数。 ストリングの各ビット位置の値 (0 または 1) は、対応する互換フィーチャーが有効 (1) か無効 (0) かを示します。 表 1 は、各ビットを、それが制御する機能にマップしています。
ORA
この値は、Oracle アプリケーションの互換性を高めます。 これは、 表 1の ORA 列に黒丸がある互換フィーチャーをアクティブ化します。 ( Oracle 互換フィーチャーについて詳しくは、「 Oracle to DB2® Conversion Guide: Compatibility Made Easy」を参照してください。) さらに、DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数のデフォルト値が、'YES' (1 バイト文字セット環境の場合) または 'YES_DBCS_GRAPHIC_TO_CHAR' (2 バイト文字セット環境の場合) のどちらかに変更されます。
SYB
この値は、Sybase アプリケーションの互換性を高めます。 これは、 表 1の SYB 列に黒丸がある互換フィーチャーをアクティブにします。 さらに、DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数のデフォルト値が 'YES' に変更されます。
MYS (MYS)
この値は、MySQL アプリケーションの互換性を高めます。 DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数のデフォルト値が、'YES' (1 バイト文字セット環境の場合) または 'YES_DBCS_GRAPHIC_TO_CHAR' (2 バイト文字セット環境の場合) のどちらかに変更されます。

DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数について詳しくは、 照会コンパイラー変数を参照してください。

重要: 互換性機能を有効にすると、一部の SQL 動作は、SQL 参照情報に記載されている動作とは異なります。 そのような動作の違いについては、対応するフィーチャーの説明中に記載しています。
表 1. DB2_COMPATIBILITY_VECTOR のビット位置
ビット位置 16 進値 ORA SYB 互換フィーチャー 説明
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 データベース構成パラメーターは ON に設定されます。
6 0x20   VARCHAR2 データ・タイプ 1 このビットは、 VARCHAR2 および NVARCHAR2 データ・タイプと、関連する文字ストリング処理のサポートを有効にします。 このサポートを有効にしてデータベースを作成すると、varchar2_compat データベース構成パラメーターは ON に設定されます。
7 0x40   DATE データ・タイプ 1 このビットは、DATE データ・タイプを TIMESTAMP(0) データ・タイプとして解釈できるようにし、日付情報だけでなく時刻情報も含まれるようにします。 例えば、日付互換モードでは、ステートメント「VALUES CURRENT DATE」は、2016-02-17-10.43.55. のような値を返します。 このサポートを有効にしてデータベースを作成すると、date_compat データベース構成パラメーターは ON に設定されます。
8 0x80   TRUNCATE TABLE このビットは、TRUNCATE ステートメントの代替セマンティクスを有効にします。IMMEDIATE がオプション・キーワードになり、デフォルトになります。 TRUNCATE ステートメントが論理的な作業単位内の最初のステートメントでない場合は、TRUNCATE ステートメントが実行される前に暗黙的なコミット操作が行われます。
9 0x100 文字リテラル このビットは、バイト長が 254 以下の文字ストリング定数またはグラフィック・ストリング定数に、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 のサポートをアクティブにしていましたが、このフィーチャーは常にアクティブになったため、無視されるようになりました。
16 0x8000     (予約済み) このビットは現在使用されていません。
17 0x10000   SQL データ・アクセス・レベルの適用 このビットは、ルーチンが実行時に SQL データ・アクセス・レベルを適用できるようにします。
18 0x20000   Oracle データベース・リンク構文 このビットは、他のデータベース内のオブジェクトにアクセスするための Oracle データベース・リンク構文を有効にします。
19 0x40000   同義語の使用法 このビットは、一部の SQL ステートメントでシノニムを使用できないようにします。 シノニムの使用が制限されるよう DB2_COMPATIBILITY_VECTOR レジストリー変数を設定する際は、表のシノニムをターゲットとして指定して alter、drop、rename、truncate の各ステートメントを発行することができません。 ビューのシノニムをターゲットとして指定して alter ステートメントまたは drop ステートメントを発行することもできません。 シーケンスのシノニムをターゲットとして指定して alter ステートメントまたは drop ステートメントを発行することもできません。
  1. このフィーチャーは、データベース作成時のみ適用されます。 このフィーチャーを有効または無効にした場合、影響を受けるのは新しく作成されたデータベースのみであり、既存のデータベースは影響を受けません。
  2. PL/SQL サポートに関する制約事項を参照してください。

使用法

db2set コマンドを使用して、 DB2_COMPATIBILITY_VECTOR レジストリー変数を設定および更新します。 互換フィーチャーと関連付けられた 16 進値の桁を追加することにより、互換フィーチャーと組み合わせて DB2_COMPATIBILITY_VECTOR レジストリー変数を設定することができます。 インスタンスを停止して再始動するまで、レジストリー変数の新規設定は反映されません。 また、変更を反映するには、Db2 パッケージの再バインドも必要です。 明示的に再バインドしなかったパッケージには、次に暗黙的に再バインドされたときに変更が反映されます。

例 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