このトピックでは、Oracle Database Extensions for .NETのインストール、システム要件およびファイルの場所を説明します。
この章の内容は次のとおりです。
Oracle Database Extensions for .NETの各リリースには、それぞれ固有のバージョン要件があります。次のシステム要件は、Oracle Database Extensions for .NETリリース 12.1にのみ適用されます。別のバージョンを使用する場合は、そのバージョン固有のドキュメントを参照してください。
Windows上のOracle Database 12.1。
注意: Oracle Database Extensions for .NETは、Windowsプラットフォームでのみサポートされます。 |
Microsoft .NET Framework
Oracle Database Extensions for .NET Framework 2.0は、Microsoft .NET Framework 2.0、3.0、3.5、4、4.5および.NET Framework 4 Client Profileでのみサポートされます。
Oracle Database Extensions for .NET Framework 4は、Microsoft .NET Framework 4、4.5および.NET Framework 4 Client Profileでのみサポートされます。
注意: Microsoft Framework 1.xは、Oracle Database Extensions for .NETリリース11.1.0.7.20からはサポートされていません。.NET Framework 1.xを必要とするストアド・プロシージャを持っている場合、このリリースで機能するよう、特別な手順をいくつか行う必要があります。詳細は、「.NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行」を参照してください。 |
Oracle Data Provider for .NETリリース 12.1以上(ストアド・プロシージャでのデータ・アクセスが必要な場合)。
Oracle Developer Tools for Visual Studio 11.2以上は、.NETストアド・プロシージャのデプロイに必要です。
注意: Oracle Developer Tools for Visual Studioは、Oracleデータベースではリリースされません。OTNのOracle .NET Developer Centerから取得できます。 |
.NETストアド・プロシージャまたはファンクションは次の要件を満たす必要があります。
public staticメソッドが宣言されていること。
コンストラクタまたはデストラクタでないこと。
Oracleネイティブ・データベース・タイプと互換性のあるパラメータ・タイプの使用。
この項では、Oracle Database Extensions for .NETのインストールの結果について説明します。
内容は次のとおりです。
Oracle Databaseの以前のリリースでは、Oracle Database Extensions for .NETでカスタム・インストールが必要でした。Oracle Database 12c以降、Oracle Database Extensions for .NETは常にインストールされますが、有効にはなっておらず、Windowsサービスは作成されません。
Oracle Database Extensions for .NETをはじめて使用する前に、次のことを行います。
Oracle Database 12cをインストールして、インストーラでのデータベースの作成を許可するか、またはデータベース・ソフトウェアのみをインストールし、Database Configuration Assistantを使用して、後でデータベースを作成します。
インストールとデータベース作成の後、次のように実行して、Oracle Database Extensions for .NETを有効にします。
chopt enable ode_net
関連項目: 『Oracle Databaseインストレーション・ガイドfor Microsoft Windows』 |
次のように実行して、Oracle Database Extensions for .NETのWindowsサービスを作成します。
oraclrctl -new
Oracle Database 12c以降、Oracle CLRサービスはOracleホーム・ユーザーとして実行されます。現在、データベース・インストールでは、ユーザーに対してインストール時に、Oracleホーム・ユーザー・アカウント(このアカウントを使用して様々なOracleサービスを実行する)を指定するための方法が提供されています。この権限の付与されていないアカウントには、ローカル・ユーザーまたは管理者権限のないドメイン・ユーザーを指定できます。
関連項目: 『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』 |
Oracle Databaseの以前のリリースでは、これらのCLRサービスは、インストーラによって自動的に作成されました。現在これらは、インストール後にOraClrCtl.exe
ユーティリティを使用して手動で作成します。
データベースのインストールではOracle CLRサービスは作成されませんが、Oracle Database Extensions for .NETが適切に動作するために、データベースで必要な構成を行います。次の情報が含まれます。
extproc
に対してlistener.ora
エントリを作成。
ORACLE_BASE\\ORACLE_HOME
\bin
の下にclr
フォルダを作成。
「OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用」に記載されているOraClrCtl.exe
ユーティリティをインストール。
OraClrCtl.exe
ユーティリティは、ORACLE_BASE\\ORACLE_HOME
\bin
ディレクトリにOraClrAgnt
サービスを作成し、データベースのインストール中に指定したOracleホーム・ユーザー・アカウントを使用して実行するように構成します。このサービスは、Oracle
ORACLE_HOMEClrAgent
としてサービス・コントロール・パネルを介してアクセスでき、ORACLE_HOME
はOracleホームを表します。
また、OraClrCtl.exe
は、OraClrAgnt
サービスを開始、停止および削除できます。
例
oraclrctl.exe -start -host computer-pc5
OraClrCtl.exe
には次の引数を指定できます。
-new
: 新しいサービスを作成および開始します。
-delete
: サービスを削除します。
-start
: サービスを開始します。
-stop
: サービスを停止します。
-host
hostname
: 指定されたホスト上で操作を実行します。ホストが指定されていない場合は、ローカル・ホストがデフォルトで指定されます。
OraClrCtl.exe
はTRUE
(1)またはFALSE
(0)を返し、SUCCESS
またはFAILURE
メッセージを表示します。失敗した場合、メッセージには、OSエラー番号および対応するメッセージが表示されます。
「Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント」に記載されているとおり、OraClrAgnt
はOraClrCtl.exe
によって作成されます。このサービスは、Oracle
ORACLE_HOME
ClrAgent
としてサービス・コントロール・パネルを介してアクセスでき、ORACLE_HOME
はOracleホームを表します。
このサービスには、表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\oraclr12.dll"
サービスを開始または停止できない場合、エラー・メッセージがサービス名のイベントのソース名として、イベント・ビューアのアプリケーション・ログに記録されます。
表2-1に、このサービスを使用して構成されるパラメータをリストします。
表2-1 OraClrAgntサービス・パラメータ
パラメータ | 説明 |
---|---|
|
これは |
|
これは 詳細は、『Oracle Database Net Services管理者ガイド』の「表13-5 listener.oraファイルの外部プロシージャ設定」を参照してください。 |
|
リスナーがリスニングするアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。 |
|
|
|
|
|
|
|
エージェントが |
|
|
関連項目: 『Oracle Call Interfaceプログラマーズ・ガイド』の表F-2、agtctl の構成パラメータ |
OraClr12.dll
は、ORACLE_BASE\\ORACLE_HOME
\bin
ディレクトリにインストールされます。
Oracle.Database.Extensions.dll
は、次の場所にインストールされます。
.NET Framework 2.0:
ORACLE_BASE\\ORACLE_HOME
\ODE.NET
\bin\2.
x
.NET Framework 4:
ORACLE_BASE\\ORACLE_HOME
\ODE.NET
\bin\4
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用に構成された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\oraclr12.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) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
次の方法に従って、.NETストアド・プロシージャをOracle Databaseリリース 11.2からリリース 12.1に移行できます。
Oracle Database 11gリリース 2(11.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 11gリリース2(11.2)のOracle Data Pump Exportユーティリティを実行します。
Expdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION
Oracle Database 11g リリース2 (11.2)のORACLE_BASE\\ORACLE_HOME
\bin\clr
フォルダおよびそのサブフォルダからOracle Database 12c リリース1 (12.1)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。
Oracle Database 12c リリース1 (12.1)データベースに対して、SYSDBA
でDotNetSP_Grant.sql
を実行します。
プラガブル・データベースに移行する場合は、次のようにします。
サーバーのDotNetSP.dmp
へのパスとして、ディレクトリname
を作成します。
create directory name as 'path to DotNetSP.dmp on the server';
Oracle Database 12c リリース1 (12.1)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system@TNS alias for pluggable database schemas="schema_name" directory=name // name provided in step a dumpfile=DotNetSP.dmp
手順aで指定したディレクトリname
を削除します。
drop directory name // name provided in step a
プラガブル・データベースに移行しない場合は、次のようにします。
Oracle Database 12c リリース1 (12.1)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp
注意: ディレクトリORACLECLRDIR は削除しないでください。 |
Oracle Database Extensions for .NETリリース11.1.0.7.20から、.NET 1.xストアド・プロシージャはサポートされなくなりました。特に、Oracle Database Extensions for .NET 1.xおよびOracle Data Provider for .NET 1.xは、このリリースには含まれません。以前のリリースの既存の.NET 1.xストアド・プロシージャを持つ場合、このリリースで機能するよう特別な移行手順を行う必要があります。
警告: 場合によって、この移行にはコードの変更が必要になります。.NET 1.xストアド・プロシージャを持っている場合、そのストアド・プロシージャが正常に移行されたテスト環境で検証されるまで本番環境にこのリリースをインストールしないでください。すでにこのリリースをインストールして.NET 1.xストアド・プロシージャでエラーが発生している場合は、ストアド・プロシージャに必要なコード変更が行えるまで以前のバージョンのOracle Database Extensions for .NETにダウングレードする必要があります。 |
.NET 1.xストアド・プロシージャを分析して、このリリースに移行するのにコード変更が必要かを判断する必要があります。特に、次の点について調べる必要があります。
ODP.NET for .NET 1.xとODP.NET for .NET 2.0 (以上)の間のコードの非互換性。
「ODP.NET for .NET 1.xとODP.NET for .NET 2.0以上の間のコードの非互換性の処理」を参照してください。
Oracle Database Extensions for .NET 1.xとOracle Database Extensions for .NET 2.0 (以上)の間のコードの非互換性。
「Oracle Database Extensions for .NETリリース1.xと2.0以上の間のコードの非互換性の処理」を参照してください。
ADO.NET 1.xおよびADO.NET 2.0の移行の問題
詳細は、Microsoft社のドキュメントを参照してください。
.NET 1.xストアド・プロシージャをこのリリースで機能するようにするには、2つの方法が考えられます。
ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイします。この方法を強くお薦めします。また、コード変更が必要な非互換性がある場合、この方法が必要です。「ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの再コンパイルおよび再デプロイ」を参照してください。
ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを構成して実行します。この方法では、再コンパイルが不要ですが、処理されていない非互換性がある場合、ランタイム・エラーが発生する可能性があります。「ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの構成」を参照してください。
.NET 1.xストアド・プロシージャ内のODP.NETに関連する次のコードの非互換性を処理する必要がある可能性があります。
ODP.NET for .NET 2.0 (以上)では、OracleParameter.OracleDbType
がInt32
、Double
などの数値型に設定されている場合、OracleParameter.Value
により.NETネイティブ型のかわりにOracleDecimal
が返されます。この動作変更の概要は、次の表のとおりです。
OracleParameter.OracleDbType | .NET 1.xで返されるOracleParameter.Value | .NET 2.xで返されるOracleParameter.Value |
---|---|---|
OracleDbType.Byte |
System.Byte |
OracleDecimal |
OracleDbType.Double |
System.Double |
OracleDecimal |
OracleDbType.BinaryDouble |
System.Double |
OracleDecimal |
OracleDbType.Int16 |
System.Int16 |
OracleDecimal |
OracleDbType.Int32 |
System.Int32 |
OracleDecimal |
OracleDbType.Int64 |
System.Int64 |
OracleDecimal |
OracleDbType.Single |
System.Single |
OracleDecimal |
OracleDbType.BinaryFloat |
System.Single |
OracleDecimal |
前述のOracleDbType
列挙値をout
またはin/out
OracleParameter
に.NET 1.xストアド・プロシージャで使用する場合、変更が必要な場合があります。
ODP.NET for .NET 2.0 (以上)では、OracleParameter.OracleDbType
が接続型に設定されている場合、OracleParameter.Value
によりDBNull.Value
のかわりにプロバイダタイプ固有のnull
値(OracleClob.Null
)が返されます。たとえば、OracleParameter.OracleDbType
がOracleDbType.Clob
に設定されている場合、OracleParameter.Value
は、DBNull.Value
のかわりにOracleClob.Null
を返してnull
値を示します。これは、ODP.NET for .NET 1.xの場合です。
接続型がパラメータとして.NET 1.xストアド・プロシージャに渡された場合、およびプロシージャがnull
値をチェックした場合、プロシージャを変更する必要がある可能性があります。パラメータが接続型だった場合、Oracle Database Extensions for .NET 1.xでは.NET null
を使用してnull
値を表します。このような場合、Oracle Database Extensions for .NET 2.0 (以上)ではOracleBFile.Null
などのプロバイダタイプ固有のnull
値を使用します。
接続型のnull
値にプロバイダ固有のタイプのnull
値のかわりに.NET null
値を使用するよう、Oracle Database Extensions for .NET 2.0 (以上)を構成できます。これには、次のレジストリ値を作成して0に設定します。
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE\ProviderNull
このレジストリ値の説明は、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のnull値可能なODP.NET接続型の下位互換性に関する説明を参照してください。
コードの非互換性が見つかった場合、ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルする必要があります。
コードの非互換性がなくても、.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイすることをお薦めします。処理されていない互換性の問題があった場合、再コンパイルにより、ランタイム・エラーが発生しなくなります。再コンパイルに成功した後、ストアド・プロシージャを再デプロイします。
もう1つの方法として、コードの非互換性がない場合、ODP.NET for .NET 2.0 (以上)で.NET 1.xストアド・プロシージャを構成して実行できます。この方法の場合、.NETストアド・プロシージャを再コンパイルおよび再デプロイする必要がありません。ただし、処理されていない非互換性がOracle Database Extensions for .NET, ODP.NETおよびADO.NETのリリース1.xと2.0の間にある場合、ランタイム・エラーが発生する可能性があります。再コンパイルおよび再デプロイせずにODP.NET for .NET 2.0 (以上)で.NET 1.xストアド・プロシージャを構成して実行するには、次の手順を実行します。
「Oracle Database 11.2からOracle Database 12.1への.NETストアド・プロシージャの移行」に示すような手順を実行して、ストアド・プロシージャをOracle Database 12.1に移行します。
NewOracleHome
\bin
フォルダでextproc.exe.config
ファイルを変更または作成して、ODP.NET(Oracle.DataAccess.dll
)1.xリファレンスをインストールされたバージョンのODP.NET for .NET 2.0 (以上)にリダイレクトします。たとえば、ODP.NET 1.111.6.20リファレンスをODP.NET 2.111.7.20にリダイレクトするには、extproc.exe.config
ファイルに次の構成セクションが含まれている必要があります。
<configuration> <runtime> <legacyUnhandledExceptionPolicy enabled="1"/> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> <bindingRedirect oldVersion="1.111.6.20" newVersion="2.111.7.20"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
次の場所にある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開発者ガイド』(Microsoft Windows用) |
これで、.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フレームワーク1.xはこのリリースではサポートされていません。詳細は、「.NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行」を参照してください。
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開発者ガイド』(Microsoft Windows用)のデバッグ・トレースに関する説明 |
.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>