Distributed Transaction Processing Services in Oracle 11.2

Hi,
Do we have to set the DTP parameter to TRUE for workload services that are going to be used for distributed transaction processing?
Something like this ...
srvctl modify service -d crm -s xa_01.service.us.oracle.com -x TRUE
Oracle 11.2 document is not very clear on this requirement. At one stage it says...
"Tightly coupled XA transactions no longer require the special type of singleton services (that is, Oracle Distributed Transaction Processing (DTP) services) to be deployed on Oracle RAC database. XA transactions are transparently supported on Oracle RAC databases with any type of services configuration."
But at the end of the same section...
"An external transaction manager, such as OraMTS, coordinates DTP/XA transactions. However, an internal Oracle transaction manager coordinates distributed SQL transactions. Both DTP/XA and distributed SQL transactions must use the DTP service in Oracle RAC."
So do we have to use DTP services with RAC or not?
Thanks,
-Sanjeev

Hi Sanjeev,
I have some critical applications using Tuxedo on 10gR1/R2 RAC databases and there is no doubt to have with this versions.
Starting with 11gR1 it seems the main limitation is over...but there are still limitations ! To be honest I will keep the DTP parameter to true after the migration in 11.2 to avoid any problem. It is still recommended even if not mandatory :
To provide improved application performance with distributed transaction processing in Oracle RAC, you may want to take advantage of DTP services. Using DTP services, you can direct all branches of a distributed transaction to a single instance in the cluster. To load balance across the cluster, it is better to have several groups of smaller application servers with each group directing its transactions to a single service, or set of services, than to have one or two larger application servers.
Also check note 462060.1.
Best regards
Phil
Edited by: Philippe Florent on Jan 30, 2011 10:07 AM -- add documentation precision

