ORA-12154 using Oracle.DataAccess.Client

I am experiencing an ORA-12154 exception when accessing a remote Oracle database using ADO.NET called from c# code running on a Windows 2003 system. The code functions correctly on our internal (remote) database using the Oracle XE 10.2 Client. At the customer site with Oracle 10.1 Client the same code generates the 12154 error.
At the customer site, I can connect without errors with the customer's connection information (Hostname, port, SID) using Navicat 8 Lite for Oracle and SQL-Plus. I can also connect with no problems using ODBC (except I can't use ODBC because it causes other problems when accessed from ASP.NET).
The connection string is correctly formulated i.e. "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myServerName)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myServiceName)));User Id=myUserName;Password=myPassword"
When I run TNSPING on the client's system I get the following result (server and SID name altered for confidentiality reasons):
Adapter TNSNAMES zur Auflösung des Alias benutzt
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myServerName)(PORT = 1521)) (CONNECT_DATA = (SERVER = dedicated) (SERVICE_NAME = myServiceName)))
OK (10 ms)
I can't determine anything about the listener since I don't have access to teh datbase server.
To summarize, my .net code fails when I use the Oracle Data Access Client, but works fine with ODBC, and Navicat, SQL Plus also work fine.
Can anyone suggest the cause and possible solution for this problem? - thanks in advance for any help :)

user8609285 wrote:
I am experiencing an ORA-12154 exception when accessing a remote Oracle database using ADO.NET called from c# code running on a Windows 2003 system. The code functions correctly on our internal (remote) database using the Oracle XE 10.2 Client. At the customer site with Oracle 10.1 Client the same code generates the 12154 error.
At the customer site, I can connect without errors with the customer's connection information (Hostname, port, SID) using Navicat 8 Lite for Oracle and SQL-Plus. I can also connect with no problems using ODBC (except I can't use ODBC because it causes other problems when accessed from ASP.NET).
The connection string is correctly formulated i.e. "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myServerName)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myServiceName)));User Id=myUserName;Password=myPassword"
When I run TNSPING on the client's system I get the following result (server and SID name altered for confidentiality reasons):
Adapter TNSNAMES zur Auflösung des Alias benutzt
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myServerName)(PORT = 1521)) (CONNECT_DATA = (SERVER = dedicated) (SERVICE_NAME = myServiceName)))
OK (10 ms)
I can't determine anything about the listener since I don't have access to teh datbase server.
To summarize, my .net code fails when I use the Oracle Data Access Client, but works fine with ODBC, and Navicat, SQL Plus also work fine.
Can anyone suggest the cause and possible solution for this problem? - thanks in advance for any help :)ora-12154 means one thing and one thing only.
[oracle@vmlnx01 ~]$ oerr ora 12154
12154, 00000, "TNS:could not resolve the connect identifier specified"
// *Cause:  A connection to a database or other service was requested using
// a connect identifier, and the connect identifier specified could not
// be resolved into a connect descriptor using one of the naming methods
// configured. For example, if the type of connect identifier used was a
// net service name then the net service name could not be found in a
// naming method repository, or the repository could not be
// located or reached.
// *Action:
//   - If you are using local naming (TNSNAMES.ORA file):
//      - Make sure that "TNSNAMES" is listed as one of the values of the
//        NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
//        (SQLNET.ORA)
//      - Verify that a TNSNAMES.ORA file exists and is in the proper
//        directory and is accessible.
//      - Check that the net service name used as the connect identifier
//        exists in the TNSNAMES.ORA file.
//      - Make sure there are no syntax errors anywhere in the TNSNAMES.ORA
//        file.  Look for unmatched parentheses or stray characters. Errors
//        in a TNSNAMES.ORA file may make it unusable.
//   - If you are using directory naming:
//      - Verify that "LDAP" is listed as one of the values of the
//        NAMES.DIRETORY_PATH parameter in the Oracle Net profile
//        (SQLNET.ORA).
//      - Verify that the LDAP directory server is up and that it is
//        accessible.
//      - Verify that the net service name or database name used as the
//        connect identifier is configured in the directory.
//      - Verify that the default context being used is correct by
//        specifying a fully qualified net service name or a full LDAP DN
//        as the connect identifier
//   - If you are using easy connect naming:
//      - Verify that "EZCONNECT" is listed as one of the values of the
//        NAMES.DIRETORY_PATH parameter in the Oracle Net profile
//        (SQLNET.ORA).
//      - Make sure the host, port and service name specified
//        are correct.
//      - Try enclosing the connect identifier in quote marks.
//   See the Oracle Net Services Administrators Guide or the Oracle
//   operating system specific guide for more information on naming.Bottom line is the net service name you presented is not found in the tnsnames that was being used. Which may not be the tnsnames you think was being used.
And since it never resolved that on the client side, there is no need to look to anything (like the listener) on the host side. You never got out of your driveway, so there is no need to see if the entrance to your destination is open.

