=================================================== ORACLE DATA PROVIDER FOR .NET 11.2.0.1.0 Production =================================================== Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. This document provides information that supplements the Oracle Data Provider for .NET (ODP.NET) Production documentation. =============== IMPORTANT NOTES =============== ODP.NET supports .NET Framework 2.0 and higher. However, ODP.NET 11.2.0.1.0 is not a LINQ enabled data provider. ============================ INSTALLATION AND SETUP NOTES ============================ 1. Product Dependencies ODP.NET requires Oracle Client 11.2.0.1.0 or Oracle Instant Client 11.2.0.1.0. When installing a new ODP.NET 11.2.0.1.0 instance, Oracle Universal Installer (OUI) will automatically install Oracle Instant Client 11.2.0.1.0. 2. Policy DLLs Note that the installation of ODP.NET will place ODP.NET policy DLLS into the GAC so that existing applications can start using the newly installed ODP.NET version immediately. However, if this is not desired, be sure to remove the policy DLLs from the GAC. ================================== EDITION-BASED REDIFINITION SUPPORT ================================== Edition-based redefinition enables you to upgrade the database component of an application while it is in use, thereby minimizing or eliminating down time. NOTE: For more detailed information on Editions, please read Oracle Database Administrator's Guide and Oracle Database Advanced Application Developer's Guide at http://www.oracle.com/pls/db112/homepage ODP.NET 11.2.0.1.0 supports specifying an Edition at deployment time through the registry or through a configuration file, when using it against Oracle Database 11.2 or later. Applications can specify the Edition at deployment time for a given version of ODP.NET by creating the following registry entry (of type REG_SZ) HKLM\Software\Oracle\ODP.NET\\Edition and setting it to any valid Edition string value. Applications can also specify the Edition at deployment time by adding the following entry in a .NET application's app.config or web.config file. The machine.config can also be modified to specify Edition for all applications that use a particular version of the .NET framework. Following fragment shows how the Edition can be specified to an edition name of "E1" in a configuration file for .NET 2.0, 3.0, and 3.5: NOTE: ODP.NET only supports deployment-time configuration of Edition. ODP.NET does not support usage of "ALTER SESSION" to modify the edition during the lifetime of a process. ============================== ORACLEPERMISSION RELATED NOTES ============================== 1. Configuring OraclePermission for Web Applications in high or medium trust For Web Applications operating under high or medium trust, OraclePermission needs to be configured in the appropriate "web_.config" file so that the application does not encounter any security errors. This configuration can be done through the OracProvCfg tool. OraProvCfg.exe will make the appropriate entries in both web_hightrust.config as well as web_mediumtrust.config associated with the specified .NET framework version. Given below is an example on the usage of OraProvCfg tool for configuring OraclePermission in a .NET 2.0 web application: OraProvCfg.exe /action:config /product:odp /component:oraclepermission /frameworkversion:v2.0.50727 /providerpath: On running the above command, The following entry will be made in "web_hightrust.config" and "web_mediumtrust.config" under ASP.NET permissionset OraProvCfg can also be used to remove these entries from these config files when they need to be removed. OraProvCfg.exe /action:unconfig /product:odp /component:oraclepermission /frameworkversion:v2.0.50727 /providerpath: 2. Configuring OraclePermission For Windows Applications in partial trust For Windows applications operating in a partial trust environment, the OraclePermission entry should be specified under the appropriate permission set in security.config file. (Security.config is available in %windir%\Microsoft.NET\Framework\{version}\CONFIG). The example below specifies the OraclePermission entry that would be required for a .NET 2.0 Windows application ================================== TIPS, LIMITATIONS AND KNOWN ISSUES ================================== 1. Data truncation errors can be encountered when fetching LONG data from a UTF8 database. 2. When using distributed transactions in conjunction with proxy connections, the client user password must be supplied due to an OraMTS limitation. 3. Distributed Transactions and Isolation Levels ODP.NET supports only the read committed isolation level for distributed transactions. 4. PL/SQL LONG, LONG RAW, RAW, VARCHAR data types cannot be bound with more than 32512 bytes. 5. Having a command execution terminated through either the invocation of OracleCommand's Cancel method or expiration of OracleCommand's CommandTimeout property value may return ORA-00936 or ORA-00604, rather than the expected ORA-01013. 6. An exception is not thrown when change notification is registered on a bad port number. 7. If the HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG registry entry is set to "NA", ORA-12705 errors will be encountered when using ODP.NET. To eliminate this problem, remove the HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANG registry entry. 8. TimeStamp with Local Time Zone Attributes of a UDT Binding a custom object with an attribute of type TimeStamp with Local Time Zone as a parameter is not supported in the production release. The same limitation applies for TimeStamp with Local Time Zone Elements of a Collection. 9. XMLType Attributes/Elements of a UDT ODP.NET does not support UDTs with XMLType as an attribute or an element. 10. If SenderId is specified in OracleAQMessage object while enqueuing, the sender id of dequeued message will have "@ODP.NE" appended in the end. [Bug 7315542] 11. EnqueueTime property value in OracleAQMessageAvailableEventArgs, which is passed through a notification, may have an incorrect value if the message was enqueued with the Delay property value set to a non-default value on the OracleAQMessage object. [Bug 7361345] 12. An "ORA-00942: table or view does not exist" error may be thrown from Dequeue or DequeueArray method invocations when OracleAQDequeueOptions.DeliveryMode is specified as OracleAQMessageDeliveryMode.Buffered and OracleAQDequeueOptions.Correlation is specified and there are no messages available in the queue. [Bug 7343633] 13. Application may not receive group notifications if GroupingInterval property on the OracleNotificationRequest object is set to 0. [Bug 7373765] 14. Against 9.2 database, a message remains in WAITING state if the Delay property of OracleAQMessage was set to a non-zero value while enqueuing the message. [Bug 8828674, 8873837] 15. For performance reasons, it is preferable to specify custom type mapping in a configuration file instead of relying on ODP.NET self discovery mechanism. For more information, please consult "Using XML in Configuration Files to Specify Custom Type Mappings" in the Oracle Data Provider for .NET Developer's Guide.