Search code examples
oracle10goracle11goracleclient

Oracle Instance Client Light (odac 11) and character sets


I am trying to connect to oracle db without full installation of oracle client done on the machine. I found this helpfull post Using the new ODP.Net to access Oracle from C# with simple deployment but when I try it, I am failed on the next exception:

[Oracle.DataAccess.Client.OracleException ORA-12737: Instant Client Light: unsupported server character set %s at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)

at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) ...

I tried to Google it up, but find nothing except "Do not use this character set" suggestions.

I occasionally I am working with NLS_LANG "american_america.US8PC437", but it can be different (client environment) character set.

Do you have any idea how can I extend light instance client with character sets resources?

Thank you!


Solution

  • I had the same problem and google says the solution is 'some_big_oracle_package' installation, but I want to keep this away. So simply unpacked all dll files from ODAC112012Xcopy.zip 32bit (xcopy version ONLY). And it works! So I had to found the mysterious dll that pushed it to the next level. The one & only is

    oraociei11.dll

    On my working-portable solution catalog I have .exe file and 4 dlls:

    • oci.dll,
    • Oracle.DataAccess.dll (version 2.112.1.2),
    • OraOps11w.dll
    • oraociei11.dll

    This stuff works on Win7 x86 & x64 and WinXP x86 (all the systems don't have Oracle or sth installed, pure copy & paste). Notice that oraociei11.dll weighs 120MB! After compression ~40MB

    Tell me if it works for you