Similar Messages

  • Distributed Transaction Processing Services in Oracle RAC 11.2

    Hi,
    Do we have to set the DTP parameter to TRUE for workload services that are going to be used for distributed transaction processing?
    Something like this ...
    srvctl modify service -d crm -s xa_01.service.us.oracle.com -x TRUE
    Oracle 11.2 document is not very clear on this requirement. At one stage it says...
    "Tightly coupled XA transactions no longer require the special type of singleton services (that is, Oracle Distributed Transaction Processing (DTP) services) to be deployed on Oracle RAC database. XA transactions are transparently supported on Oracle RAC databases with any type of services configuration."
    But at the end of the same section...
    "An external transaction manager, such as OraMTS, coordinates DTP/XA transactions. However, an internal Oracle transaction manager coordinates distributed SQL transactions. Both DTP/XA and distributed SQL transactions must use the DTP service in Oracle RAC."
    So do we have to use DTP services with RAC or not?
    Thanks,
    -Sanjeev
    Edited by: user12219014 on 28 Jan, 2011 8:04 PM

    Hi Sanjeev,
    I have some critical applications using Tuxedo on 10gR1/R2 RAC databases and there is no doubt to have with this versions.
    Starting with 11gR1 it seems the main limitation is over...but there are still limitations ! To be honest I will keep the DTP parameter to true after the migration in 11.2 to avoid any problem. It is still recommended even if not mandatory :
    To provide improved application performance with distributed transaction processing in Oracle RAC, you may want to take advantage of DTP services. Using DTP services, you can direct all branches of a distributed transaction to a single instance in the cluster. To load balance across the cluster, it is better to have several groups of smaller application servers with each group directing its transactions to a single service, or set of services, than to have one or two larger application servers.
    Also check note 462060.1.
    Best regards
    Phil
    Edited by: Philippe Florent on Jan 30, 2011 10:07 AM -- add documentation precision

  • Is Distributed Transaction Coordinator services of the application role are required by SQL Server 2012 for clustering and support of SharePoint 2013.

    All I want to know is if Distributed Transaction Coordinator services of the application role are required by SQL Server 2012 for clustering and support of SharePoint 2013.
    I have been planning and deploying my companies first Windows Server 2012/SQL Server 2012 Always On cluster and Always On Availability Groups Multi-Subnet cluster and instances for SharePoint 2013, and I will be brutally honest, the documentation on either
    the MSDN and TechNet leave alot to be desired. Continually finding links in the documentation will take me from a Windows 2012 reference to a page talking about Windows Server 2008 or R2, The differences of which there are so many when it comes to configurations,
    settings, roles, services when working with SQL Server 2012. I have been confused, frustrated, screaming mad, with all the misdirection in this documentation.  The documentation takes me windows 2008 R2 which is different than 2012!
    Tired and trying to pick myself up off the floor!
    Greg
    Gman

    In general, DTC is not required for SQL 2012.  But, since you are asking specifically about SharePoint, it would be better to ask in a SharePoint forum.  They would be more likely to know those situations where FTC might be needed by SharePoint. 
    .:|:.:|:. tim

  • Windows could not start the distributed transaction coordinator service on local computer

    Dear All,
    I'm having an issue starting the DTC service in windows 7 OS. I always got the error message below when im trying to start it.
    "Windows could not start the distributed transaction coordinator service on local computer"
    Thanks,
    Melvin

    Hi Melvin,
    Please try the following methods to solve this issue:
    Method 1: Re-create the MS DTC log, and then restart the service.
    Click
    Start, type cmd in the search box, and then press
    Enter.
    Type the command
    msdtc -resetlog at the command prompt, and then press
    Enter.
    Warning: The msdtc -resetlog command can cause data corruption if it is used incorrectly. Make sure that you do not have any pending transactions when you run this
    command.
    Type the command net start msdtc, and then press
    Enter.
    Method 2: Set the logon account permissions for the MS DTC service
    If Method 1 does not resolve the problem, set the logon account for the MS DTC service to have read and write permissions for the Msdtc.log file. Please follow the steps below:
    Click
    Start, type cmd in the search box, and then press
    Enter.
    Type the command
    control admintools at the command prompt, and then press
    Enter.
    Double-click
    Services.
    In the Services pane, locate
    Distributed Transaction Coordinator.
    In the
    Log On As column, note the account name.  Note: The default logon account for the MS DTC service is the NETWORK SERVICE account.
    Start Windows Explorer, and
    then open the %windir%\System32\Msdtc folder.
    Right-click the
    Msdtc.log file, and then click Properties.
    Click the
    Security tab.
    Click the logon account name that you noted
    in step 5. For example, click the NETWORK SERVICE account name.
    In the
    Permissions pane, click to select the Allow check box for the following permissions: ◦Read & Execute  
    ◦Read    ◦Write
    Click
    OK.
    Click
    Yes to accept the security warning.
    In the
    Services pane, right-click Distributed Transaction Coordinator, and then click
    Start.
    Method 3: Assign permissions to the NETWORK service to traverse the directory tree
    Determine whether the NETWORK service has permissions to traverse through the folder. To do this, follow these steps.
    Note: By default, the "Everyone" group has these permissions. For more information, go to the following Microsoft TechNet website:
    Bypass traverse checking
    Click
    Start, type secpol.msc in the search box, and then press
    Enter.     
    Browse through the following computer configuration: 
            \Windows Settings\Security Settings\Local Policies\User Rights Assignment 
    Check for "Bypass traverse checking," and then add the "Everyone" group. 
    Update the Group Policy settings on the computer. To do this, click
    Start, type gpupdate in the search box, and then press
    Enter.
    In the
    Services pane, right-click Distributed Transaction Coordinator, and then click
    Start.
    Regards,
    Lany Zhang

  • How to Increase distributed Transaction parameter value in oracle 10g r2

    Hello,
    Can you please let me know how to increase the value of Distributed Transaction Parameter in oralce 10g R2
    Thanks
    Usman

    Why do you want to increase this?
    If you are getting ORA-02042, you have to reduce the number of concurrent distributed transactions you are running or restart your database to clear existing ones.

  • ORA-01591: lock held by in-doubt distributed transaction

    I am using oracle wcf adapter to connect to oracle to insert.
    I am getting the ORA-01591: lock held by in-doubt distributed transaction.
    Any ideas as to what could be the resolution. I have followed the below mentioned steps. but that's not a permanent solution.
    Please advice.
    The resolution described below is not acceptable and never should have been used.  Although it does avoid the error, it's not okay to turn off AmbientTransaction when performing inserts
    and/or updates.  A different solution needs to be found.<o:p></o:p>
    http://msdn.microsoft.com/en-US/library/dd788352(v=BTS.10).aspx <o:p></o:p>
    "Not performing operations in a transactional context is advisable only for operations that do not make changes to the database. For operations that update data in the database, we recommend
    setting the binding property to true otherwise you might either experience message loss or duplicate messages depending on whether you are performing inbound or outbound operations."<o:p></o:p>
    ********************************************<o:p></o:p>
    This can be resolved by adjusting the configuration settings on the Oracle adapter, accessible via the Send Port properties.  The properties and the values that should be used are shown below:<o:p></o:p>
    ** Binding tab:
    incrPoolSize:  1
    maxPoolSize:  10
    useAmbientTransaction:  False<o:p></o:p>
    ** Messages tab:
    Isolation Level:  ReadCommitted<o:p></o:p>
    Also, you'll need to get a DBA to rollback the hanging "in-doubt" transactions, which will be viewable via the sql below.  Otherwise, if you try processing the same data again, you'll
    still get the same error.<o:p></o:p>
    SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE, MIXED, HOST, COMMIT# FROM DBA_2PC_PENDING;<o:p></o:p>
    The transactions can be rolled back with sql, using this syntax:<o:p></o:p>
    ROLLBACK FORCE '<LOCAL_TRAN_ID>';
    <o:p></o:p>
    Thank you and have great day! Vivek Kulkarni MCAD.net

    Hi Vivek,
    This error is encountered by many DBA's and cause problem by locking the distributed transaction process, and not letting the query go through, because the Two - Phase Commit Mechanism got an error somewhere.
    he DBA should query the pending_trans$ and related tables, and attempt to repair network connection(s) to coordinator and commit point.
    Here are some codes to help you through the process:
    This one brings in-doubt transactions:
    select * from DBA_2PC_PENDING where state='prepared'
    This one prepares the rollback script for the transactions:
    select 'rollback force '''||local_tran_id||''';' from DBA_2PC_PENDING where state='prepared'
    All this is well described in below link
    ORA-01591: lock held by in-doubt distributed transaction
    ORA-01591: lock held by in-doubt distributed transaction string tips
    On BizTalk Side you need to make ambient transaction to false as Oracle does not go ahead with DTC Transaction with  Biz Talk
    Thanks
    Abhishek

  • Distributed transaction already begun

    Hi,
    i'm working in 8.1.7. I needed to build a query over a view with hierarchical query and as i cannot do this in my base, i build the view in a remote 9.1 database.
    then i retrieve info in the 8i. In sql*plus i can execute the view as many times as i need and no problem but i'm using the 8i as the base for an web application (with asp and iis 5 as server) and all my users are getting ORA-02046 randomly but with high frequency everytime they use the view. The webmaster told me he's connecting to send a query and once it executed, he closes the connection so i cannot see which transaction is blocking the view.
    Any help will be much appreciated.
    Regards.-

    it seems like a little bug:
    ORA-02046 distributed transaction already begun
    Cause: This is an internal error not normally encountered. A server session received a BEGIN_TRAN remote procedure call before finishing with a previous distributed transaction.
    Action: Contact Oracle Support Services.
    Joel P�rez

  • DISTRIBUTED TRANSACTION의 2 PHASE COMMIT 개념 및 절차

    제품 : ORACLE SERVER
    작성날짜 : 2002-05-15
    DISTRIBUTED TRANSACTION의 2 PHASE COMMIT 개념 및 절차
    ====================================================
    Oracle이 분산 트랜잭션 수행을 위해 사용하는 2 phase commit의 자세한 개념
    및 절차를 살펴본다.
    1. 용어와 개념
    Oracle은 분산 트랜잭션을 수행하면서 여기에 포함된 모든 node에 대해서
    session tree를 구성한다. session tree는 분산 트랜잭션에 관여되는 session과
    각 session의 역할을 계층적인 tree형태로 표현한다고 볼 수 있으며,
    DBA_2PC_NEIGHBORS view를 통해 확인 가능하다.
    session tree에 포함되는 각 node들이 수행하는 역할은 2 phase commit 절차의
    기본적인 개념이 되므로, 분산 트랜잭션의 이해를 위해서 정확히 파악할 필요가
    있다. 아래에 각 역할 들의 종류와 의미를 설명하며 [그림 1]을 예로 든다.
    - client
    - database server
    - global coordinator
    - local coordinator
    - commit point site
    insert into seoul_tab...;
    delete from pusan_tab@pusan...;
    Seoul.world inchoen_procedure@incheon...;
    / \ incheon_procedure source
    Pusan.world Inchoen.world ------------------------
    \ delete from incheon_tab...;
    \ update jeju_tab@jeju...;
    Jeju.world
    [그림 1] session tree의 간단한 예제
    (1) client: 다른 node의 database 정보를 이용하면 client가 된다.
    참조되어지는 node는 이때 database server가 된다. seoul.world가
    pusan.world와 incheon.world의 client이고, incheon.world는 jeju.world의
    client가 된다.
    (2) server (database server): 분산 트랜잭션에 포함된 모든 node를 server라
    한다. seoul.world, pusan.world, incheon.world, jeju.world 모두 database
    server이다.
    (3) global coordinator:분산 트랜잭션을 처음 수행시킨 node를 의미한다.
    여기서는 seoul.world가 global coordinator이다.
    (4) local coordinator: 분산 트랜잭션에서 이 node에 관계된 부분의 결과를
    얻으려면 다른 node를 참조해야 하는 경우 이 node를 local coordinator라고
    한다. 이것이 위에서 설명한 global coordinator와는 차이가 있는데 global
    coordinator는 항상 local coordinator이지만, 반대로 local coordinator는
    global coordinator가 아닐 수 있다.
    Incheon.world의 경우 처음 문장을 수행시킨 global coordinator는 아니지만,
    Incheon.world의 Inchoen_procedure내에 jeju.world가 reference되므로
    local coordinator가 된다. seould.world는 global coordinator이면서
    local coordinator가 된다.
    (5) commit point site
    commit point site는 분산 트랜잭션에 관여된 node중 2 phase commit단계에서
    commit이나 rollback을 항상 제일 먼저 하게 된다. 이 node의 local
    transaction부분은 prepared상태를 거치지 않아 in-doubt 상태가 되는 일이
    없고, 그러므로 distributed lock에 의해 조회나 DML시 오류가 발생하는
    없게 된다. 이러한 이유로 제일 중요한 data를 포함하는 중심이 되는 node를
    commit point site로 지정하는 것이 바람직하다.
    commit point site는 각 node의 initialization parameter중
    COMMIT_POINT_STRENGTH 값을 비교하여 제일 큰 값을 가진 node가 지정된다.
    두 node만 관여된 분산 트랜잭션의 경우 commit_point_strength가 지정되어
    있지 않으면, default로 global coordinator가 아닌 node가 commit point
    site가 된다.
    2. 2 Phase Commit (2PC)
    분산 트랜잭션을 commit하는 것은 다음 두 단계를 거치게 된다. 그래서 Oracle의
    분산 트랜잭션은 2 phase commit mechanism을 사용한다고 한다.
    prepare 단계: global coordinator (SQL문장을 처음 수행한 server) 가 commit
    point site를 제외한 나머지 node에게 prepare하도록 요청한다.
    요청을 받은 node는 각 local db에서의 작업에 대해 commit이나
    rollback할 준비를 마치고 다시 global coordinator에게 prepare
    되었음을 알려 주는 단계이다.
    node가 prepare 단계를 지나고 commit을 완료하기 전까지는
    transaction이 in-doubt상태라고 부른다.
    commit단계: 모든 node가 정상적으로 prepare가 되면, 먼저 commit point site가
    commit을 완료하고 이후 다른 node들도 commit을 완료하게 된다.
    이렇게 분산 트랜잭션에서 commit을 수행하기 위해 두 단계를 거치면서 일부
    node만 commit이 되고 일부는 rollback이 되는 불일치 상태를 막을 수 있는데,
    그러기 위한 자세한 단계별 처리 절차를 아래 [표 1]에 17단계로 기술하였다.
    각 단계별로 global coordinator와 commit point site, 그리고 둘 모두에
    해당되지 않는 일반 database server입장으로 나누어 표시하였으며, 만약 어떤
    node가 global coordinator이면서 commit point site라면, 두 part의 일을 모두
    하게 되는 것이다.
    아래 표의 (4) ~ (10)번 단계는 prepare단계의 작업이며, (11) ~ (15)번 단계는 commit단계
    이다. 부가적으로 (16), (17)을 정리 단계로 부르기도 한다.
    단계| Global coordinator | 참여한 db server | Commit point site
    (commit point site도 아니고
    global coordinator도 아닌경우)
    (1) SQL문장 발생 |     |
    (2) SQL문장이 수행되면 session tree가 구성되고 이 정보는
    DBA_2PC_NEIGHBORS를 통해 조회 가능하다.
    변경이 필요한 data는 각 node별로 자기의 local data에 대해서 lock
    (TX,TM)을 걸면서 문장 수행이 진행된다.
    (3) Commit; 문장 발생 |          |
    (4) commit point site를 |          |
    commit_point_strength |          |
    initial parameter를 참조 |          |
    하여 결정하고, |          |
    참여한 모든 node의 SCN중 |          |
    제일 큰 값을 commit SCN으로|           |
    결정하고 이후에 각 node의 |          |
    commit시 이용한다. |          |
    (5) commit point site를 |          |
    제외한 모든 node들에게 |          |
    prepare하도록 요청한다 |          |
    (6) prepare 요청 message받는다 |
    (7) transaction이 이 node의 data를 변경하였는지를 |
    확인하고, 변경 사항이 있고 commit이 가능한 |
    상태이면 다음 단계를 수행하고, 그렇지 않으면 |
    (10)번 단계로 건너뛴다           |
    (8) transaction에 distributed lock을 걸어 fail이 |
    되어도 rollback이 되지 않고 변경 사항에 lock이|
    걸린 채 유지되도록 한다.           |
    distributed lock이 걸려 있는 상태에서는 변경 |
    data를 포함한 block에 포함된 어떤 data도 |
    read/write가 불가능하게 된다 (ora-1591발생) |
    [참조 1]                    |
    (9) transaction에 의해 변경된 내용과 (8)번 단계의 |
    information에 대한 redo log 내용을 각 node의 |
    redo log file에 기록한다. (해당 node의 변경 |
    사항만을 해당 node의 redo log file에 기록) |
    (10) global coordinator에게 다음 세가지 중 하나의 |
    상태를 prepare message대한 응답으로 전달한다.|
    PREPARED:변경된 data가 있고 commit이 가능한 |
    상태               |
    READ-ONLY: 자신의 node에는 data 변경사항이 |
    없고 조회만 관여한 경우 |
    ABORT: 오류 발생으로 인해 commit이 불가능한 |
    경우                     |
    (11) prepare 요청 message에 | |
    대한 응답 중 한 node라도| |
    abort가 있으면: | |
    모든 관여된 node를 | |
    rollback하도록 요청하고 | |
    distributed transaction | |
    을 끝낸다. | |
    prepare요청 message에 | |
    대한 응답이 read-only나 | |
    prepared만 있다면: | |
    commit point site에게 | |
    commit하라고 요청한다. | |
    (12) | |이 node에 관여된 local
    | |transaction 부분만을
    | |commit 한다.
    | |- data변경사항과 commit
    | |정보를 local redo log
    | |file에 기록한다.
    | |- commit SCN은 (4)번단계
                   |           |에서 얻어진, 관여된 node
                   |          |의 SCN중 제일 큰 값을
    | | 이용한다.
                   |     |- (2) 번 단계에서 잡혔던 TX,
    | | TM lock은 해제된다.
    (13) |global coordinator에게
    |commit이 완료되었음을
    |알리는 message를 보낸다.
    (14) commit point site를 제 | |
    외한 다른 node들에게 | |
    commit하라고 요청한다. | |
    (15) commit하면서 (2)번 단계에서 잡은 TX, TM lock|
    과, (8)번 단계에서 잡힌 distributed lock을 |
    release하고, 이러한 commit정보를 redo log |
    file에 기록한다.
    (16) | |DBA_2PC_PENDING,
    | |DBA_2PC_NEIGHBORS등
    | |dictionary 저장된 정보를
    | |지우고 global coordinator
    | |에게 정보를 지웠음을
    | |알려준다
    (17) DBA_2PC_PENDING, DBA_2PC_NEIGHBORS 등 |
    dictionary 저장된 정보를 지우고 정리한다. |
    [참조 2] |
    [표 1] 2 phase commit의 단계별 절차
    [참조 1] distributed lock
    (8)번 단계에서 기술한 distributed lock은 실제 v$lock을 확인하여서는
    나타나지 않는다. v$lock에 lock type이 DX로 나타나는 것은 distributed
    transaction lock으로 이것은 2 phase commit을 위한 것이 아니라
    XA에서 단일 transaction내에서 여러 branch에 대한 control을
    tightly-coupled 형태로 하는 경우에 사용되어 지는 것이므로, 여기서
    언급하는 distributed lock과 혼동되어서는 안된다.
    여기에서 설명한 distributed lock은 실제 type을 가지고 있는 lock이
    아니고 해당 transaction에 대한 local db내의 rollback segment
    header부분에서 transaction상태를 prepared를 나타내는 bit로
         설정함으로써 lock설정을 구현한다.
    그러므로 이 lock이 걸려 있는 동안은 다른 transaction이 해당 분산
    트랜잭션이 변경한 data와 같은 block의 어떠한 data라도 읽거나
    쓰려고 하면, 그 block에 commit되지 않은 transaction이 있다는 것을
    인식하고 before image를 읽기 위해 rollback segment를 찾게 되고,
    그 rollback segment에 prepared상태로 표시되어 있어 before image
    읽는 것을 막기 때문에 오류가 발생하게 된다. 이 오류가 ORA-1591이
    되는 것이다.
    transaction이 prepared상태로 distributed lock이 걸린 상태인지는
    DBA_2PC_PENDING의 status가 PREPARED인지를 확인하는 것만이
    dictionary를 통해 가능한 정보이다.
    [참조 2] DBA_2PC_PENDING의 정보
    DBA_2PC_PENDING view의 정보는 분산 트랜잭션이 비정상 종료 되었을
    때만 정보가 저장되는 것이 아니다. 앞의 [표 1]의 2 phase commit
    단계마다, 수행되는 작업에 대해서 해당 view에 계속해서 정보를
    변경해 가고 앞의 표의 (16), (17) 단계를 완료해야 지워지게 된다.
    분산 트랜잭션이 비정상 종료시 이 view에서 해당 transaction의
    상태가 COLLECTING이나 PREPARED, COMMITTED 상태로 정보가 보여지는
    것은 마지막 정리 단계 수행 전에 transaction이 종료되었기 때문이다.
         non-commit point site의 경우, (10)번 단계에서 distributed lock을
    걸기 전까지는 DBA_2PC_PENDING의 STATE column 값이 COLLECTING으로
    나타나게 되며, (15) 단계 수행전까지는 PREPARED로 나타나고, (17)번
         수행전까지는 COMMITTED로 나타난다.
    commit point site의 경우는, (11)번 수행단계까지는 이 view에 어떠한
    정보도 포함하지 않으며, (12)번 수행 후 (16)번 단계를 수행하기
    전까지는 COMMITTED로 STATE 값을 가지게 된다.

  • Unable to enlist in a distributed transaction (Windows7, Oracle 11G R1)

    Hi,
    I have a .Net application running on Windows 7 x64 using VisualStudio2008 and Oracle 11G R1 32bit client
    In it I call a webservice calling another webservice, this requires to use oramts that interfaces with Microsoft DTC. However I'm getting the following error when calling the service method:
    "Unable to enlist in a distributed transaction"
    I have checked the following:
    - Ora MTS is installed
    - DTC is running, the security settings allow AX transactions (in fact I just allowed everything)
    - Network services have the permission to access oracle dlls
    - The registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI contains the following: "OracleXaLib"="xa80.dll" "OracleSqlLib"="SQLLib80.dll" "OracleOciLib"="oci.dll" (not sure if this is right)
    What is it I'm doing wrong ? Does this version of Oracle work correctly on W7 ?
    By the way it works fine on Windows XP !
    I've spend quite some time trying to find a resolution..
    Thanks!

    I think I answered my own question
    It seems that MSDTC is not supported by Oracle 11G R1 on Windows x64 !
    All Oracle Database components are supported on Windows x64 with the following exceptions:
    •Oracle Services for Microsoft Transaction Server are not supported on Windows Vista. As a result, all Oracle Windows data access drivers on Windows Vista that use Oracle Services for Microsoft Transaction Server to enlist in Microsoft Distributed Transaction Coordinator (MSDTC) coordinated transactions cannot participate in those coordinated transactions. These data access drivers include Oracle Data Provider for .NET, Oracle Provider for OLE DB, Oracle Objects for OLE, and ODBC. Check OracleMetaLink for up to date information on Oracle Services for Microsoft Transaction Server certification with Windows Vista.
    http://download.oracle.com/docs/cd/B28359_01/install.111/b32006/reqs.htm#CHDCEFIJ
    Edited by: 845528 on 18 mars 2011 05:05

  • Oracle distributed document capture service not started

    Oracle distributed document capture service not started
    and timeout

    I did check the Distributed Document Capture Configuration (from the Start menu) and it also indicates that I have selected "Oracle Distributed Document Capture Prompted Login". Once I click "OK" after I supplied all the paths required by server settings, it also displays the error "The username and password could not be validated". What credentials should be entered in the User ID / Password / Domain fields? You should use the username and password entered while configuring the "capture" security model. Leave the domain field blank.
    I have not yet configured the IIS at this point. Is it required for the Capture application to authenticate the user I specified during the installation configuration at login? IIS will serve web ODDC interface and will be needed for authentication while accessing ODDC web pages. I beleive that it is not needed for authentication from ODC/ODDC applets. However, when something is not working as expected, I would first finish all required installation and especially post installation setup steps.
    I had a look at the IIS configuration in the installation document. It doesn't clearly state which document is the default document for the website one needs to create in IIS. Do you know what it should be? You have to add new web site, say like "Capture" and add virtual directory from assumed path like: C:\Program Files\Oracle\Document Capture\WebPages
    For the default document I have WebCapture.asp.
    The Oracle Distributed Document Capture service does no start on my PC. Is this required for me to atleast login to the Capture application? It's required only for processing the scanned batches.
    I hope that this will help.
    Boris
    Edited by: tombo on 2012.03.16 06:32

  • Oracle Distributed Transaction

    Hi
    I am coding a middleware managing distributed transactions.
    the distributed transaction has 2n transactions branches and involves n oracle DBMSs (oracle)
    and has the following form:
    -connects to n DBMSs,
    for each,
    send a read sql statement, get a resultset consisting of one record
    do some processing on the attributes
    send an update sql statement of the same record
    I don't know how write such code, the sample code http://download-uk.oracle.com/docs/cd/A97630_01/java.920/a96654/xadistra.htm
    doesn't show such case, indeed each pair of branches are dependent
    cheers

    Hi Justin,
    thank you for you reply, my software architecture plays a role
    hereafter the code commented
    Iterate on involved DBs (they are n)
    // look up for record prKey
    String sqlB1 = "SELECT * FROM item WHERE recordKey = "+ prKey;
    //create a transaction branch instance TB from sqlB1
    //enqueue TB in the transaction branches queue of the distributed transaction T
    //assume here that I get pAttrOld1 and pAttrOld2 in the resultset of sqlB1, that I don't
    //understand how i will obtain
    //do some processing
    //the computation is complex
    String pAttr1 = pr.computeRecordAttribute(pAttrOld1, p, dfLevel, dataAttr1);
    String pAttr2 = pr.computeRecordAttribute(pAttrOld2, p, dfLevel, dataAttr2);
    // update record prKey
    sqlB2 = "UPDATE Item " +
              "SET pAttr1 TO "+ pAttr1 + "," +
         "pAttr2 TO "+ pAttr2 + "," +
                   "dKey0 TO "+ drKey +
              "WHERE recordKey = "+ prKey;
    //create a transaction branch instance from sqlB2
    //enqueue TB in the transaction branches queue of the transaction T
    // end iterate
    Finally enqueue T in the working queue of a Transaction Manager
    the latter will enqueue the transactions branches in the working queues of threads connecting to the different DBs and wait a time out until all replies arrive
    the connecting threads will enqueue the prepare result, XAResource, Connection      XAConnection related to each transaction branch in the reply queue of the transaction manager
    the transaction manager decides to commit or rollback T depending on the prepare results obtained (it will also close connections ...)
    as you see here I need sqlB1 resultset to execute sqlB2, how can I manage that with this architecture?
    any advise concerning the architecture is welcome
    cheers
    rym

  • Microsoft Integration Services - Enable Oracle Transactions

    Hi,
    I have an applications on Microsoft Transaction Services, built using ETLs. The applications works fine when the transactions options are disabled, but when I active this feature I have an error saying than the connection could not be established because the connection is not well configured or the user hasn't the required grants. When I grant the user to sysdba, the applications works with the transactions options enabled.
    Can anybody tell me wich are the specific grants that I have to assign to the oracle connection user?
    Thanks a lot !!

    Vivek, thanks for the help.
    I am utilizing these versions of Oracle Products:
    Personal Oracle8i Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - Production
    Net8 Client 8.1.7.0.0
    Oracle Services for MTS 8.1.7.0.0
    Oracle Provider for OLE DB 8.1.7.2.0
    The provider I first tried was MSDAORA with no success and then ORAOLEDB with no success too.
    But those entries in registry that you sent me were all with Microsoft dll`s. I will try again tomorrow and send you the results
    Thank you again
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Vivek Raja:
    Renato, firstly what is the interface you use to access Oracle from your COM+ components? If it is OLEDB which provider is in use - MSDAORA or ORAOLEDB? What are the versions in use 8.1.6 or 8.1.7? If you are using MSDAORA as the provider then you will need to add the following key to your registry:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI.
    Under this key add the following registry string values:
    OracleOCILib - oraclient8.dll
    OracleXALib - oraclient8.dll
    OracleSQLLib - orasql8.dll
    If you are using ORAOLEDB as the provider install Oracle Services For MTS 8.1.7. The error you receive seems to point to the fact that the "Distributed Transaction Coordinator" Windows2000 Service is not running.<HR></BLOCKQUOTE>
    null

  • Purchasing - A/P Transaction Processing for Services and Non Inventory Item

    On of the main areas of concern that businesses have is in the area of Purchasing, Goods Receipts and AP Invoices Processing - There is a requirement that businesses have widely referred to as 3-way matching.
    While SAP Business One has this functionality covered quiet well via the following, there is still some need for enhancements so that the application can correctly reflect the AP Accruals:
    - Purchase Order processing with Approval Process (if configured)
    - Ability to perform Goods Receipts for Services.
    - Matching of AP Invoices to Goods Receipts with AP Invoice Approval Process (if configured)
    The above transactions serve the 3-way matching quiet well for all purchases however when it comes to accuring for Services that have been provided, the application does not do this. The Goods Receipt transaction processing to acknowledge the service delivery is allowed however the related posting to the allocation account is missing.
    The process that is followed by the application is same for Items that have not Inventory Items in Item Master.
    As a result of the above, the business have to manually work out what the Accurals for services provided but not invoiced should be.
    With little enhancement to the product this shortfall could very easily be overcome.

    Hi,
    Once there are transactions, we cannot make existing Inventory type item to Non Inventory type item.
    Check SAP note:937297 which states as follows :
    Symptom
    Changing the status of the Inventory Item checkbox (in Item Master Data) for items with inventory transactions and documents, might lead to inaccuracies in the calculations of inventory value.
    Other terms
    Inventory Item, Non-inventory Item, Item Master Data, Continuous Stock, Perpetual Inventory, Inventory Valuation, 2004, 2005, 2005 A SP01
    Reason and Prerequisites
    Consulting Note
    Solution
    The status of an item (Inventory Item/Non-Inventory item as selected in the Inventory Item checkbox in the Item Master Data window), cannot be changed once an A/P, A/R, or Inventory document is posted for the item.
    Regards,
    Jitin Chawla

  • Does Oracle 8.1.5 with weblogic 6.1 sp2 suppports Distributed Transactions ---A really night Mare

              Which version of jdbc thin driver should i use to achieve distributed transaction
              with oracle 8.1.5 in weblogic 6.1 sp2
              right now if iam using the driver classes provided in weblogic.jar iam gettig the
              following Exception
              AccountBean.ejbCreate( id = accountId, initial balance = $ 3000.0)
              java.sql.SQLException: XA error: XAER_RMERR : A resource manager error has occured
              in the transaction branch start(
              ) failed on resource 'OracleXAPool' Unexpected error during start for XAResource
              'OracleXAPool': null
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1044)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1010)
              at weblogic.jdbc.jta.Connection.getXAConn(Connection.java:148)
              at weblogic.jdbc.jta.Connection.prepareStatement(Connection.java:226)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.prepareStatement(ConnectionImpl.java:135)
              at weblogic.jdbc.rmi.SerialConnection.prepareStatement(SerialConnection.java:76)
              at examples.ejb.basic.beanManaged.AccountBean.ejbCreate(Unknown Source)
              at examples.ejb.basic.beanManaged.AccountBean_g1748h_Impl.ejbCreate(AccountBean_g1748h_Impl.java:172)
              at java.lang.reflect.Method.invoke(Native Method)
              at weblogic.ejb20.manager.DBManager.create(DBManager.java:492)
              at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:462)
              at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
              at examples.ejb.basic.beanManaged.AccountBean_g1748h_HomeImpl.create(AccountBean_g1748h_HomeImpl.java:76)
              at examples.ejb.basic.beanManaged.AccountBean_g1748h_HomeImpl_WLSkel.invoke(Unknown
              Source)
              at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:288)
              at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
              at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:257)
              at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:158)
              at weblogic.rmi.internal.ServerRequest.sendOneWayRaw(ServerRequest.java:92)
              at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:112)
              at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:253)
              at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:220)
              at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
              at $Proxy126.create(Unknown Source)
              at examples.wtc.atmi.simpapp.ToupperBean.putMessage(ToupperBean.java:194)
              at examples.wtc.atmi.simpapp.ToupperBean_8roqg7_EOImpl.putMessage(ToupperBean_8roqg7_EOImpl.java:284)
              at examples.wtc.atmi.simpapp.ToupperBean_8roqg7_EOImpl_WLSkel.invoke(Unknown
              Source)
              at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:288)
              at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:257)
              at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              Regards
              Ranga Rao
              

              Oracle Server 8.1.5 does not provide support for 2PC.
              Full XA support is provided from version 8.1.7.
              Sergi
              "Lawrence" <[email protected]> wrote:
              >
              >Ranga,
              >Please use classes12.zip for this.If you still find problem, please let
              >me know.
              >Thanks
              >Lawrence
              >
              >"Ranga Rao" <[email protected]> wrote:
              >>
              >>
              >>Which version of jdbc thin driver should i use to achieve distributed transaction
              >>with oracle 8.1.5 in weblogic 6.1 sp2
              >>
              >>right now if iam using the driver classes provided in weblogic.jar iam
              >gettig
              >>the
              >>following Exception
              >>
              >>////////////////////////////////////////////////////////////////////////////////////////////
              >>AccountBean.ejbCreate( id = accountId, initial balance = $ 3000.0)
              >>java.sql.SQLException: XA error: XAER_RMERR : A resource manager error
              >has
              >>occured
              >>in the transaction branch start(
              >>) failed on resource 'OracleXAPool' Unexpected error during start for XAResource
              >>'OracleXAPool': null
              >> at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1044)
              >> at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1010)
              >> at weblogic.jdbc.jta.Connection.getXAConn(Connection.java:148)
              >> at weblogic.jdbc.jta.Connection.prepareStatement(Connection.java:226)
              >> at weblogic.jdbc.rmi.internal.ConnectionImpl.prepareStatement(ConnectionImpl.java:135)
              >> at weblogic.jdbc.rmi.SerialConnection.prepareStatement(SerialConnection.java:76)
              >> at examples.ejb.basic.beanManaged.AccountBean.ejbCreate(Unknown
              >>Source)
              >> at examples.ejb.basic.beanManaged.AccountBean_g1748h_Impl.ejbCreate(AccountBean_g1748h_Impl.java:172)
              >> at java.lang.reflect.Method.invoke(Native Method)
              >> at weblogic.ejb20.manager.DBManager.create(DBManager.java:492)
              >> at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:462)
              >> at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
              >> at examples.ejb.basic.beanManaged.AccountBean_g1748h_HomeImpl.create(AccountBean_g1748h_HomeImpl.java:76)
              >> at examples.ejb.basic.beanManaged.AccountBean_g1748h_HomeImpl_WLSkel.invoke(Unknown
              >>Source)
              >> at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:288)
              >> at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
              >> at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:257)
              >> at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:158)
              >> at weblogic.rmi.internal.ServerRequest.sendOneWayRaw(ServerRequest.java:92)
              >> at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:112)
              >> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:253)
              >> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:220)
              >> at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
              >> at $Proxy126.create(Unknown Source)
              >> at examples.wtc.atmi.simpapp.ToupperBean.putMessage(ToupperBean.java:194)
              >> at examples.wtc.atmi.simpapp.ToupperBean_8roqg7_EOImpl.putMessage(ToupperBean_8roqg7_EOImpl.java:284)
              >> at examples.wtc.atmi.simpapp.ToupperBean_8roqg7_EOImpl_WLSkel.invoke(Unknown
              >>Source)
              >> at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:288)
              >> at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:257)
              >> at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
              >> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
              >> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              >>/////////////////////////////////////////////////////////////////////////////////
              >>
              >>Regards
              >>Ranga Rao
              >>
              >>
              >
              

  • "in-doubt distributed transaction" (WLS 8.1 SP2/Oracle 9.2.0.4)

              I've developed an MDB that reads a message from a queue, performs database updates
              against up to 2 databases, and sends an outgoing JMS message when all is complete.
              The MDB uses container-managed transactions to ensure that all DB updates and
              JMS messages are committed or rolled back together. I have had a lot of problems
              related to transactions failing, becoming "in-doubt" in the database and locking
              database resources indefinitely.
              My environment is configured as follows:
              WebLogic 8.1.2 Server
              Oracle 9.2.0.4 database with RAC
              XA Connection Pool with WebLogic Type 2 Oracle Driver OR Oracle 9.2.0.4
              OCI Driver
              I have read the BEA/HP white paper regarding Weblogic 8.1 with Oracle 9i RAC (http://dev2dev.bea.com/products/wlserver81/whitepapers/wls_bea_hp.jsp)
              and have tried all of the solutions suggested in that paper. The only solution
              that worked consistently without causing the in-doubt transactions was to change
              my connection pools to point directly to a single node of the RAC cluster, not
              to the shared instance. However, even with this configuration, I have seen these
              errors occur when certain database failures occur.
              A side-effect of this problem is that the associated WebLogic connection pools
              begin to "forget" connections. The pool thinks that all of the connections are
              in use (even though I am always calling Statement.close() and Connection.close()),
              and the connection pool cannot be reset manually. The only way to clear the connection
              pool is to bounce WebLogic.
              The only posts I have found related to this error were regarding Oracle 8.1.7
              and WebLogic 6.1. Any help would be greatly appreciated.
              Exceptions:
              <Mar 23, 2004 2:59:36 PM EST> <Error> <EJB> <BEA-010026> <Exception occurred during
              commit of transaction Xid=BEA1-0526A28664707F28EDB9(6412513),Status=Rolled back.
              [Reason=javax.transaction.xa.XAException
              : prepare failed for XAResource 'ProfilingPool' with error XAER_NOTA : The XID
              is not valid],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=2,seconds
              left=60,XAServerResourceInfo[JMS_my
              JmsStore]=(ServerResourceInfo[JMS_myJmsStore]=(state=rolledback,assigned=myserver),xar=JMS_myJmsStore),XAServerResourceInfo[ProfilingPool]=(ServerResourceInfo[ProfilingPool]=(state=rolledback,ass
              igned=myserver),xar=ProfilingPool),SCInfo[mydomain+myserver]=(state=rolledback),local
              properties=({}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=myserver+10.41.0.61:7001+m
              ydomain+t3+, XAResources={JMS_myJmsStore, JMS_FileStore, ProfilingPool, SearchManagementPool,
              AnnouncementsTxPool},NonXAResources={})],CoordinatorURL=myserver+10.41.0.61:7001+mydomain+t3+):
              javax.tran
              saction.xa.XAException: prepare failed for XAResource 'ProfilingPool' with error
              XAER_NOTA : The XID is not valid
              at weblogic.jdbc.oci.xa.XA.createException(XA.java:386)
              at weblogic.jdbc.oci.xa.XADataSource.internalPrepare(XADataSource.java:905)
              at weblogic.jdbc.oci.xa.XADataSource.prepare(XADataSource.java:885)
              at weblogic.jdbc.jta.DataSource.prepare(DataSource.java:846)
              at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerResourceInfo.java:1167)
              at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerResourceInfo.java:401)
              at weblogic.transaction.internal.ServerSCInfo$1.execute(ServerSCInfo.java:253)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              --------------- nested within: ------------------
              weblogic.transaction.RollbackException: Could not prepare resource 'ProfilingPool
              prepare failed for XAResource 'ProfilingPool' with error XAER_NOTA : The XID is
              not valid - with nested exception:
              [javax.transaction.xa.XAException: prepare failed for XAResource 'ProfilingPool'
              with error XAER_NOTA : The XID is not valid]
              at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1644)
              at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:300)
              at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
              at weblogic.ejb20.internal.MDListener.execute(MDListener.java:412)
              at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              2004-03-23 15:00:45,406 ERROR IS003989 [ExecuteThread: '17' for queue: 'ProfileCompleteListenerBean.ExecuteQueue']
              my.package.search.business.ProfiledHoldingDAO.setProfilingStatus(ProfiledHoldingDAO.java:350
              ) - Failed to update profiling status for holding 10014 [] (-2)
              java.sql.SQLException: ORA-02049: timeout: distributed transaction waiting for
              lock
              at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:282)
              at weblogic.jdbc.oci.PreparedStatement.executeUpdate(PreparedStatement.java:226)
              at weblogic.jdbc.oci.xa.PreparedStatement.executeUpdate(PreparedStatement.java:81)
              at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:94)
              at my.package.search.business.ProfiledHoldingDAO.setProfilingStatus(ProfiledHoldingDAO.java:345)
              at my.package.search.business.ProfilingManager.disseminateAndAcknowledge(ProfilingManager.java:254)
              at my.package.search.business.ProfileCompleteListenerBean.onMessage(ProfileCompleteListenerBean.java:128)
              at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
              at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              2004-03-23 15:01:43,093 ERROR IS003989 [ExecuteThread: '18' for queue: 'HoldingStatusListenerBean.ExecuteQueue']
              my.package.search.business.ProfiledHoldingDAO.getProfilingStatus(ProfiledHoldingDAO.java:265)
              - Failed to retrieve profiling results for holding 10060 [] (-2)
              java.sql.SQLException: ORA-01591: lock held by in-doubt distributed transaction
              189.47.12
              at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:282)
              at weblogic.jdbc.oci.PreparedStatement.executeQuery(PreparedStatement.java:152)
              at weblogic.jdbc.oci.xa.PreparedStatement.executeQuery(PreparedStatement.java:48)
              at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:80)
              at my.package.search.business.ProfiledHoldingDAO.getProfilingStatus(ProfiledHoldingDAO.java:256)
              at my.package.search.business.ProfiledHoldingDAO.storeHoldingMetadata(ProfiledHoldingDAO.java:489)
              at my.package.search.business.ProfiledHoldingDAO.storeNewHolding(ProfiledHoldingDAO.java:406)
              at my.package.search.business.ProfilingManager.profileHolding(ProfilingManager.java:128)
              at my.package.search.business.HoldingStatusListenerBean.onMessage(HoldingStatusListenerBean.java:121)
              at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
              at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              

    Hi. There is a serious bug in the Oracle DBMS (all versions) where in-doubt
              transactions have their data locked in the DBMS by page rather than by row,
              so it will indefinitely prevent access to all data on the page, including
              logically uninvolved data. Oracle understands the problem but currently
              says they will never fix it (it would take too much work). They offer the
              alternative that you configure your table data to ensure that no more than
              one datarow resides on a page.
              Joe
              Matt Smith wrote:
              > I've developed an MDB that reads a message from a queue, performs database updates
              > against up to 2 databases, and sends an outgoing JMS message when all is complete.
              > The MDB uses container-managed transactions to ensure that all DB updates and
              > JMS messages are committed or rolled back together. I have had a lot of problems
              > related to transactions failing, becoming "in-doubt" in the database and locking
              > database resources indefinitely.
              >
              > My environment is configured as follows:
              > WebLogic 8.1.2 Server
              > Oracle 9.2.0.4 database with RAC
              > XA Connection Pool with WebLogic Type 2 Oracle Driver OR Oracle 9.2.0.4
              > OCI Driver
              >
              > I have read the BEA/HP white paper regarding Weblogic 8.1 with Oracle 9i RAC (http://dev2dev.bea.com/products/wlserver81/whitepapers/wls_bea_hp.jsp)
              > and have tried all of the solutions suggested in that paper. The only solution
              > that worked consistently without causing the in-doubt transactions was to change
              > my connection pools to point directly to a single node of the RAC cluster, not
              > to the shared instance. However, even with this configuration, I have seen these
              > errors occur when certain database failures occur.
              >
              > A side-effect of this problem is that the associated WebLogic connection pools
              > begin to "forget" connections. The pool thinks that all of the connections are
              > in use (even though I am always calling Statement.close() and Connection.close()),
              > and the connection pool cannot be reset manually. The only way to clear the connection
              > pool is to bounce WebLogic.
              >
              > The only posts I have found related to this error were regarding Oracle 8.1.7
              > and WebLogic 6.1. Any help would be greatly appreciated.
              >
              > Exceptions:
              > -----------------
              > <Mar 23, 2004 2:59:36 PM EST> <Error> <EJB> <BEA-010026> <Exception occurred during
              > commit of transaction Xid=BEA1-0526A28664707F28EDB9(6412513),Status=Rolled back.
              > [Reason=javax.transaction.xa.XAException
              > : prepare failed for XAResource 'ProfilingPool' with error XAER_NOTA : The XID
              > is not valid],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=2,seconds
              > left=60,XAServerResourceInfo[JMS_my
              > JmsStore]=(ServerResourceInfo[JMS_myJmsStore]=(state=rolledback,assigned=myserver),xar=JMS_myJmsStore),XAServerResourceInfo[ProfilingPool]=(ServerResourceInfo[ProfilingPool]=(state=rolledback,ass
              > igned=myserver),xar=ProfilingPool),SCInfo[mydomain+myserver]=(state=rolledback),local
              > properties=({}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=myserver+10.41.0.61:7001+m
              > ydomain+t3+, XAResources={JMS_myJmsStore, JMS_FileStore, ProfilingPool, SearchManagementPool,
              > AnnouncementsTxPool},NonXAResources={})],CoordinatorURL=myserver+10.41.0.61:7001+mydomain+t3+):
              > javax.tran
              > saction.xa.XAException: prepare failed for XAResource 'ProfilingPool' with error
              > XAER_NOTA : The XID is not valid
              > at weblogic.jdbc.oci.xa.XA.createException(XA.java:386)
              > at weblogic.jdbc.oci.xa.XADataSource.internalPrepare(XADataSource.java:905)
              > at weblogic.jdbc.oci.xa.XADataSource.prepare(XADataSource.java:885)
              > at weblogic.jdbc.jta.DataSource.prepare(DataSource.java:846)
              > at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerResourceInfo.java:1167)
              > at weblogic.transaction.internal.XAServerResourceInfo.prepare(XAServerResourceInfo.java:401)
              > at weblogic.transaction.internal.ServerSCInfo$1.execute(ServerSCInfo.java:253)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > --------------- nested within: ------------------
              > weblogic.transaction.RollbackException: Could not prepare resource 'ProfilingPool
              > prepare failed for XAResource 'ProfilingPool' with error XAER_NOTA : The XID is
              > not valid - with nested exception:
              > [javax.transaction.xa.XAException: prepare failed for XAResource 'ProfilingPool'
              > with error XAER_NOTA : The XID is not valid]
              > at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1644)
              > at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:300)
              > at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
              > at weblogic.ejb20.internal.MDListener.execute(MDListener.java:412)
              > at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > ...
              > 2004-03-23 15:00:45,406 ERROR IS003989 [ExecuteThread: '17' for queue: 'ProfileCompleteListenerBean.ExecuteQueue']
              > my.package.search.business.ProfiledHoldingDAO.setProfilingStatus(ProfiledHoldingDAO.java:350
              > ) - Failed to update profiling status for holding 10014 [] (-2)
              > java.sql.SQLException: ORA-02049: timeout: distributed transaction waiting for
              > lock
              > at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:282)
              > at weblogic.jdbc.oci.PreparedStatement.executeUpdate(PreparedStatement.java:226)
              > at weblogic.jdbc.oci.xa.PreparedStatement.executeUpdate(PreparedStatement.java:81)
              > at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:94)
              > at my.package.search.business.ProfiledHoldingDAO.setProfilingStatus(ProfiledHoldingDAO.java:345)
              > at my.package.search.business.ProfilingManager.disseminateAndAcknowledge(ProfilingManager.java:254)
              > at my.package.search.business.ProfileCompleteListenerBean.onMessage(ProfileCompleteListenerBean.java:128)
              > at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
              > at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > ...
              > 2004-03-23 15:01:43,093 ERROR IS003989 [ExecuteThread: '18' for queue: 'HoldingStatusListenerBean.ExecuteQueue']
              > my.package.search.business.ProfiledHoldingDAO.getProfilingStatus(ProfiledHoldingDAO.java:265)
              > - Failed to retrieve profiling results for holding 10060 [] (-2)
              > java.sql.SQLException: ORA-01591: lock held by in-doubt distributed transaction
              > 189.47.12
              > at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:282)
              > at weblogic.jdbc.oci.PreparedStatement.executeQuery(PreparedStatement.java:152)
              > at weblogic.jdbc.oci.xa.PreparedStatement.executeQuery(PreparedStatement.java:48)
              > at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:80)
              > at my.package.search.business.ProfiledHoldingDAO.getProfilingStatus(ProfiledHoldingDAO.java:256)
              > at my.package.search.business.ProfiledHoldingDAO.storeHoldingMetadata(ProfiledHoldingDAO.java:489)
              > at my.package.search.business.ProfiledHoldingDAO.storeNewHolding(ProfiledHoldingDAO.java:406)
              > at my.package.search.business.ProfilingManager.profileHolding(ProfilingManager.java:128)
              > at my.package.search.business.HoldingStatusListenerBean.onMessage(HoldingStatusListenerBean.java:121)
              > at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
              > at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
              > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
              > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              >
              >
              

Maybe you are looking for

  • WBS element wise report

    Hi guys I want to make a report which contains storage location wise WBS element stock.  Is it their in the base product, i have tried through mb51 but it is not very convincing. Thanks & Regards Rashid Imam

  • HT1338 Where can I learn iPhoto basics?  I can't do a thing with it.

    I am just starting to us iPhoto.  I can't figure out how to name my photos, create an event (what does this mean?).  I need to store photos by name and choose them to add to websites for Real Estate purposes.  No fancies, just need to save, name and

  • Custom Safari Toolbar Buttons Question

    In the resources folder of Safari are the tif files for the Safari toolbar. But even if I replace them with one of my own, specifically the debug one, it still remains the same button and doesn't use the one I replaced it with. I suppose it is cachin

  • Fonts don't show up when opening Pagemaker 7 on MAC

    I don't normally use Pagemaker, but a client insists on us using his Pagemaker files. I can open up his files in Pagemaker 7 under the classic mode, but only 9 or so fonts show up, mostly Caslon. I have a MAC PowerPC G5 computer and open the file in

  • How to Hide Maintenance Order Types

    Hi, I have created new order types ORD1 and ORD2 as copy of PM01, when I run IW31 and take F4 in order type field, then system shows me all the order types. Is there any possibility to hide standard order types PM01 - PM06 from front end order type f