2 インストールおよび構成
この項では、Oracle Database Extensions for .NETのインストール、システム要件およびファイルの場所を説明します。
2.1 システム要件
Oracle Database Extensions for .NETの各リリースには、それぞれ固有のバージョン要件があります。次のシステム要件は、Oracle Database Extensions for .NETリリース 12.2にのみ適用されます。別のバージョンを使用する場合は、そのバージョン固有のドキュメントを参照してください。
-
Windows上のOracle Database 12.2。
注意:
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を必要とするストアド・プロシージャを持っている場合、このリリースで機能するよう、特別な手順をいくつか行う必要があります。
-
-
Oracle Data Provider for .NETリリース 12.2 (ストアド・プロシージャでのデータ・アクセスが必要な場合)。
-
Oracle Developer Tools for Visual Studio 12.1以上は、.NETストアド・プロシージャのデプロイに必要です。
注意:
Oracle Developer Tools for Visual Studioは、Oracleデータベースではリリースされません。OTNのOracle .NET Developer Centerから取得できます。
2.2 .NETストアド・プロシージャおよび機能の要件
.NETストアド・プロシージャまたはファンクションは次の要件を満たす必要があります。
-
public staticメソッドが宣言されていること。
-
コンストラクタまたはデストラクタでないこと。
-
Oracleネイティブ・データベース・タイプと互換性のあるパラメータ・タイプの使用。
2.3 インストール
この項では、Oracle Database Extensions for .NETのインストールの結果について説明します。
内容は次のとおりです。
2.3.1 インストールおよび最初の使用
Oracle Databaseの以前のリリースでは、Oracle Database Extensions for .NETでカスタム・インストールが必要でした。Oracle Database 12c以降、Oracle Database Extensions for .NETは常にインストールされますが、有効にはなっておらず、Windowsサービスは作成されません。
Oracle Database Extensions for .NETをはじめて使用する前に、次のことを行います。
2.3.2 Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント
Oracle Database 12c以降、Oracle CLRサービスはOracleホーム・ユーザーとして実行されます。現在、データベース・インストールでは、ユーザーに対してインストール時に、Oracleホーム・ユーザー・アカウント(このアカウントを使用して様々なOracleサービスを実行する)を指定するための方法が提供されています。この権限の付与されていないアカウントには、ローカル・ユーザーまたは管理者権限のないドメイン・ユーザーを指定できます。
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
ユーティリティをインストールします。
2.3.3 OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用
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エラー番号および対応するメッセージが表示されます。
2.4 Windowsサービスを使用したExtprocエージェントの構成
OraClrAgnt
はOraClrCtl.exe
によって作成されます。このサービスは、Oracle
ORACLE_HOME
ClrAgent
としてサービス・コントロール・パネルを介してアクセスでき、ORACLE_HOME
はOracleホームを表します。
このサービスには、表2-1にリストされているパラメータを指定できます。
これらのパラメータ値は、コントロール・パネル・サービスのプロパティ・ウィンドウにある開始パラメータの一部として指定できます。この場合、パラメータ値は保存されず後でサービスを再起動する場合、再指定する必要があります。
パラメータ値を永続的にするには、このサービスの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"
サービスを開始または停止できない場合、エラー・メッセージがサービス名のイベントのソース名として、イベント・ビューアのアプリケーション・ログに記録されます。
関連項目:
OraClrAgnt
がOraClrCtl.exe
によって作成される方法の詳細は、「Oracle CLRサービスおよびOracle Homeユーザー・アカウント」を参照してください。
2.4.1 OraClrAgntサービス・パラメータ
表2-1に、このサービスを使用して構成されるパラメータをリストします。
表2-1 OraClrAgntサービス・パラメータ
パラメータ | 説明 |
---|---|
|
これは |
|
これは 詳細は、『Oracle Database Net Services管理者ガイド』の「表13-5 listener.oraファイルの外部プロシージャ設定」を参照してください。 |
|
リスナーがリスニングするアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。 |
|
|
|
|
|
|
|
エージェントが |
|
|
関連項目:
『Oracle Call Interfaceプログラマーズ・ガイド』の表F-2 agtctl
の構成パラメータ
2.5 インストール後のファイルの場所
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
ディレクトリ(またはサブディレクトリ)にコピーされます。
2.6 リスナーおよび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\oraclr12.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) )
tnsnames.oraファイル
ORACLE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = user.us.example.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle.us.example.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) ) )
2.7 Oracle Database 12cリリース1 (12.1)からOracle Database 12cリリース2 (12.2)への.NETストアド・プロシージャの移行
次の方法に従って、.NETストアド・プロシージャをOracle Database 12cリリース1 (12.1)からOracle Database 12cリリース2 (12.2)に移行できます。
-
Oracle Database 12cリリース1 (12.1)データベースの.NETストアド・プロシージャが使用するライブラリを選択します。次に例を示します。
SELECT library_name, file_spec FROM ALL_LIBRARIES WHERE OWNER='SYS'
andFILE_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 12cリリース1 (12.1)のOracle Data Pump Exportユーティリティを実行します。
非プラガブル・データベースでは、次のコマンドを実行します。
Expdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION
プラガブル・データベースでは、次のコマンドを実行します。
-
サーバーの
DotNetSP.dmp
へのパスとして、ディレクトリname
を作成します。create directory name as 'path to DotNetSP.dmp on the server';
-
Oracle Database 12c リリース1 (12.1)データベースに対して、Oracle Data Pump Exportユーティリティを実行します。
expdp system@TNS alias for pluggable database schemas="schema_name" directory=name dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION
ここで、
name
は、手順3.aで指定されたディレクトリ名です。 -
手順3.aで指定されたディレクトリ名を削除します。
drop directory name
ここで、
name
は、手順3.aで指定されたディレクトリ名です。
-
-
Oracle Database 12cリリース1 (12.1)の
ORACLE_BASE\\ORACLE_HOME
\bin\clr
フォルダおよびそのサブフォルダからOracle Database 12cリリース2 (12.2)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。 -
Oracle Database 12c リリース2 (12.2)データベースに対して、
SYSDBA
でDotNetSP_Grant.sql
を実行します。 -
プラガブル・データベースに移行する場合は、次のようにします。
-
サーバーの
DotNetSP.dmp
へのパスとして、ディレクトリname
を作成します。create directory name as 'path to DotNetSP.dmp on the server';
-
Oracle Database 12c リリース2 (12.2)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system@TNS alias for pluggable database schemas="schema_name" directory=name dumpfile=DotNetSP.dmp
ここで、
name
は、手順6.aで指定されたディレクトリ名です。 -
手順6.aで指定されたディレクトリの
name
を削除します。drop directory name
ここで、
name
は、手順6.aで指定されたディレクトリ名です。
-
-
プラガブル・データベースに移行しない場合は、次のようにします。
Oracle Database 12c リリース2 (12.2)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp
注意:
ディレクトリ
ORACLECLRDIR
は削除しないでください。
2.8 Oracle Database 11gリリース2 (11.2)からOracle Database 12cリリース2 (12.2)への.NETストアド・プロシージャの移行
次の方法に従って、.NETストアド・プロシージャをOracle Database 11gリリース2 (11.2)からOracle Database 12cリリース2 (12.2)に移行できます。
-
Oracle Database 11gリリース 2 (11.2)の.NETストアド・プロシージャが使用するライブラリを選択します。次に例を示します。
SELECT library_name, file_spec FROM ALL_LIBRARIES WHERE OWNER='SYS'
andFILE_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.2)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。 -
Oracle Database 12c リリース2 (12.2)データベースに対して、
SYSDBA
でDotNetSP_Grant.sql
を実行します。 -
プラガブル・データベースに移行する場合は、次のようにします。
-
サーバーの
DotNetSP.dmp
へのパスとして、ディレクトリname
を作成します。create directory name as 'path to DotNetSP.dmp on the server';
-
Oracle Database 12c リリース2 (12.2)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system@TNS alias for pluggable database schemas="schema_name" directory=name dumpfile=DotNetSP.dmp
ここで、nameは、手順6.aで作成したディレクトリ名です。
-
手順6.aで指定されたディレクトリの
name
を削除します。drop directory name
ここで、nameは、手順6.aで作成したディレクトリ名です。
-
-
プラガブル・データベースに移行しない場合は、次のようにします。
Oracle Database 12c リリース2 (12.2)データベースに対して、Oracle Data Pump Importユーティリティを実行します。
impdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp
注意:
ディレクトリ
ORACLECLRDIR
は削除しないでください。
2.9 .NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行
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にダウングレードする必要があります。
2.9.1 コード変更の必要性の判断
.NET 1.xストアド・プロシージャを分析して、このリリースに移行するのにコード変更が必要かを判断する必要があります。特に、次の点について調べる必要があります。
-
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 (以上)の間のコードの非互換性。
-
ADO.NET 1.xおよびADO.NET 2.0の移行の問題。
2.9.2 移行方法
.NET 1.xストアド・プロシージャをこのリリースで機能するようにするには、2つの方法が考えられます。
-
ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイします。この方法を強くお薦めします。また、コード変更が必要な非互換性がある場合、この方法が必要です。
-
ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを構成して実行します。この方法では、再コンパイルが不要ですが、処理されていない非互換性がある場合、ランタイム・エラーが発生する可能性があります。
2.9.3 ODP.NET for .NET 1.xとODP.NET for .NET 2.0以上の間のコードの非互換性の処理
.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の場合です。
2.9.4 Oracle Database Extensions for .NETリリース1.xと2.0以上の間のコードの非互換性の処理
接続型がパラメータとして.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接続型の下位互換性に関する説明を参照してください。
2.9.5 ODP.NET for .NET 2.0 (以上)を使用した.NET 1.xストアド・プロシージャの再コンパイルおよび再デプロイ
コードの非互換性が見つかった場合、ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルする必要があります。
コードの非互換性がなくても、.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイすることをお薦めします。処理されていない互換性の問題があった場合、再コンパイルにより、ランタイム・エラーが発生しなくなります。再コンパイルに成功した後、ストアド・プロシージャを再デプロイします。
2.9.6 ODP.NET for .NET 2.0以上を使用した.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ストアド・プロシージャを構成して実行するには、次の手順を実行します。
2.10 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レジストリ・オプション
レジストリ・キー | セクション |
---|---|
. |
|
|
|
|
|
|
|
|
|
|
2.10.1 .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アセンブリはアンロードされます。
2.10.2 NULL可能ODP.NET接続型の後方互換性
ODP.NET for .NET 2.0 (以上)は、OracleDecimal
など非接続型に対する既存のサポートに加えて、ODP.NET接続型の静的Null
プロパティをサポートします。また、これらの型の各パブリック・プロパティ、IsNull
をサポートし、各型のオブジェクトに値が割り当てられているかもチェックします。
これで、.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値の場合)。
関連項目:
NULL可能な型の詳細は、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)
2.10.3 .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フレームワーク1.xはこのリリースではサポートされていません。
2.10.4 デバッグ・トレース
Oracle Database Extensions for .NETは、1つ以上のトレース・ファイルにすべてのOracle Database Extensions for .NETをロギングできるデバッグ・トレースのサポートを提供します。トレースが生成されるたびに、Windowsイベント・ログ・エントリが作成されます。
このリリース以降、TraceFileLocation
オプション(後述)が設定されていない場合、デフォルトでは、トレース・ファイルはWindowsユーザーの一時フォルダに作成されます。
<Windowsユーザーの一時フォルダ>\ODE\trace>
。
Windowsユーザーの一時フォルダは、Windows TMP
またはTEMP
環境変数など、ローカルのWindows設定で定義されています。通常、C:\temp
またはC:\Users\<user name>\AppData\Local\Temp
です。
注意:
Oracle Data Provider for .NETのトレース・メカニズムを使用して、ODP.NET特有の問題を解決します。
次に示すレジストリ設定は、次の場所に構成してください。
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_
ORACLE_HOME
\ODE
2.10.4.1 TraceOption
TraceOption
は、トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。複数トレース・ファイル・オプションが要求された場合は、ファイル名にスレッドIDが付加され、スレッドごとにトレース・ファイルが作成されます。
TraceOption
の有効値は次のとおりです。
0
= 単一のトレース・ファイル
1
= 複数のトレース・ファイル
2.10.4.2 TraceFileLocation
TraceFileLocation
: トレース・ファイルの保存先ディレクトリ(たとえば、D:\traces\
)を指定します。デフォルトのTraceFileLocation
は、<Windowsユーザーの一時フォルダ>\ODE\trace>
です。
2.10.4.3 TraceLevel
TraceLevel
は、Oracle Database Extensions for .NETでトレースのレベルを指定します。
TraceLevel
の有効値は次のとおりです。
0
= なし
1
= 入力および終了情報
関連項目:
『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のデバッグ・トレースに関する項
2.11 extproc.exe.config構成ファイル
Oracle Database Extensions for .NETは、ORACLE_BASE\\ORACLE_HOME\Bin
ディレクトリにあるextproc.exe.config
構成ファイルを読み込み、Oracle Database Extensions for .NETおよびOracle Data Provider for .NETのアセンブリの場所などの構成値を検索します。
Oracle Database Extensions for .NET 12.2以降、legacyUnhandledExceptionPolicy
は有効になりません。そのため、デフォルトでは、.NETストアド・プロシージャを実行するプロセス内で未処理の例外が発生すると、プロセスは終了します。ただし、プロセスが未処理の例外で終了しないように、extproc.exe.config
ファイルは、legacyUnhandledExceptionPolicy
を有効にすることで12.2以前と同じ動作をするように構成することができます。
legacyUnhandledExceptionPolicy
が有効化されたextproc.exe.config
構成ファイルの例を次に示します。
<configuration> <runtime> <legacyUnhandledExceptionPolicy enabled="1"/> </runtime> </configuration>