ヘッダーをスキップ
Oracle® Database Extensions for .NET開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B61359-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 Oracle Database Extensions for .NETの概要

この章では、Oracle Database for Microsoft Windowsで.NETストアド・プロシージャまたはファンクションを作成して実行できるようにするOracle Database Extensions for .NETの概要について説明します。

この章の内容は次のとおりです。

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 Windows Vista、Microsoft Windows 2003、Windows 2000およびWindows XP上の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ラッパーによりシームレスに処理されます。

Oracle Database Extensions for .NETのアーキテクチャ

clrnt001.gifの説明が続きます
図clrnt001.gifの説明

このアーキテクチャ・ダイアグラムは、クライアント・アプリケーションと2つのプロセス領域(Oracleプロセス領域および外部プロセス領域)を示しています。

Oracleプロセス領域にはOracleデータベース・インスタンスが含まれており、PL/SQLラッパーを管理します。

外部プロセス領域にはOracle CLRホストが含まれており、そこで.NETストアド・プロシージャまたはファンクションが実行されます。

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をデータベースと同じコンピュータにインストールしておく必要があります。

外部プロセス

.NETストアド・プロシージャまたはファンクションは、Oracleデータベースの外部プロセスで管理されます。この外部プロセスは、extprocという異機種間サービス・エージェント、外部プロシージャ・エージェントまたは外部プロセスです。このマニュアルでは、extprocプロセスまたはextprocエージェントという用語を使用します。


関連項目:

Oracle Database Heterogeneous Connectivity管理者ガイド


extprocプロセスは、次のアーキテクチャをサポートします。

専用エージェント・アーキテクチャ

専用(シングルスレッド)エージェント・アーキテクチャでは、extprocプロセスはユーザー・セッションごとに起動されます。ユーザー・セッションの終了時にプロセスが終了します。このアーキテクチャでは、ユーザー・セッションごとに新規のextprocプロセスを起動して停止する必要があるため、必要以上に大量のシステム・リソースを消費する可能性があります。したがって、専用エージェント・アーキテクチャは、システム・リソースとランタイム効率の点でパフォーマンスが十分であるとは言えません。

マルチスレッド・エージェント・アーキテクチャ

マルチスレッドextprocプロセスでは、共有スレッドのプールが使用されます。ユーザー・セッションから要求されたタスクはキューに置かれ、最初に使用可能なスレッドにより取り出されます。

マルチスレッド・エージェント・アーキテクチャでは、専用アーキテクチャよりも効率的にシステム・リソースを使用できます。

マルチスレッドextprocプロセスは、システム識別子(SID)ごとに個別に起動する必要があります。システムで実行中の各TNSリスナーは、一連のSIDについて着信接続要求をリスニングします。着信Oracle Net接続文字列内のSIDがリスナーのリスニング対象であれば、そのリスナーにより接続が処理されます。そのSIDに対してマルチスレッド・プロセスが起動されている場合、リスナーはそのプロセスに要求を渡します。


関連項目:

  • Oracle Databaseアプリケーション開発者ガイド - 基礎編

  • 『Oracle Database管理者ガイド』


Real Application Clusters(RAC)および外部プロセス

Oracleマルチスレッドextprocプロセスは、Oracleリスナーと緊密に連結されています。したがって、Real Application Clusters(RAC)環境の各ノードでは、そのノード上のリスナーにOracleマルチスレッドextprocプロセスが関連付けられています。

複数データベース・インスタンスおよび外部プロセス

1つのリスナーが複数のデータベース・インスタンス間で共有されている場合は、1つのOracleホームに関連付けられている複数のデータベース・インスタンスで1つのOracleマルチスレッドextprocプロセスが使用されます。

リスナーおよびtnsnamesファイル

Oracle Database Extensions for .NET用に構成されたlistener.oraおよびtnsnames.oraファイルの代表例を次に示します。デフォルトでは、Oracle Database Extensions for .NETではSIDとしてCLRExtProcが使用されますが、これはDatabase Configuration Assistant(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)
      (ENVS="EXTPROC_DLLS=ONLY:C:\oracle\database_1\bin\oraclr11.dll")
    )
  )
 
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 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開発者ガイドを参照してください

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ヘルプ

Oracle Deployment Wizard for .NET

TitlePage.gifの説明が続きます
TitlePage.gifの説明

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動的ヘルプを参照してください。