dotConnect for Oracle Frequently Asked Questions
What is the difference between the Standard and Professional editions?
The Standard Edition represents a fully-featured ADO.NET data provider with design time support and advanced classes. The Professional Edition adds more classes, tools, technologies, and integration capabilities. The following list briefly enumerates main advantages of Professional Edition.
- Entity Framework support allows you to employ the latest conceptual technology from Microsoft.
- LinqConnect support allows you to focus on objects instead of relational data in database application development.
- OracleLoader class serves to load external data into the Oracle database extremely fast.
- OraclePackage class and Package Wizard provide access to packages stored in the Oracle database.
- DataLink class serves for universal cross-form data binding.
- OracleAlerter and OraclePipe classes serve for advanced messaging between client and server.
- OracleTrace class designed to controls server side SQL and PL/SQL tracing.
- The powerful OracleDataTable component as all-in-one table data access solution.
- OracleDataSet class allows using typed and untyped provider-specific datasets.
- DataSet Wizard greatly simplifies process of generating datasets in your application.
- DataSet Manager and DataSet Editor help managing the datasets.
- Advanced Queue technology support enables you to rich a new level of flexibility in your applications.
- Support for dbMonitor that performs per-component tracing of database events such as SQL statement execution, commit, rollback, etc.
- Enterprise Library support allows you to take advantage of Data Access Application Block functionality.
- ASP.NET providers support allows using dotConnect for Oracle in ASP.NET 2.0 provider model.
- Windows Workflow Foundation support includes Oracle Workflow Instance Store and Workflow Tracking
- Sync Framework support allows using dotConnect for Oracle for synchronizing Oracle data with other data sources.
To test this functionality use the Trial Edition, which incorporates all aforementioned features.
What is the difference between the Professional and Developer editions?
The Developer Edition includes everything from the Professional Edition plus Standard Edition of OraDeveloper Tools, an advanced add-in for designing databases and easily manipulating data and schema objects from your IDE. OraDeveloper Tools for Oracle greatly speeds up the development process every time you interact with your database.
What is the difference between the Express and Standard editions?
Express Edition is a free data provider with basic connectivity features. Standard Edition represents a fully-featured ADO.NET data provider with design time support and advanced classes.
The following list briefly enumerates main advantages of Standard Edition.
- The Direct mode to connect without Oracle Client
- The OracleScript class serves to execute series of SQL statements separated by special symbols
- The OracleMonitor class monitors dynamic SQL execution in applications that use dotConnect for Oracle
- The OracleDependency class tracks changes on the server
- The OracleSelectStatement class represents Oracle SELECT statement
- Design-time features allow you to move the development process from run time to design time, which is way more comfortable
- Migration Wizard helps to migrate project from Microsoft OracleClient and Oracle ODP.NET data providers to dotConnect for Oracle.
Installation and deployment
I installed dotConnect for Oracle trial, then I have bought and installed purchased version, but something went wrong.
Make sure you had uninstalled the trial version correctly. There should be no old (trial) assemblies present in your system. Uninstall dotConnect for Oracle and check your Global Assembly Cache and local folders for Devart.* assemblies. Remove all Devart.* files and reinstall dotConnect for Oracle.
How do I upgrade to a newer version of dotConnect for Oracle?
Close all running IDEs and help collections, then run the installation package of the newer version. You will be prompted to uninstall the previous version; agree and then proceed to installing the newer build.
You say, there are sample projects, but I can't find any.
Probably you installed dotConnect for Oracle not in full mode. Please choose full when installing the product. All samples are installed by default in \Program Files\dotConnect\Oracle\Samples folder.
Are there any restrictions for Visual Studio Express editions?
Yes, there are some. First, the provider add-in (and hence menu item) is not available. Second, components are not registered in toolbox automatically (though you can do it manually). Finally, advanced Visual Studio integration (DDEX) is not available, except Microsoft Web Developer Express 2008 and 2010.
How do I deploy my application?
To deploy an application written with dotConnect for Oracle, you need to:
- deploy the Devart runtime assemblies used by your application;
- include the technical license resource;
- in case your application uses provider factories, you also need to expose dotConnect for Oracle to the system.
How to install dotConnect for Oracle on machine that does not have Visual Studio or Delphi installed?
Choose "Minimal" type when asked by the installer.
How do I upgrade my projects from dotConnect for Oracle 4.xx?
In the 5.0 release there were some important name changes in the product. Particularly,
assemblies, namespaces, invariant name, and some types were changed as follows:
"CoreLab.Data" became "Devart.Data";
"CoreLab.Oracle" became "Devart.Data.Oracle";
"OracleDirectFactory" became "OracleProviderFactory";
Invariant name became "Devart.Data.Oracle";
Your projects must be updated to be compatible with dotConnect for Oracle 5.0. Here
is the list of files you should update:
*.csproj, *.vbproj - references to assemblies
*.cs, *.vb - namespaces
*.licx - namespaces and assembly names
Web.config - assembly names and web provider types
This is done automatically when you invoke the Upgrade wizard from Visual Studio menu: Tools | Oracle | Upgrade Wizard.
I have received a message that Devart.Data is incompatible...
Devart data providers use a common assembly (Devart.Data.dll), so it is necessary to install compatible providers versions. We release our ADO.NET data providers in a single pack, thus releases from the same date should be compatible. Also, Devart data providers should warn you before installation if an incompatible version of Devart.Data.dll was detected.
I have received the following message - "error 0175: The specified store provider cannot be found in the configuration, or is not valid..". What does it mean and what should I do?
You should put the Devart.Data, Devart.Data.Oracle, and Devart.Data.Oracle.Entity.EF<Version> assemblies in the Bin folder of your application (or place these assemblies in Global Assembly Cache). The <Version> here is the version of Entity Framework used in your application. For Entity Framework v1 the assembly is called Devart.Data.Oracle.Entity.EF1.dll, for Entity Framework v4 it is Devart.Data.Oracle.Entity.EF4.dll, for Entity Framework v5 and v6 it is Devart.Data.Oracle.Entity.EF5.dll or Devart.Data.Oracle.Entity.EF6.dll respectively. For Entity Framework Core it is Devart.Data.Oracle.Entity.EFCore.dll. Make sure that your application is licensed correctly (take a look at the Licensing article for more information).
Please note that there are three versions of Devart.Data.Oracle.Entity.EFCore.dll assemblies for different Entity Framework Core versions - 1.1, 2.2, and 3.1. They are located respectively in \Entity\EFCore, \Entity\EFCore2, and \Entity\EFCore3 subfolders of the dotConnect for Oracle installation folder.
Information about provider registering is available in the Deployment article.
Subscriptions and Upgrades
I have a registered version of dotConnect for Oracle. Will I need to pay to upgrade to future versions?
Since dotConnect for Oracle 4.00, all upgrades to future versions are free for users with an active dotConnect for Oracle Subscription.
Users that have a registration for versions of dotConnect for Oracle prior to OraDirect .NET 4.00 can upgrade to dotConnect for Oracle 5.00 to jump in on the Subscription Program.
What are the benefits of the dotConnect for Oracle Subscription Program?
Users with a valid dotConnect for Oracle Subscription get the following benefits:
- Access to new versions of dotConnect for Oracle when they are released
- Access to all dotConnect for Oracle updates and bug fixes
- Product support through the dotConnect for Oracle Priority Support program
- Notification of new product versions
Priority Support is an advanced product support program which offers you expedited individual assistance with dotConnect for Oracle-related questions from the dotConnect for Oracle developers themselves. Priority Support is carried out over email and has a two business day response policy.
The dotConnect for Oracle Subscription Program is available for registered users of dotConnect for Oracle 4.00 and higher.
Can I use my version of dotConnect for Oracle after my Subscription expires?
Yes, you can. dotConnect for Oracle version licenses are perpetual.
Do I need a new subscription to use dotConnect for Oracle 8?
No, you don't. Provided that you have an active subscription, you will be able to download dotConnect for Oracle 8 from Customer Portal.
What is the licensing you use?
dotConnect for Oracle uses .NET component licensing. To build operational application dotConnect for Oracle requires valid license. If no license is available, dotConnect for Oracle does not work.
How to embed license into my application?
Usually you do not have to care about embedding license in your application. When
you install dotConnect for Oracle the system is configured so that licensing is
done transparently. License is automatically added to project when you place a OracleConnection
component onto a form.
In some cases you have to manually add license. It is necessary for console applications, class libraries, some ASP.NET applications and existing projects initially built with dotConnect for Oracle version that did not use component licensing, that is, 3.20 and older. For instructions on how to add license manually refer to Licensing topic in dotConnect for Oracle help.
On opening connection I get an exception saying "License not found...". What should I do?
This generally indicates that license information could not be found, or you try to apply it in some way that does not suit the kind of application. For example:
- File licenses.licx, required for dotConnect for Oracle to function properly, could not be found.
- File licenses.licx is not added as embedded resource.
- File App_Licenses.dll not found in ASP.NET applications.
To fix the problem determine type of your application and read corresponding section of "Licensing " topic.
On opening connection I get an exception saying "License not valid...". What should I do?
This means that license information was found but it is incorrect. It usually happens in the following cases:
- The project was earlier compiled with old or trial version of dotConnect for Oracle.
- File licenses.config used by a class library does not refer to launched executable.
- The App_Licenses.dll belongs to other application or needs to be recompiled.
- Something's wrong with the operating system or installation of dotConnect for Oracle.
If you encounter one of these problems, do the following (the numbers of actions correspond to the numbers of the problems in the above list):
- Delete all files from the bin and obj folders and rebuild the project.
- Specify the executable in the licenses.config file.
- Rebuild App_Licenses.dll for the current application.
Perform the following steps:
- uninstall dotConnect for Oracle;
- remove all Devart.* and policy.*.Devart.* files from the GAC;
- clear the Program Files\Devart\dotConnect and Program Files\Common Files\Devart\dotConnect folders;
- re-install dotConnect for Oracle.
If this does not help, send a small compiled binary with sources to our support address, so we can investigate the problem in more details.
Deployed application worked fine some time, but in some moment it started to say "Sorry, your trial period has expired". But I do not use trial version any more.
Probably you compiled the application with Trial edition of dotConnect for Oracle, and deployed it with assemblies from non-trial version. In this case time limit is actual as well. To eliminate the problem just recompile the project.
How to license ASP.NET applications?
To support server-side compilation you ought to have special assembly App_Licenses.dll in the Bin directory of your site. To create this assembly execute Build Runtime Licenses command in the licenses.licx file context menu in the Solution Explorer view. Required assembly will be created automatically.
Note that this is not necessary for precompiled ASP.NET applications (if nothing is compiled on server by user request). Precompiled applications are licensed as usual applications.
How to make dotConnect for Oracle work with SQL Server 2008 Business Intelligence Solutions?
To do this install dotConnect for Oracle on same computer where SQL Server 2008 resides.
I am having problems with the licensing in my project... What am I to do?
If any problems with licensing occurred in your project, you should use the License Information dialog to resolve them. You can access it from the Visual Studio menu: Tools | Oracle | License Information.
Do end-users need a license?
No, end-users of your application do not require any license.
I call OracleConnection.Open(), then Close(). Physical connection is still visible by server. Isn't it a bug?
No, it is not. This is Connection Pooling feature. Actual connection is not closed in order to be used later by your application. This boosts performance greatly.
I get exception "Timeout expired. The timeout period elapsed..." What to do?
The full text of the exception is "Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached." It clearly states that you have run out of connections available. To solve the problem increase Max Pool Size connection string parameter value. The default value is 100. Another way to get extra connections is to clear one or all of the pools. Or you can turn connection pooling off using Pooling connection string parameter.
How to prevent possible pooling problems?
You can clear the pool explicitly. Generally pool is cleared automatically when connections are idle or closed by server. To force the operation call ClearPool or ClearAllPools methods. Another solution is to disable the pool at all (set Pooling=false in connection string). If this does not help, the problem is not caused by pooling.
How to open documentation on dotConnect for Oracle?
There are several ways to open dotConnect for Oracle documentation:
- Use appropriate shortcut in start menu, for instance, Start - Programs - Devart dotConnect for Oracle - Documentation .
- Use command in the IDE: Tools - Oracle - dotConnect for Oracle Help.
- Position cursor on some class from Devart.Data.Oracle and press F1.
There is also same documentation in chm format. You can download it from our site at the following address: www.devart.com/dotconnect/oracle/dcoracle.chm
I can't see the documentation in Visual Studio Help Collection.
Correctly installed documentation appears as separate node in combined collection of Visual Studio and Delphi. If you can't find dotConnect for Oracle node there it is because you enabled topics filtering. To reveal the node set filter to "Devart Documentation", or "(unfiltered)", or "Visual C#" etc.
Another possible reason is that you installed some IDE after installation of dotConnect for Oracle. In this case use aforementioned methods to reach documentation.
All topics in CHM file are blank.
This can happen due to some patches from Microsoft installed on your system. Please read this page to find possible solutions for the problem. In most cases it is enough to right-click on the CHM file, select Properties, click on the "Unblock" button and click "Apply" to show the contents.
Are LINQ to SQL and Entity Framework supported?
The Professional Edition of dotConnect for Oracle supports both LinqConnect (formerly called LINQ to Oracle) and the latest version of ADO.NET Entity Framework.
Where do I start with Entity Framework or LinqConnect?
For your convenience there are brief tutorials that you can use to get acquainted with the technologies:
Are there any demo projects to play with?
Yes, dotConnect for Oracle includes several Entity Framework and LinqConnect samples in C# and Visual Basic. The samples demonstrate how to use several entities and a relationship between them. You can also download separate Entity Framework Query Samples package, which is a standard Microsoft demo with added Oracle connectivity.
How to obtain ROWID value after INSERT or UPDATE operation?
Use the OracleCommand.GetRowId method.
I get concurrency error when modifying records using OracleDataAdapter or OracleDataTable. What can be wrong?
This can happen when OracleCommandBuilder generates a query without primary key field. To avoid it use custom update command instead of generated by OracleCommandBuilder. This problem should not take place if primary key field participates in SELECT statement.
No components can be found in the toolbox.
This can happen if the installation encountered some problems. You can add the components to toolbox manually. This procedure is described in the Installation article in the documentation. Note that Microsoft Web Developer 2008 Express edition does not allow working with toolbox at all.
dotConnect for Oracle components in Visual Studio 2008 are grey...
Make sure you're in Component Designer view. Do not confuse with Designer view. To switch between views use context menu of .aspx file in Solution Explorer. This relates to Web projects only.
SQL Server Integration Service (SSIS) can't get the list of tables in my Oracle server.
This is an architecture limitation from Microsoft, SSIS understands metadata of SQL Server only. To circumvent this you have to write queries manually.
Can I use dotConnect for Oracle assemblies in the x64 process?
dotConnect for Oracle assemblies are built with the /platform:anycpu option. So, you can use provider's assemblies on any platform (x86 or x64). For more information, refer to https://msdn.microsoft.com/en-us/library/zekwfyz4.aspx. The mode of your own assemblies depends on capacity of Oracle Client you are using, and doesn't depend on capacity of your Oracle Server.
I get an exception "Can not obtain Oracle client information from registry. Make sure that Oracle Client Software is installed, or use Direct mode of connecting to server."
This exception means that your application uses an OCI connection, and either there is no Oracle Client installed on the computer your application is running on or that the Oracle Client and your application have different bitness (x86 or x64). To solve the issue:
- Make sure that Oracle Client is installed on your computer.
- Make sute that Oracle Client has the same bitness as your application. For 32bit application, you must have 32bit Oracle Client installed, and for 64bit application you must have 64bit Oracle Client installed.
- Make sure that the user account, on behalf of which the application is running, has enough privileges to access registry.
General issues related to Oracle server
Cannot connect to server on %server name%...
This is actual for mobile edition. Use IP of the server instead of DNS name. It is recommended to use internal IP address. For information on how to address target machine refer to network administrator.
What about performance?
We regularly carry out performance tests on different databases with miscellaneous environments. The tests show that dotConnect for Oracle is much better than ODBC, OLEDB, and ODP.NET. Besides that dotConnect for Oracle has much more features than any data provider, including ODP.NET. For more information about it please refer to online tests results.
Non-latin characters in my data are not retrieved correctly.
Use UTF-8 encoding. To enable it, set Connection.Unicode property to true or include Unicode=true; in connection string. Keep in mind, however, that this affects performance. So it is better to synchronize default client encoding and database objects encoding if possible.
I successfully run illegal SQL script that issues CREATE OR REPLACE PACKAGE... Where is my error?
Errors in CREATE OR REPLACE PACKAGE are considered as warnings in Oracle because PACKAGE can be created with errors. You can get information about warnings using OracleConnection.InfoMessage event.
I work with dates and get different results in Direct and OCI modes.
Direct mode does not consider Oracle client settings. The results would be identical if you set NLS_LANG='AMERICAN....' in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEn (change AMERICA to you real location) or execute statement like this in Direct mode: ALTER SESSION SET NLS_TERRITORY ='AMERICA'
I can't get or pass data through Array type parameter.
Probably you use wrong type of parameter. Consider the following declarations:
TYPE PLSQLTableType IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER; TYPE NESTEDTABLEType1 IS TABLE OF VARCHAR2(20); TYPE NESTEDTABLEType2 IS TABLE OF OBJECTTYPE; TYPE VARRAYTYPE AS VARRAY(3) OF VARCHAR2(20);
Use PLSQLTableType with OracleDbType.VarChar and int types.
Use NESTEDTABLEType1 and NESTEDTABLEType2 with OracleDbType.Table and OracleTable types.
Use VARRAYTYPE with OracleDbType.Array and OracleArray types.
I have a stored procedure that returns a "cursor" parameter. What do I need to do on client side to retrieve this parameter?
You can use OracleCommand with stored procedure call in conjunction with OracleDataAdapter component and fill any DataSet as usual. You can receive OracleCursor value from executed OracleCommand and receive OracleDataReader as described below:
OracleParameter p; ... OracleDataReader r = ((OracleCursor)p.OracleValue).GetDataReader();
You can fill DataSet from any OracleCursor object as follows:
DataSet ds = new DataSet(); cmd.ExecuteNonQuery(); oracleDataAdapter1.Fill(ds, ((OracleCursor)cmd.Parameters["pcur"].OracleValue));
How to connect using dotconnect for Oracle through Oracle instant client?
You have to include path to oci.dll to the first place in environment PATH variable. Put tnsnames.ora to directory where your application is located.
I have an Oracle query with nested subqueries. When a column from the outer query is used in the subquery of level 2 and deeper, I get an error "ORA-00904 - Invalid identifier". However, the same SQL works perfectly on my Oracle 10.2.0.1 instance. What's going on?
This is a known Oracle feature. It does not recognize the fields from the outer query in the subquery. For example, the following query leads to this error:
SELECT "Extent1".DEPTNO AS ID FROM DEPT "Extent1" WHERE EXISTS ( SELECT 1 AS C1 FROM ( SELECT "Extent2".EMPNO AS ID FROM EMP "Extent2" WHERE "Extent1".DEPTNO = "Extent2".DEPTNO ) "Project1")
This behavior was changed in Oracle 10.2.0.1, and these changes were rolled back in the further Oracle versions.
I'm getting "A socket operation encountered a dead network" when trying to connect with Mobile Edition in run time.
Make sure that you have synchronized your device with a workstation because some synchronization tool (e.g., Microsoft ActiveSync or Windows Mobile Device Center) should be used when you work with mobile device or emulator. Before deployment make Connect and Cradle to the emulator you want to use via Device Emulator Manager (the Tools menu in Visual Studio). After cradle the ActiveSync icon in the tray should become green (indication that synchronization is successful). In the case of Windows Mobile Device Center, its Sync Center should return the "Connected" and "Sync completed" statuses.
When deploying application compiled with a trial version to mobile device, I'm getting the "trial period expired" exception. What's wrong?
The possible reason may be that the system date/time of the device is not synchronised with the date/time on your workstation; hence, the problem can be resolved by setting the date/time identical to the one on the workstation.