RAC/TAF does not support Transaction Failover - WHY [message #276727] |
Fri, 26 October 2007 02:14 |
vipassana
Messages: 2 Registered: October 2007
|
Junior Member |
|
|
I am trying to understand RAC and have some questions. Appreciate anyone who can help me understand
1) The TAF in a RAC setup does not support transaction failover (DMLs will be rolled back), but only Query failover is supported. Why is this? If it can have the query image and using the instance which is alive, why cant it retain the DML image also and provide failover? Can someone please explain?
When a SELECT failsover, the instance still dies. But the SELECT statement from the dying instance is somehow taken and re-executed on the alive instance and fetched. For the User, its as if nothing happened.
In case of say an UPDATE, why cant Oracle take the UPDATE statement and re-execute in the alive instance again, so that its much as in the case of SELECT statment for the User as explained above as if nothing happnened.
The point is why does RAC demand for the User to re-execute the Update statement? It can rollback the transaction and re-execute the update statement on its own since it has the intelligence of what the Update statement was much like the select.
Please let me know, this is really important for me to understand
2) When a Query failover happens, I believe the select statment is re-issued. In this case will the SCN be different from the original. If so, how is read consistency maintained.
Thanks
Vipassana
|
|
|
Re: RAC/TAF does not support Transaction Failover - WHY [message #276889 is a reply to message #276727] |
Fri, 26 October 2007 11:09 |
DreamzZ
Messages: 1666 Registered: May 2007 Location: Dreamzland
|
Senior Member |
|
|
AFAIK
Actually in RAC there are multiple redo threads depending on the nodes and undo tablespaces if you are using UNDO_MANAGEMENT=auto.
Basically cache fusion is the process for transferring dirty blocks among different instances for read consistancy.
let say a user A connected to NODE A using the thread A for his activities and i guess his data is not written to thread B and he try to perform DMLs on EMP table in the mean while the node crashes.
The surviving node will perform recovery for crashed node means LMON process initiates recovery action for the failed node in recovery process LMON re mastering the GCS and GES and instance recovery.
NOTE
at this stage the RAC enviroment is in a state of SYSTEM PAUSE and most of the TRANSACTIONS suspend until ORACLE completes recovery.
|
|
|
|
|
|
|
Re: RAC/TAF does not support Transaction Failover - WHY [message #283773 is a reply to message #283720] |
Wed, 28 November 2007 02:19 |
trantuananh24hg
Messages: 744 Registered: January 2007 Location: Ha Noi, Viet Nam
|
Senior Member |
|
|
Thank you, Micheal!
Please view 2 my files Listener.ora and tnsname.ora
LISTENER.ora
Quote: |
# listener.ora.db01 Network Configuration File: /oracle/db10gr2/network/admin/listener.ora.db01
# Generated by Oracle configuration tools.
LISTENER_DB01 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521)(IP = FIRST))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.35.60.30)(PORT = 1521)(IP = FIRST))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
|
TNSNAME.ora
Quote: |
# tnsnames.ora Network Configuration File: /oracle/db10gr2/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
GDKH_SVC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gdkh_svc)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
GDKH =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gdkh)
)
)
GDKH2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gdkh)
(INSTANCE_NAME = gdkh2)
)
)
GDKH1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gdkh)
(INSTANCE_NAME = gdkh1)
)
)
LISTENERS_GDKH =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1521))
)
cabman =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.35.60.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = omch)
)
)
|
These above files are configured by the others, and I did not know that they were right or not.
Thank you!
|
|
|
|
Re: RAC/TAF does not support Transaction Failover - WHY [message #283804 is a reply to message #283775] |
Wed, 28 November 2007 03:20 |
trantuananh24hg
Messages: 744 Registered: January 2007 Location: Ha Noi, Viet Nam
|
Senior Member |
|
|
Thank you, Michel!
Because of the old employee who configured this RAC system, leaved this company, now I have to manage it. Recently, some customer complained that their connections failures.
Executed AWR, STATSPACK, I found that our application cause the DB hang.
Thank you for your instructor!
|
|
|