<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head profile="http://internetalchemy.org/2003/02/profile"> <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" /> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="10. Database Event Hooks" /> <meta name="dc.subject" content="10. Database Event Hooks" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" /> <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" /> <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" /> <link rel="parent" href="hooks.html" title="Chapter Contents" /> <link rel="prev" href="fn_disconnect.html" title="Database Disconnections" /> <link rel="next" href="fn_dbev_prepare.html" title="SQL Statement Preparation" /> <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" /> <link rel="stylesheet" type="text/css" href="doc.css" /> <link rel="stylesheet" type="text/css" href="/doc/translation.css" /> <title>10. Database Event Hooks</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <meta name="copyright" content="OpenLink Software, 1999 - 2009" /> <meta name="keywords" content="" /> <meta name="GENERATOR" content="OpenLink XSLT Team" /> </head> <body> <div id="header"> <a name="fn_dbev_shutdown" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>10. Database Event Hooks</h1> </div> <div id="navbartop"> <div> <a class="link" href="hooks.html">Chapter Contents</a> | <a class="link" href="fn_disconnect.html" title="Database Disconnections">Prev</a> | <a class="link" href="fn_dbev_prepare.html" title="SQL Statement Preparation">Next</a> </div> </div> <div id="currenttoc"> <form method="post" action="/doc/adv_search.vspx"> <div class="search">Keyword Search: <br /> <input type="text" name="q" /> <input type="submit" name="go" value="Go" /> </div> </form> <div> <a href="http://www.openlinksw.com/">www.openlinksw.com</a> </div> <div> <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a> </div> <br /> <div> <a href="index.html">Book Home</a> </div> <br /> <div> <a href="contents.html">Contents</a> </div> <div> <a href="preface.html">Preface</a> </div> <br /> <div class="selected"> <a href="hooks.html">Database Event Hooks</a> </div> <br /> <div> <a href="fn_dbev_startup.html">Database Startup</a> </div> <div> <a href="fn_dbev_connect.html">Database Connections</a> </div> <div> <a href="fn_logins.html">Database Logins</a> </div> <div> <a href="fn_disconnect.html">Database Disconnections</a> </div> <div class="selected"> <a href="fn_dbev_shutdown.html">Database Shutdown</a> </div> <div> <a href="fn_dbev_prepare.html">SQL Statement Preparation</a> </div> <div> <a href="sqlparsetree.html">SQL Parse Tree</a> </div> <div> <a href="fn_davlogins.html">WebDAV Logins</a> </div> <div> <a href="assocauxdata.html">Associating Auxiliary Data With A Connection</a> </div> <br /> </div> <div id="text"> <a name="fn_dbev_shutdown" /> <h2>10.5. Database Shutdown</h2> <p> <span class="computeroutput">DB.DBA.DBEV_SHUTDOWN()</span> </p> <p> If defined, this function is called when shutting down the server, following disconnection of all clients and making a checkpoint. When a disconnect occurs as a result of server shutdown the DBEV_DISCONNECT hook is not called and this function is expected to perform any logout processing. The rationale is that all disconnect hooks would be called at the same time, creating likely deadlocks, resource contention and there could be no guarantee of time consumed by them or of even whether they would terminate at all. </p> <p> The shutdown will do a checkpoint before calling this hook. This checkpoint will terminate all transactions with a deadlock state. If transactions contain automatic retries, etc..., we cannot guarantee that all activity would have terminated when this hook starts. However, the hook function can try </p> <div> <pre class="programlisting"> txn_killall (6); rollback work; </pre> </div> <p> to signal an error on all other transactions to prompt them to terminate. Again, this is not a sure-fire termination since this could be handled by procedures. </p> <p> When this hook returns the server commits the transaction in which this was running and exits regardless of any lingering activity. There is no hard time limit for this function. Killing the process during this function has no specific ill effect, besides losing uncommitted work by said function. </p> <p> Result sets are prohibited, return values are discarded, errors are logged but not otherwise processed. </p> <a name="" /> <div class="example"> <div class="exampletitle">The Shutdown Hook</div> <div> <pre class="programlisting"> create procedure DB.DBA.DBEV_SHUTDOWN () { dbg_obj_print (' server shut down.'); update security_log set sl_logged_out = now () where sl_logged_out is null; } </pre> </div> <p> This just marks all open connections to be disconnected at the current time. </p> </div> <table border="0" width="90%" id="navbarbottom"> <tr> <td align="left" width="33%"> <a href="fn_disconnect.html" title="Database Disconnections">Previous</a> <br />Database Disconnections</td> <td align="center" width="34%"> <a href="hooks.html">Chapter Contents</a> </td> <td align="right" width="33%"> <a href="fn_dbev_prepare.html" title="SQL Statement Preparation">Next</a> <br />SQL Statement Preparation</td> </tr> </table> </div> <div id="footer"> <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div> <div id="validation"> <a href="http://validator.w3.org/check/referer"> <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /> </a> <a href="http://jigsaw.w3.org/css-validator/"> <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" /> </a> </div> </div> </body> </html>