ヘッダーをスキップ
Oracle Database Extensions for .NET開発者ガイド
11gリリース1(11.1.0.6.20)
E06105-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 インストールおよび構成

このトピックでは、Oracle Database Extensions for .NETのインストール、システム要件およびファイルの場所を説明します。

このトピックの内容は次のとおりです。

システム要件

Oracle Database Extensions for .NETには次のシステム要件が必要です。

.NETストアド・プロシージャおよび機能の要件

.NETストアド・プロシージャまたはファンクションは次の要件を満たす必要があります。

インストール後のファイルの場所

OraClr11.dllORACLE_BASE¥ORACLE_HOME¥binディレクトリにインストールします。READMEファイルreadme.htmlORACLE_BASE¥ORACLE_HOME¥ODE.NET¥DOCディレクトリにインストールします。

開発者がデプロイした.NETアセンブリは、 Oracle Deployment Wizard for .NETによりORACLE_BASE¥ORACLE_HOME¥bin¥CLRディレクトリ(またはサブディレクトリ)にコピーされます。

インストールおよび最初の使用

Oracle Database Extensions for .NETは、Oracle Universal Installerを使用してOracle Databaseのカスタム・インストールの一部としてインストールされます。Oracle Universal Installerの「ようこそ」画面から「拡張インストール」を選択し、次に「インストール・タイプの選択」画面から「カスタム」を選択する必要があります。「使用可能な製品コンポーネント」リストが表示される場合、Enterprise Editionのオプションに移動し、Oracle Database Extensions for .NETを選択します。

Oracle Database Extensions for .NETは、Database Configuration Assistantを使用して構成します。

Windowsサービスを使用したExtprocエージェントの構成

Oracle Database Extensions for .NETインストールの一部として、Windowsサービスがインストールされます。このサービスはOraClrAgntと呼ばれ、OracleORACLE_HOMEClrAgentとしてサービス・コントロール・パネルを介してアクセスできます。ORACLE_HOMEはOracleホームを表します。

このサービスは、extprocエージェントの起動、構成および停止に使用します。

このサービスを使用して構成されるパラメータは、表2-1、OraClrAgntサービス・パラメータにリストされます。

これらのパラメータ値は、コントロール・パネル・サービスのプロパティ・ウィンドウにある開始パラメータの一部として指定できます。この場合、パラメータ値は保存されず後でサービスを再起動する場合、再指定する必要があります。

パラメータ値を永続的にするには、このサービスのWindowsレジストリのエントリを変更し、OraClrAgnt.exeにコマンドライン・パラメータとしてパラメータ値を使用できます。これを実行するには、次の場所にあるWindowsレジストリ・キー、ImagePathを設定します。

HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥ OracleOracleHomeClrAgent

値は次のようになります。

ORACLE_BASE¥ORACLE_HOME¥bin¥OraClrAgnt.exe agent_sid=CLRExtProc max_dispatchers=2 tcp_dispatchers=0 max_task_threads=6 max_sessions=25 ENVS="EXTPROC_DLLS=ONLY:ORACLE_BASE¥ORACLE_HOME¥bin¥oraclr11.dll"

サービスを開始または停止できない場合、エラー・メッセージがサービス名のイベントのソース名として、イベント・ビューアのアプリケーション・ログに記録されます。

OraClrAgntサービス・パラメータ

表2-1に、このサービスを使用して構成されるパラメータをリストします。

表2-1 OaClrAgntサービス・パラメータ

パラメータ 説明

agent_sid

これはextprocプロセスのSIDを表します。デフォルト値はCLRExtProcです。これは必須パラメータです。このパラメータ値を変更する場合、tnsnames.oraおよびlistener.oraファイルで適切な変更を行う必要があります。

ENVS

extprocをロードできるDLLを制限するEXTPROC_DLLS環境変数を指定する変数。

これはlistener.oraを使用して、外部プロシージャに環境変数を設定する操作と同様です。

詳細は、Oracle Net Services管理者ガイドの表13-5 listener.oraの外部プロシージャ設定を参照してください。

listener_address

リスナーがリスニングするアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_dispatchers

extprocプロセスの最大ディスパッチャ数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_sessions

extprocプロセスの最大セッション数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_task_threads

extprocプロセスの最大タスク・スレッド数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

shutdown_address

エージェントがagtctlから停止メッセージをリスニングする必要があるアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

tcp_dispatchers

extprocプロセスのTCPディスパッチャ数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。



注意:

デフォルトでは、このサービスはローカル・システム・アカウントで作成され、実行されます。だたし、サービス・コントロール・パネルからログインしているユーザー・アカウントで実行するよう変更できます。


関連項目:

構成パラメータおよびデフォルト値の詳細は、Oracle Database Heterogeneous Connectivity管理者ガイドの表5-2を参照してください。

パフォーマンスのためのOraClrAgntのチューニング

