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

Similar Messages

  • 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

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

  • Transaction Recovery within an Oracle RAC environment

    Good evening everyone.
    I need some help with Oracle 11gR1 RAC transaction-level recovery issues. Here's the scenario.
    We have a three(3) node RAC Cluster running Oracle 11g R1. The Web UI portion of the application connects through WLS 9.2.3 with connection pooling set. We also have a command-line/SQL*Developer component that uses a TNSNAMES file that allows for both failover and load balancing. Within either the UI or the command line portion of the application, a user can run a process by which invokes one or more PL/SQL Packages to be invoked. The exact location of the physical to the database is dependent on which server is chosen from either the connection pooling or the TNSNAMES.ORA Load Balancing option.
    In the normal world, the process executes and all is good. The status of the execution of this process is updated by the Packages once completed. The problem we are encountering is when an Oracle Instance fails. Here's where I need some help. For Application-level (Transaction Level) recovery, the database instances are first recovered by the database background proccesses and then Users must determine which processes were in flight and either re-execute them (if restart processing is part of the process) or remove any changes and restart from scratch. Given that the database instance does not record which processes are "in flight" it is the responsibility of the application to perform its own recovery processing. Is this still true?
    If an instance fails, are "in flight" transactions/connections moved to other instances in the Grid/RAC environment? I don't think this is possible but I don't remember if this was accomplished through a combination of Application and Database Server features that provide feedback between each other. How is the underlying application notified of the change if such an issue occurs? I remember something similar to this in older versions of Oracle but I cannot remember what it was callled.
    Any help or guidance would be great as our client is being extremely difficult in pressing this issue.
    Thanks in advance
    Stephen Karniotis
    Project Architect - Compuware
    [email protected]
    (248) 408-2918

    You have not indicated whether you are using TAF or FCF ... that would be the first place to start.
    My recommendation would be to let Oracle roll back the database changes and have the application resubmit the most recent work.
    If the application knows what it did since the last "COMMIT" then you should be fine with the possible exception of variables stored
    in packages. Depending on packages retaining values is an issue best solved with PRAGMA SERIALLY_REUSABLE ... in other words
    not using the retention feature.

  • Gracefully Shutting all the services pertaining to Oracle RAC 10g R2

    Hi !!
    Can anyone guide me in Gracefully Shutting Down All the services, processes pertaining to Oracle RAC 10g R2 - Clusterware, Oracle Software, Oracle RAC Database, Netservices, EMConsoles......
    Any Scripts / Metalink ID's / Comments would be very much helpful....
    Cheers n Thanks

    If its for both Linux and Windows .... Then it would be better ...

  • Oracle RAC 11G - Service configuration

    Hi,
    I have been reading a lot of documentation regarding oracle services and I have an ok understanding of how they work. However, I have a general question regarding configuring services using Oracle RAC. For instance, if I have a 2 node oracle 11GR2 RAC on a Linux Redhat server. I have an application that connects to a service I have created. I create the service as follows.
    srvctl add service -d ORCL_RAC -s APP_SERVICE -r ORCL_RAC1,ORCL_RAC2
    The tnsnames contains:
    APP_OLTP =
    (DESCRIPTION =
    (LOAD_BALANCE = ON)
    (FAILOVER = ON)
    (ADDRESS = (PROTOCOL = TCP)(HOST = server01)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = server02)(PORT = 1521))
    (CONNECT_DATA =
    (SERVICE_NAME = APP_SERVICE)
    (FAILOVER_MODE =
    (TYPE = SELECT)
    (METHOD = BASIC)
    (RETRIES = 20)
    (DELAY = 1)
    My questions are as follows:
    1) When I do a 'srvctl status service -d ORCL_RAC', should I see the service running on both nodes of the RAC? Or does it run only one node, then it will fail over to the other when needed?
    2) If I have a RAC environment where I see two services created (RAC_SRV1 and RAC_SRV2). I see that RAC_SRV1 is only running on node1 and RAC_SRV2 is only running on node2. There are two applications sharing the same database, one application is using RAC_SRV1 and the other application is using RAC_SRV2. Am I correct in thinking that there is no failover available here? If node1 goes down, the application connecting to RAC_SRV1 will not be able to connect to node2 right?
    3) In the case of the scenario in question 2 above, would it be best practise to simply create one service and have both applications connecting to the one service? Could I configure the one service to point connections from one application to node1 and connections from the other application to node2?

    1) When I do a 'srvctl status service -d ORCL_RAC', should I see the service running on both nodes of the RAC? Or does it run only one node, then it will fail over to the other when needed?you can see its running on both nodes.
    use option -a in srvctl ( A list of available instances to which the service fails over when the database is administrator managed.)
    http://docs.oracle.com/cd/E11882_01/rac.112/e16795/srvctladmin.htm#i1008562
    2) If I have a RAC environment where I see two services created (RAC_SRV1 and RAC_SRV2). I see that RAC_SRV1 is only running on node1 and RAC_SRV2 is >only running on node2. There are two applications sharing the same database, one application is using RAC_SRV1 and the other application is using RAC_SRV2. Am >I correct in thinking that there is no failover available here? If node1 goes down, the application connecting to RAC_SRV1 will not be able to connect to node2 >right?All depend on your service configuration. check it by srvctl config
    3) In the case of the scenario in question 2 above, would it be best practise to simply create one service and have both applications connecting to the one >service? Could I configure the one service to point connections from one application to node1 and connections from the other application to node2? better create two service ,one for each application with specific node and other node in available list.

  • 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

  • SQLLoader issues of Oracle RAC with ASM

    One of our client wants to use Oracle RAC with ASM for our application, i just want to know if there would be any two-phased commit transactions and SQL*Loader issues in ASM.
    Database is Oracle 10g

    ASM works only at storage layer and has nothing to do with:
    - distributed transactions
    - client executable that connects to database instance: SQL*Loader, SQL*Plus, etc.
    RAC has also nothing to do with distributed transactions: a RAC database is a single database with multiple instances but still a single database; there is no need to use distributed transactions because you have a RAC database.
    Edited by: P. Forstmann on 24 févr. 2011 13:27
    Edited by: P. Forstmann on 24 févr. 2011 13:31

  • 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

  • Encountered ora-29701 during Sun Cluster for Oracle RAC 9.2.0.7 startup (UR

    Hi all,
    Need some help from all out there
    In our Sun Cluster 3.1 Data Service for Oracle RAC 9.2.0.7 (Solaris 9) configuration, my team had encountered
    ora-29701 *Unable to connect to Cluster Manager*
    during the startup of the Oracle RAC database instances on the Oracle RAC Server resources.
    We tried the attached workaround by Oracle. This workaround works well for the 1^st time but it doesn’t work anymore when the server is rebooted.
    Kindly help me to check whether anyone encounter the same problem as the above and able to resolve. Thanks.
    Bug No. 4262155
    Filed 25-MAR-2005 Updated 11-APR-2005
    Product Oracle Server - Enterprise Edition Product Version 9.2.0.6.0
    Platform Linux x86
    Platform Version 2.4.21-9.0.1
    Database Version 9.2.0.6.0
    Affects Platforms Port-Specific
    Severity Severe Loss of Service
    Status Not a Bug. To Filer
    Base Bug N/A
    Fixed in Product Version No Data
    Problem statement:
    ORA-29701 DURING DATABASE CREATION AFTER APPLYING 9.2.0.6 PATCHSET
    *** 03/25/05 07:32 am ***
    TAR:
    PROBLEM:
    Customer applied 9.2.0.6 patchset over 9.2.0.4 patchset.
    While creating the database, customer receives following error:
         ORA-29701: unable to connect to Cluster Manager
    However, if customer goes from 9.2.0.4 -> 9.2.0.5 -> 9.2.0.6, the problem does not occur.
    DIAGNOSTIC ANALYSIS:
    It seems that the problem is with libskgxn9.so shared library.
    For 9.2.0.4 -> 9.2.0.5 -> 9.2.0.6, the install log shows the following:
    installActions2005-03-22_03-44-42PM.log:,
    [libskgxn9.so->%ORACLE_HOME%/lib/libskgxn9.so 7933 plats=1=>[46]langs=1=> en,fr,ar,bn,pt_BR,bg,fr_CA,ca,hr,cs,da,nl,ar_EG,en_GB,et,fi,de,el,iw,hu,is,in, it,ja,ko,es,lv,lt,ms,es_MX,no,pl,pt,ro,ru,zh_CN,sk,sl,es_ES,sv,th,zh_TW, tr,uk,vi]]
    installActions2005-03-22_04-13-03PM.log:, [libcmdll.so ->%ORACLE_HOME%/lib/libskgxn9.so 64274 plats=1=>[46] langs=-554696704=>[en]]
    For 9.2.0.4 -> 9.2.0.6, install log shows:
    installActions2005-03-22_04-13-03PM.log:, [libcmdll.so ->%ORACLE_HOME%/lib/libskgxn9.so 64274 plats=1=>[46] langs=-554696704=>[en]] does not exist.
    This means that while patching from 9.2.0.4 -> 9.2.0.5, Installer copies the libcmdll.so library into libskgxn9.so, while patching from 9.2.0.4 -> 9.2.0.6 does not.
    ORACM is located in /app/oracle/ORACM which is different than ORACLE_HOME in customer's environment.
    WORKAROUND:
    Customer is using the following workaround:
    cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk rac_on ioracle ipc_udp
    RELATED BUGS:
    Bug 4169291

    Check if following MOS note helps.
    Series of ORA-7445 Errors After Applying 9.2.0.7.0 Patchset to 9.2.0.6.0 Database (Doc ID 373375.1)

  • Oracle RAC 11g R2 installation complete installation guide

    Hi,
    Please suggest any oracle docs for Oracle RAC 11g R2 installation complete installation.
    I am in process for installating Oracle RAC 11g r2 first time in my life this weekend.please help.

    Hi Praveen,
    Tim Hall has a perfect guide for installing Oracle RAC, you can review all the articles here:
    http://www.oracle-base.com/articles/11g/articles-11g.php#db11g_release_2_installations
    Consider also getting familiar with Real Application Clusters, because installing is only the very top of the solution and knowledge of how it works is a must:
    http://www.oracle.com/pls/db112/portal.portal_db?selected=16&frame=#oracle_real_application_clusters
    Regards,
    Sve

  • 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 값을 가지게 된다.

  • HOW TO CONFIGURE ORACLE RAC USING EMC STORAGE MULTIPATHING

    Dear Team,0
    Am in process of installation of ORACLE RAC 10.2.0.3 using cluvfy 10.2.0.3 with EMC storage (multipathing)
    need ur help..i had done with following things...
    1)i had done with prerequisite steps..
    2)user equivalence .
    3)cluvfy checks...
    4)in process to install ORACLE RAC but the storage assign to server is EMC Clarion but the disk assign is having same name but diffferent
    major number minor number...
    pls let me know..
    1)major number minor number with repect to voting ,ocr and asm disk..
    2)while configuring EMC storage how same mojor and minor number are assign(if possible compltee steps)
    Thanks
    Upendra
    9820011875

    Hi buddy,
    You should start reading the installation guide for Your plataform. it's well explained there.
    Regards,
    Cerreia

