このトピックでは、Oracle Database Extensions for .NETのインストール、システム要件およびファイルの場所を説明します。
このトピックの内容は次のとおりです。
Oracle Database Extensions for .NETには次のシステム要件が必要です。
Windowsオペレーティング・システム
32ビット: Windows Vista(Business、EnterpriseおよびUltimate Editions)、Windows Server 2003、Windows Server 2003 R2、Windows 2000、またはWindows XP Professional Edition。
64 bit: Windows Vista x64(Business、EnterpriseおよびUltimate Editions)、Windows Server 2003 x64、Windows Server 2003 R2 x64、またはWindows XP x64。
Microsoft .NET Framework 1.1以降。
.NET Framework 2.0固有の機能には、ODP.NET 10.2.0.2.20以降が必要です
64ビットWindowsプラットフォームでは、64ビット.NET Frameworkのバージョン2.0以降のみがサポートされています。このため、64ビットODEでは、64ビット.NET Framework 2.0以降のみがサポートされています。64ビットODEの最初のバージョンは、Windows x64およびItaniumでは10.2.0.3.02です。
Oracle Database 11gリリース1(11.1)以降。
Oracleクライアント・リリース10g リリース2(10.2)以上(.NETストアド・プロシージャの開発およびデプロイを行う場合)。
Oracle Developer Tools for Visual Studio .NET(.NETストアド・プロシージャの開発およびデプロイを行う場合)。
Oracle Developer Tools for Visual Studio .NETは、Oracleデータベースではリリースされません。OTNのOracle .NET Developer Centerから取得できます。
.NETストアド・プロシージャまたはファンクションは次の要件を満たす必要があります。
public staticメソッドが宣言されていること。
コンストラクタまたはデストラクタでないこと。
Oracleネイティブ・データベース・タイプと互換性のあるパラメータ・タイプの使用。
OraClr11.dll
をORACLE_BASE¥ORACLE_HOME
¥bin
ディレクトリにインストールします。READMEファイルreadme.html
をORACLE_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を使用して構成します。
Oracle Database Extensions for .NETインストールの一部として、Windowsサービスがインストールされます。このサービスはOraClrAgnt
と呼ばれ、Oracle
ORACLE_HOME
ClrAgent
としてサービス・コントロール・パネルを介してアクセスできます。ORACLE_HOME
はOracleホームを表します。
このサービスは、extproc
エージェントの起動、構成および停止に使用します。
このサービスを使用して構成されるパラメータは、表2-1、OraClrAgntサービス・パラメータにリストされます。
これらのパラメータ値は、コントロール・パネル・サービスのプロパティ・ウィンドウにある開始パラメータの一部として指定できます。この場合、パラメータ値は保存されず後でサービスを再起動する場合、再指定する必要があります。
パラメータ値を永続的にするには、このサービスのWindowsレジストリのエントリを変更し、OraClrAgnt.exe
にコマンドライン・パラメータとしてパラメータ値を使用できます。これを実行するには、次の場所にあるWindowsレジストリ・キー、ImagePath
を設定します。
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥ Oracle
OracleHome
ClrAgent
値は次のようになります。
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"
サービスを開始または停止できない場合、エラー・メッセージがサービス名のイベントのソース名として、イベント・ビューアのアプリケーション・ログに記録されます。
表2-1に、このサービスを使用して構成されるパラメータをリストします。
表2-1 OaClrAgntサービス・パラメータ
パラメータ | 説明 |
---|---|
|
これは |
|
これは 詳細は、Oracle Net Services管理者ガイドの表13-5 listener.oraの外部プロシージャ設定を参照してください。 |
|
リスナーがリスニングするアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。 |
|
|
|
|
|
|
|
エージェントが |
|
|
注意: デフォルトでは、このサービスはローカル・システム・アカウントで作成され、実行されます。だたし、サービス・コントロール・パネルからログインしているユーザー・アカウントで実行するよう変更できます。 |
関連項目: 構成パラメータおよびデフォルト値の詳細は、Oracle Database Heterogeneous Connectivity管理者ガイドの表5-2を参照してください。 |
次の方法に従って、.NETストアド・プロシージャをOracle Databaseリリース10.2からリリース11.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.dll
のlibrary_name
はPROJECT1_DLL
になります。
次の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"
Oracle Database 10gリリース2(10.2)のOracle Data Pump Exportユーティリティを実行します。
Expdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION
Oracle Database 10gリリース2(10.2)のORACLE_BASE¥ORACLE_HOME
¥bin¥clr
フォルダおよびそのサブフォルダからOracle Database 11gリリース1(11.1)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。
Oracle Database 11gリリース1(11.1)データベースに対して、SYSDBA
権限でDotNetSP_Grant.sql
を実行します。
Oracle Database 11gリリース1(11.1)データベースのOracle Data Pump Importユーティリティを実行します。
impdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp
次の場所にあるWindowsレジストリ・エントリを使用して、Oracle Database Extensions for .NETに機能を追加できます。
HKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥KEY_
ORACLE_HOME
¥ODE
表2-2に、Oracle Database Extensions for .NETに機能を追加するレジストリ・キーおよびキーを説明するセクションをリストします。
表2-2レジストリ・オプション
レジストリ・キー | セクション |
---|---|
. |
|
|
|
|
|
|
|
|
|
|
|
リリース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アセンブリはアンロードされます。
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ランタイム・バージョンがインストールされる場合、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
は、トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。単一トレース・ファイルを指定した場合は、TraceFileName
に指定されたファイル名が使用されます。複数トレース・ファイル・オプションが要求された場合は、指定されたファイル名にスレッドIDが付加され、スレッドごとにトレース・ファイルが作成されます。
TraceOption
の有効値は次のとおりです。
0
= 単一のトレース・ファイル
1
= 複数のトレース・ファイル
注意: Oracle Data Provider for .NETのトレース・メカニズムを使用して、ODP.NET特定の問題を解決します。
TraceFileName
は、トレース情報のロギングに使用されるファイル名を指定します。TraceOption
が0
に設定されている場合、名前はそのまま使用されます。ただし、TraceOption
が1
に設定されている場合は、指定されたファイル名にスレッドIDが付加されます。
TraceFileName
の有効値は、任意の有効なパス名およびファイル名です。
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は、多数の処理不能な例外に対する防止策を提供しています。
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>