システムの予想負荷と一致するよう、OraClrAgntを調節する必要があります。

起動中のextproc.exeプロセスが多すぎる場合、設定した構成値が低すぎることを示しています。

次の値から開始して、システムのパフォーマンスをテストしながら増やします。

OraClrAgntパラメータ 初期値
max_sessions 25
max_task_threads 6
max_dispatchers 2

Oracle Database 10.2からOracle Database 11.1への.NETストアド・プロシージャの移行

次の方法に従って、.NETストアド・プロシージャをOracle Databaseリリース10.2からリリース11.1に移行できます。

  1. Oracle Database 10gリリース 2(10.2)データベースの.NETストアド・プロシージャが使用するライブラリを選択します。次に例を示します。

    SELECT library_name, file_spec FROM ALL_LIBRARIES WHERE OWNER='SYS' and FILE_SPEC LIKE '$ORACLE_HOME¥bin¥clr¥%';

    library_nameは、通常dll_name_DLLという形式になります。たとえば、Project1.dlllibrary_namePROJECT1_DLLになります。

  2. 次のSQL文が記載されたSQLファイルを手動で作成します(たとえば、DotNetSP_Grant.sqlなど)。

    CREATE LIBRARY "SYS"."library_name" AS 'file_spec'
    GRANT EXECUTE ON "SYS"."library_name" TO "schema_name"
    GRANT EXECUTE ON "SYS"."DBMS_CLR" TO "schema_name"
    GRANT EXECUTE ON "SYS"."DBMS_CLRTYPE" TO "schema_name"
    GRANT EXECUTE ON "SYS"."DBMS_CLRPARAMTABLE" TO "schema_name"
    
  3. Oracle Database 10gリリース2(10.2)のOracle Data Pump Exportユーティリティを実行します。

    Expdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION
    
  4. Oracle Database 10gリリース2(10.2)のORACLE_BASE¥ORACLE_HOME¥bin¥clrフォルダおよびそのサブフォルダからOracle Database 11gリリース1(11.1)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。

  5. Oracle Database 11gリリース1(11.1)データベースに対して、SYSDBA権限でDotNetSP_Grant.sqlを実行します。

  6. Oracle Database 11gリリース1(11.1)データベースのOracle Data Pump Importユーティリティを実行します。

    impdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp
    

Oracle Database Extensions for .NETレジストリ・オプション

次の場所にあるWindowsレジストリ・エントリを使用して、Oracle Database Extensions for .NETに機能を追加できます。

HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_ORACLE_HOME¥ODE

表2-2に、Oracle Database Extensions for .NETに機能を追加するレジストリ・キーおよびキーを説明するセクションをリストします。

表2-2レジストリ・オプション

レジストリ・キー セクション

.NETFramework

.NETランタイム・バージョンの選択


ProviderNull

NULL可能ODP.NET接続型の後方互換性


RecreateAppDomain

.NETアセンブリの簡易再デプロイの自動アンロード


TraceFileName

TraceFileName


TraceOption

TraceOption


TraceLevel

TraceLevel



.NETアセンブリの簡易再デプロイのアンロード

リリース11.1.0.6.20では、.NETストアド・プロシージャの実行が完了したときに.NETアセンブリをアンロードできます。これにより、開発中にコードを繰り返しテストするのが簡単になります。このレジストリ・キーが無効の場合、再デプロイするたびにexproc.exeプロセスを停止し、起動する必要があります。

この機能は、パフォーマンスに悪影響があるので、パフォーマンスのテストまたは生成時に使用することはできません。

アセンブリのロードの動作を定義するには、レジストリ・キーにあるタイプREG_SZのレジストリ値RecreateAppDomainを設定します。

HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_ORACLE_HOME¥ODE

RecreateAppDomainの有効値は次のとおりです。

0 = .NETストアド・プロシージャの実行が完了すると、.NETアセンブリはロードされたままになります。

1 = .NETストアド・プロシージャの実行が完了すると、.NETアセンブリはアンロードされます。

NULL可能ODP.NET接続型の後方互換性

ODP.NET for .NET 2.0は、OracleDecimalなど非接続型に対する既存のサポートに加えて、ODP.NET接続型の静的Nullプロパティをサポートします。また、これらの型の各パブリック・プロパティ、IsNullをサポートし、各型のオブジェクトに値が割り当てられているかもチェックします。


関連項目:

NULL可能な型の詳細は、Oracle Data Provider for .NET開発者ガイドを参照してください。

これで、.NETストアド・プロシージャへODP.NET接続型のNullオブジェクトが伝播されます。この接続型のリストは次のとおりです。

  • OracleBlob

  • OracleClob

  • OracleBFile

  • OracleXmlType

