この章では、Oracle Database for Microsoft Windowsで.NETストアド・プロシージャまたはファンクションを作成して実行できるようにするOracle Database Extensions for .NETの概要について説明します。
この章は次のトピックで構成されています。
Oracle Database Extensions for .NETには、次の機能が用意されています。
Oracle Database用Common Language Runtime(CLR)ホスト
Oracle Data Provider for .NETクラスを介したデータ・アクセス
Oracle Deployment Wizard for Visual Studio .NET
Oracle Databaseは、同じコンピュータ上のOracleデータベース・プロセスの外にある外部プロセス内で、Microsoft Common Language Runtime(CLR)を管理します。Oracle DatabaseとMicrosoft Common Language Runtime(CLR)との統合により、アプリケーションではMicrosoft Windows 2003、Windows 2000およびWindows XP上のOracle Databaseで.NETストアド・プロシージャまたはファンクションを実行できます。
アプリケーション開発者は、C#やVB.NETなど、任意の.NET準拠言語を使用してストアド・プロシージャおよびファンクションを記述し、これらの.NETストアド・プロシージャを他のPL/SQLまたはJavaストアド・プロシージャと同様にデータベースで使用できます。.NETストアド・プロシージャは、PL/SQLパッケージ、プロシージャ、ファンクションおよびトリガーから使用できます。
アプリケーション開発者は、通常はMicrosoft Visual Studio .NETを使用して.NETプロシージャまたはファンクションを.NETアセンブリに組み込みます。Oracle Data Provider for .NETは、データ・アクセス用の.NETストアド・プロシージャおよびファンクションで使用されます。.NETプロシージャおよびファンクションを.NETアセンブリに組み込んだ後、開発者はOracle Developer Tools for Visual Studio .NETのコンポーネントであるOracle Deployment Wizard for .NETを使用して、Oracleデータベースにデプロイします。
.NETストアド・プロシージャまたはファンクションは、PL/SQLラッパーが生成されているため、コール元にはPL/SQLストアド・プロシージャまたはファンクションとして表示されます。ユーザーは、このPL/SQLラッパーを介して.NETストアド・プロシージャまたはファンクションをコールします。Oracleデータ型と.NETデータ型の間に可能なマッピングはOracle Deployment Wizard for .NETにより決定されますが、ユーザーがオーバーライドできます。このマッピングは、PL/SQLラッパーによりシームレスに処理されます。
このアーキテクチャ・ダイアグラムは、クライアント・アプリケーションと2つのOracle領域(Oracleプロセス領域および外部プロセス領域)を示しています。
Oracleプロセス領域にはOracleデータベース・インスタンスが含まれており、PL/SQLラッパーを管理します。
外部プロセス領域にはOracle CLRホストが含まれており、そこで.NETストアド・プロシージャまたはファンクションが実行されます。
Oracle CLRホストは、Oracle Database Extensions for .NETインストールの一部としてインストールされ、extproc
プロセスで実行されます。extproc
プロセスによりOracle CLRホストがロードされ、Oracle CLRホストによりMicrosoft Common Language Runtime(CLR)のインスタンスがロードされ、ラップされているPL/SQLプロシージャ用のインタフェースが提供されます。これらの仕組みは、ユーザーには表示されません。 ユーザーにとっては、単にアプリケーションが他のPL/SQLストアド・プロシージャまたはファンクションをコールしているようにみえます。
注意: Microsoft .NET Frameworkをデータベースと同じコンピュータにインストールしておく必要があります。 |
.NETストアド・プロシージャまたはファンクションは、Oracleデータベースの外部プロセスで管理されます。この外部プロセスは、extproc
という異機種間サービス・エージェント、外部プロシージャ・エージェントまたは外部プロセスです。このマニュアルでは、extproc
プロセスまたはextproc
エージェントという用語を使用します。
extproc
プロセスは、次のアーキテクチャをサポートします。
専用(シングルスレッド)エージェント・アーキテクチャでは、extproc
プロセスはユーザー・セッションごとに起動されます。ユーザー・セッションの終了時にプロセスが終了します。このアーキテクチャでは、ユーザー・セッションごとに新規のextproc
プロセスを起動して停止する必要があるため、必要以上に大量のシステム・リソースを消費する可能性があります。したがって、専用エージェント・アーキテクチャは、システム・リソースとランタイム効率の点でパフォーマンスが十分であるとは言えません。
マルチスレッドextproc
プロセスでは、共有スレッドのプールが使用されます。ユーザー・セッションから要求されたタスクはキューに置かれ、最初に使用可能なスレッドにより取り出されます。
マルチスレッド・エージェント・アーキテクチャでは、専用アーキテクチャよりも効率的にシステム・リソースを使用できます。
マルチスレッドextproc
プロセスは、システム識別子(SID)ごとに個別に起動する必要があります。システムで実行中の各TNSリスナーは、一連のSIDについて着信接続要求をリスニングします。着信Oracle Net接続文字列内のSIDがリスナーのリスニング対象であれば、そのリスナーにより接続が処理されます。そのSIDに対してマルチスレッド・プロセスが起動されている場合、リスナーはそのプロセスに要求を渡します。
この項では、Oracle Database Extensions for .NET用に構成されたlistener.ora
およびtnsnames.ora
ファイルの代表例を示します。デフォルトでは、Oracle Database Extensions for .NETではSIDとしてCLRExtProc
が使用されますが、これはデータベース・コンフィギュレーション・アシスタント(DBCA)を使用して変更できます。
listener.oraファイル
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oracle\database_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oracle\database_1) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) )
tnsnames.oraファイル
ORACLE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = user.us.oracle.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle.us.oracle.com) ) ) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) MSOLNIT-PC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = msolnit-pc)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
Oracle Deployment Wizard for .NETは、任意の.NETプロシージャまたはファンクションをOracleデータベースに容易にデプロイできるようにする、Microsoft Visual Studio .NETと統合されたグラフィカル・ツールです。このツールは、Oracle Developer Tools for Visual Studio .NETの一部としてインストールされます。
参照: 詳細は、Oracle Developer Tools for Visual Studio .NETをインストールすると使用可能になる、Oracle Developer Tools for Visual Studio .NETのダイナミック・ヘルプを参照してください。 |
Oracle Data Provider for .NETは、任意のクライアント・アプリケーションからOracleデータベースへのデータ・アクセスを提供します。Oracle Data Provider for .NETは、Oracle Technology Network Japan(OTN-J)から無償でダウンロードできます。
Oracle Developer Tools for Visual Studio .NETは、Visual Studio .NET開発環境と緊密に統合されているアプリケーション・ツール・セットです。Oracle Developer Toolsを使用すると、開発者は表の作成、ストアド・プロシージャの編集およびOracle Databaseでのデータ表示など、多様なアプリケーション開発タスクを実行できます。Oracle Developer Tools for Visual Studio .NETは、Oracle Technology Network Japan(OTN-J)から無償でダウンロードできます。
参照: Oracle Developer Tools for Visual Studio .NETヘルプ |