Maybe you are looking for

  • How do I programmatically populate the right side of a shuttle?

    Greetings, < on Application Express 4.0.2.00.07 > Background - I have an Image Map on a page and I need to put code in each cell hotspot href which will end up adding a value to the right side of a shuttle. I guess I will do it via a function call in

  • Can iOS 8 Photos sort by File Name insted of Date?

    I want to sync a set of folders from my windows 8.1 pc to my iPhone 5c running iOS 8.  when i sync with iTunes the folders in the photos app show in right order. the problem is the photos are not in ordered and I named all my files in sequence.  belo

  • Safe to move to leopard now or wait?

    Hi, Further to another question I have posted here about Tiger support, I am also interested to hear your thoughts about Leopard Server. Do you guys think it is wise to wait at least six months to a year before moving to Leopard Server? Have you run

  • LMS 4.0: Fault Monitoring Device Administration stuck in learning

    Hello Members, i have a problem with Fault Monitoring Device Administration. i have two devices which stuck in learning mode for almost forever. When the job is done the devices report an error SNMP timeout. I run a credential verfication job and the

  • How do I keep my original text colours when converting from Publisher 2007 to PDF format?

    Recently I am finding that when I convert my Publisher 2007 documents to PDF, the text colours do not remain the same, but revert to black or grey?  Clip art retains its colours.  What am I doing wrong?