Migrating System.Data.OracleClient to Oracle.DataAccess.Client - XSD error

Hi, I'm a newbie using Oracle ODP.NET provider for .NET.
We have a web application that uses XSD to connect to Oracle using the provider System.Data.OracleClient.
We want to migrate from System.Data.OracleClient to Oracle.DataAccess.Client.
Installing and referencing the Oracle.DataAccess.dll all works fine.
Then I changed all the references from System.Data.OracleClient to Oracle.DataAccess.Client and removed the System.Data.OracleClient.dll assembly from the web.config file.
All compiles well, until I run the application, looks like the problem is the parameter use in the XSD file... the error I get is:
Server Error in '/src' Application.
Value does not fall within the expected range.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Value does not fall within the expected range.
Source Error:
Line 8864: global::Oracle.DataAccess.Client.OracleParameter param = new global::Oracle.DataAccess.Client.OracleParameter();
Line 8865: param.ParameterName = "Original_TIPOCOMISIONID";
Line 8866: param.DbType = global::System.Data.DbType.VarNumeric;
Line 8867: param.IsNullable = true;
Line 8868: param.SourceColumn = "TIPOCOMISIONID";
Source File: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\src\4a9afcc3\460b5b6b\App_Code.eljteq62.7.cs Line: 8866
Stack Trace:
[ArgumentException: Value does not fall within the expected range.]
Oracle.DataAccess.Client.OracleParameter.set_DbType(DbType value) +134
dsProductosTableAdapters.SIPC_TIPOCOMISIONTableAdapter.InitAdapter() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\src\4a9afcc3\460b5b6b\App_Code.eljteq62.7.cs:8866
dsProductosTableAdapters.SIPC_TIPOCOMISIONTableAdapter.get_Adapter() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\src\4a9afcc3\460b5b6b\App_Code.eljteq62.7.cs:8797
dsProductosTableAdapters.SIPC_TIPOCOMISIONTableAdapter.GetData() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\src\4a9afcc3\460b5b6b\App_Code.eljteq62.7.cs:8993
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +71
System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +350
System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +29
System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +488
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1247
System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +95
System.Web.UI.WebControls.ListControl.PerformSelect() +34
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +22
System.Web.UI.WebControls.ListControl.OnPreRender(EventArgs e) +18
System.Web.UI.Control.PreRenderRecursiveInternal() +80
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Control.PreRenderRecursiveInternal() +171
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
Version Information: Microsoft .NET Framework Version:2.0.50727.3615; ASP.NET Version:2.0.50727.3614
I'd like some help on how to make the XSD compile with the new provider, Oracle.DataAccess.Client.
Many thanks in advance for any help!
Pieter

MS OracleClient binds parameters by name. ODP.NET binds by position. If you want to change ODP.NET's default parameter binding behavior, set:
OracleCommand.BindByName = true;
Do this for every OracleCommand that binds parameters.

