この章では、.NETストアド・プロシージャまたはファンクションを開発してOracleデータベースにデプロイするために必要な手順について説明します。
この章の内容は次のとおりです。
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開発者ガイド』(Microsoft Windows用) |
Microsoft Visual StudioからOracle Deployment Wizard for .NETを実行します。Oracle Deployment Wizard for .NETは、Oracle Developer Tools for Visual Studioの一部としてインストールされます。このウィザードでは、SYSDBA
資格証明、デプロイするアセンブリの名前およびデプロイ先データベースを指定する必要があります。
アセンブリのメソッド・リストがOracle Deployment Wizard for .NETに表示された時点で、デプロイするプロシージャまたはファンクションを選択します。
また、セキュリティ・レベルも選択します。
Oracle Database Extensions for .NETにより、指定のセキュリティ・レベルで.NETストアド・プロシージャまたはファンクションが実行されます。セキュリティ・レベルは、.NETストアド・プロシージャまたはファンクションに付与されたコード・アクセス許可を示します。デフォルトでは、.NETストアド・プロシージャまたはファンクションはSAFEセキュリティ・レベルで実行されます。
セキュリティ・レベルは次のとおりです。
安全
「安全」レベルの場合、.NETストアド・プロシージャまたはファンクションからデータベース・リソースへのアクセスのみが許可されます。ローカル・ファイルやネットワークなどの外部リソースへのアクセスは許可されません。
外部
「外部」レベルの場合、.NETストアド・プロシージャまたはファンクションは、ローカル・ファイルの読取りまたは書込みと、ソケットやインターネット・ノードなどのネットワーク・リソースへのアクセスが許可されます。
危険
「危険」レベルの場合、.NETストアド・プロシージャまたはファンクションは、管理されていないコードの実行を含め、制限なしの実行が許可されます。このレベルは、他のすべてのセキュリティ・レベルのスーパーセットです。
.NETストアド・プロシージャまたはファンクションのPL/SQLラッパーを作成するために、.NETデータ型とOracleデータ型の間の適切なマッピングを判別します。Oracle Deployment Wizard for .NETにはデフォルト・マッピングが用意されていますが、オーバーライドできます。
オーバーロードされる.NETストアド・プロシージャまたはファンクションの場合は、PL/SQLラッパーの個別名を指定する必要があります。
変換情報は、付録Aの表を参照してください。
プロシージャまたはファンクションをデータベースにデプロイします。ウィザードを使用して、次の手順を実行します。
SYSDBA
として接続します。
ユーザー・アセンブリをORACLE_BASE\\ORACLE_HOME
\bin\CLR
ディレクトリまたはサブディレクトリにコピーします。
Oracleライブラリ・オブジェクトを作成し、このライブラリ・オブジェクトに対するEXECUTE権限をデータベース・ユーザーに付与します。
CREATE OR REPLACE LIBRARY CLRLIBRARY1_DLL AS '$ORACLE_HOME\ bin\clr\CLRLibrary1_dll; GRANT EXECUTE ON CLRLIBRARY1_DLL TO SCOTT;
ユーザーが定義したパラメータ型マッピングに従って、プロシージャまたはファンクションごとにユーザーのデータベース・スキーマにPL/SQLラッパーを作成します。
PL/SQLラッパーをコールして、.NETストアド・プロシージャまたはファンクションをテストします。
PL/SQLラッパーは、Oracle Developer Tools for Visual StudioまたはSQL*Plusなどのツールを使用して容易に検索して実行できます。
.NETストアド・プロシージャまたはファンクションがコールされると、Oracleデータベース・リスナーは要求をマルチスレッドCLR外部プロシージャ・エージェントextproc.exe
にリダイレクトします。各.NETストアド・プロシージャまたはファンクションは、extproc.exe
プロセスのコンテキスト内で実行されます。
.NETストアド・プロシージャまたはファンクションを表す.NETアセンブリのデバッグ・バージョンとそのpdb
ファイル、依存DLLおよびそれぞれのpdb
ファイルが、ライブラリの作成時に指定したパスに基づいてORACLE_BASE\\ORACLE_HOME
\bin\clr
ディレクトリまたはサブディレクトリの1つにコピーされることを確認してください。
デバッガをextproc.exe
プロセスに連結します。デバッガには.NETコードのデバッグ機能が必要であることに注意してください。デバッグにVisual Studioを使用する場合は、プロセスにアタッチ・ダイアログ・ボックスでネイティブ・オプションと共通言語ランタイム・オプションを選択します。すでに同じextproc.exe
プロセスのコンテキスト内で実行済の.NETストアド・プロシージャがある場合は、ネイティブ・オプションの選択を解除できます。
デバッガの連結後に、.NETストアド・プロシージャまたはファンクションのソース・コードを開き、必要なブレークポイントを必要な位置に設定します。
.NETストアド・プロシージャをデバッグします。
注意: アプリケーションの問題のトラブルシューティングには、Oracle Data Provider for .NETのトレーシング・メカニズムを使用できます。『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のデバッグ・トレースに関する説明を参照してください。 |