1

I've followed this post and it's not working. Can someone tell me what else to check?

Steps I followed:

  1. I added dll's from my current install of Oracle (11gR2_x32) to the root of my project. I did not use the basic-lite as the post stated but I assumed that the dll's would be the same, right?

    • oci.dll
    • ociw32.dll
    • Oracle.DataAccess.DLL
    • orannzsbb11.dll
    • oraocci11.dll
    • oraociicus11.dll
    • OraOps11w.dll
  2. Selected each dll within my project and set the 'Build Action' to 'Content' and 'Copy to Output Directory' to 'Copy Always'

  3. Added a reference to Oracle.DataAccess

  4. Added 'Imports Oracle.DataAccess.Client' to my vb code.

The code works fine but it still requires the user to install Oracle. My intent was to not have them install oracle. I verified that when they install my program all the dll's are present in the program folder.

What else can I check?

Community
  • 1
  • 1
malt_man
  • 403
  • 1
  • 6
  • 21

1 Answers1

1

The code works fine but it still requires the user to install Oracle. My intent was to not have them install oracle.

To my knowledge, there is no truly "embedded" Oracle and you cannot avoid installing the Oracle database server. If you really need an embedded database, there are several good alternatives, including but not limited to: SQLite, MS SQL Server Compact or LocalDB1, Interbase/Firebird etc...

Few years back, Oracle ran a licensing program for companies, where you could integrate the Oracle setup into your own setup and make it "invisible" to users, but this would still install the full Oracle server. That's how earlier versions of PTC Pro/INTRALINK installed for example - you didn't need a separate Oracle installation. I don't know whether this licensing program is still available, but even if it were, you are probably looking at a very significant financial investment.

BTW, Fully Managed .NET provider for Oracle is currently in beta - this will ease the client deployment even further and eliminate 32-bit vs 64-bit mismatches.


1 LocalDB is not technically "embedded" as in "in-process", but that probably won't make a difference to your end users.

Branko Dimitrijevic
  • 50,809
  • 10
  • 93
  • 167
  • no, I think you're misinterpreting my question. I'm not trying to embed a database in my program, I'm trying to access an already existing database (external to my program). – malt_man Oct 11 '12 at 19:18
  • @malt_man Then user doesn't need to "install Oracle". It should work as it is. The typical reason for **not** working is if you build for "Any CPU" and the user's machine happens to be of different "bitness" than yours. You should always build "x86" or "x64" (or both) and distribute the separate set of native Oracle DLLs with each. As I already mentioned, fully managed provider should eventually resolve that. Also, what kind of connection string are you using? Does it depend on tnsnames.ora and if yes do you distribute it too? Do your users get any error message? – Branko Dimitrijevic Oct 11 '12 at 23:14