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 参照情報に記載されている動作とは異なります。 そのような動作の違いについては、対応するフィーチャーの説明中に記載しています。
ビット位置 | 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 ステートメントを発行することもできません。 | |
|
使用法
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