Similar Messages

  • C# program wont work on other machines using Oracle.DataAccess.Client

    The program works fine on the PC that i am developing on i have installed the Visual studio tools from http://www.oracle.com/technology/software/tech/dotnet/utilsoft.html.
    at the start of my code i am using the code "using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider" and i have added the oracle data provider in the reference list.
    When my program is complied it includes Oracle.DataAccess.dll in the older with the exe
    but on any pc i run it on other than mine i get the error shown below (i cant read the error as my friends pc has vista on and crashes the program when he clicked details)
    !http://i41.tinypic.com/710b9w.jpg!
    Edited by: user3473837 on Mar 21, 2009 11:43 AM

    Hi,
    That error occurs when you dont have the right version of Oracle client software installed to use the version of ODP the app loaded.
    What version of ODP was the app compiled with, what version of ODP does the computer you moved the app to have, what version of Oracle client does that computer have, and did you deploy oracle.dataacess along with your app (you shouldnt, unless you're deploying all the files it needs too -- ie, the instant client install).
    Does the computer you moved the app to already have Oracle client? It needs to.
    This might help:
    11g ODP.NET 32bit/64bit minimum requirements to install to a client machine
    Hope it helps,
    Greg
    Edited by: gdarling on Mar 21, 2009 12:56 PM
    Also, for future reference, the ODP forum is [over here|http://forums.oracle.com/forums/forum.jspa?forumID=146&start=0].

  • Setting the role using Oracle.DataAccess.Client.

    I have a user role and password attaching to oracle 10 that I need to set. Could not find where to set it.

    Hi,
    You'd set it the same way you do for a sqlplus session, for example. Use the SET ROLE command, which you can execute via an OracleCommand object and ExecuteNonQuery().
    Hope it helps,
    Greg

  • 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类型

  • Oracle.DataAccess.Client not found[SOLVED]

    Hello,
    I am trying to run a stored procedure using C# and I need to use the Oracle.DataAccess.Client but when i enter
    "using Oracle.DataAccess.Client;" visual studio throws the error:
    Error 1 The type or namespace name 'Oracle' could not be found (are you missing a using directive or an assembly reference?) P:\data\ActionItemLog\ActionItemLog\updateComment.aspx.cs 14 7 ActionItemLog
    And I installed the newest ODTwithODP for .NET. I would really like some help on this subject and I will do my best to clarify even more if needed.
    Thanks in advance,
    Dylan
    Message was edited by:
    dkroy

    Just a stupid mistake on my part all I had to do is in visual studio add the Oracle.DataAccess.dll file to references. I hope this mistake saves some one a bit of time in the future.

  • 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.DataAccess.Client.OracleException ORA-12154:

    Hi Experts,
    Please I need yours assistance.
    I developed an automation tool in visual studio 2010 using c# and oracle framework Oracle.DataAccess.Client. However, the tool is working properly on my machine but when deployed the tool to a different machine that has .net 4.0 framework installed, and when I tried to run the tool I kept getting the following error message below:
    "************** Exception Text **************
    Oracle.DataAccess.Client.OracleException ORA-12154: TNS:could not resolve the connect identifier specified 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)
    at Oracle.DataAccess.Client.OracleConnection.Open()
    at LogicalDateValidator.Form1.conn(String oradb)
    at LogicalDateValidator.Form1.button3_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)"

    http://www.oracle.com/technetwork/topics/dotnet/odt-faq-085407.html#ORA-12154:_TNS:could_not_resolve_the

  • 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.OracleException ORA-06502: PL/SQL

    I have the following Simple PL/SQL function:
    FUNCTION INSERTFBEXP (
    p_expid INTEGER,
    p_run_identifier     VARCHAR2,
    p_run_complete     INTEGER,
    p_run_completion_status VARCHAR2,
    p_complete_errors INTEGER
    RETURN INTEGER
    IS
    newid INTEGER;
    concheck INTEGER;
    BEGIN
    concheck := 1;
    newid := 1;
    INSERT INTO test.exp
    (ID, concheck, expid, run_identifier,run_complete, run_completion_status, complete_errors
    VALUES (test.id_testexp.NEXTVAL, concheck, p_expid, p_run_identifier, p_run_complete, p_run_completion_status, p_complete_errors
    ) RETURNING ID INTO newid;
    RETURN newid;
    END;
    Which I am calling from the following .Net procedure:
    Public Function insertTestExp(ByVal expid As Int32, ByVal Run_Identifier As String, _
    ByVal Run_Complete As Boolean, ByVal CompletionStatus As String, ByVal Complete_Errors As Boolean) As Integer
    Dim id As Integer
    With m_OraCmd
    .CommandText = "USER.FBPROCESS.INSERTFBEXP"
    .CommandType = CommandType.StoredProcedure
    With .Parameters
    .Clear()
    .Add(New OracleParameter("p_expid", OracleDbType.Int32)).Value = expid
    .Add(New OracleParameter("p_run_identifier", OracleDbType.Varchar2, 50)).Value = Run_Identifier
    .Add(New OracleParameter("p_run_complete", OracleDbType.Int32)).Value = Convert.ToInt32(Run_Complete)
    .Add(New OracleParameter("p_run_completion_status", OracleDbType.Varchar2, 50)).Value = CompletionStatus
    .Add(New OracleParameter("p_complete_errors", OracleDbType.Int32)).Value = Convert.ToInt32(Complete_Errors)
    .Add(New OracleParameter("newid", OracleDbType.Int32)).Direction = ParameterDirection.ReturnValue
    End With
    Try
    .ExecuteNonQuery()
    Catch ex As Exception
    MsgBox(ex.ToString)
    End Try
    Return CType(.Parameters(5).Value, Int32)
    End With
    End Function
    When I attempt to run the .Net function I get the following error:
    Oracle.DataAccess.Client.OracleException ORA-06502: PL/SQL
    I have determined by trial and error that the problem is in passing the VARCHAR2 parameters. I do not have this problem with the Microsoft Oracle Provider. Can someone help me with what I'm missing? Thanks.

    Note that I have not tested your code... but, it looks like you are using bind by position (which is the default). In this mode the return value needs to be bound first since ODP.NET will generate code similar to this:
    :ret_val := proc(:1, :2,...);That's where I would start anyway.
    Hope that helps a bit,
    Mark

  • 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 - 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)

  • 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.

  • oracle.dataaccess.client not recognized in app.config for edmMapping

    Hi,
    I installed ODTwithODAC112030 EF provider release version.
    So I want to use custom EDM Mapping for boolean or something else.
    But Entity Data Model can't recognize
    <oracle.dataaccess.client>
    <settings>
    section in appConfig file.
    I'm using Win 7 x64 , VS 2010 and x86 odac components.
    How can i resolve this problem.
    Thank you..

    Would you please do a simple test like follows?
    1. create test table
    create table test_table (c1 number(4) primary key not null, c2 number(1, 0), c3 number(2), c4 number(5, 0), c5 number(10, 0), c6 number(19, 0));
    2. create a C# Console application and create a data model from test_table.
    Because there is no custom type mapping specified in app.config, default mapping is used in the model.
    Your CSDL section in Model1.edmx should show:
    <EntityType Name="TEST_TABLE">
    <Key>
    <PropertyRef Name="C1" />
    </Key>
    <Property Name="C1" Type="Int16" Nullable="false" />
    <Property Name="C2" Type="Int16" />
    <Property Name="C3" Type="Int16" />
    <Property Name="C4" Type="Int16" />
    <Property Name="C5" Type="Int32" />
    <Property Name="C6" Type="Int64" />
    </EntityType>
    3. Delete Model1.edmx.
    4. Open app.config and add the following below </connectionStrings> and above </configuration>. Save changes.
    <oracle.dataaccess.client>
    <settings>
    <add name="bool" value="edmmapping number(1, 0)" />
    <add name="byte" value="edmmapping number(3, 0)" />
    <add name="int16" value="edmmapping number(4, 0)" />
    <add name="int32" value="edmmapping number(9, 0)" />
    <add name="int64" value="edmmapping number(18, 0)" />
    </settings>
    </oracle.dataaccess.client>
    5. Create a data model from test_table again.
    The new model should be using your custom type mapping.
    Your CSDL section in Model1.edmx should show:
    <EntityType Name="TEST_TABLE">
    <Key>
    <PropertyRef Name="C1" />
    </Key>
    <Property Name="C1" Type="Int16" Nullable="false" />
    <Property Name="C2" Type="Boolean" />
    <Property Name="C3" Type="Byte" />
    <Property Name="C4" Type="Int32" />
    <Property Name="C5" Type="Int64" />
    <Property Name="C6" Type="Decimal" Precision="19" Scale="0" />
    </EntityType>
    If it does not work for you, you may want to check the version of your Oracle.DataAccess.dll in the GAC.
    gacutil /l Oracle.DataAccess
    Or change the timestamp of app.config.
    touch.exe app.config

  • Oracle.DataAccess.Client.OracleDataAdapter exists in both v2 and v4

    Hi there,
    I am developing ASP Net application with ODP.NET 11.2.0.2.1 and VS 2010. The target framework is .Net framework 3.5 and I've explicitly Oracle.DataAccess reference to v.2, with
    <add assembly="Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
    , but when it compiled, it throw error
    The type 'Oracle.DataAccess.Client.OracleDataAdapter' exists in both
    'c:\WINDOWS\assembly\GAC_32\Oracle.DataAccess\2.112.2.0__89b483f429c47342\oracle.dataaccess.dll'
    and 'c:\WINDOWS\Microsoft.NET\assembly\GAC_32\Oracle.DataAccess\v4.0_4.112.2.0__89b483f429c47342\oracle.dataaccess.dll'     
    c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\esptweb\df172a69\e974c60e\App_Code.eoge0t0f.4.cs
    How can I fixed it?
    Thanks for the help.

    Did you try adding that reference using the Add Reference command in Visual Studio instead? I've never seen it behave like this before.
    There are two versions of the assembly, but it shouldn't be trying to load the .net 4 version if you have a reference to the .net 2 version and you're in a 2 (or 3.5) app.

Maybe you are looking for

  • Pdf file not saving imputed information

    i am trying to save a pdf file that i have filled out, but when i save it and go back to look at it, the text information i have filled out is blank. how do i save my text? i am filling out an applictaion.

  • Automatic bank preference during APP run

    Hi SAP Gurus, We have the following requirement from our client. Presently when we make payment to Vendors, we need to use funds from X (or) Y banks so we will need to manually reallocate those invoices that we will pay through the non-default bank. 

  • Restricting a sum output

    Say if you had a sum : the number of something = the number of something 1 + the number of something 2 + the number of something 3 If all the the attributes within the sum = 1, then obviously the number of something would = 3. However according to th

  • How to Insert user selected files as list attachment using JavaScript?

    I could able to Inset list items using ECMA Script, But for the user added attachment how to save it to list item. Please help

  • Automate BOM creation with script

    Hi all I'like to create an Excel macro that would upload a BOM for a specific equipment using SAP Script. where i'm struggling right now is on determining the first available position in the ib02 tab in the example the first line available for insert