This content has been marked as final. Show 6 replies
I think it is normal because TAF documentation only mentions that SELECT queries can be replayed (running a stored procedure is different that running a SELECT query from database point of view).
Is your session failing over and the procedure stalls or the fail over does not take place at all?
If you take a minute and think about what is happening, it makes sense. When a WRITE operation is in progress and fails, you WANT it to completely fail and rollback. No database can predict - nor do you want it to predict - the state of that operation. It MUST be managed by your application to guarantee that it does what you expect it too...
Not sure what I missed here: where do you see the WRITE operation?
sorry. there was no DML in my example. ... and i did it intentionally. i just misdescribed my example.
my first intention was to do INSERTs in LOOP (thats why I mentioned about that), but i resigned from this, because i know that RAC doe's not support DML... so i wanted do check what RAC will behave when i do SELECTs in LOOP and enforce node restart - and i know now.
you asked me also about: does my procedure stall and failover does not take place. i am sure that my procedure stall, and i didn't have control under my session, but i don't know if failover was perfomed or not - i didn't check it, because of lack of my time at work.
but i suspect that it wasn't performed (i mean failover) - probably.
i am thinking how RAC enviromnent behave if we have (for example) end user interface application which is based on invoking oracle stored procedures. now i know that in case of node unavailability each procedure which was executed and not finished (in the middle) will fail - even despite of fact that this procedure performs read only operation. each new activity from end user interface will create session on the new node and will work properly but procedures which was in the middle just will fail.
one question: how long your failover takes place when you primary instance fails? is it secounds, or ten of secounds?
Edited by: piotrtal on Sep 27, 2012 9:15 PM
Failover duration depends on the load, but I think in your case it should be almost instantaneous as I assume this is a test db, nobody else uses. Can you check the session before you kill the node? (make sure it is configured for failover)
use the statement in your other post:
Edited by: Valentin Minzatu on Sep 27, 2012 3:41 PM
SELECT inst_id, sid, serial#, username, failover_type, failover_method, service_name FROM gv$session ...