Db2 環境を適切にセットアップすれば、Db2 データ・サーバーで Oracle アプリケーションを動作可能にするための時間や労力を削減できます。
始める前に
- Db2 データ・サーバー製品をインストールする必要があります。
- db2set コマンドを実行するために、SYSADM 権限および適切なオペレーティング・システム権限が必要です。
- CREATE
DATABASE コマンドを発行するには、SYSADM 権限または SYSCTRL 権限が必要です。
このタスクについて
Db2 製品では、他のデータベース製品によって一般的に使用されるフィーチャーの多くがサポートされます。 このタスクは、Db2 インターフェースから Oracle データ・タイプを参照する PL/SQL ステートメントまたは SQL ステートメントを実行したり、その他の SQL 互換フィーチャーを使用したりするための前提条件になります。 Db2 互換フィーチャーはデータベース・レベルで有効にします。
無効にすることはできません。
プロシージャー
Oracle アプリケーションを Db2 データ・サーバーで動作可能にする手順は、以下のとおりです。
- Db2 コマンド・ウィンドウで、次のコマンドを発行して Db2 データベース・マネージャーを開始します。
- DB2_COMPATIBILITY_VECTOR レジストリー変数を以下のいずれかの値に設定します。
- 使用する特定の互換フィーチャーを有効にする 16 進値。
- 以下のコマンドに示すように、すべてのDb2 互換フィーチャー ORAを利用します。 これが推奨値です。
db2set DB2_COMPATIBILITY_VECTOR=ORA
- 以下に示すように、 DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数を YESに設定して、据え置き準備サポートを有効にします。
db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
DB2_COMPATIBILITY_VECTOR レジストリー変数を ORA に設定した場合に、DB2_DEFERRED_PREPARE_SEMANTICS レジストリー変数を設定しないと、SBCS や Unicode データベースの環境ではデフォルト値の YES が使用されます。 DBCS 環境の場合、デフォルト値は YES_DBCS_GRAPHIC_TO_CHAR です。
- db2stop コマンドを発行して、データベース・マネージャーを停止します。
- db2start コマンドを発行して、データベース・マネージャーを開始します。
- CREATE DATABASE コマンドを発行して、 Db2 データベースを作成します。 デフォルトで、データベースは Unicode データベースとして作成されます。
例えば、DB という名前のデータベースを作成するには、次のコマンドを実行します。
db2 CREATE DATABASE DB
- オプション: コマンド行プロセッサー・プラス (CLPPlus) スクリプトまたはコマンド行プロセッサー (CLP) スクリプト ( script.sqlなど) を実行して、データベースが PL/SQL ステートメントおよびデータ・タイプをサポートしていることを確認します。
次の CLPPlus スクリプトは、シンプルなプロシージャーを作成して呼び出します。
CONNECT user@hostname:port/dbname;
CREATE TABLE t1 (c1 NUMBER);
CREATE OR REPLACE PROCEDURE testdb(num IN NUMBER, message OUT VARCHAR2)
AS
BEGIN
INSERT INTO t1 VALUES (num);
message := 'The number you passed is: ' || TO_CHAR(num);
END;
/
CALL testdb(100, ?);
DISCONNECT;
EXIT;
CLPPlus スクリプトを実行するには、以下のコマンドを実行します。
clpplus @script.sql
以下の例は、同じスクリプトの CLP バージョンを示しています。 このスクリプトでは、
SET SQLCOMPAT PLSQL コマンドを使用して、新規の行でスラッシュ文字 (/) が PL/SQL ステートメント終了文字として認識されるようにします。
CONNECT TO DB;
SET SQLCOMPAT PLSQL;
-- Semicolon is used to terminate
-- the CREATE TABLE statement:
CREATE TABLE t1 (c1 NUMBER);
-- Forward slash on a new line is used to terminate
-- the CREATE PROCEDURE statement:
CREATE OR REPLACE PROCEDURE testdb(num IN NUMBER, message OUT VARCHAR2)
AS
BEGIN
INSERT INTO t1 VALUES (num);
message := 'The number you passed is: ' || TO_CHAR(num);
END;
/
CALL testdb(100, ?);
SET SQLCOMPAT DB2;
CONNECT RESET;
CLP スクリプトを実行するには、以下のコマンドを実行します。
db2 -tvf script.sql
結果
作成した Db2 データベースが Oracle アプリケーションで使用可能になりました。 これで、有効にした互換フィーチャーが使用できるようになります。 Oracle アプリケーションから使用可能なのは、DB2_COMPATIBILITY_VECTOR レジストリー変数の設定後に作成されたデータベースのみです。
注: データベースの作成後に
DB2_COMPATIBILITY_VECTOR
レジストリー変数を変更しないでください。 詳しくは、この
技術情報を参照してください。
次の作業
- CLPPlus インターフェースの使用を開始します。
- PL/SQL スクリプトとステートメントを実行します。
- データベース・オブジェクト定義を転送します。
- データベース・アプリケーションを使用可能にします。