none
WCF-Oracle Adapter and Oracle RAC

    Domanda

  • Hi all,

    I've a strange problem with WCF-Oracle Adapter, my configuration is BizTalk Server 2009 with Adapter Pack 2.0 (i can give more details if needed):

    With this configuration we implemented several flows having oracle systems as target but for a particular system and only in a particular environment (unfortunately production...) it happens that messages sent from biztalk to oracle vanish without arriving at destination nor being suspended in error on biztalk.

    After analyzing the environment we discovered that the faulty system uses (just in production environment) an Oracle RAC, while other system always uses non RAC oracles.

    We've also realized that, in fact, the problem seems caused by transaction coordinator for two reasons:
    the first is that analyzing MSDTC log we can see that the exact number aborted transactions is the same of the number of messages lost and the exact number of committed transactions is equal to the number of messages correctly writtend on oracle;
    the second is that we've noticed that, disabling the "Use Ambient Transaction" switch we don't experience message loss (but obviously we can't turn off this switch on production system because,as noticed in the Adapter chm, we might experience loss or duplicated messages because in fact with that switch off we're not using a transactional context between biztalk and oracle system).

    Is this a known problem? Is communication with Oracle RAC supported by WCF Adapter Pack (unfortunately i was unable to find any reference to RAC systems in the chm) and is there some configuration change or other action on the adapter we can make to avoid message losses?

    Thank you very much for your help,
    Angelo

    giovedì 25 novembre 2010 21:55

Risposte

  • I heard back from Microsoft Support that using the Oracle adapter from the adapter pack with Oracle RAC is not supported and that there are known issues in doing so. Unfortunately, there is not a workaround currently other than not using the Oracle RAC.

    Thanks, 

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    venerdì 5 agosto 2011 16:00
  • This sounds like something one or both of you should call MS Support about. I can contact Microsoft Support to tell them about this problem, I just do not know if they will have a RAC server to test a fix out. Also, they may not release a fix immediately when I contact them.

    They usually do not charge for a support call when it is their problem and they make a hotfix for it.

    Thanks,

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    venerdì 22 luglio 2011 21:46

