When attempting to connect to or exchange data with an Oracle data source with ModelBuilder, you may encounter a problem. This is a guide to address some of the related problems you may encounter:
"Can't convert from String to Double"
"Could not load file or assembly Bentley.EngineeringContent.Storage.Oracle.Support.dll"
"Could not load file or assembly Bentley.Geospatial.Support.dll"
"ORA-12514: TNS: Listener does not currently know of a service requested in connect descriptor"
"A supported Oracle client installation was not found on this system ..."
Here are some basic things to check first:
1) First, make sure you have the Oracle 11g client installed, matching the "bitness" of the version of the product you're using. You can find this under Help > About. In the lower-left corner after the version number, you will see "32-bit" or "64-bit". If you see neither, you're using a 32-bit version. If you can confirm that the Oracle 11 client is installed, make sure you have the latest version and/or cumulative patch set applied. Contact technical support for assistance with finding the latest cumulative patch set.
Note: Oracle 19c support is available in version 10.03.04.XX and greater.
2) To ensure connectivity, try to connect to the database using SQLDeveloper or SQLPlus before using ModelBuilder.
3) If you are using a Civil product, such as OpenRoads Designer, Oracle data source connections will be fully supported starting with version 10.10.XX.XX. In the meantime, please contact Technical Support.
4) If you are using service name, check and ensure that there are no problems with your tnsnames.ora file. On Windows 7, 8 or 10, the default location is C:\app\<User.Name>\product\11.2.0\client_1\network\admin
In here, you would see something similar to the below to define the service name:
TEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = exampledb.bentley.com)(PORT = 1521))(CONNECT_DATA = (SID = orcl)))
Then, in the Modelbuilder Oracle Connection dialog, you would enter that service name. Using the example above, it would look something like this:
5) If the tsnames.ora file does not appear to be working, you can try entering the entire connection string in the "Service" field. For example:
(DESCRIPTION=(ADDRESS_LIST =(ADDRESS =(COMMUNITY = TCP)(PROTOCOL = TCP)(HOST = exampledb.bentley.com)(PORT = 1521)))(CONNECT_DATA = (SID = ORCL)))
When using an Oracle database in ModelBuilder, you may notice some of the tables are not available.
This can occur if the primary key is not enabled in the Oracle database file. This is required to use an Oracle database file in ModelBuilder.
When using an Oracle file as the Data Source Type in ModelBuilder one of the following error occurs:
"Could not load file or assembly Bentley.EngineeringContent.Storage.Oracle.Support.dll ..."
This has been known to occur in some cases due to the operating system regional / language options. Specifically the decimal separator when using a region such as Italy. This will be addressed in a future version (reference defect # 382348)
This error can occur when updating an existing model via ModelBuilder, if it has multiple duplicate GIS-IDs listed in the model file. See: Error when updating model with ModelBuilder: Index was outside the bounds of the array.
To work with Oracle 19c data sources, you will need to use version 10.03.04.XX or greater.