.NETストアド・プロシージャの前のバージョンは、ODP.NETの接続型パラメータと考えられ、Type.NullオブジェクトではなくNULLとして渡されます。後方互換性をサポートするには、レジストリの文字列ProviderNullを使用して前の動作を維持します。

Oracle Database Extensions for .NETが.NETストアド・プロシージャのODP.NET接続型パラメータにNULL値を渡す方法を定義するには、このレジストリ・キーにあるレジストリの文字列ProviderNullを指定します。

HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_ORACLE_HOME¥ODE

ProviderNullの有効値は次のとおりです。

0 = ODP.NET接続タイプ・パラメータはType.NullオブジェクトではなくNULLとして渡されます。

1 = Oracle Database Extensions for .NETは、.NETストアド・プロシージャにType.Nullオブジェクトを渡します(NULL値の場合)。

.NETランタイム・バージョンの選択

データベース・コンピュータに複数の.NETランタイム・バージョンがインストールされる場合、Oracle Database Extensions for .NETのデフォルトは、使用できる最新の.NETランタイムになります。ただし、レジストリ値を設定すれば、特定の.NETランタイムをロードするようOracle Database Extensions for .NETを構成できます。

.NETランタイム・バージョンを指定するには、このレジストリ・キーにあるレジストリ値.NETFrameworkを設定します。

HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_ORACLE_HOME¥ODE

適切な.NETランタイム・バージョン(たとえば、v2.0.50727)にレジストリ値を設定します。

たとえば、サーバーに.NET frameworkのバージョン1.1および2.0があり、.NETストアド・プロシージャを.NET framework 1.1で構築すると、このレジストリ値はv1.1.4322に設定され、Oracle Database Extensions for .NETに.NET frameworkのバージョン1.1.4322をロードするよう指示する場合があります。

各.NETバージョンの.NETランタイム・バージョン値は次のとおりです。

1.0 : v1.0.3705

1.1 : v1.1.4322

2.0 : v2.0.50727

デバッグ・トレース

Oracle Database Extensions for .NETは、トレース・ファイルにすべてのOracle Database Extensions for .NETをロギングできるデバッグ・トレースのサポートを提供します。異なるトレースのレベルが使用可能です。

次に示すレジストリ設定は、次の場所に構成してください。

HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_ORACLE_HOME¥ODE

TraceOption

TraceOptionは、トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。単一トレース・ファイルを指定した場合は、TraceFileNameに指定されたファイル名が使用されます。複数トレース・ファイル・オプションが要求された場合は、指定されたファイル名にスレッドIDが付加され、スレッドごとにトレース・ファイルが作成されます。

TraceOptionの有効値は次のとおりです。

0 = 単一のトレース・ファイル

1 = 複数のトレース・ファイル

注意: Oracle Data Provider for .NETのトレース・メカニズムを使用して、ODP.NET特定の問題を解決します。

TraceFileName

TraceFileNameは、トレース情報のロギングに使用されるファイル名を指定します。TraceOption0に設定されている場合、名前はそのまま使用されます。ただし、TraceOption1に設定されている場合は、指定されたファイル名にスレッドIDが付加されます。

TraceFileNameの有効値は、任意の有効なパス名およびファイル名です。

TraceLevel

TraceLevelは、Oracle Database Extensions for .NETでトレースのレベルを指定します。

TraceLevelの有効値は次のとおりです。

0 = なし

1 = 入力および終了情報


関連項目:

Oracle Data Provider for .NET開発者ガイドのデバッグ・トレースに関する項

未処理の例外

.NETストアド・プロシージャは、外部プロシージャ・エージェントextproc.exeの内部で管理されます。.NETランタイム・バージョン2.0では、スレッド内でほとんどの未処理の例外はそのまま続行されます。未処理の例外によりextproc.exeは終了します。この動作は.NETランタイム・バージョン1.0および1.1とは異なります。.NETランタイム・バージョン1.0および1.1は、多数の処理不能な例外に対する防止策を提供しています。

extproc.exe構成ファイル

Oracle Database Extensions for .NETは、extproc.exe.configファイルをORACLE_BASE\ORACLE_HOME\Binディレクトリにインストールします。そのため、.NETランタイム・バージョン2.0は強制的に.NETランタイム・バージョン1.1の動作をします。.NETストアド・プロシージャ内部に作成されたガベージ・コレクタまたはスレッドが例外をスローした場合、およびこの例外が.NETストアド・プロシージャでは処理されない場合、トレーシング・メカニズムは例外を報告します。

extproc.exe.configファイルの例は次のとおりです。

<configuration>
  <runtime>
    <legacyUnhandledExceptionPolicy enabled="1"/>
  </runtime>
</configuration>

次の方法に従ってextproc.exe.configファイルを変更すれば、このファイルを変更して.NET 2.0の動作に戻すことができます。

<configuration>
  <runtime>
   <legacyUnhandledExceptionPolicy enabled="0"/>
  </runtime>
</configuration>