Tutte le risposte

  • Did you every get this resolved?  I am using BizTalk 2010 and Adapter pack 2.0.  Our Oralce 11g RAC, is generating dump files constantly when we are heavily using the WCF-Oracle Adapter through BizTalk 2010.  The dump files are littered with ORA-07445 and ORA-00600 errors and listed after the errors is information that shows BTSNTSvc64.exe was executing a statement. We have a 4 node RAC but our Oracle DBA have since directed all BizTalk traffic to just one node.  Still getting dump files.
    venerdì 22 luglio 2011 21:34
  • This sounds like something one or both of you should call MS Support about. I can contact Microsoft Support to tell them about this problem, I just do not know if they will have a RAC server to test a fix out. Also, they may not release a fix immediately when I contact them.

    They usually do not charge for a support call when it is their problem and they make a hotfix for it.

    Thanks,

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    venerdì 22 luglio 2011 21:46
  • I heard back from Microsoft Support that using the Oracle adapter from the adapter pack with Oracle RAC is not supported and that there are known issues in doing so. Unfortunately, there is not a workaround currently other than not using the Oracle RAC.

    Thanks, 

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    venerdì 5 agosto 2011 16:00
  •  

    Ben,

    Thanks for your help on this.  I hope that support for RAC comes sometime.  Below is a write up on where we are at now but given what Microsoft has stated to you, we might go a different route and just abandon the WCF-Oracle Adapter and build a custom C# .NET 4.0 app that utlizes ODP.net.

    1.) Changed the TNS entry for our Oracle database to only point to one of nodes in 4 node RAC environment.  The change has only limited the errors to just one server.

     Outcome:  Still received the ORA-07445 and ORA-00600 errors.

    2.) Installed a Patch from Oracle - Per an Oracle engineer, the signature associated with the error stack we are getting resembles a known issue (it does not match); it is dealing with a segment violation related to parallel queries on materialized views; however in our case we are not dealing with parallel queries on materialized views.

     Outcome:  Reduced the total number of ORA-07445 and ORA-00600 errors we received.

    3.) Per Oracle, disabled an Oracle DB feature for handling distributed transactions that are managed outside the database (XA).

    Outcome:  Still testing but still get the same Oracle errors but at a lesser frequency.  As a side note, on our BizTalk 2010 Servers, DTC is clustered.  Also on the "Security" tab under DTC properties, you can enable XA Transactions but we never had it set to begin with.

    4.) Oracle suggested that we change an OPD.net property to disallow distributed transaction processing. They have not told us the name of property yet but it is the Registry Key DynamicEnlistment. 

    Outcome:  Have not applied this yet and although I cannot find it documented, I am thinking that setting UseAmibientTransaction to False in BizTalk 2010 accomplishes the same thing.  We rather not do this because we want our polling and post-poll statement to be executed in a transaction.  Below is some information on the ODP.Net property.

    Dynamic Distributed Transaction Enlistment

    For those applications that dynamically enlist in distributed transactions through the EnlistDistributedTransaction of the OracleConnection object, the "enlist" connection string attribute must be set to a value of either "dynamic" or "true". If "enlist=true", the connection enlists in a transaction when the Open method is called on the OracleConnection object, if it is within the context of a COM+ transaction or a System.Transactions. If not, the OracleConnection object does not enlist in a distributed transaction, but it can later enlist explicitly using the EnlistDistributedTransaction or the EnlistTransaction method. If "enlist=false", the connection cannot enlist in the transaction.

    For applications that cannot be rebuilt using "Enlist=dynamic", a registry string value, named DynamicEnlistment, of type REG_SZ, should be created and set to 1 under HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\Assembly_Version where Assembly_Version is the full assembly version number of Oracle.DataAccess.dll.

    If ODP.NET is properly installed, there should already be registry string values such as StatementCacheSize, TraceFileName, and so forth, under the same ODP.NETkey. Dynamic Enlistment can also be configured through an XML configuration file. For details, see "Configuring Oracle Data Provider for .NET" on page 2-5. 

    If the DynamicEnlistment registry key is set to 0 (or if the registry entry does not exist), it does not affect the application in any way. However, if DynamicEnlistment is set to 1, "Enlist=false" is treated the same as "Enlist=dynamic", enabling applications to enlist successfully through the EnlistDistributedTransaction method without any code change. Having DynamicEnlistment set to 1 does not affect OracleConnection objects that have "Enlist=true" or "Enlist=dynamic" in the connection string.

     


    venerdì 5 agosto 2011 18:43
  • I can pass along your findings to MS Support. I am not sure they have a RAC server to test out a fix on.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    venerdì 5 agosto 2011 21:23
  • You can open an official support request about this if this is critical for your solution.

    Thanks,

    Manas


    -- Please mark as answered if this answers your question.
    martedì 9 agosto 2011 10:54
  • Ben,

    Were you able to get a fix for this issue from Microsoft? I am having the same issue in Biztalk2006 R2. It will be helpful if you can share the info.


    ST

    venerdì 2 marzo 2012 16:09
  • At this point I have not heard anything futher from Microsoft about this. They do not have an Oracle RAC server to test on so I am pretty sure a hotfix has not yet been created. If you need it they might create one for you, just contact MS Support directly.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline

    venerdì 2 marzo 2012 17:47
  • Ben,


    Thanks for the prompt response! I too contacted Microsoft in the meanwhile and this is what I got from them.  Do you know if ODBC based adapter supports ORACLE RAC communication?

    There is no Oracle RAC support for Oracle adapter included in any version of Adapter Packs from Microsoft.

    Thanks


    ST


    • Modificato Sampras2006 mercoledì 14 marzo 2012 16:45
    mercoledì 14 marzo 2012 16:43
  • Just an update on this....

    We were still experiencing issues using the BizTalk Adapter for Oracle with an Oracle 11g RAC database.  Our fix, we just developed a custom C# application to do the database polling to bypass the BizTalk Adapter for Oracle.  The C# app uses the ODP.Net adapter from Oracle but we are not having any issues. 

    As a side note, the manager of our DBA team has continued to work the issue from an Oracle side.  In our QA system, we re-deployed our BizTalk solution using the BizTalk Adapter for Oracle and our DBA team applied another patch from Oracle. At this point, we have seen the dump files in our 11g RAC QA database but we also do not near the volume in that system that we have in production.  We are still trying to determine our next step.

    Here is the information on the Oracle patch we applied for our latest round of testing.  I hope this helps someone.

    This was what they recommended -> Patch 9778040: ORA-07445: EXCEPTION ENCOUNTERED: CORE DUMP [KSSDCT]

    Here are some notes about the bug.

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Bug 9778040 - PMON dump / ORA-600 / spin cleaning dead session with global transaction (Doc ID 9778040.8)

    Description

    PMON may dump or fail with an ORA-600 or spin (in kssdct) when cleaning
    a dead session which had been involved in a distributed or externally
    coordinated transaction.

    Rediscovery Notes:
    PMON dumps in kssdct cleaning up a dead session
    The dead session was involved in a global transaction.

    Workaround
    None

    === ODM Cause Justification ===

    As discovered within bug 12835414, there are scenarios where distributed transaction branches can return FALSE, indicating that within a distributed transaction environment locks that are not migratable actually can migrate even if they are not marked as such.

    This can cause problems which should be corrected by a fix for bug 9778040.
      

    mercoledì 21 marzo 2012 03:19
  • Bishopkc,

      Thanks for posting this, it is interesting to hear more of the details of the issues. Are you thinking the problem occurs more frequently under high load which leads to the distributed transaction failures?

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline

    mercoledì 21 marzo 2012 08:23