1 Oracle Database Extensions for .NETの概要
これらの項では、Oracle Database for Microsoft Windowsで.NETストアド・プロシージャまたはファンクションを作成して実行できるようにするOracle Database Extensions for .NETの概要について説明します。
1.1 Oracle Database Extensions for .NETの概要
Oracle Database Extensions for .NETには、次の機能が用意されています。
-
Oracleデータベース用共通言語ランタイム(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 Windowオペレーティング・システム上のOracle Databaseで.NETストアド・プロシージャまたはファンクションを実行できます。
アプリケーション開発者は、C#やVB.NETなど、任意の.NET準拠言語を使用してストアド・プロシージャおよびファンクションを記述し、これらの.NETストアド・プロシージャを他のPL/SQLまたはJavaストアド・プロシージャと同様にデータベースで使用できます。.NETストアド・プロシージャは、PL/SQLパッケージ、プロシージャ、ファンクションおよびSQL文からのトリガー、またはPL/SQLプロシージャやファンクションをコールできる場所ならどこからでもコールされます。
アプリケーション開発者は、通常はMicrosoft Visual Studioを使用して.NETプロシージャまたはファンクションを.NETアセンブリに組み込みます。Oracle Data Provider for .NETは、データ・アクセス用の.NETストアド・プロシージャおよびファンクションで使用されます。.NETプロシージャおよびファンクションを.NETアセンブリに組み込んだ後、開発者はOracle Developer Tools for Visual StudioのコンポーネントであるOracle Deployment Wizard for .NETを使用して、Oracleデータベースにデプロイします。
.NETストアド・プロシージャまたはファンクションは、PL/SQLラッパーが生成されているため、コール元にはPL/SQLストアド・プロシージャまたはファンクションとして表示されます。ユーザーは、このPL/SQLラッパーを介して.NETストアド・プロシージャまたはファンクションをコールします。Oracleデータ型と.NETデータ型の間に可能なマッピングはOracle Deployment Wizard for .NETにより決定されますが、ユーザーがオーバーライドできます。このマッピングは、PL/SQLラッパーによりシームレスに処理されます。
1.2 Oracle Database Extensions for .NETのアーキテクチャ
このアーキテクチャ・ダイアグラムは、クライアント・アプリケーションと2つのプロセス領域(Oracleプロセス領域および外部プロセス領域)を示しています。
Oracleプロセス領域にはOracleデータベース・インスタンスが含まれており、PL/SQLラッパーを管理します。
外部プロセス領域にはOracle CLRホストが含まれており、そこで.NETストアド・プロシージャまたはファンクションが実行されます。
1.2.1 Oracle CLRホスト
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をデータベースと同じコンピュータにインストールしておく必要があります。
1.2.2 外部プロセス
.NETストアド・プロシージャまたはファンクションは、Oracleデータベースの外部プロセスで管理されます。この外部プロセスは、extproc
という異機種間サービス・エージェント、外部プロシージャ・エージェントまたは外部プロセスです。このマニュアルでは、extproc
プロセスまたはextproc
エージェントという用語を使用します。
extproc
プロセスは、次のアーキテクチャをサポートします。
1.2.2.1 専用エージェント・アーキテクチャ
専用(シングルスレッド)エージェント・アーキテクチャでは、extproc
プロセスはユーザー・セッションごとに起動されます。ユーザー・セッションの終了時にプロセスが終了します。このアーキテクチャでは、ユーザー・セッションごとに新規のextproc
プロセスを起動して停止する必要があるため、必要以上に大量のシステム・リソースを消費する可能性があります。したがって、専用エージェント・アーキテクチャは、システム・リソースとランタイム効率の点でパフォーマンスが十分であるとは言えません。
1.2.2.2 マルチスレッド・エージェント・アーキテクチャ
マルチスレッドextproc
プロセスでは、共有スレッドのプールが使用されます。ユーザー・セッションから要求されたタスクはキューに置かれ、最初に使用可能なスレッドにより取り出されます。
マルチスレッド・エージェント・アーキテクチャでは、専用アーキテクチャよりも効率的にシステム・リソースを使用できます。
マルチスレッドextproc
プロセスは、システム識別子(SID)ごとに個別に起動する必要があります。システムで実行中の各TNSリスナーは、一連のSIDについて着信接続要求をリスニングします。着信Oracle Net接続文字列内のSIDがリスナーのリスニング対象であれば、そのリスナーにより接続が処理されます。そのSIDに対してマルチスレッド・プロセスが起動されている場合、リスナーはそのプロセスに要求を渡します。
1.2.2.2.1 Real Application Clusters(RAC)および外部プロセス
Oracleマルチスレッドextproc
プロセスは、Oracleリスナーと緊密に連結されています。したがって、Real Application Clusters(RAC)環境の各ノードでは、そのノード上のリスナーにOracleマルチスレッドextproc
プロセスが関連付けられています。
1.3 Oracle Data Provider for .NET。
Oracle Data Provider for .NETは、任意のクライアント・アプリケーションからOracleデータベースへのデータ・アクセスを提供します。Oracle Data Provider for .NETは、Oracle Technology Network(OTN)から無償でダウンロードできます。
関連項目:
ODP.NETクラスの詳細は、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)を参照してください。
1.4 Oracle Developer Tools for Visual Studio
Oracle Developer Tools for Visual Studioは、Visual Studio開発環境と緊密に統合されているアプリケーション・ツール・セットです。Oracle Developer Toolsを使用すると、開発者は表の作成、ストアド・プロシージャの編集およびOracle Databaseでのデータ表示など、多様なアプリケーション開発タスクを実行できます。Oracle Developer Tools for Visual Studioは、Oracle Technology Network(OTN)から無償でダウンロードできます。
関連項目:
Oracle Developer Tools for Visual Studioヘルプ
1.5 Oracle Deployment Wizard for .NET
Oracle Deployment Wizard for .NETは、Microsoft Visual Studioと統合されたグラフィカル・ツールで、任意の.NETプロシージャまたはファンクションを簡単にOracleデータベースにデプロイできます。これは、Oracle Developer Tools for Visual Studioの一部としてインストールされます。
関連項目:
詳細は、Oracle Developer Tools for Visual Studioのインストールにより使用できるOracle Developer Tools for Visual Studio動的ヘルプを参照してください。