Similar Messages

  • How much faster is Oracle.DataAccess.Client over System.Data.OracleClient ?

    Ok, I can use two differenct data providers in VisualCSharp/.NET:
    1.) MS built-in data provider:
    using System.Data.OracleClient ;
    2.) Oracle ODP.NET data provider:
    using Oracle.DataAccess.Client ;
    How much faster is Oracle over the built-in access provider ?
    Does Oracles ODP use MS basic ADO.NET as underlying layer
    or does it bypass it ?
    What are the other advantages when I use Oracle ODP?
    Is there a side-by-side comparison chart between the two access methods ?

    I would say that it is both for speed and for functionality. The ODP data provider has Oracle specific functionality that is not available via the MS data provider.
    From the ODP.NET page:
    ODP.NET includes many features not available from other .NET drivers, including a native XML data type, the ability to bind array parameters, RAC tuning, and statement caching.

  • Oracle 9i Client and System.Data.OracleClient Problems

    I have an application server that has an ASP.NET webpage that queries an Oracle database on another machine through ODP.NET.
    The app server's machine's OS is Microsoft Windows XP SP2 with IIS and .NET 2.0 Framework installed and configured correctly.
    The following Oracle software is installed (from OUI inventory listing)
    Oracle Services For Microsoft Transaction Server 9.2.0.7.0
    Oracle ODBC Driver 9.2.0.7.0
    Oracle Provider for OLE DB 9.2.0.7.0
    Oracle Objects for OLE 9.2.0.7.0
    Oracle Data Provider for .NET 9.2.0.7.0
    Oracle 9i Client 9.2.0.1.0
    Sun JDK 1.3.1.0.1a
    When the ASP.NET page attempts to connect to the Oracle instance on the remote machine via the Data provider I get the following message...
    System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    Exception Details: System.Exception: System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
    Source Error:
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    <<snipped>>
    I know the connectivity between the client on the app server (SQL*Plus: Release 9.2.0.1.0)
    and the remote database (Oracle Database 10g Enterprise Edition Release 10.2.0.3.0)
    is working since sqlplus sessions connect and the NET Manager tests through Local Service Naming succceed.
    I've tried the "ORACLE_HOME permission changes" solution for Autenticated users as articulated here ....
    http://jasondotnet.spaces.live.com/blog/cns!BD40DBF53845E64F!122.entry
    but the error persists.
    In the list of oracle installed products above, I installed the first 5 (ODP.NET) before the last 2 (Oracle 9i client). Would this matter ? At first I thought perhaps the ODP.NET component didn't "know" about the client since it was installed before there was one on that app server.
    Feeback much appreciated.

    Well I figured it out. I guess...
    1) Uninstalled all Oracle Software Products
    2) Rebooted the machine.
    3) Manually removed C:\oracle\ora92\.
    4) Installed and configured the following
    * Oracle 9i Client 9.2.0.1.0
    5) Installed and configured the following
    * Oracle Services for Microsoft Transaction Server 9.2.0.7.0
    * Oracle ODBC Driver 9.2.0.7.0
    * Oracle Provider for OLE DB 9.2.0.7.0
    * Oracle Objects for OLE 9.2.0.7.0
    * Oracle Data Provider for .NET 9.2.0.7.0
    6) Gave the following accounts Full Control over the ORACLE_HOME directory
    * ASP.NET Machine Account
    * Internet Guest Account
    * Launch IIAS Process Account
    6) iisreset
    Conclusion....
    The order in which Oracle components are installed does matter.

  • System.OutOfMemoryException Oracle.DataAccess.Client.OracleParameter

    Hi , nt
    I am working on a legacy system where the end users reported exception while loading a page. This is developend in ASP.NET 2.0 and Oracle.DataAccess. The exception is not reproducible in any of the staging or development serves, and is not consistent.ie sometime works and sometiem not. The exception is as follows,
    System.OutOfMemoryException: Insufficient memory to continue the execution of the program. at System.Runtime.InteropServices.Marshal.AllocCoTaskMem(Int32 cb) at Oracle.DataAccess.Client.OracleParameter.PreBind_Char() at Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize) at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
    The way it calls in the data access layes are as follows, removed some parameters to just to get flow clear,
    public void GetXXXData    (
          UserCredentials credentials
          , decimal? P_IN_ID
          , string P_IN_TYPE
          , out string[] P_OUT_XX_ID
          , out string[] P_OUT_XX_NAME
         , int? outputArrayLength
         if (outputArrayLength == null)
            outputArrayLength = 3000; 
          OdacCmd cmd = null;   
          P_OUT_XX_ID = null;
          P_OUT_XX_NAME = null;
          cmd = OdacFactory.CreateCommand("PK_XX_QAS1.pr_xx_data_q", credentials);
          cmd.AddParam("P_IN_ID", P_IN_ID);
          cmd.AddParam("P_IN_QUAL_TYPE", P_IN_TYPE);
          IDataParameter param_P_OUT_XX_ID = cmd.AddOutputParameterString("P_OUT_XX_ID", outputArrayLength.Value);
          IDataParameter param_P_OUT_XX_NAME = cmd.AddOutputParameterString("P_OUT_XX_NAME", outputArrayLength.Value);
           cmd.ExecuteNonQuery();
            P_OUT_XX_ID = OdacFactory.GetStringArray(param_P_OUT_XX_ID.Value);
            P_OUT_XX_NAME = OdacFactory.GetStringArray(param_P_OUT_XX_NAME.Value);
    Any help on this is greatly apprecitaed
    -Jyothish George

    What version of the client / odp.net are you using?
    I took your code and pretty much pasted it into Visual Studio Express:
    Module Module1
      Sub Main()
        TestOracle()
        TestMicrosoft()
      End Sub
      Private Sub TestOracle()
        Dim builder As New Oracle.DataAccess.Client.OracleConnectionStringBuilder
        builder.DataSource = "lt10gr2"
        builder.UserID = "scott"
        builder.Password = "tiger"
        Dim oraConn As Oracle.DataAccess.Client.OracleConnection = New Oracle.DataAccess.Client.OracleConnection(builder.ConnectionString)
        Dim oraCMD As New Oracle.DataAccess.Client.OracleCommand("SELECT empno, ename FROM emp", oraConn)
        Dim MyDA As New Oracle.DataAccess.Client.OracleDataAdapter(oraCMD)
        Dim ds As New DataSet
        MyDA.Fill(ds)
      End Sub
      Private Sub TestMicrosoft()
        Dim builder As New System.Data.OracleClient.OracleConnectionStringBuilder
        builder.DataSource = "lt10gr2"
        builder.UserID = "scott"
        builder.Password = "tiger"
        Dim oraConn As System.Data.OracleClient.OracleConnection = New System.Data.OracleClient.OracleConnection(builder.ConnectionString)
        Dim oraCMD As New System.Data.OracleClient.OracleCommand("SELECT empno, ename FROM emp", oraConn)
        Dim MyDA As New System.Data.OracleClient.OracleDataAdapter(oraCMD)
        Dim ds As New DataSet
        MyDA.Fill(ds)
      End Sub
    End ModuleIt ran with no errors on my system.
    C:\>gacutil /l | find "Oracle.DataAccess"
      Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86- Mark

  • Oracle.DataAccess.Client.OracleConnection vs. System...

    I am wondering why this code:
    Dim builder As New Oracle.DataAccess.Client.OracleConnectionStringBuilder
    builder.DataSource = "datasourcename"
    builder.UserID = "user"
    builder.Password = "pass"
    Dim oraConn As Oracle.DataAccess.Client.OracleConnection = New Oracle.DataAccess.Client.OracleConnection(builder.ConnectionString)
    Dim oraCMD As New Oracle.DataAccess.Client.OracleCommand("SELECT field1, field2 FROM table", oraConn)
    Dim MyDA As New Oracle.DataAccess.Client.OracleDataAdapter(oraCMD)
    Dim ds As New DataSet
    MyDA.Fill(ds)
    DataGrid1.DataSource = ds.Tables(0)
    throws a "Object reference not set to an instance of an object." at the line "MyDA.Fill(ds)"
    and this code runs fine:
    Dim builder As New System.Data.OracleClient.OracleConnectionStringBuilder
    builder.DataSource = "datasourcename"
    builder.UserID = "user"
    builder.Password = "pass"
    Dim oraConn As System.Data.OracleClient.OracleConnection = New System.Data.OracleClient.OracleConnection(builder.ConnectionString)
    Dim oraCMD As New System.Data.OracleClient.OracleCommand("SELECT field1, field2 FROM table", oraConn)
    Dim MyDA As New System.Data.OracleClient.OracleDataAdapter(oraCMD)
    Dim ds As New DataSet
    MyDA.Fill(ds)
    DataGrid1.DataSource = ds.Tables(0)
    Any thoughts?

    What version of the client / odp.net are you using?
    I took your code and pretty much pasted it into Visual Studio Express:
    Module Module1
      Sub Main()
        TestOracle()
        TestMicrosoft()
      End Sub
      Private Sub TestOracle()
        Dim builder As New Oracle.DataAccess.Client.OracleConnectionStringBuilder
        builder.DataSource = "lt10gr2"
        builder.UserID = "scott"
        builder.Password = "tiger"
        Dim oraConn As Oracle.DataAccess.Client.OracleConnection = New Oracle.DataAccess.Client.OracleConnection(builder.ConnectionString)
        Dim oraCMD As New Oracle.DataAccess.Client.OracleCommand("SELECT empno, ename FROM emp", oraConn)
        Dim MyDA As New Oracle.DataAccess.Client.OracleDataAdapter(oraCMD)
        Dim ds As New DataSet
        MyDA.Fill(ds)
      End Sub
      Private Sub TestMicrosoft()
        Dim builder As New System.Data.OracleClient.OracleConnectionStringBuilder
        builder.DataSource = "lt10gr2"
        builder.UserID = "scott"
        builder.Password = "tiger"
        Dim oraConn As System.Data.OracleClient.OracleConnection = New System.Data.OracleClient.OracleConnection(builder.ConnectionString)
        Dim oraCMD As New System.Data.OracleClient.OracleCommand("SELECT empno, ename FROM emp", oraConn)
        Dim MyDA As New System.Data.OracleClient.OracleDataAdapter(oraCMD)
        Dim ds As New DataSet
        MyDA.Fill(ds)
      End Sub
    End ModuleIt ran with no errors on my system.
    C:\>gacutil /l | find "Oracle.DataAccess"
      Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86- Mark

  • System.AccessViolationException from Oracle.DataAccess.Client.OpsSql.Execut

    We support a VB.NET application which uses Oracle Data Access Components (ODAC) 10.2.0.2.21 to access an Oracle 11g database. The database is on another server, so from time to time application loses its database connection because of comms failures. To cater for this eventuality it checks for a valid connection before every database call and reopens the database if it can’t find one. This works, but subsequent database calls fail and return a System.AccessViolationException.
    Here is an extract from the trace.
    2010-09-08 17:08:42,284 ERROR - Database connection lost. Oracle.DataAccess.Client.OracleException ORA-03135: connection lost contact
    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
    at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
    2010-09-08 17:08:42,377 [5] ERROR xxxxxxxx [(null)] - Database connection established.
    2010-09-08 17:08:42,440 [5] ERROR xxxxxxxx [(null)] - ERROR - error in xxxxxxxx. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
    at Oracle.DataAccess.Client.OpsSql.ExecuteNonQuery(IntPtr opsConCtx, IntPtr& opsErrCtx, IntPtr& opsSqlCtx, IntPtr& opsDacCtx, IntPtr opsSubscrCtx, Int32& isSubscrRegistered, OpoSqlValCtx*& pOpoSqlValCtx, String pCommandText, IntPtr& pUTF8CommandText, IntPtr[] pOpoPrmValCtx, String[] ppOpoPrmRefCtx, OpoMetValCtx*& pOpoMetValCtx, Int32 prmCnt)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
    Has anyone come across this before? Any help will be gratefully received

    Try posting this to the ODP.NET forum.
    You might need to flush out the connection pool, but they can help you with that.

  • How to connect oracle and c# using namespace System.Data.OracleClient

    Hi!
    I am using Microsoft Visual Studio 2005 and Orange for oracle version 4.
    I've been given a task, show the table of the database using datagrid.
    but first I have to connect to the database using namespace System.Data.OracleClient.
    What should I do? I am totally new in c# and oracle.
    Thanks in advance. :)

    Hi!
    I am using Microsoft Visual Studio 2005 and Orange for oracle version 4.
    I've been given a task, show the table of the database using datagrid.
    but first I have to connect to the database using namespace System.Data.OracleClient.
    What should I do? I am totally new in c# and oracle.
    Thanks in advance. :)

  • Oracle.DataAccess.Client.OracleException ORA-29875 - ODCIINDEXINSERT error

    Hi,
    We are migrating data into our GIS repository using an application witch uses ODP fro .NET.
    Yesterday, when we were importing parcels from a certain geographic zone we have got this error:
    4430528 [4028] ERROR DBCommand - Error Executing Command [PARCELA.WRITE]
    Parameters:
    ResValue: [Int32]
    POP_ID: [Int64]35397
    PAR_ID: [Varchar2]
    BLO_ID: [Decimal]836170
    PAR_NUM: [Varchar2]1480296132900
    geometry: [Blob]System.Byte[]
    PAR_PON_ETI: [Blob]System.Byte[]
    Oracle.DataAccess.Client.OracleException ORA-29875: failed in the execution of t
    he ODCIINDEXINSERT routine
    ORA-29400: data cartridge error
    ORA-14450: attempt to access a transactional temp table already in use
    ORA-06512: at "MDSYS.SDO_IDX", line 161
    ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 332
    ORA-06512: at "SIG.PARCELA", line 354
    ORA-06512: at "SIG.PARCELA", line 479
    ORA-06512: at line 1 at pt.inga.db.Command.Execute(IDbConnection connection,
    IDbCommand command, Boolean& closeConnection) in C:\code-base\inga\isig\src-1.0.
    0.2\pt\inga\db\Command.cs:line 234
    at pt.inga.db.Command.Execute(IDbConnection connection, OracleCommand command
    , IDataRecord parentRecord, IDataRecord dataRecord, IOperationData operation, Bo
    olean& closeConnection) in C:\code-base\inga\isig\src-1.0.0.2\pt\inga\db\Command
    .cs:line 334
    The error seems to be related with temporary tables manipulation, does it?
    Has we didn’t know what to do we try to import those parcels after dropping a spatial index over the parcel’s table and we succeed with the import.
    Those any one has any ideas about this?
    And about spatial indexes internals?
    Thanks in advance,
    Vitor
    Versions:
    Client:          Oracle10g Data Provider for .NET 10.1.0.2.0
    Client’s OS:     Windows 2003 server
    Server:          Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    Server’s OS:     AIX 5.2.0.0

    Vitor,
    Yes, Oracle uses temporary tables as part of inserts/
    deletes/updates on a table with a spatial index.
    Temporary table usage internally should not
    have any issues and we are not sure why this problem
    surfaces. Opening a TAR on this with a simplified
    testcase (and all config details: # of concurrent
    sessions etc.) might help in a better understanding/
    resolution of this issue.
    In the meanwhile, as a workaround, you can do the
    following:
    - drop the spatial index
    - migrate (insert) the data into the table from the
    application
    - recreate the spatial index
    This will avoid the temporary table issue at hand.
    - Ravi.

  • Oracle.DataAccess.Client - DbProviderFactories.GetFactory

    Hello
    I was inspired by this article http://www.oracle.com/technology/oramag/oracle/06-winsupp/win06odp.html
    And been trying to switch my project over from "System.Data.OracleClient" (seems like it's not friendly with TransactionScope) to ODP.NET "Oracle.DataAccess.Client". I failed from get go:
    Code:
    DbProviderFactory oDbFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
    Keep getting System.Configuration.ConfigurationErrorsException saying:
    +"Failed to find or load the registered .Net Framework Data Provider."+
    In my futile attempt to resolve this:
    STEP 1: In machine.config
    * Under \\configuration\configSections\, *add:
    <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    * Under ..\system.data\DbProviderFactories\, *add:
    <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    STEP 2: I checked my assembly cache it's there:
    Code:
    D:\Program Files\Microsoft Visual Studio 9.0\VC&gt;gacutil /l | findstr Oracle
    System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77
    a5c561934e089, processorArchitecture=x86
    CoreLab.Oracle, Version=3.50.12.0, Culture=neutral, PublicKeyToken=09af7300eec
    +23701, processorArchitecture=MSIL+
    Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f
    +429c47342+
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=de, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=es, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=fr, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=it, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=ja, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=ko, PublicKeyToken=89
    b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=pt-BR, PublicKeyToken
    +=89b483f429c47342+
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=zh-CHS, PublicKeyToke
    n=89b483f429c47342
    Oracle.DataAccess.resources, Version=10.2.0.100, Culture=zh-CHT, PublicKeyToke
    n=89b483f429c47342
    Policy.9.2.Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyTo
    ken=89b483f429c47342
    See, I'm sure the assembly has been installed and in machine.config I used the right key/version. Weird thing is, Red Gate's reflector won't allow me to "Open" (from Cache) the dll, this prevented me to check if there exists "Oracle.DataAccess.Client.OracleClientFactory" within the assembly. So I select "Copy Local" and examined the dll from "Red Gates Reflector". There's no "Oracle.DataAccess.Client.OracleClientFactory" in the dll ???
    RedGates Reflector - Screencap:
    http://www.codeguru.com/forum/showthread.php?p=1831221#post1831221
    STEP 3. Somebody advised to check and make sure "msvcr71.dll" is found under "ORACLE_HOME\bin" and if not copy from "D:\WINDOWS\system32". I did, it's ALREADY there.
    REF:
    http://www.oracle.com/technology/ora.../win06odp.html
    http://social.msdn.microsoft.com/For...7-92c63ac82144
    http://forums.oracle.com/forums/thre...89702�
    Edited by: devvvy on Apr 9, 2009 2:57 AM

    Thanks just installed from http://www.oracle.com/technology/software/tech/dotnet/utilsoft.html
    It seems version is "2.111.6.20" - from machine.config there's a new line
    <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    i added reference to it from Visual Studio. It's working now.
    There were two options: one for client, the other for server. I don't understand what it means but stick to "Client" which was the default. Is this okay?
    At the end there was a reminder "Run Oracle Providers for ASP.NET SQL scripts located in D:\OracleODPNET\ASP.NET\SQL directory."
    Anyway, I'm verrrry glad this is working now many thanks!!! (I feel like 10 years older)

  • Oracle.DataAccess.Client stored procedure ORA-01403

    Hello,
    Microsoft announced that System.Data.OracleClient is deprecated and will be no more supported so I try to use the driver Oracle.DataAccess.Client after having installed ODP.
    It works fine except for stored procedures.
    After calling a stored procedure that increases a value in a column I meet this error :
    ORA-01403: no data found
    ORA-06512: at "XXXXX.MY_FUNCTION", line 15
    ORA-06512: at line 1
    Oracle Data Provider for .NET
    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, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
    at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
    The same function worked very well during several years with OracleClient !
    Does any body has an idea ?
    Best regards
    Alan

    Hello,
    I had the solution by an other forum.
    It's necessary to define the property BindByName at true.
    The driver OracleClient did that by default not the driver DataAccess !
    Best regards

  • Oracle.DataAccess.Client.OracleException: ORA-1031: insufficient privileges

    Hi,
    I am using Visual Studio 2003. I am creating a ASP.NET Web Application NOT Windows Application.
    I logged into Oracle as a DBA, but I got this message.
    I wasn't sure if I missed anything when working on the Web.
    Thanks for your help.
    Luan

    Hi Chris,
    Thank you so much for your help.
    Yes, I use oracle explorer. Sorry, the code is kind of long. Here is the code:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    namespace WebBank
         /// <summary>
         /// Summary description for WebForm1.
         /// </summary>
         public class WebForm1 : System.Web.UI.Page
              protected Oracle.DataAccess.Client.OracleDataAdapter oracleDataAdapter1;
              protected Oracle.DataAccess.Client.OracleCommand oracleCommand1;
              protected Oracle.DataAccess.Client.OracleConnection oracleConnection1;
              protected System.Web.UI.WebControls.Button btnOK;
              protected System.Web.UI.WebControls.DataGrid DataGrid1;
              private void Page_Load(object sender, System.EventArgs e)
                   // Put user code to initialize the page here
                   //DataSet ds = new DataSet();
                   //oracleDataAdapter1.Fill(ds);
                   //DataGrid1.DataSource = ds.Tables[0];
              #region Web Form Designer generated code
              override protected void OnInit(EventArgs e)
                   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                   InitializeComponent();
                   base.OnInit(e);
                   DataSet ds = new DataSet();
                   oracleDataAdapter1.Fill(ds);
                   DataGrid1.DataSource = ds.Tables[0];
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>
              private void InitializeComponent()
                   this.oracleDataAdapter1 = new Oracle.DataAccess.Client.OracleDataAdapter();
                   this.oracleCommand1 = new Oracle.DataAccess.Client.OracleCommand();
                   this.oracleConnection1 = new Oracle.DataAccess.Client.OracleConnection();
                   // oracleDataAdapter1
                   this.oracleDataAdapter1.SelectCommand = this.oracleCommand1;
                   this.oracleDataAdapter1.RowUpdated += new Oracle.DataAccess.Client.OracleRowUpdatedEventHandler(this.oracleDataAdapter1_RowUpdated);
                   // oracleCommand1
                   this.oracleCommand1.CommandText = "SELECT * FROM SYSTEM.CUSTOMER";
                   this.oracleCommand1.Connection = this.oracleConnection1;
                   // oracleConnection1
                   this.oracleConnection1.ConnectionString = "User Id=system;Data Source=TESTDB;Password=passwd;Persist Security Info=true;";
                   this.oracleConnection1.InfoMessage += new Oracle.DataAccess.Client.OracleInfoMessageEventHandler(this.oracleConnection1_InfoMessage);
                   this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
                   this.Load += new System.EventHandler(this.Page_Load);
              #endregion
              private void oracleConnection1_InfoMessage(object sender, Oracle.DataAccess.Client.OracleInfoMessageEventArgs eventArgs)
              private void oracleDataAdapter1_RowUpdated(object sender, Oracle.DataAccess.Client.OracleRowUpdatedEventArgs e)
              private void btnOK_Click(object sender, System.EventArgs e)
                   DataSet ds = new DataSet();
                   oracleDataAdapter1.Fill(ds);
                   DataGrid1.DataSource = ds.Tables[0];

  • Oracle.DataAccess.Client.OracleConnection

    I have been reading for hours and just cant seem to make this work. I have a window app that used the ORACLEDATAACESS.dll it works great on the pc. i made the APP but when i try to redistribute i get this nasty message. I read from these forums that i should install the ODP.net net on the computer that will get the installation and i have done that but i cant see to get anywhere. Can someone please give me a tip and point out the obvious i just dont know what to do anymore. t
    System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException The provider is not compatible with the version of Oracle client at Oracle.DataAccess.Client.OracleInit.Initialize()
    at Oracle.DataAccess.Client.OracleConnection..cctor()
    --- End of inner exception stack trace ---
    at Oracle.DataAccess.Client.OracleConnection.Dispose(Boolean disposing)
    at System.ComponentModel.Component.Finalize()
    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    Notepad
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/JAM/My%20Notepad/Notepad.exe
    Microsoft.VisualBasic
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    System.Runtime.Remoting
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    Oracle.DataAccess
    Assembly Version: 2.111.7.10
    Win32 Version: 2.111.7.10
    CodeBase: file:///C:/Program%20Files/JAM/My%20Notepad/Oracle.DataAccess.DLL
    System.Data
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
    System.Transactions
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.
    For example:
    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>
    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

    Oh interesting. I imagine there's a lot of ways that issue could crop up. Thanks!
    I am driving myself completely out of my mind having tried to move a "solution" from one computer
    to another. That is not a nobrainer. I ran into an issue on my home computer that defied all efforts to
    stop it (the cursed varchar columns) so I decided to give up and do the development at work. But the project has not liked the
    move. That is such an issue for an faq: how to design your project and whatever so that it can be
    moved from one development location to another, one database to another, and then,
    how to deploy it. And yeah now that you mention it differences in drive letters might well be a
    factor here. :-(

  • DBProviderFactories.GetFactory("Oracle.DataAccess.Client") very slow

    The call to System.Data.Common.DBProvidersFactories.GetFactory("Oracle.DataAccess.Client") is taking over 2 minutes to return on my computer. By comparison, calls to GetFactory() for the System.Data.SqlClient and IBM.Data.DB2 takes less than a second.
    Even more strange, the same call is very fast if I am running the code inside of the VS2010 debugger.
    ODAC version 11.2.0.1.2 (32bit version)
    Windows 7 64 bit
    .NET 3.5 SP1
    Oracle server - not relevant since test pgm is not connecting to a serve.
    Code developed with VS 2010.
    Test pgm built with:
    - Target CPU=32 (so app runs as 32bit mode, instead of 64)
    - Target Framework = .NET 3.5 SP1
    The call has not always been this slow. I have been running with ODAC 11.2.0.1.2 since it's release. But, IIRC, the slowness just started several weeks ago.
    Below is the test pgm:
    Imports System.Configuration
    Imports System.Data.Common
    Module Module1
        Sub Main()
            CreateFactory("Oracle.DataAccess.Client")
            CreateFactory("System.Data.SqlClient")
            CreateFactory("IBM.Data.DB2")
        End Sub
        Sub CreateFactory(ByVal providerName As String)
            Dim sw = New Stopwatch
            sw.Start()
            Dim factory = DbProviderFactories.GetFactory(providerName)
            sw.Stop()
            If factory Is Nothing Then
                Throw New Exception(String.Format("DbProviderFactories.GetFactory({0}) failed", providerName))
            End If
            Console.WriteLine("DbProviderFactories.GetFactory({0}) call took {1} secs", providerName, sw.Elapsed.TotalSeconds)
        End Sub
    End ModuleThe output I get is:
    DbProviderFactories.GetFactory(Oracle.DataAccess.Client) call took 130.1584958 secs
    DbProviderFactories.GetFactory(System.Data.SqlClient) call took 0.0001462 secs
    DbProviderFactories.GetFactory(IBM.Data.DB2) call took 0.1252213 secs
    Please let me know if you need any more information. All help is appreciated.
    Jim

    As I mentioned before, if I loaded the DBProviderFactory object, for the IBM.Data.DB2 provider, loading the Oracle.DataAccesss.Client provider ran quickly. The IBM.Data.DB2 provider always using a distributed transaction to communicate with the database. So, my guess is that the IBM DBProviderFactory was doing work to prepare for a distributed transaction. And this prep work allows the Oracle DBProviderFactory to run much faster.
    So to test my theory, I created a TransactionScope object, before creating the Oracle DBProviderFactory. See new code below:
    <pre>
    Sub Main()
    Using ts = New Transactions.TransactionScope()
    CreateFactory("Oracle.DataAccess.Client")
    End Using
    End Sub
    Sub CreateFactory(ByVal providerName As String)
    Dim sw = New Stopwatch
    sw.Start()
    Dim factory = DbProviderFactories.GetFactory(providerName)
    sw.Stop()
    If factory Is Nothing Then
    Throw New Exception(String.Format("DbProviderFactories.GetFactory({0}) failed", providerName))
    End If
    Console.WriteLine("DbProviderFactories.GetFactory({0}) call took {1} secs", providerName, sw.Elapsed.TotalSeconds)
    End Sub
    </pre>
    And this was the result:
    DbProviderFactories.GetFactory(Oracle.DataAccess.Client) call took 0.1925129 sec
    a dramatic speedup.
    Is this expected behavior? More importantly, is there a fix to make loading the Oracle DbProviderFactory faster without requiring the creation of a TransactionScope object?
    Thanks,
    Jim
    Edited by: thompkin on Nov 18, 2010 10:55 AM

  • Type initializer for 'Oracle.DataAccess.Client.CThreadPool' threw an excep.

    Hi all,
    I have a .NET application which save data in an oracle database (about 2000 database read / write each day).
    Every thing works fine since few years...
    However, yesterday, one of my client got this error :
    System.Runtime.InteropServices.SEHException: External component has thrown an exception.
    at Oracle.DataAccess.Client.CThreadPool..cctor()
    The type initializer for 'Oracle.DataAccess.Client.CThreadPool' threw an exception.
    at Oracle.DataAccess.Client.CThreadPool.SetMaxThreads(UInt32 MaxWorkerThreads, UInt32 MaxIOCompletionThreads)
    at Oracle.DataAccess.Client.OracleCommand.set_CommandTimeout(Int32 value)
    Any ideas ?
    Regards.

    Hi,
    thanks for the answer. Yes the Inner exception returns "The provider is not compatible with the version of Oracle client".
    Could it be the Oracle Client Version? I just noticed that on that machine there is the Oracle Client version 11.1.

  • Oracle.DataAccess.Client如何处理xmltype字段

    c# vs2012 windows7 oracle11g服务端客户端字符集【SIMPLIFIED CHINESE_CHINA.US7ASCII】
    原本是想解决 XMLTYPE字段里面中文乱码的问题的,使用datareader里面的中文全变成“?”,
    现在想用Oracle.DataAccess.Client处理xmltype字段,网上找了方法,但是会报 ORA-06553:PLS-306 的错
    using Oracle.DataAccess;
    using Oracle.DataAccess.Types;
    using Oracle.DataAccess.Client;
    string conString = "Data Source =testascii;Persist Security Info=True;User ID=common;Password=common";
    XmlDocument xmlDoc = new XmlDocument();
    string strProperty = @"<root>钓鱼岛是中国的</root>";
    xmlDoc.LoadXml(strProperty);
    Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection(conString);
    con.Open();
    OracleXmlType cxml = new OracleXmlType(con,strProperty);
    //OracleXmlType cxml = new OracleXmlType(con, xmlDoc);
    Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand();
    cmd.Connection = con;
    cmd.CommandText = @"insert into d_test values(:nvar,SYS.XMLType(:xml))";
    //Oracle.DataAccess.Client.OracleParameter p1 = new Oracle.DataAccess.Client.OracleParameter("nvar",OracleDbType.NVarchar2);
    //Oracle.DataAccess.Client.OracleParameter p2 = new Oracle.DataAccess.Client.OracleParameter("xml", OracleDbType.XmlType);
    //p1.Value = DateTime.Now.ToLongDateString();
    //p2.Value = cxml;
    cmd.Parameters.Add("nvar", OracleDbType.NVarchar2).Value = DateTime.Now.ToLongDateString();
    cmd.Parameters.Add("xml", OracleDbType.XmlType).Value = cxml;
    //cmd.Parameters.Add(p1);
    //cmd.Parameters.Add(p2);
    try
    int count = cmd.ExecuteNonQuery();
    if (count >= 1)
    MessageBox.Show("ok");
    else
    MessageBox.Show("shit");
    catch (System.Exception ex)
    MessageBox.Show(ex.Message);
    con.Close();
    这种写法会报 ORA-06553:PLS-306: XMLTYPE..这个错误
    这个如何解决呀

    US7ASCII
    U.S. 7-bit ASCII
    US
    7
    ASCII
    ASCII字符集是不包括中文的, 你使用的 NVARCHAR是 NATIONAL CHARACTER SET 的CHAR类型

Maybe you are looking for