My employer is upgrading the Oracle DB to RAC. TAF will be enabled.

I'm pretty clear on how to handle TAF events by supplying a callback function.

What I'm not clear on, is what to do after reconnection. I've figured out a way of replaying all the DB requests that came through before the DB failure. But that could easily go south if a sequence or intermediate query result changes between the time DBI disconnects and reconnects.

Our environment is unfortunately primitive. We run mod_perl, but we don't do handlers; we have CGI scripts that we very slightly modified to run with reliably with PerlResponseHandler ModPerl::PerlRun.

What I'd really like to do, is simply roll back the changes and start the response handler (PerlRun) over again as if it had never run in the first place. I'm just not sure what general approach to take to get that result. I'm thinking that I could create a specific exception class, and use that to tell a class inheriting from ModPerl::PerlRun to start the request over, and use that class instead of ModPerl::PerlRun for the response handler.

I'm not looking for code, just a clue that what I want to do isn't crazy and/or pointers to something simple that would work reliably.


In reply to Seamless recovery from DB disconnects in Apache/mod_perl by cleverett

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.