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

前へ
前へ
 
次へ
次へ
 

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 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ラッパーによりシームレスに処理されます。

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

clrnt001.gifの説明は次にあります。
画像の説明

このアーキテクチャ・ダイアグラムは、クライアント・アプリケーションと2つのOracle領域(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が使用されますが、これはデータベース・コンフィギュレーション・アシスタント(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

TitlePage.gifの説明は次にあります。
画像の説明

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 Data Provider for .NETは、任意のクライアント・アプリケーションからOracleデータベースへのデータ・アクセスを提供します。Oracle Data Provider for .NETは、Oracle Technology Network Japan(OTN-J)から無償でダウンロードできます。


参照:

ODP.NETクラスの詳細は、『Oracle Data Provider for .NET開発者ガイド』を参照してください。

Oracle Developer Tools for Visual Studio .NET

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