ヘッダーをスキップ
Oracle Database Extensions for .NET開発者ガイド
10g リリース2(10.2.0.2)
B31248-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

3 Visual Studio .NETによる開発とデプロイ

この章では、.NETストアド・プロシージャまたはファンクションを開発してOracle Databaseにデプロイするために必要な手順について説明します。

この章は次のトピックで構成されています。

ステップ1: ストアド・プロシージャまたはファンクションの開発とアセンブリへの組込み

Microsoft Visual Studio .NETを使用して、適切な.NET言語でストアド・プロシージャまたはファンクションを記述します。.NETストアド・プロシージャまたはファンクションにOracle Data Provider for .NET(Oracle.DataAccess.ClientおよびOracle.DataAccess.Types)を使用して、データ・アクセスを提供します。ストアド・プロシージャまたはファンクションを、EXEではなくDLLとしてアセンブリに組み込みます。通常、この作業にはクラス・ライブラリ・プロジェクトを使用します。データ・アクセスを使用する.NETプロシージャまたはファンクションを設計および開発する際には、Oracle Data Provider for .NETの制限事項、特に接続およびトランザクション・セマンティクスに関する制限に注意してください。


参照:

『Oracle Data Provider for .NET開発者ガイド』

ステップ2: Oracle Deployment Wizard for .NETの実行

Microsoft Visual Studio .NETからOracle Deployment Wizard for .NETを実行します。Oracle Deployment Wizard for .NETは、Oracle Developer Tools for Visual Studio .NETの一部としてインストールされます。このウィザードでは、SYSDBA資格証明、デプロイするアセンブリの名前およびデプロイ先データベースを指定する必要があります。

ステップ3: デプロイするプロシージャまたはファンクションとセキュリティ・レベルの選択

デプロイするアセンブリのメソッド・リストがOracle Deployment Wizard for .NETに表示された時点で、デプロイするプロシージャまたはファンクションを選択します。

また、セキュリティ・レベルも選択します。

Oracle Database Extensions for .NETにより、指定のセキュリティ・レベルで.NETストアド・プロシージャまたはファンクションが実行されます。セキュリティ・レベルは、.NETストアド・プロシージャまたはファンクションに付与されたコード・アクセス許可を示します。デフォルトでは、.NETストアド・プロシージャまたはファンクションはSAFEセキュリティ・レベルで実行されます。

セキュリティ・レベルは次のとおりです。


参照:

セキュリティ・レベルの入力プロセスについては、「ステップ3: デプロイするファンクションの選択」を参照してください。

ステップ4: 適切なパラメータ型マッピングの判別

.NETストアド・プロシージャまたはファンクションのPL/SQLラッパーを作成するために、.NETデータ型とOracleデータ型の間の適切なマッピングを判別します。Oracle Deployment Wizard for .NETにはデフォルト・マッピングが用意されていますが、オーバーライドできます。

オーバーロードされる.NETストアド・プロシージャまたはファンクションの場合は、PL/SQLラッパーの個別名を指定する必要があります。

変換情報は、付録Aの表を参照してください。

ステップ5: プロシージャまたはファンクションのデプロイ

プロシージャまたはファンクションをデータベースにデプロイします。ウィザードでは次のステップが実行されます。

  1. SYSDBAとして接続します。

  2. ユーザー・アセンブリをORACLE_BASE\ORACLE_HOME\bin\CLRディレクトリまたはサブディレクトリにコピーします。

  3. Oracleライブラリ・オブジェクトを作成し、このライブラリ・オブジェクトに対するEXECUTE権限をデータベース・ユーザーに付与します。

    CREATE OR REPLACE LIBRARY CLRLIBRARY1_DLL AS '$ORACLE_HOME\
        bin\clr\CLRLibrary1_dll;
    GRANT EXECUTE ON CLRLIBRARY1_DLL TO SCOTT;
    
    
  4. ユーザーが定義したパラメータ型マッピングに従って、プロシージャまたはファンクションごとにユーザーのデータベース・スキーマにPL/SQLラッパーを作成します。

ステップ6: プロシージャまたはファンクションのテスト

PL/SQLラッパーをコールして、.NETストアド・プロシージャまたはファンクションをテストします。

PL/SQLラッパーは、Oracle Developer Tools for Visual Studio .NETまたはSQL*Plusなどのツールを使用して容易に検索して実行できます。

ステップ7: プロシージャまたはファンクションのデバッグ

.NETストアド・プロシージャまたはファンクションがコールされると、Oracleデータベース・リスナーは要求をマルチスレッドCLR外部プロシージャ・エージェントextproc.exeにリダイレクトします。各.NETストアド・プロシージャまたはファンクションは、extproc.exeプロセスのコンテキスト内で実行されます。

  1. .NETストアド・プロシージャまたはファンクションを表す.NETアセンブリのデバッグ・バージョンとそのpdbファイル、依存DLLおよびそれぞれのpdbファイルが、ライブラリの作成時に指定したパスに基づいてORACLE_BASE\ORACLE_HOME\bin\clrディレクトリまたはサブディレクトリの1つにコピーされることを確認してください。

  2. デバッガをextproc.exeプロセスに連結します。デバッガには.NETコードのデバッグ機能が必要であることに注意してください。デバッグにVisual Studio .NETを使用する場合は、「プロセスにアタッチ」ダイアログ・ボックスで「ネイティブ」オプションと「共通言語ランタイム」オプションを選択します。すでに同じextproc.exeプロセスのコンテキスト内で実行済の.NETストアド・プロシージャがある場合は、「ネイティブ」オプションの選択を解除できます。

  3. デバッガの連結後に、.NETストアド・プロシージャまたはファンクションのソース・コードを開き、必要なブレークポイントを必要な位置に設定します。

  4. .NETストアド・プロシージャをデバッグします。


注意:

アプリケーションの問題のトラブルシューティングには、Oracle Data Provider for .NETのトレーシング・メカニズムを使用できます。 『Oracle Data Provider for .NET開発者ガイド』のデバッグ・トレースに関する項を参照してください。