<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-25155671</id><updated>2012-01-27T08:32:11.659-08:00</updated><category term='SOAP'/><category term='WSDL'/><category term='Log4j'/><category term='JPublisher'/><category term='Google Web Services'/><category term='Database Web Services'/><category term='podcast rubyonrails php drcp'/><category term='Sleep'/><category term='OracleJVM'/><title type='text'>360 Degree DB Programming</title><subtitle type='html'>Thoughts on Database programming -- using Java/JDBC, PHP, Ruby on Rails, JRuby, Python/Jython, Perl, and Web services (*Database Web Services*).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://db360.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25155671.post-4383906954282121167</id><published>2011-12-08T04:55:00.000-08:00</published><updated>2011-12-08T04:57:40.007-08:00</updated><title type='text'>My updates are on Twitter and/or Facebook</title><content type='html'>&lt;a href="http://www.facebook.com/profile.php?id=814634920"&gt;http://www.facebook.com/profile.php?id=814634920&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;@kmensah (on Twitter)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-4383906954282121167?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/4383906954282121167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=4383906954282121167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4383906954282121167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4383906954282121167'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/12/my-updates-are-on-twitter-andor.html' title='My updates are on Twitter and/or Facebook'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6345658323986243216</id><published>2011-08-31T15:37:00.000-07:00</published><updated>2011-09-02T14:54:04.498-07:00</updated><title type='text'>OOW 2011: What is Going on for JDBC, UCP, Java in the Database, Net Services, OCI, PHP, Ruby, Python, and Perl</title><content type='html'>&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Oracle OpenWorld San Fransicso 2011&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Sessions for DBA and/or application developers (Java, C, C++, PHP, Ruby, Python, Perl)  looking for features and best practices to optimize networking and build best performing, scalable and highly-available applications with Oracle Database 11g. &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Session: 14702&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Java in the Database—The Sky's the Limit: Lessons from the Largest Deployment&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where: &lt;b&gt;Marriott Marquis - Salon 8&lt;/b&gt;  -- When&lt;b&gt;:&lt;/b&gt; &lt;b&gt;10/3/11, 15:30&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;BoF Session: 26220&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Meet the Oracle JDBC and Oracle Universal Connection Pool Development Team&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 8&lt;/b&gt;  -- When: &lt;b&gt;10/3/11, 18:30&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;BoF Session: 26240&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Meet the Oracle Database Clients Developers: C, C++, PHP, Python, Ruby, and Perl&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 8&lt;/b&gt; -- When: &lt;b&gt;10/3/11, 19:30&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Hands-on Lab - Session: 30082&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Develop and Deploy High-Performance Web 2.0 PHP, Ruby, or Python Applications&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 10/11&lt;/b&gt; -- When: &lt;b&gt;10/3/11, 17:00&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Session: 13360&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Optimize Java Persistence/Scale Database Access with JDBC and Oracle Universal Connection Pool (UCP)&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 8&lt;/b&gt; -- When: &lt;b&gt;10/4/11, 17:00&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Hands-on-lab - Session: 30021&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Efficient Java Persistence with JDBC, Java Universal Connection Pool, and Java in the Database&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 10/11&lt;/b&gt; -- When: &lt;b&gt;10/4/11, 13:15&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Session: 14345&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Net Services: Best Practices for Performance, Scalability, and High Availability &lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Moscone South - 303&lt;/b&gt; -- When: &lt;b&gt;10/5/11, 13:15&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Session: 14703&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;Build, Deploy, and Troubleshoot Highly Performant, Highly Available Apps with Oracle Database&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where: &lt;b&gt;Moscone South - 303&lt;/b&gt; -- When: &lt;b&gt;10/5/11, 17:00&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;---&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt; &lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;Session: 14704&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;PHP, Ruby, Python, and Perl: Develop and Deploy Mission-Critical Apps with Oracle Database 11g&lt;/b&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt;"&gt;Where:  &lt;b&gt;Marriott Marquis - Salon 8&lt;/b&gt; -- When: &lt;b&gt;10/5/11, 11:45&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0in 0in 0.0001pt;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6345658323986243216?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6345658323986243216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6345658323986243216' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6345658323986243216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6345658323986243216'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/08/oow-2011-what-is-going-on-for-jdbc-ucp.html' title='OOW 2011: What is Going on for JDBC, UCP, Java in the Database, Net Services, OCI, PHP, Ruby, Python, and Perl'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-9089946651662578850</id><published>2011-03-30T11:11:00.000-07:00</published><updated>2011-03-30T11:13:43.526-07:00</updated><title type='text'>Database Web Services Callout utility</title><content type='html'>Following OTN migration to UCM, the link to the Wev Services Callout is broken; while i am fixing it, you can download it from &lt;a href="http://download.oracle.com/technology/sample_code/tech/java/jsp/dbws-callout-utility-10131.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here it the link again http://download.oracle.com/technology/sample_code/tech/java/jsp/dbws-callout-utility-10131.zip&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-9089946651662578850?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/9089946651662578850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=9089946651662578850' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/9089946651662578850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/9089946651662578850'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/03/database-web-services-callout-utility.html' title='Database Web Services Callout utility'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-52929345812449094</id><published>2011-03-24T16:00:00.000-07:00</published><updated>2011-03-24T16:06:13.016-07:00</updated><title type='text'>OTN Dev Days Database Toronto</title><content type='html'>Toronto: OTN Dev Days Database is coming to &lt;a href="http://ning.it/eIPhd7"&gt;you&lt;/a&gt;; we are still taking registration and There Is Such A Thing As Free Lunch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-52929345812449094?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/52929345812449094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=52929345812449094' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/52929345812449094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/52929345812449094'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/03/otn-ev.html' title='OTN Dev Days Database Toronto'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7185384251207868412</id><published>2011-02-18T17:41:00.000-08:00</published><updated>2011-02-18T17:43:19.877-08:00</updated><title type='text'>OTN Developers Days: Hands-on Oracle Database 11g App Dev</title><content type='html'>OTN Dev Days Hands-on Oracle DB 11g is coming to you in &lt;a href="http://ning.it/ih83hy"&gt;Dallas&lt;/a&gt; (03/09th) , Toronto (03/30th) and Chicago (04/25th).&lt;br /&gt;See you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7185384251207868412?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7185384251207868412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7185384251207868412' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7185384251207868412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7185384251207868412'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/02/otn-developers-days-hands-on-oracle.html' title='OTN Developers Days: Hands-on Oracle Database 11g App Dev'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2004762959682287265</id><published>2011-02-18T17:32:00.000-08:00</published><updated>2011-02-18T17:41:07.823-08:00</updated><title type='text'>Speaking at Confoo.ca 2011</title><content type='html'>Speaking at &lt;a href="http://confoo.ca/en "&gt;Confoo.ca 2011 &lt;/a&gt; - here are my sessions&lt;br /&gt;&lt;a href="http://ning.it/ijtsqh "&gt;Develop &amp; Deploy Mission Critical Web Applications&lt;/a&gt; and &lt;br /&gt;&lt;a href="http://ning.it/faBzds "&gt;Step by Step: GC Tuning in the HotSpot JVM&lt;/a&gt;&lt;br /&gt;(replacing Charlie).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2004762959682287265?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2004762959682287265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2004762959682287265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2004762959682287265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2004762959682287265'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2011/02/speaking-at-confooca-2011.html' title='Speaking at Confoo.ca 2011'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6442605762823337361</id><published>2010-10-21T10:06:00.000-07:00</published><updated>2010-10-21T10:08:06.052-07:00</updated><title type='text'>My upcoming 2-Day Hands-on Seminar in Kuala Lumpur</title><content type='html'>If you can make it to Kuala Lumpur on Dec 20th, you don't want to miss http://ning.it/aDMfVN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6442605762823337361?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6442605762823337361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6442605762823337361' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6442605762823337361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6442605762823337361'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/10/my-upcoming-2-day-hands-on-seminar-in.html' title='My upcoming 2-Day Hands-on Seminar in Kuala Lumpur'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3426480536177196401</id><published>2010-10-06T15:26:00.000-07:00</published><updated>2010-10-06T15:30:38.520-07:00</updated><title type='text'>My OOW interview you don't want to miss!</title><content type='html'>On Online Applicayion upgrade, Java application failover, Query Change Notification, Java in the database, and Scripting languages.&lt;br /&gt;&lt;br /&gt;Watch it &lt;a href="http://medianetwork.oracle.com/media/show/15642"&gt;here&lt;/a&gt; and enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3426480536177196401?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3426480536177196401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3426480536177196401' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3426480536177196401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3426480536177196401'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/10/my-oow-interview-you-dont-want-to-miss.html' title='My OOW interview you don&apos;t want to miss!'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6712877937072446539</id><published>2010-08-22T12:33:00.000-07:00</published><updated>2010-08-27T14:48:39.990-07:00</updated><title type='text'>OOW 2010: What is Going on for JDBC, Java in the Database, OCI, PHP, Ruby, Python, Perl and Net Services</title><content type='html'>If you are a DBA or an application developer, here are some sessions for you at Oracle Open World 2010 San Francisco:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S316995&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;Developing, Deploying, and Diagnosing Applications on Oracle Database 11g&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 20-SEP-10&lt;br /&gt;Time: 10:00 - 11:00&lt;br /&gt;Venue: Hotel Nikko&lt;br /&gt;Room: Bay View&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S317092&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;End-to-End Java: Decide When to Adopt Java in the Database and Best Practices&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 20-SEP-10&lt;br /&gt;Time: 13:00 - 14:00&lt;br /&gt;Venue: Hotel Nikko&lt;br /&gt;Room: Nikko Ballroom I&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S317046&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;Best Practices and Trade-offs for Efficient and Reliable Java Persistence&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 21-SEP-10&lt;br /&gt;Time: 08:00 - 09:00&lt;br /&gt;Venue: Hotel Nikko&lt;br /&gt;Room: Monterey I / II&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S317002&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Best Practices for Building High-Performance Applications with Oracle Database&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 21-SEP-10&lt;br /&gt;Time: 11:30 - 12:30&lt;br /&gt;Venue: Hotel Nikko&lt;br /&gt;Room: Nikko Ballroom I&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S317049&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Oracle Net Services: Performance, Scalability, HA, and Security Best Practices&lt;/strong&gt;&lt;br /&gt;Track: Database&lt;br /&gt;Date: 21-SEP-10&lt;br /&gt;Time: 12:30 - 13:30&lt;br /&gt;Venue: Moscone South&lt;br /&gt;Room: Rm 302&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S317007&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;PHP, Python, Ruby, and Perl in Enterprises: Advanced Tips for Agile Development&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 21-SEP-10&lt;br /&gt;Time: 14:30 - 15:30&lt;br /&gt;Venue: Hotel Nikko&lt;br /&gt;Room: Golden Gate&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S318542&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Hands-On JDBC, Oracle Universal Connection Pool, and Java in the Database&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 22-SEP-10&lt;br /&gt;Time: 13:00 - 14:00&lt;br /&gt;Venue: Hilton San Francisco&lt;br /&gt;Room: Imperial Ballroom A&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S318543&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Develop a PHP Web Application with Oracle Database 11g in One Hour&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 22-SEP-10&lt;br /&gt;Time: 16:45 - 17:45&lt;br /&gt;Venue: Hilton San Francisco&lt;br /&gt;Room: Franciscan A / B / C / D&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S318547&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Develop a Python/Django Web Application with Oracle Database 11g in One Hour&lt;/strong&gt;Track: Database Development&lt;br /&gt;Date: 23-SEP-10&lt;br /&gt;Time: 11:00 - 12:00&lt;br /&gt;Venue: Hilton San Francisco&lt;br /&gt;Room: Franciscan A / B / C / D&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Session#: S318545&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Develop a Ruby on Rails Web Application with Oracle Database 11g in One Hour&lt;/strong&gt;&lt;br /&gt;Track: Database Development&lt;br /&gt;Date: 23-SEP-10&lt;br /&gt;Time: 12:30 - 13:30&lt;br /&gt;Venue: Hilton San Francisco&lt;br /&gt;Room: Franciscan A / B / C / D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6712877937072446539?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6712877937072446539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6712877937072446539' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6712877937072446539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6712877937072446539'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/08/oow-2010-what-is-going-on-for-jdbc-java.html' title='OOW 2010: What is Going on for JDBC, Java in the Database, OCI, PHP, Ruby, Python, Perl and Net Services'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3420882402772373186</id><published>2010-07-14T14:36:00.000-07:00</published><updated>2010-07-14T14:41:59.855-07:00</updated><title type='text'>OTN Developer Days - Database Coming to You</title><content type='html'>Free event (TISATAAFL) OTN Developer Days Database Coming to You: in Boston http://ning.it/aowUgZ, at Oracle HQ http://ning.it/aNz77V and in Vancouver http://ning.it/9X6y1Y.&lt;br /&gt;Register now, seats fill up fast!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3420882402772373186?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3420882402772373186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3420882402772373186' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3420882402772373186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3420882402772373186'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/07/otn-developer-days-database-coming-to.html' title='OTN Developer Days - Database Coming to You'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6689310712743159404</id><published>2010-05-07T09:01:00.000-07:00</published><updated>2010-05-07T09:02:09.310-07:00</updated><title type='text'>OTN Developer Days Database in Reston, VA</title><content type='html'>After Disneyland Anaheim, the New Format of OTN Developer Days Database is Returning to Reston, VA - http://ning.it/c5Ze82&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6689310712743159404?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6689310712743159404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6689310712743159404' title='53 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6689310712743159404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6689310712743159404'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/05/otn-developer-days-database-in-reston.html' title='OTN Developer Days Database in Reston, VA'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>53</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8377680717405334487</id><published>2010-04-18T22:02:00.000-07:00</published><updated>2010-04-18T22:03:08.616-07:00</updated><title type='text'>Speaking at Collaborate 2010</title><content type='html'>En route for #C10 in Las Vegas - main speaker session 327 rm Surf D @ 11:45am and co-speaker session 336 Database App Dev @ 3:15pm - see you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8377680717405334487?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8377680717405334487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8377680717405334487' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8377680717405334487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8377680717405334487'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/04/speaking-at-collaborate-2010.html' title='Speaking at Collaborate 2010'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7672939133604655069</id><published>2010-04-15T09:08:00.001-07:00</published><updated>2010-04-15T09:08:59.014-07:00</updated><title type='text'>Excuse my French!</title><content type='html'>Video of my talk at the French Linux Open Source conf http://ning.it/bHAcUZ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7672939133604655069?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7672939133604655069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7672939133604655069' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7672939133604655069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7672939133604655069'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/04/excuse-my-french.html' title='Excuse my French!'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8522696108077485076</id><published>2010-04-07T15:56:00.000-07:00</published><updated>2010-04-07T15:58:41.440-07:00</updated><title type='text'>Free event, May 5th: OTN Developer Days Database</title><content type='html'>Disneyland is for Developers too; join us on May 5 @ the &lt;a href="http://ning.it/cH83Zr"&gt;Orange County Disneyland Resort &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8522696108077485076?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8522696108077485076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8522696108077485076' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8522696108077485076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8522696108077485076'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/04/free-event-may-5th-otn-developer-days.html' title='Free event, May 5th: OTN Developer Days Database'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-1878912784811612222</id><published>2010-03-17T10:59:00.000-07:00</published><updated>2010-03-17T11:00:33.867-07:00</updated><title type='text'>Oracle: new superstar of Open Source?</title><content type='html'>Oracle and yours truly in the French newspaper @ http://ning.it/cPidVr (see the last paragraph).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-1878912784811612222?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/1878912784811612222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=1878912784811612222' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1878912784811612222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1878912784811612222'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/03/oracle-new-superstart-of-open-source.html' title='Oracle: new superstar of Open Source?'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8495467754941705765</id><published>2010-01-24T18:56:00.000-08:00</published><updated>2010-01-24T19:13:53.783-08:00</updated><title type='text'>Speaking at Confoo</title><content type='html'>&lt;a href="http://www.confoo.ca/en/"&gt;&lt;img alt="confoo.ca Web Techno Conference" style="border:0" width="150" height="265" src="http://confoo.ca/images/propaganda/2010/en/tall_tech.jpg" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.confoo.ca/en/2010/speaker/kuassi-mensah"&gt;My sessions&lt;/a&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Oracle is Gold sponsor.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8495467754941705765?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8495467754941705765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8495467754941705765' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8495467754941705765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8495467754941705765'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2010/01/speaking-at-confoo.html' title='Speaking at Confoo'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3376006419021347656</id><published>2009-12-01T08:46:00.001-08:00</published><updated>2009-12-01T08:46:40.360-08:00</updated><title type='text'>What is happening on Jan 13th in NYC?</title><content type='html'>&lt;h3 class="GenericStory_Message" ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}"&gt; &lt;a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=101955&amp;amp;src=6773869&amp;amp;src=6773869&amp;amp;Act=85" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;&lt;span&gt;http://www.oracle.com/webapps/events/Eve&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;&lt;span&gt;ntsDetail.jsp?p_eventId=101955&amp;amp;src=67738&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;69&amp;amp;src=6773869&amp;amp;Act=85&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;See you there&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3376006419021347656?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3376006419021347656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3376006419021347656' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3376006419021347656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3376006419021347656'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/12/what-is-happening-on-jan-13th-in-nyc.html' title='What is happening on Jan 13th in NYC?'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-4871583117615376546</id><published>2009-11-16T13:07:00.000-08:00</published><updated>2009-11-16T13:12:20.312-08:00</updated><title type='text'>Presenting PHP, Net Services at DOAG</title><content type='html'>http://bit.ly/1pmAxS&lt;br /&gt;Look for&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PHP Oracle Web Applications: Best Practices and Caching Strategies&lt;/li&gt;&lt;li&gt;Oracle Net Services – Best Practices for Database Performance and Scalability&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-4871583117615376546?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/4871583117615376546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=4871583117615376546' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4871583117615376546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4871583117615376546'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/11/presenting-php-net-services-at-doag.html' title='Presenting PHP, Net Services at DOAG'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2446613469197367223</id><published>2009-09-11T12:38:00.000-07:00</published><updated>2009-09-22T14:40:10.267-07:00</updated><title type='text'>Code|Works -- PHP Oracle Web Applications: Best Practices and Caching Strategies</title><content type='html'>It's&lt;a href="http://bit.ly/2B3ncj"&gt; here&lt;/a&gt; : &lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;PHP Oracle Web Applications: Best Practices and Caching Strategies&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;I'll be speaking at NYC and DC while my complice, Chris Jones, will be speaking in Dallas and Atlanta.&lt;br /&gt;&lt;h2&gt;   &lt;span style="font-size:100%;"&gt;Talk Locations &amp;amp; Times  &lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; &lt;a href="http://cw.mtacon.com/schedule/city/dallas"&gt;Dallas&lt;/a&gt;, Sep 27 @ 09:00&lt;/li&gt;&lt;li&gt; &lt;a href="http://cw.mtacon.com/schedule/city/atlanta"&gt;Atlanta&lt;/a&gt;, Sep 29 @ 11:15&lt;/li&gt;&lt;li&gt; &lt;a href="http://cw.mtacon.com/schedule/city/washington"&gt;Washington/Baltimore&lt;/a&gt;, Oct 3 @ 11:15&lt;/li&gt;&lt;li&gt; &lt;a href="http://cw.mtacon.com/schedule/city/new-york"&gt;New York&lt;/a&gt;, Oct 5 @ 13:15&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;See you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2446613469197367223?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2446613469197367223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2446613469197367223' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2446613469197367223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2446613469197367223'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/09/php-codeworks-you-dont-want-to-miss-it.html' title='Code|Works -- PHP Oracle Web Applications: Best Practices and Caching Strategies'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2186741719175362201</id><published>2009-09-01T15:03:00.000-07:00</published><updated>2009-09-29T12:20:11.304-07:00</updated><title type='text'>Oracle Open World 2009 Unconferences</title><content type='html'>http://wiki.oracle.com/page/Oracle+OpenWorld+Unconference&lt;br /&gt;&lt;br /&gt;I recommend&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tuesday, Oct 13th, 10:00am&lt;/span&gt; - Overlook II: Experiences on Java programming within the databases, tips &amp;amp;  tricks, tools, open source libraries and more. (Oracle ACE Marcelo F. Ochoa)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tuesday, Oct 13th, 2:00pm &lt;/span&gt;- Overlook I: Oracle adapters for Ruby ORMs - ActiveRecord and DataMapper  (Raimonds Simanovskis)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tuesday, Oct 13h, 2:00pm&lt;/span&gt; Overlook II: How to use native database REST Web Services in Oracle 11g by Marcelo F. Ochoa&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thursday, Oct 15th, 11:00am&lt;/span&gt; -  Overlook I: Automate server installation and configuration with Chef (Raimonds  Simanovskis)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2186741719175362201?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2186741719175362201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2186741719175362201' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2186741719175362201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2186741719175362201'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/09/oracle-open-world-2009-unconferences.html' title='Oracle Open World 2009 Unconferences'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-4494485229132435285</id><published>2009-08-24T18:41:00.000-07:00</published><updated>2009-10-08T11:51:24.218-07:00</updated><title type='text'>Oracle Open World 2009  -  Java, JDBC, C/C++, OCI, PHP, Ruby, Python and Net Services  sessions</title><content type='html'>Want to hear about the latest about JDBC, Java in the database, C, C++, OCI, PHP, Ruby/Rails, Python/Django, and Net Services at Oracle Open World?&lt;br /&gt;&lt;br /&gt;Here are the technical sessions (mark your calendar and pre-register) :&lt;br /&gt;&lt;ul&gt;&lt;li&gt; S311371 Best Practices for High-Performance Applications with Oracle Database 11g&lt;strong&gt; -- Mon 10/12 17:30-18:30 Hilton Hotel Golden Gate &lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311372 Tips and Techniques for Building Enterprise-Class C/C++ Applications&lt;strong&gt; -- Tues 10/13 14:30-15:30 Hilton Hotel Golden Gate &lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311373 Agile Web Development: Ruby/Rails&lt;a href="http://ca-tools1.us.oracle.com:1234/wiki.pl?action=edit&amp;amp;id=OOW_2009_Technical_Sessions/Rails" class="wikipageedit"&gt;?&lt;/a&gt; and Python/Django&lt;a href="http://ca-tools1.us.oracle.com:1234/wiki.pl?action=edit&amp;amp;id=OOW_2009_Technical_Sessions/Django" class="wikipageedit"&gt;?&lt;/a&gt; with Oracle Database 11g&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;--           &lt;strong&gt;Sun 10/11 10:30-11:30 Hilton Hotel Golden Gate 1&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311378 Tips for Debugging and Troubleshooting Common Java/JDBC Applications Errors -- &lt;strong&gt;Tues 10/13 13:00-14:00 Hilton Hotel Golden Gate 2&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311381 Developing &amp;amp; Deploying the Largest Web-sites using PHP and Oracle Database 11g&lt;strong&gt; -- Tues 10/13 16:00-17:00 Hilton Hotel Golden Gate 2&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311395 Performance &amp;amp; Availability of Java applications using RAC and UCP -- &lt;strong&gt;Sun 10/11 13:15-14:15 Hilton Hotel Golden Gate 1&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311402 Speed &amp;amp; Space -- Performance and Memory Usage of Java in the Database -- &lt;strong&gt;Mon 10/12 11:30-12:30 Hilton Hotel Golden Gate 2&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S311643 Oracle Net Services Best Practices for Database Performance and Scalability -- &lt;strong&gt;Thur 10/15 10:30-11:30 Moscone South Room 305&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Here are the hands-on labs (mark your calendar and pre-register) :&lt;br /&gt;&lt;ul&gt;&lt;li&gt; S312327 Develop Painless Enterprise Web Applications using Ruby/Rails&lt;a href="http://ca-tools1.us.oracle.com:1234/wiki.pl?action=edit&amp;amp;id=OOW_2009_Hands-On_Lab_Sessions/Rails" class="wikipageedit"&gt;?&lt;/a&gt; and Oracle Database 11g&lt;strong&gt; -- Tue 10/13 11:30-12:30 Hilton Continental Parlor 1/2/3 &lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S312328 Develop C/C++ Applications with Oracle Database 11g using Oracle Call Interface, Pro*C, ODBC -- &lt;strong&gt;Mon 10/12 14:30-15:30 Hilton Hotel Continental Parlor 1/2/3&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S312329 Develop Scalable Applications using JDBC and Java in Oracle Database 11g&lt;strong&gt; -- Mon 10/12 16:00-17:00 Hilton Hotel Continental Parlor 1/2/3&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S312330 Develop Painless Enterprise Web Applications using PHP and Oracle Database 11g&lt;span style="font-family:monospace;"&gt; --&lt;/span&gt; &lt;strong&gt;Sun 10/11 14:30-15:30 Hilton Hotel Continental Parlor 1/2/3&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt; S312331 Develop Painless Enterprise Web Applications using Python/Django&lt;a href="http://ca-tools1.us.oracle.com:1234/wiki.pl?action=edit&amp;amp;id=OOW_2009_Hands-On_Lab_Sessions/Django" class="wikipageedit"&gt;?&lt;/a&gt; and Oracle Database 11g -- &lt;strong&gt;Sun 10/11 13:15-14:15 Hilton Hotel Continental Parlor 1/2/3&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span style="font-family:Georgia,serif;"&gt;See you there.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-4494485229132435285?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/4494485229132435285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=4494485229132435285' title='94 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4494485229132435285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4494485229132435285'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/08/oracle-open-world-2009-java-jdbc-cc-oci.html' title='Oracle Open World 2009  -  Java, JDBC, C/C++, OCI, PHP, Ruby, Python and Net Services  sessions'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>94</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7401153043320365993</id><published>2009-07-21T14:27:00.000-07:00</published><updated>2009-07-21T14:30:48.815-07:00</updated><title type='text'>DataMapper Oracle Adapter</title><content type='html'>&lt;h3 class="UIIntentionalStory_Message" ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}"&gt;&lt;span style="font-weight: normal;" class="text"&gt;Raimonds just posted a step by step instructions for using DataMapper (Ruby ORM, alternative to ActiveRecord) with Oracle&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;; check it out.&lt;/span&gt;&lt;a href="http://blog.rayapps.com/2009/07/21/initial-version-of-datamapper-oracle-adapter/" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h3 class="UIIntentionalStory_Message" ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}"&gt;&lt;a href="http://blog.rayapps.com/2009/07/21/initial-version-of-datamapper-oracle-adapter/" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;&lt;span&gt;http://blog.rayapps.com/2009/07/21/initi&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;al-version-of-datamapper-oracle-adapter/&lt;/a&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7401153043320365993?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7401153043320365993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7401153043320365993' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7401153043320365993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7401153043320365993'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/07/datamapper-oracle-adapter.html' title='DataMapper Oracle Adapter'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3474178084419327987</id><published>2009-07-16T09:55:00.001-07:00</published><updated>2009-07-16T09:55:57.003-07:00</updated><title type='text'>Your Take on Oracle JDBC Drivers</title><content type='html'>&lt;div class="jive-body"&gt;The Oracle JDBC development team would like to hear your  experience; please tell us what works and what does not work for you.&lt;br /&gt;&lt;a class="jive-link-external" href="http://spreadsheets.google.com/embeddedform?key=rqx1Y0vD-zTDxJZpNG0j1bQ"&gt;http://spreadsheets.google.com/embeddedform?key=rqx1Y0vD-zTDxJZpNG0j1bQ&lt;/a&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3474178084419327987?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3474178084419327987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3474178084419327987' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3474178084419327987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3474178084419327987'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/07/your-take-on-oracle-jdbc-drivers.html' title='Your Take on Oracle JDBC Drivers'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-296484077076292842</id><published>2009-07-14T14:15:00.000-07:00</published><updated>2009-07-14T14:17:10.569-07:00</updated><title type='text'>PyOhio: free Ohio based Python Miniconf.</title><content type='html'>&lt;a href="http://www.pyohio.org/Home"&gt;PyOhio&lt;/a&gt; "The Free Ohio-based Python Miniconference" is on Saturday &amp;amp; Sunday July 25-26 at Ohio State University.  On Sunday &lt;a href="http://catherinedevlin.blogspot.com/"&gt;Catherine Devlin&lt;/a&gt; and Oracle Technology Network's Todd Trichler will have an Oracle/Python/Linux Tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-296484077076292842?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/296484077076292842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=296484077076292842' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/296484077076292842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/296484077076292842'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/07/pyohio-free-ohio-based-python-miniconf.html' title='PyOhio: free Ohio based Python Miniconf.'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-4556462785096694360</id><published>2009-06-19T09:53:00.000-07:00</published><updated>2009-06-19T09:55:42.582-07:00</updated><title type='text'>Speaking at Kaleidoscope 2009 on Wed June 24h 2:45pm</title><content type='html'>http://www.odtugkaleidoscope.com/&lt;br /&gt;My talk is about: &lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style=""&gt;Web Scale Applications with PHP, Ruby and    Oracle 2:45pm - 3:45pm&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-4556462785096694360?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/4556462785096694360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=4556462785096694360' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4556462785096694360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4556462785096694360'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/06/speaking-at-kaleidoscope-2009-on-wed.html' title='Speaking at Kaleidoscope 2009 on Wed June 24h 2:45pm'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5522545639053252714</id><published>2009-05-01T09:20:00.000-07:00</published><updated>2009-05-01T09:21:26.755-07:00</updated><title type='text'>Hands-on Oracle Database 11g Applications Development</title><content type='html'>http://www.oracle.com/go/?&amp;amp;Src=6635701&amp;amp;Act=229&amp;amp;pcode=NAMK08038812MPP033&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5522545639053252714?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5522545639053252714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5522545639053252714' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5522545639053252714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5522545639053252714'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/05/hands-on-oracle-database-11g.html' title='Hands-on Oracle Database 11g Applications Development'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2892743792840270033</id><published>2009-04-30T09:30:00.000-07:00</published><updated>2009-04-30T09:53:02.553-07:00</updated><title type='text'>Java Performance: The Return of the Usual Suspects (Updated)</title><content type='html'>&lt;a href="http://blogs.oracle.com/olaf/2009/04/java_performance_the_return_of.html"&gt;http://blogs.oracle.com/olaf/2009/04/java_performance_the_return_of.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2892743792840270033?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2892743792840270033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2892743792840270033' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2892743792840270033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2892743792840270033'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/04/java-performance-return-of-usual.html' title='Java Performance: The Return of the Usual Suspects (Updated)'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2473429483731138915</id><published>2009-04-13T19:19:00.000-07:00</published><updated>2009-04-13T20:22:56.653-07:00</updated><title type='text'>Book Review: Processing XML documents with Oracle JDeveloper 11g</title><content type='html'>I am no XML expert but my first interest for the book stems from the fact that wether you like it or not, XML is everywhere; so better embrace it. The book furnishes a comprehensive coverage of all things related to XML including: creating and parsing an XML document, creating and validating an XML Schema, XPath , transforming XML with XSLT, JAXB, Oracle XML Developer Kit (XDK 11g), Oracle XML Publisher, comparing XML documents, converting XML to PDF or MS Excel, even Berkeley DB XML edition.&lt;br /&gt;&lt;br /&gt;I have used JDeveloper for doing prorotyping work and proof of concepts related to JDBC, Java in the database, and Database Web Services but, and this is my second interest for the book, i have no idea that JDeveloper furnishes so much capabilities for processing XML documents.&lt;br /&gt;&lt;br /&gt;I now have two good reasons to keep and use my copy of this &lt;a href="http://www.packtpub.com/processing-xml-documents-with-oracle-jdeveloper-11g/book"&gt;book&lt;/a&gt;. For these reasons, i recommend it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2473429483731138915?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2473429483731138915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2473429483731138915' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2473429483731138915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2473429483731138915'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/04/book-review-processing-xml-documents.html' title='Book Review: Processing XML documents with Oracle JDeveloper 11g'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2178364913500374052</id><published>2009-04-11T12:19:00.000-07:00</published><updated>2009-04-11T12:20:34.857-07:00</updated><title type='text'>Oracle Database 10g on Mac OS/X</title><content type='html'>&lt;h3 class="UIIntentionalStory_Message"&gt;Oracle Database 10g release 10.2.0.4 for Apple MAC OS X (Leopard 10.5.4) Intel x86-64 Available on OTN &lt;a href="http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;&lt;span&gt;http://www.oracle.com/technology/softwar&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;&lt;span&gt;e/products/database/oracle10g/htdocs/102&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;04macsoft_x86-64.html&lt;/a&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2178364913500374052?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2178364913500374052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2178364913500374052' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2178364913500374052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2178364913500374052'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/04/oracle-database-10g-on-mac-osx.html' title='Oracle Database 10g on Mac OS/X'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7267977265382918453</id><published>2009-03-23T14:04:00.000-07:00</published><updated>2009-03-23T14:05:13.797-07:00</updated><title type='text'>Java in the database podcast @ Java Posse</title><content type='html'>&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;A glimpse of my day job: Java in the database @ &lt;a href="http://tinyurl.com/ccxb7s" rel="nofollow" target="_blank"&gt;http://tinyurl.com/ccxb7s&lt;/a&gt; -- fwiw, the guy speaking is my boss.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7267977265382918453?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7267977265382918453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7267977265382918453' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7267977265382918453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7267977265382918453'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/03/java-in-database-podcast-java-posse.html' title='Java in the database podcast @ Java Posse'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8822176526535866126</id><published>2009-02-28T19:34:00.001-08:00</published><updated>2009-02-28T21:02:13.207-08:00</updated><title type='text'>Solving the C20K problem: PHP Performance and Scalability</title><content type='html'>A summary of my talk at PHP Quebec @ http://conf.phpquebec.com&lt;br /&gt;&lt;br /&gt;PHP is widely adopted for database-backed RIA.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PHP lacks true connection pool; can a commodity database server sustain 20000 concurrent users?&lt;/li&gt;&lt;li&gt;How to ensure availability in the face of a database server failure?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When it comes to scalability, more PHP code or more frameworks (i.e., classes) translates to more CPU power; how to simplify PHP programming and reduce the amount of PHP code using built-in Oracle database 11g mechanisms?&lt;/li&gt;&lt;/ul&gt;The Community Connect &lt;a href="http://mediaproducts.gartner.com/reprints/oracle/article60/article60.html"&gt;case study&lt;/a&gt; will be discussed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8822176526535866126?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8822176526535866126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8822176526535866126' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8822176526535866126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8822176526535866126'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/02/solving-c20k-problem-php-performance.html' title='Solving the C20K problem: PHP Performance and Scalability'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3379535240771558833</id><published>2009-02-22T22:42:00.000-08:00</published><updated>2009-02-22T22:42:42.192-08:00</updated><title type='text'>360 Degree DB Programming: Read parts of my book on Google Books</title><content type='html'>&lt;a href="http://db360.blogspot.com/2008/11/read-parts-of-my-book-on-google-books.html"&gt;360 Degree DB Programming: Read parts of my book on Google Books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3379535240771558833?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://db360.blogspot.com/2008/11/read-parts-of-my-book-on-google-books.html' title='360 Degree DB Programming: Read parts of my book on Google Books'/><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3379535240771558833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3379535240771558833' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3379535240771558833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3379535240771558833'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/02/360-degree-db-programming-read-parts-of.html' title='360 Degree DB Programming: Read parts of my book on Google Books'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5826727264427659884</id><published>2009-02-12T23:22:00.000-08:00</published><updated>2009-02-12T23:26:00.943-08:00</updated><title type='text'>Gartner Case study: Community Connect use of Oracle, PHP, Database Resident Connection Pool, etc</title><content type='html'>"&lt;span style="font-style: italic;"&gt;CCI has been collaborating with Oracle's development group to improve memory utilization and reduce overhead across multiple nodes of DBMSs, using connection pooling called Oracle Database Resident Connection Pooling (DRCP). A connection pool is a cache of database connections maintained by the database so that the connections can be reused when the database receives future requests for data. Opening and maintaining a database connection for each user can be time consuming and waste resources. Open connections are placed in a pool to be reused.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;http://mediaproducts.gartner.com/reprints/oracle/article60/article60.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5826727264427659884?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5826727264427659884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5826727264427659884' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5826727264427659884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5826727264427659884'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2009/02/gartner-case-study-community-connect.html' title='Gartner Case study: Community Connect use of Oracle, PHP, Database Resident Connection Pool, etc'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7509998525554594253</id><published>2008-12-19T09:31:00.000-08:00</published><updated>2008-12-19T09:44:17.855-08:00</updated><title type='text'>Oracle Python adapter ( cx_Oracle ) got DRCP</title><content type='html'>The latest Oracle Python adapter (cx_Oracle) got Database Resident Connection Pool, Python 3 and many other goodies.&lt;br /&gt;&lt;a href="http://sourceforge.net/mailarchive/forum.php?thread_name=703ae56b0812132016x7a8704bege82f323ea589bc14%40mail.gmail.com&amp;amp;forum_name=cx-oracle-users"&gt;See more details&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7509998525554594253?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7509998525554594253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7509998525554594253' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7509998525554594253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7509998525554594253'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/12/oracle-python-adapter-cxoracle-got-drcp.html' title='Oracle Python adapter ( cx_Oracle ) got DRCP'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6927766538565980851</id><published>2008-12-11T06:41:00.000-08:00</published><updated>2008-12-11T06:47:54.779-08:00</updated><title type='text'>Web Scale PHP Connection Broker</title><content type='html'>My &lt;a href="http://www.oracle.com/technology/tech/php/pdf/web%20scale%20php%20connection%20broker%20forum%20php%20paris%2008.pdf"&gt;talk&lt;/a&gt; at the Forum PHP Paris&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6927766538565980851?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6927766538565980851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6927766538565980851' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6927766538565980851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6927766538565980851'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/12/web-scale-php-connection-broker.html' title='Web Scale PHP Connection Broker'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2151236745998833384</id><published>2008-11-16T10:43:00.001-08:00</published><updated>2008-11-16T11:19:50.083-08:00</updated><title type='text'>Read parts of my book on Google Books</title><content type='html'>I just found out that parts of my book (fragments ranging from page 224 to page 374) has been scanned and available &lt;a href="http://books.google.com/books?id=T0GvgQYG070C&amp;amp;printsec=frontcover&amp;amp;dq=oracle+database+programming+using+java+and+web+services&amp;amp;ei=LnIgSaK9BIX6kgSDiJzBDw"&gt;online&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The entire section on &lt;a href="http://books.google.com/books?id=T0GvgQYG070C&amp;amp;pg=PA302&amp;amp;lpg=PA302&amp;amp;dq=running+groovy+in+database&amp;amp;source=bl&amp;amp;ots=geY-bUQM_X&amp;amp;sig=THI2BKM1w2WZmVJvoSjHppqPVF0&amp;amp;hl=en&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;resnum=1&amp;amp;ct=result#PPA303,M1"&gt;running Groovy in the database&lt;/a&gt; is available.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2151236745998833384?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2151236745998833384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2151236745998833384' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2151236745998833384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2151236745998833384'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/11/read-parts-of-my-book-on-google-books.html' title='Read parts of my book on Google Books'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7477502606934425090</id><published>2008-11-06T22:11:00.000-08:00</published><updated>2008-11-06T22:13:37.976-08:00</updated><title type='text'>Making frameworks suck less</title><content type='html'>Terry Chay gave a great talk tonight at the San Francisco PHP Meetup on "&lt;a href="http://terrychay.com/blog/article/challenges-and-choices.shtml"&gt;making frameworks suck less&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7477502606934425090?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7477502606934425090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7477502606934425090' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7477502606934425090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7477502606934425090'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/11/making-frameworks-suck-less.html' title='Making frameworks suck less'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2338498440251255971</id><published>2008-10-29T22:38:00.001-07:00</published><updated>2008-10-29T22:38:38.081-07:00</updated><title type='text'>Oracle PHP Video from the Singapore PHP Meetup</title><content type='html'>Presented by my colleague Blair Layton; here is the video of the Singaporian PHP Meetup&lt;br /&gt;&lt;br /&gt;http://blog.php.com.sg/archives/singapore-php-meetup-oct-2008-oracle&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2338498440251255971?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2338498440251255971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2338498440251255971' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2338498440251255971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2338498440251255971'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/10/oracle-php-video-from-singapore-php.html' title='Oracle PHP Video from the Singapore PHP Meetup'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-6615529139769411453</id><published>2008-09-30T15:27:00.001-07:00</published><updated>2008-09-30T15:27:55.738-07:00</updated><title type='text'>Our OOW Poscast on Dynamic Languages</title><content type='html'>http://feeds.feedburner.com/~r/OTN_TechCasts/~3/402542480/6978780_Mensah_Jones_092408.mp3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-6615529139769411453?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/6615529139769411453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=6615529139769411453' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6615529139769411453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/6615529139769411453'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/09/our-oow-poscast-on-dynamic-languages.html' title='Our OOW Poscast on Dynamic Languages'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2944468224197047449</id><published>2008-09-30T10:11:00.000-07:00</published><updated>2008-09-30T10:14:48.347-07:00</updated><title type='text'>See you at Oracle Develop Beijin, Mumbai, Moscow, and Prague</title><content type='html'>From the success of Oracle Develop sessions at Oracle OpenWorld San Francisco, i anticipate that many of you who could not attend OOW SF will join our OD Winter tour&lt;br /&gt;http://www.oracle.com/events/oracledevelop/index.html&lt;br /&gt;&lt;br /&gt;See you there, Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2944468224197047449?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2944468224197047449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2944468224197047449' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2944468224197047449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2944468224197047449'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/09/see-you-at-oracle-develop-beijin-mumbai.html' title='See you at Oracle Develop Beijin, Mumbai, Moscow, and Prague'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5225486023632101337</id><published>2008-08-31T12:02:00.001-07:00</published><updated>2008-09-10T20:17:26.409-07:00</updated><title type='text'>What is Going on for Database Application Performance (OCI, C/C++, Java/JDBC) and Net Services</title><content type='html'>Here are session and hands-on lab related to application performance from database perspective.&lt;br /&gt;See other posts for my Java, JDBC, PHP and Ruby sessions and hands-on labs.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Session:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=+&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298812&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Best Practices for Developing Performant Applications for Oracle Database 11g &lt;/a&gt;Monday 09/22/2008 14:30 - 15:30 Marriott Salon 01&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;ilg=english&amp;isort_sessions=&amp;isort_demos=&amp;isort_exhibitors=&amp;is=yes&amp;ip=%3C/ipresentations%3E&amp;isort_sessions_type=&amp;isort_exhibitors_type=&amp;isort_demos_type=&amp;search_sessions=yes&amp;icriteria1=+&amp;icriteria2=+&amp;icriteria5=+&amp;icriteria8=&amp;icriteria9=+&amp;icriteria6=S298768&amp;icriteria3=+&amp;icriteria7="&gt;Best Practices for Deployment, Performance and Diagnosability of Oracle Net Services &lt;/a&gt;Thursday 09/25/2008 - 10:30 am Moscone South, Rm 104&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Hands-on lab:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=+&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298816&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab: Best Practices for Developing Performant Applications with Oracle Database 11g &lt;/a&gt;Monday 09/22/2008 16:00 - 17:00 Marriott Golden Gate B1 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See you there&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5225486023632101337?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5225486023632101337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5225486023632101337' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5225486023632101337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5225486023632101337'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/08/what-is-going-on-for-database.html' title='What is Going on for Database Application Performance (OCI, C/C++, Java/JDBC) and Net Services'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8719266872905317717</id><published>2008-08-31T11:45:00.000-07:00</published><updated>2008-09-02T22:37:19.324-07:00</updated><title type='text'>What is Going on for PHP and Ruby on Rails at Oracle OpenWorld, San Francisco, Sep 21st-25th</title><content type='html'>Here are PHP, Ruby, Ruby on Rails sessions and hands-on labs that i am either delivering or coordinating (involved). See other posts for my Java/JDBC sessions and hands-on labs.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Sessions&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/session_details.jsp?isid=298813&amp;amp;ilocation_id=208-1&amp;amp;ilanguage=english"&gt;Building and Deploying Web-Scale Social Networking Applications, Using PHP and Oracle Database 11g &lt;/a&gt;Tuesday 09/23/2008 13:00 - 14:00 Marriott Salon 04&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298819&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Building and Deploying Web-Scale Social Networking Applications, Using Ruby on Rails and Oracle Database 11g &lt;/a&gt;Monday 09/22/2008 13:00 - 14:00 Marriott Salon 02&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Hands-on Labs&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298818&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab: Web 2.0 Applications with Ruby/JRuby on Rails and Oracle Database 11g &lt;/a&gt;Tuesday 09/23/2008 14:30 - 15:30 Marriott Golden Gate B1 &lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298814&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab (Part 1): Web 2.0 Applications with PHP and Oracle Database 11g &lt;/a&gt;Sunday 09/21/2008 14:30 - 15:30 Marriott Golden Gate B1&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298815&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab (Part 2): Web 2.0 Applications with PHP and Oracle Database 11g &lt;/a&gt;Sunday 09/21/200815:45 - 16:45MarriottGolden Gate B1 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See you there.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8719266872905317717?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8719266872905317717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8719266872905317717' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8719266872905317717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8719266872905317717'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/08/what-is-goign-on-for-php-and-ruby-on.html' title='What is Going on for PHP and Ruby on Rails at Oracle OpenWorld, San Francisco, Sep 21st-25th'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8203727924837138657</id><published>2008-08-31T11:19:00.001-07:00</published><updated>2008-09-12T10:29:52.078-07:00</updated><title type='text'>What is Going On for JDBC, Java in the Database, and UCP  at Oracle OpenWorld, San Francisco, Sept 21-25th</title><content type='html'>Here are JDBC, Java in the database and the new Universal Connection Pool (UCP) sessions and hands-on labs that i am either delivering or involved.&lt;br /&gt;Look other posts on this blog for my other sessions and labs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sessions&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298746&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Don't Roll the Dice: Secure Your Java/JDBC Applications with Oracle Advanced Security&lt;/a&gt; Tuesday 09/23/2008 11:30 - 12:30 in Marriott Salon 01&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298750&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Tips for Troubbleshooting Common JDBC Applications Errors &lt;/a&gt;Tuesday 09/23/2008 14:30 - 15:30 Marriott Salon 14/15&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298820&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Data- and Compute-Intensive Processing: Middle Tier or Database? Trade-offs and Case Study &lt;/a&gt;Monday 09/22/2008 11:30 - 12:30 Marriott Salon 01&lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=+&amp;amp;icriteria2=+&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S299364&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Integrating Oracle Real Application Clusters from the Middle Tier with Oracle  Universal Connection Pool &lt;/a&gt;Monday 09/22/2008 17:30 - 18:30 Marriott Nob Hill AB&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Hands-on Labs &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298817&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab: Develop and Diagnose JDBC Programs and Java Classes in the Database &lt;/a&gt;Tuesday 09/23/200816:00 - 17:00 Marriott Golden Gate B1 &lt;/li&gt;&lt;li&gt;&lt;a href="http://www28.cplan.com/cc208/catalog.jsp?ilc=208-1&amp;amp;ilg=english&amp;amp;isort_sessions=&amp;amp;isort_demos=&amp;amp;isort_exhibitors=&amp;amp;is=yes&amp;amp;ip=%3C%2Fipresentations%3E&amp;amp;isort_sessions_type=&amp;amp;isort_exhibitors_type=&amp;amp;isort_demos_type=&amp;amp;search_sessions=yes&amp;amp;icriteria1=Oracle+Develop%3A+Database+++&amp;amp;icriteria2=Application+Development&amp;amp;icriteria5=+&amp;amp;icriteria8=&amp;amp;icriteria9=+&amp;amp;icriteria6=S298816&amp;amp;icriteria3=+&amp;amp;icriteria7="&gt;Hands-on Lab: Best Practices for Developing Performant Applications with Oracle Database 11g &lt;/a&gt;Monday 09/22/200816:00 - 17:00 Marriott Golden Gate B1 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See you there.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8203727924837138657?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8203727924837138657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8203727924837138657' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8203727924837138657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8203727924837138657'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/08/what-is-going-on-for-jdbc-and-java-in.html' title='What is Going On for JDBC, Java in the Database, and UCP  at Oracle OpenWorld, San Francisco, Sept 21-25th'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7681331935549951436</id><published>2008-08-19T09:49:00.000-07:00</published><updated>2008-08-19T09:55:05.557-07:00</updated><title type='text'>Hands-on Oracle Database 11g Application Development</title><content type='html'>You don't want to miss this unique opportunity&lt;br /&gt;http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=83729&amp;amp;src=6635701&amp;amp;src=6635701&amp;amp;Act=83&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;/span&gt;&lt;br /&gt;Because this is a hands-on event (laptop provided and pre-staged), space is limited.&lt;br /&gt;&lt;br /&gt;Fwiw, you may win&lt;br /&gt;&lt;pre wrap=""&gt;- 1 iPod Touch&lt;br /&gt;- $15 iTunes card&lt;br /&gt;- 1 free OOW pass (does not include travel and expenses)&lt;br /&gt;- books (from recommendations).&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7681331935549951436?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7681331935549951436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7681331935549951436' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7681331935549951436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7681331935549951436'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/08/hands-on-oracle-database-11g.html' title='Hands-on Oracle Database 11g Application Development'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-4779391773575352666</id><published>2008-07-13T08:15:00.000-07:00</published><updated>2008-07-13T08:21:46.156-07:00</updated><title type='text'>Oracle Symfony in PHP Minor</title><content type='html'>&lt;em&gt;Mladen Gogala&lt;/em&gt; is an Oracle DBA with PHP expertise.&lt;br /&gt;Enjoy the article @&lt;br /&gt;http://www.oracle.com/technology/pub/articles/gogala-symfony.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-4779391773575352666?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/4779391773575352666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=4779391773575352666' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4779391773575352666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/4779391773575352666'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/07/oracle-symfony-in-php-minor.html' title='Oracle Symfony in PHP Minor'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8655687876400554294</id><published>2008-06-24T10:48:00.000-07:00</published><updated>2008-06-24T10:52:49.944-07:00</updated><title type='text'>PHP OCI8 1.3.3 Has Gone Production</title><content type='html'>&lt;p&gt;PHP's OCI8 1.3.3 brings support for Oracle's Database Resident Connection Pool (DRCP), Fast  Application Notification (in RAC environment), Client Result Cache technologies giving PHP enterprise class scalability, performance, and high  availability.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;See the README in the OCI8 bundle and read the white paper &lt;a href="http://www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf"&gt;http://www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf&lt;/a&gt;  for more information.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8655687876400554294?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8655687876400554294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8655687876400554294' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8655687876400554294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8655687876400554294'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/06/php-oci8-133-has-gone-production.html' title='PHP OCI8 1.3.3 Has Gone Production'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2977998486436094603</id><published>2008-06-01T11:29:00.000-07:00</published><updated>2008-06-01T11:39:57.414-07:00</updated><title type='text'>New release of database-resident Lucene integration</title><content type='html'>I am glad to report that Marcelo as releasd a new releae of its database-resident  Lucene  using the embedded Java VM in the Oracle database.&lt;br /&gt;&lt;a href="http://marceloochoa.blogspot.com/2008/06/new-binary-release-of-lucene-oracle.html"&gt;http://marceloochoa.blogspot.com/2008/06/new-binary-release-of-lucene-oracle.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a perfect illustration of data-intensive-and-compute-intensive processing that i will be talking about in comign events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2977998486436094603?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2977998486436094603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2977998486436094603' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2977998486436094603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2977998486436094603'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/06/new-release-of-database-resident-lucene.html' title='New release of database-resident Lucene integration'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2578859411443880650</id><published>2008-04-23T18:56:00.000-07:00</published><updated>2008-04-23T18:58:50.812-07:00</updated><title type='text'>Instant Client on MAC OS X</title><content type='html'>10.2.0.4 Database Client (+ Instant Client) for Apple MAC OS X on Intel x86 is now available for download on &lt;a href="http://www.oracle.com/technology/software/tech/oci/instantclient/"&gt;OTN&lt;/a&gt;.&lt;br /&gt;The client is supported on the latest OS release - MAC OS X Leopard 10.5.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2578859411443880650?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2578859411443880650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2578859411443880650' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2578859411443880650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2578859411443880650'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/04/instant-client-on-mac-os-x.html' title='Instant Client on MAC OS X'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-8184415095169967498</id><published>2008-04-07T22:10:00.000-07:00</published><updated>2008-04-07T22:23:49.918-07:00</updated><title type='text'>April San Francisco Java Meetup - Quercus: How to Run PHP on Java</title><content type='html'>Similar to Jython, and JRuby, &lt;a href="http://wiki.caucho.com/Quercus"&gt;Quercus&lt;/a&gt;, a 100% Java implementation of PHP 5 allows running PHP applications on a Java VM.&lt;br /&gt;&lt;br /&gt;Caucho (the maker of Resin) is positioning this as a PHP/Java bridge which&lt;br /&gt;&lt;ol&gt;&lt;li&gt;allows PHP applications to be deployed over a Java application server and leverage Java infrastructure: JDBC, JMX, Web Bean (JSR 299), EJB, etc. &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt; was deployed over Quercus in few minutes .&lt;/li&gt;&lt;li&gt;allows Java to use PHP as view component, in the face of the larger adoption of dynamic languages (PHP, Python, Ruby) for Web applications.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I have not tried but it must be possible to deploy your PHP applications with Quercus, OC4J and the Oracle database.&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-8184415095169967498?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/8184415095169967498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=8184415095169967498' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8184415095169967498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/8184415095169967498'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/04/april-san-francisco-java-meetup-quercus.html' title='April San Francisco Java Meetup - Quercus: How to Run PHP on Java'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7253987794832884656</id><published>2008-04-06T11:23:00.001-07:00</published><updated>2008-04-06T11:28:59.119-07:00</updated><title type='text'>San Francisco Ruby Monthly Meetup: Open Social</title><content type='html'>&lt;p&gt;At this month's SF Ruby meetup:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ryan Garver of ELC Technology presented Google's Open Social, touted as the next big thing  on the web. Open Social aims at being  a king of Facebook API for all social sites. Check it out.&lt;/li&gt;&lt;li&gt;Michael Slater and Christopher Haupt described how BuildingWebApps.com site, an information portal for Ruby on Rails developers, with articles, links database, and RSS feed processing. All built, of course, with Rails. This is a one stop portal for Ruby developers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Kuassi&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7253987794832884656?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7253987794832884656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7253987794832884656' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7253987794832884656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7253987794832884656'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/04/san-francisco-ruby-monthly-meetup-open.html' title='San Francisco Ruby Monthly Meetup: Open Social'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-853055286603111304</id><published>2008-04-06T11:16:00.000-07:00</published><updated>2008-04-06T11:34:10.958-07:00</updated><title type='text'>San Francisco PHP Meetup April: Symfony</title><content type='html'>I attended this month's SF PHP Meetup in the city.&lt;br /&gt;&lt;br /&gt;Dustin Whittle of Yahoo presented the &lt;a href="http://www.symfony-project.org/"&gt;Symfony framework&lt;/a&gt; (initiated by a french guy, oui!!).&lt;br /&gt;&lt;br /&gt;The meetup was crowded and well received as you can read &lt;a href="http://php.meetup.com/139/calendar/7472617/?a=cr1p_grp"&gt;here&lt;/a&gt;. I like this framework because it borrows many patterns that people like in Prado, Rails, Django, and dynamic languages in general (i.e., straight PHP for templating).&lt;br /&gt;&lt;br /&gt;Imo, the following capabilities may be extended with Oracle&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ability to cache things in the database (alternatively to memcache, file system and other); may be extended with Oracle's Client Result cache (see my previous posting on this)&lt;/li&gt;&lt;li&gt;ability to use the database for Internationalization/Localization dictionary; may leverage Oracle built-in Internationalization/Localization&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Kuassi&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-853055286603111304?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/853055286603111304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=853055286603111304' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/853055286603111304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/853055286603111304'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/04/san-francisco-php-meetup-april-symfony.html' title='San Francisco PHP Meetup April: Symfony'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-1224596430565262961</id><published>2008-03-23T10:44:00.000-07:00</published><updated>2008-03-23T10:55:13.232-07:00</updated><title type='text'>My presentations at PHP Quebec 2008</title><content type='html'>&lt;a href="http://www.oracle.com/technology/tech/php/pdf/whats_new_in_oracle11g_for_php.pdf"&gt;What Oracle database 11g brings to PHP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/php/pdf/web_scale_php_conn_broker.pdf"&gt;Web-Scale PHP Connection Broker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Btw,&lt;br /&gt;-join the Oracle+PHP Users group on &lt;a href="http://mix.oracle.com/"&gt;http://mix.oracle.com&lt;/a&gt;&lt;br /&gt;-join the Oracle+Ruby/Rails Users group on http://mix.oracle.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-1224596430565262961?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/1224596430565262961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=1224596430565262961' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1224596430565262961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1224596430565262961'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/03/my-presentations-at-php-quebec-2008.html' title='My presentations at PHP Quebec 2008'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-1773466913905708802</id><published>2008-02-22T14:28:00.000-08:00</published><updated>2008-02-22T14:33:36.455-08:00</updated><title type='text'>Oracle Database and RESTFul Web Services</title><content type='html'>The Oracle database 11g furnishes SOAP-based Native Database Web services however, RESTful Web services are having better traction than SOAP based Web Services.&lt;br /&gt;&lt;br /&gt;My friend Marcelo has just posted the results of &lt;a href="http://marceloochoa.blogspot.com/2008/02/is-oracle-11g-rest-ready.html"&gt;his new proof of concept&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Play with and enjoy.&lt;br /&gt;&lt;br /&gt;Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-1773466913905708802?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/1773466913905708802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=1773466913905708802' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1773466913905708802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1773466913905708802'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/02/oracle-database-and-restful-web.html' title='Oracle Database and RESTFul Web Services'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3407584169362920942</id><published>2008-02-19T10:42:00.000-08:00</published><updated>2008-02-20T14:24:33.783-08:00</updated><title type='text'>Oracle Database 11g Client Result Cache Coming to Java</title><content type='html'>&lt;strong&gt;Server Side Query Result Cache&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Caching, caching and caching”&lt;/em&gt; is a well-known secret for performance.&lt;br /&gt;The Oracle database 11g furnishes &lt;em&gt;Query Result Cache&lt;/em&gt;, which, when enabled, keeps query result sets in the database server memory for reuse by successive invocation of the same query until invalidated by changes to the underlying table(s); as result, the parsing and executing phases of the query are eliminated.&lt;br /&gt;It also furnishes &lt;em&gt;PL/SQL Function Result Cache&lt;/em&gt;&lt;a title="" style="mso-footnote-id: ftn1" href="http://www.blogger.com/post-create.g?blogID=25155671#_ftn1" name="_ftnref1"&gt;[1]&lt;/a&gt;, which is similar to the SQL query result cache but applied to PL/SQL Functions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Client-Side Query Result Cache &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Caching query result sets in the database memory still requires client/server network round-trip(s). The other well-known secret is "&lt;em&gt;The fastest database access is &lt;strong&gt;no database access&lt;/strong&gt;&lt;/em&gt;". You now understand the proliferation of middle-tier data caching frameworks such as open-source Memcache (PHP, Ruby, Java) or Oracle’s Coherence (JCache-compliant in memory distributed data grid), which are object-oriented distributed data caches.&lt;br /&gt;Client Result Cache is SQL oriented&lt;a title="" style="mso-footnote-id: ftn2" href="http://www.blogger.com/post-create.g?blogID=25155671#_ftn2" name="_ftnref2"&gt;[2]&lt;/a&gt; middle-tier or client-tier data caching feature of Oracle database 11g which, eliminates the network roundtrip incurred by the server-side query result cache.&lt;br /&gt;&lt;p&gt;In addition, Client Result Cache is synchronized with the database and is automatically invalidated.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Performance Proof Points&lt;br /&gt;&lt;/strong&gt;Running the Nile benchmark&lt;a title="" style="mso-footnote-id: ftn3" href="http://www.blogger.com/post-create.g?blogID=25155671#_ftn3" name="_ftnref3"&gt;[3]&lt;/a&gt; with Client Result Cache enabled and simulating up to 3000 users results in&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Up to 6.5 times less server CPU usage &lt;/li&gt;&lt;li&gt;15-22% response time improvement&lt;/li&gt;&lt;li&gt;7% improvement in mid-tier CPU usage&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Enabling Client Result Cache&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As of Oracle database 11g Release 1, Client Result cache is available only with OCI-based drivers or adapters including: PHP, JDBC-OCI, OCCI, ODP.Net, Pro*C/C++, Pro*COBOL, and ODBC.&lt;br /&gt;&lt;br /&gt;1) Server (database):&lt;br /&gt;Set CLIENT_RESULT_CACHE_SIZE (default 0, cache disabled)&lt;br /&gt;2) Client (sqlnet.ora):&lt;br /&gt;Set OCI_RESULT_CACHE_MAX_SIZE (optional); it overrides server cache size&lt;br /&gt;3) Application code.&lt;br /&gt;Explicitly specify which query to cache with a hint in the query string.&lt;br /&gt;e.g., /*+ RESULT_CACHE */&lt;br /&gt;&lt;br /&gt;That’s it!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JDBC Example – CLientRSCache.java&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;  * Client Query Result Cache (sorry for the code formatting)&lt;br /&gt;  */&lt;br /&gt;import the java.sql package&lt;br /&gt;import java.sql.*;&lt;br /&gt;import javax.sql.*;&lt;br /&gt;import oracle.jdbc.*;&lt;br /&gt;import oracle.jdbc.pool.OracleDataSource;&lt;br /&gt;&lt;br /&gt;class CLientRSCache&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public static void main (String args [])&lt;br /&gt;throws SQLException&lt;br /&gt;{&lt;br /&gt;long start;&lt;br /&gt;long end;&lt;br /&gt;long elapsed;&lt;br /&gt;&lt;br /&gt;String name = null;&lt;br /&gt;OracleConnection conn = null;&lt;br /&gt;OraclePreparedStatement pstmt = null;&lt;br /&gt;OracleDataSource ods = new OracleDataSource();&lt;br /&gt;// Set the URL (user name, and password)&lt;br /&gt;String url = "jdbc:oracle:oci:scott/tiger@//localhost:1522:orcl11g";&lt;br /&gt;ods.setURL(url);&lt;br /&gt;&lt;br /&gt;String query = "select /*+ result_cache */ * from emp where empno &lt; ?" conn.setImplicitCachingEnabled(true); &lt;/p&gt;&lt;p&gt;conn.setStatementCacheSize(1); // Cache of 1 Stmt &lt;/p&gt;&lt;p&gt;PreparedStatement pstmt ; &lt;/p&gt;&lt;p&gt;ResultSet rs; &lt;/p&gt;&lt;p&gt; for (int i = 1; i &lt;= 10; i++) { &lt;/p&gt;&lt;p&gt;   pstmt = conn.prepareStatement (query); &lt;/p&gt;&lt;p&gt;   pstmt.setInt(1,7500); &lt;/p&gt;&lt;p&gt;// Set the start time &lt;/p&gt;&lt;p&gt;   start = System.currentTimeMillis(); &lt;/p&gt;&lt;p&gt;// Execute the query and retrieve the Result Set &lt;/p&gt;&lt;p&gt;   rs = pstmt.executeQuery(); &lt;/p&gt;&lt;p&gt;   while (rs.next( ) ) &lt;/p&gt;&lt;p&gt;  { &lt;/p&gt;&lt;p&gt;   // process result set &lt;/p&gt;&lt;p&gt;     rs.close; &lt;/p&gt;&lt;p&gt;     pstmt.close( ) ; &lt;/p&gt;&lt;p&gt;    } &lt;/p&gt;&lt;p&gt;// Set the End time &lt;/p&gt;&lt;p&gt;  end = System.currentTimeMillis(); &lt;/p&gt;&lt;p&gt;  elapsed = end - start; &lt;/p&gt;&lt;p&gt;   // Print the time taken to prepare and execute query &lt;/p&gt;&lt;p&gt;   // Note: the 1st invocation is nor cached &lt;/p&gt;&lt;p&gt;   // Successive invocations are cached &lt;/p&gt;&lt;p&gt;   // You may invalidate the result set using SQL*Plus. &lt;/p&gt;&lt;p&gt;   System.out.println(" Iteration# “ + i + “ Time to prepare and execute the query ” +  elapsed); &lt;/p&gt;&lt;p&gt;   } &lt;/p&gt;&lt;p&gt; // Close the connection &lt;/p&gt;&lt;p&gt; conn.close(); &lt;/p&gt;&lt;p&gt; }&lt;/p&gt;&lt;p&gt; } &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Benefits of Client Result Cache&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Easy to use&lt;/li&gt;&lt;li&gt;Transparent cache consistency with server side changes&lt;/li&gt;&lt;li&gt;Frees application developers from building a per-process result cache&lt;/li&gt;&lt;li&gt;Extends database-side query caching to middle-tier and client-tiers&lt;/li&gt;&lt;li&gt;Ensures better performance by eliminating round trips to the server&lt;/li&gt;&lt;li&gt;Improves server scalability by saving server resources&lt;/li&gt;&lt;li&gt;Transparent cache management&lt;/li&gt;&lt;li&gt;Concurrent access to result-sets optimizes memory management&lt;/li&gt;&lt;li&gt;RAC support&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;See more details on Client Result Cache in the Oracle Call Interface Programmer’s guide&lt;a title="" style="mso-footnote-id: ftn4" href="http://www.blogger.com/post-create.g?blogID=25155671#_ftn4" name="_ftnref4"&gt;[4]&lt;/a&gt;.&lt;br /&gt;[1] See the Oracle database 11g documentation for more details on Query Result cache and PL/SQL Function Result Cache.&lt;br /&gt;[2] It is currently not distributed, unlike Coherence or MemCache&lt;br /&gt;[3] An end-to-end ecommerce application server benchmark&lt;br /&gt;[4] http://www.oracle.com/pls/db111/to_pdf?pathname=appdev.111/b28395.pdf&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3407584169362920942?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3407584169362920942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3407584169362920942' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3407584169362920942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3407584169362920942'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/02/oracle-database-11g-client-result-cache.html' title='Oracle Database 11g Client Result Cache Coming to Java'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2347820210514687554</id><published>2008-02-19T10:30:00.000-08:00</published><updated>2008-02-19T10:36:32.295-08:00</updated><title type='text'>Speaking at PHP Quebec 2008</title><content type='html'>I'll be speaking at &lt;a href="http://conf.phpquebec.com/"&gt;PHP Quebec 2008 &lt;/a&gt; during the following sessions&lt;br /&gt;&lt;br /&gt;1) a lunch time keynote on Oracle database 11g Database Resident Connection Pool (DRCP)&lt;br /&gt;       "&lt;em&gt;Web-Scale PHP Connection Broker&lt;/em&gt;"&lt;br /&gt;&lt;br /&gt;2) PHPLab: a 3 hours BYOL technical workshop where database vendors rep will be asked any  question.&lt;br /&gt;&lt;br /&gt;If you plan to attend, let's have a free beer together.&lt;br /&gt;Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2347820210514687554?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2347820210514687554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2347820210514687554' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2347820210514687554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2347820210514687554'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2008/02/speaking-at-php-quebec-2008.html' title='Speaking at PHP Quebec 2008'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5326224164414348305</id><published>2007-11-21T13:36:00.000-08:00</published><updated>2007-11-21T13:42:11.468-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='podcast rubyonrails php drcp'/><title type='text'>PHP and Ruby on Rails: My OTN Podcast with Chris Jones</title><content type='html'>My colleague Chris Jones and I discuss the re-built OCI8 driver, Database Resident Connection Pooling with Oracle Database 11g and the roadmap for RoR users.&lt;br /&gt;&lt;a href="http://streaming.oracle.com/ebn/podcasts/otn/6084483.mp3"&gt;http://streaming.oracle.com/ebn/podcasts/otn/6084483.mp3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5326224164414348305?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5326224164414348305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5326224164414348305' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5326224164414348305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5326224164414348305'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/11/php-and-ruby-on-rails-my-otn-podcast.html' title='PHP and Ruby on Rails: My OTN Podcast with Chris Jones'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-1927368581261951565</id><published>2007-11-21T08:57:00.000-08:00</published><updated>2007-11-21T09:04:14.666-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OracleJVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='Log4j'/><title type='text'>PL/SQL Got Sleep Functionality</title><content type='html'>Marcelo Ochoa posted a nice hack to get Sleep functionality in PL/SQL&lt;br /&gt;&lt;a href="http://marceloochoa.blogspot.com/2007/11/plsql-sleep-functionality.html"&gt;http://marceloochoa.blogspot.com/2007/11/plsql-sleep-functionality.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While therei also recommend reading his post about making Log4J work in OracleJVM.&lt;br /&gt;&lt;a href="http://marceloochoa.blogspot.com/2007/11/getting-logging-entering-exiting-and.html"&gt;http://marceloochoa.blogspot.com/2007/11/getting-logging-entering-exiting-and.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-1927368581261951565?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/1927368581261951565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=1927368581261951565' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1927368581261951565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1927368581261951565'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/11/plsql-got-sleep-functionality.html' title='PL/SQL Got Sleep Functionality'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3867283470165907935</id><published>2007-10-11T09:48:00.001-07:00</published><updated>2007-11-01T15:35:59.579-07:00</updated><title type='text'>What is going on at Oracle Open World for Java in the database, JDBC, PHP, and Ruby on Rails?</title><content type='html'>1/ You can meet our developers at our demogrounds (JDBC, PHP, Ruby on Rails) in the database demoground.&lt;br /&gt;&lt;br /&gt;2/ Here are the sessions, and hands-on labs that i am driving or involved with&lt;br /&gt;&lt;br /&gt;Session ID: S290759 Session Title: &lt;strong&gt;Oracle JDBC Best Practices for Performance, Security, High Availability, and Scalability&lt;/strong&gt; Room: Grand Ballroom A Date: 2007-11-12 Start Time: 11:00&lt;br /&gt;&lt;br /&gt;Session ID: S292070 Session Title: &lt;strong&gt;The Way to the Web with PHP and Oracle Database&lt;/strong&gt;  Room: Yosemite Room A Date: 2007-11-12 Start Time: 12:30&lt;br /&gt;&lt;br /&gt;Session ID: S292132 Session Title: &lt;strong&gt;Scale Your PHP Application to Tens of Thousands of Connections&lt;/strong&gt; Room:  HiltonContinental Parlor 7 &amp;amp; 8  Start Time: 1:45 PM&lt;br /&gt;&lt;br /&gt;Session ID: S292073 Session Title: &lt;strong&gt;Web 2.0 Applications Hands-on Lab with PHP and Oracle Database&lt;/strong&gt; Room: Continental Ballroom 4 Date: 2007-11-12 Start Time: 13:45&lt;br /&gt;&lt;br /&gt;Session ID: S292211 Session Title: &lt;strong&gt;Hands-on Lab: Ruby on Rails with Oracle Database&lt;/strong&gt; Track: Emerging Technologies Room: Continental Ballroom 4 Date: 2007-11-12 Start Time: 16:45&lt;br /&gt;&lt;br /&gt;Session ID: S292213 Session Title: &lt;strong&gt;Digging Deeper into Dynamic Scripting Languages: Using Ruby on Rails with Oracle Database&lt;/strong&gt; Room: Continental Parlor 7 &amp;amp; 8 Date: 2007-11-13 Start Time: 10:45&lt;br /&gt;&lt;br /&gt;Session ID: S290758 Session Title: &lt;strong&gt;Java Stored Procedures or Java Middleware: Trade-offs, Techniques, and Tips from Oracle's Database and Middleware Teams&lt;/strong&gt; Room: Continental Ballroom 6 Date: 2007-11-13 Start Time: 16:45&lt;br /&gt;&lt;br /&gt;Session ID: S290761 Session Title: &lt;strong&gt;Behind the Scenes: Getting the Most from the New Java Virtual Machine in Oracle Database 11g&lt;/strong&gt;  Room: 308 Date: 2007-11-14 Start Time: 15:00&lt;br /&gt;&lt;br /&gt;Session ID: S290760 Session Title: &lt;strong&gt;Oracle Database 11g Release 1 JDBC Pearls: JDBC 4.0, Advanced Security, Query Change Notification, Startup/Shutdown, and Much More&lt;/strong&gt;  Room: 307 Date: 2007-11-15 Start Time: 08:30&lt;br /&gt;&lt;br /&gt;See you there&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3867283470165907935?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3867283470165907935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3867283470165907935' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3867283470165907935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3867283470165907935'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/10/what-is-going-on-at-oracle-open-world.html' title='What is going on at Oracle Open World for Java in the database, JDBC, PHP, and Ruby on Rails?'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3276928271684450364</id><published>2007-10-09T22:16:00.000-07:00</published><updated>2007-10-10T22:44:02.507-07:00</updated><title type='text'>Database Resident Connection Pool Coming to PHP Web 2.0 Applications</title><content type='html'>Database Resident Connection Pool (DRCP) in a new 11g feature that PHP applications can already benefit from.&lt;br /&gt;Here is the press release &lt;a href="http://biz.yahoo.com/prnews/071009/aqtu120.html?.v=20"&gt;http://biz.yahoo.com/prnews/071009/aqtu120.html?.v=20&lt;/a&gt;&lt;br /&gt;and the white paper &lt;a href="http://www.oracle.com/technology/tech/oci/pdf/oracledrcp11g.pdf"&gt;http://www.oracle.com/technology/tech/oci/pdf/oracledrcp11g.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3276928271684450364?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3276928271684450364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3276928271684450364' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3276928271684450364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3276928271684450364'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/10/database-resident-connection-pool.html' title='Database Resident Connection Pool Coming to PHP Web 2.0 Applications'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5793416796075849423</id><published>2007-07-13T14:55:00.000-07:00</published><updated>2007-07-13T15:57:38.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Database Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='JPublisher'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><title type='text'>SOAP in SQL: Invoking external Web Services</title><content type='html'>&lt;strong&gt;What the Heck?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Have you ever felt the need to federate data from multiple sources, including Web services (e.g., stock price, scientific data, policy tables, tax tables, weather information)?&lt;br /&gt;&lt;br /&gt;How would you invoke business operations implemented as external Web services, such as placing new orders, orders shipment, credit card payment transactions (and getting valid authorization numbers) from within the database?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Well, you need to turn your database into a Web Services Consumer.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Do you need to dive into the Web Services protocols, APIs and jargon beforehand? &lt;/em&gt;&lt;br /&gt;No, magic JPublisher remove this pain from your neck! DBAs, PL/SQL bigots, and database developers in general don't need to know anything about WSDL, SOAP, UDDI, SOA to call a Web services from SQL or PL/SQL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How does it work?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;4 simple steps&lt;br /&gt;1) Web Service enable your database: see the &lt;a href="http://www.oracle.com/technology/sample_code/tech/java/jsp/dbwebservices.html"&gt;Web Services Callout utility guide &lt;/a&gt;&lt;br /&gt;2) identify the target Web Services and save the location of the WSDL and the endpoint where&lt;br /&gt;it is listening to requests. Examples: the Google Web Service is identified by its wsdl&lt;br /&gt;WSDL: &lt;a href="http://api.google.com/GoogleSearch.wsdl"&gt;http://api.google.com/GoogleSearch.wsdl&lt;/a&gt; and is listening to requests @&lt;br /&gt;Endpoint: &lt;a href="http://api.google.com/search/beta2"&gt;http://api.google.com/search/beta2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A simple way to check that a Web service is up and listening to requests at the endpoint in&lt;br /&gt;question is to direct your browser at the endpoint URL; you shoud, receive the following&lt;br /&gt;message:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;SOAP RPC Router&lt;br /&gt;Sorry, I don't speak via HTTP GET- you have to use HTTP POST&lt;br /&gt;to talk to me.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;3) Ask JPublisher to generate everything needed to invoke the Web services from within the&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;database &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt; C:\&gt;jpub -u scott/tiger -sysuser=scott/tiger&lt;br /&gt;                  -proxywsdl=http://api.google.com/GoogleSearch.wsdl&lt;br /&gt;                  -proxyopts=tabfun,soap&lt;br /&gt;                  -httpproxy=www-proxy.us.oracle.com:80&lt;br /&gt;                  -endpoint=http://api.google.com/search/beta2 -dir=tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;4) Invoke an operation (e.g., Spell Check) of the Web services directly from SQL&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;SQL&gt; select jpub_plsql_wrapper.dospellingsuggestion( '&lt;enter&gt;',  'Nelson Mandelo')&lt;br /&gt;           as GOOGLE_Spell_Check_Web_Service&lt;br /&gt;           from dual;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's it!&lt;br /&gt;&lt;br /&gt;You can learn more in the following Oracle Database docs: JPublisher, the Java developers guide and also in chapter 16 of &lt;a href="http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html"&gt;my book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5793416796075849423?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5793416796075849423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5793416796075849423' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5793416796075849423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5793416796075849423'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/07/soap-and-sql-invoking-external-web.html' title='SOAP in SQL: Invoking external Web Services'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-2322125742287941005</id><published>2007-05-24T16:58:00.000-07:00</published><updated>2007-05-24T17:55:14.300-07:00</updated><title type='text'>Groovy, Ruby, PHP, Python: the revival  of  scripting languages</title><content type='html'>Scripting languages have been around for a long time but were regarded as  only good for tactical quick-and-dirty applications. Then came the web and the need to  add dynamic content to  page templates through scriptlets (i.e. javascript).  Then came the need to produce web pages directly from server-side  (middle-tier and/or database).&lt;br /&gt;&lt;br /&gt;To make this story short, 20+ millions web sites today are built using PHP, the most popular scripting language; add few millions for PERL, Python, and so on. Scripting languages got their "letter de nobless" and the rest is history!&lt;br /&gt;&lt;br /&gt;Groovy, Ruby on Rails are the new generation of scripting languages. In chapter 5 of my book,  i gave few examples of  scripting languages running directly in the Oracle database including TCL (JACL), PYTHON (JYTHON), SCHEME and GROOVY. Note:  these are just proof of concepts.&lt;br /&gt;&lt;br /&gt;Even the Java community is embracing scriting languages through the proposed &lt;a href="http://www.jcp.org/en/jsr/detail?id=223"&gt;Java specification request 223&lt;/a&gt; (particularly PHP) but The $1 Million question today is whether or not Ruby on Rails will overtake  PHP and/or Java.&lt;br /&gt;&lt;br /&gt;Just for fun, see this &lt;a href="http://www.flickr.com/photos/anildigital/178961991"&gt;picture&lt;/a&gt; and this &lt;a href="http://weblog.rubyonrails.com/2007/5/14/hi-i-m-ruby-on-rails"&gt;video&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have Fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-2322125742287941005?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/2322125742287941005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=2322125742287941005' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2322125742287941005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/2322125742287941005'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/05/groovy-ruby-php-python-revival-of.html' title='Groovy, Ruby, PHP, Python: the revival  of  scripting languages'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-7072449102392329893</id><published>2007-05-03T09:31:00.000-07:00</published><updated>2007-05-03T09:45:32.526-07:00</updated><title type='text'>Oracle Database at JavaOne</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;For those attending JavaOne this year, i'll be available to talk Tuesday 05/8th  (2:30 pm to 5:30 pm) and Wednesday 05/9th (2:00 to 4:30 pm ) at the Oracle Database demo pod within the Oracle quarter in the exhibition hall.&lt;br /&gt;Stop by if you have interest or questions regarding Oracle JDBC, Java in the database, Oracle Database XE, and SQL Developer.&lt;br /&gt;Fwiw, I'll be doing book signing Wed 05/9th at 4:30pm at the JavaOne book store.&lt;br /&gt;&lt;br /&gt;See you&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-7072449102392329893?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/7072449102392329893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=7072449102392329893' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7072449102392329893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/7072449102392329893'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/05/oracle-database-at-javaone.html' title='Oracle Database at JavaOne'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5968705810131771061</id><published>2007-04-22T18:37:00.000-07:00</published><updated>2007-04-22T18:54:58.508-07:00</updated><title type='text'>Collaborate07, Application Express and .Net</title><content type='html'>I spent 4 days last week in the Mandalay Bay Casino-hotel in Las Vega (not gambling, as you would think!) but attending &lt;a href="http://www.ioug.org/collaborate07/"&gt;Collaborate07&lt;/a&gt; a joint IOUG, OAUG and Quest International event.&lt;br /&gt;It was a crowded event according to IT standards but there was in the same time an Entertainment industry convention with 100,000+ atendees; no other convention place can beat Las Vegas!&lt;br /&gt;I gave a session on new JDBC and Java in the database featureas as part of Oracle Database 11g: What's new for Java, JDBC, PHP, OCI and .Net session.&lt;br /&gt;I spent the rest of my stay at the exhibition floor demoing new JDBc and Java in the database.&lt;br /&gt;I was sharing the same demo pod with my colleague Carl Backstrom (the APEX guy) and Christian Shay (the .Net guy). Even though we are all from Oracle it was the opportunity to better know the cool things Oracle is doing in the areas of Application Expres (APEX) and .Net.&lt;br /&gt;&lt;br /&gt;I encourage you to visit their blogs &lt;a href="http://carlback.blogspot.com/index.html"&gt;http://carlback.blogspot.com/index.html&lt;/a&gt;, &lt;a href="http://cshay.blogspot.com/"&gt;http://cshay.blogspot.com/&lt;/a&gt; and play with their products.&lt;br /&gt;&lt;br /&gt;Have fun, Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5968705810131771061?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5968705810131771061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5968705810131771061' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5968705810131771061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5968705810131771061'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/04/collaborate07-application-express-and.html' title='Collaborate07, Application Express and .Net'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-5737845001517361609</id><published>2007-04-11T09:44:00.000-07:00</published><updated>2007-04-11T09:46:14.883-07:00</updated><title type='text'>OC4J or Java Stored Procedures</title><content type='html'>I came across the following  nice story and think i shoud highlight this on my blog:&lt;br /&gt;&lt;a href="http://kristianjones.blogspot.com/2007/03/oc4j-or-java-stored-procedures.html"&gt;http://kristianjones.blogspot.com/2007/03/oc4j-or-java-stored-procedures.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy, Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-5737845001517361609?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/5737845001517361609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=5737845001517361609' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5737845001517361609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/5737845001517361609'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/04/oc4j-or-java-stored-procedures.html' title='OC4J or Java Stored Procedures'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-3205022548212012412</id><published>2007-04-07T17:56:00.000-07:00</published><updated>2007-04-08T10:54:18.291-07:00</updated><title type='text'>Oracle Develop Coming to Your City</title><content type='html'>You probably recall the famous Alexandre Dumas's quote in my book "&lt;em&gt;If you don't go to Lagardere, Lagardere will come to you"&lt;/em&gt;?&lt;br /&gt;&lt;br /&gt;Well, Oracle Develop is coming to you in Seoul, Bangalore, Beijing, Munich, London, and Prague; check it out @&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/events/develop2007/index.html"&gt;http://www.oracle.com/technology/events/develop2007/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll be presenting:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Oracle JDBC: High-Availability, Load Balancing, Best Practices, and Roadmap &lt;/li&gt;&lt;li&gt;The PHP/Oracle Experience: Building for Scalability&lt;/li&gt;&lt;li&gt;Developing and Deplying Oracle and PHP (Hands-on Labs).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I'll be glad to meet you in person.&lt;/p&gt;&lt;p&gt;See you there, Kuassi &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-3205022548212012412?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/3205022548212012412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=3205022548212012412' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3205022548212012412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/3205022548212012412'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/04/oracle-develop-coming-to-your-city.html' title='Oracle Develop Coming to Your City'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-1631614862159015893</id><published>2007-01-15T21:43:00.000-08:00</published><updated>2007-01-25T16:57:59.562-08:00</updated><title type='text'>Is Your Java Application FailoverProof (i.e., RAC Aware)?</title><content type='html'>&lt;strong&gt;Developing and Deploying FailoverProof Java/JDBC Applications in RAC environment using Fast Connection Failover, TAF and Runtime Connection Load Balancing.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Why in the world should a Java developer care about failover and what does it mean to be failoverproof?&lt;/em&gt;&lt;br /&gt;Well, failure is inevitable however, in mission critical (i.e., web) deployments, all applications including the Java ones must sustain resource manager (i.e., RDBMS) failure, or connection failure, or transaction failure without disrupting the service.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;How exactly?&lt;/em&gt;&lt;br /&gt;For the sake of simplicity, let's take a JDBC program. Best practices mandate that Java/JDBC programs capture exceptions and deal with these; here is a skeleton of a failoverproof program using Oracle JDBC in RAC environment:&lt;br /&gt;...&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;conn = getConnection();&lt;br /&gt;// do some work&lt;br /&gt;} catch (SQLException e) {&lt;br /&gt;handleSQLException(e); }&lt;br /&gt;...&lt;br /&gt;handleSQLException (SQLException e)&lt;br /&gt;{&lt;br /&gt;if (OracleConnectionCacheManager.isFatalConnectionError(e))&lt;br /&gt;ConnRetry = true; // Fatal Connection error detected&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Capturing SQL exceptons and re-trying to get a connection are all good JDBC programming so the burden is not really at the Java application level (it has to be somewhat portable), rather at the driver or framework level. Up to these (the driver, the OR Mapping framework, servlet engine, Java EE container) to furnish, under the covers, a failoverproof environment.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Do all drivers and Java frameworks are failoverproof?&lt;/em&gt;&lt;br /&gt;You wish! The reality is that very few JDBC drivers or Java frameworks furnish true/reliable connection or transaction failover mechanisms.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;From database access point of view, what does it take for a JDBC Driver or a Java framework to be failoverproof? &lt;/em&gt;&lt;br /&gt;First of all, a JDBC driver or a Java EE ccontainer by itself cannot furnish a complete failoverproof environment, it more importantly requires the resource manager, in this case the RDBMS to be failoverproof as well. In the Oracle RDBMS case, instance/node failover as well as scalability is furnished by the RAC framework.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;What is RAC?&lt;/em&gt;&lt;br /&gt;An Oracle database is managed by a database instance which is made of a shared memory (a.k.a. SGA)and a set of database server processes. A database is usually accessed and managed by a single instance. However, an Oracle database can also be concurrently accessed and managed by multiple instances up to 64 nodes and beyond; this technology is known as Real Application Clusters (RAC).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;How Does RAC Furnish Failover?&lt;br /&gt;&lt;/em&gt;Starting with release 10g, RAC generates events that indicate the health or status of each RAC components including SERVICE, SERVICE_MEMBER,DATABASE, INSTANCE, NODE, ASM, and SRV_PRECONNECT.&lt;br /&gt;The possible status are: UP, DOWN, NOT_RESTARTING, PRECONN_UP, PRECON_DOWN, and UNKNOWN.&lt;br /&gt;&lt;br /&gt;Example of events can be: "Instance1 UP", "Node2 Down".&lt;br /&gt;&lt;br /&gt;RAC furnishes failover by design in the sense that when a service/instance/node fails, a well written application can be redirected to the surviving node/instance provided these furnish the same service and proceed against the same database.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;How Does JDBC Leverages RAC Failover?&lt;/em&gt;&lt;br /&gt;&lt;p&gt;The Oracle JDBC 10g drivers, more specifically it's connection cache (a.k.a. Implicit Connection Cache) leverages RAC by subscribing to the following events and status (as described in RAC documentation and in chapter 7 of my book):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Service Up&lt;/em&gt;: The connection pool starts establishing connections in small batches to the newly added service.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Instance (of Service) Up&lt;/em&gt;: The connection pool gradually releases idle connections associated with existing instances and reallocates these onto the new instance.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Instance (of Service) Down&lt;/em&gt;: The connections associated with theinstance are aborted and cleaned up, leaving the connection pool with sound and valid connections.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Node Down&lt;/em&gt;: The connections associated with the instance are aborted and cleaned up, leaving the connection pool with good connections.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;But to be reliable, these events must be propagated to interested parties as fast as possible because the timeout mechanisms(tcp_keepalive, tcp_ip_interval, and so on) are unreliable and may take a long (tens of minutes) to indefinite time to be kick-in.&lt;br /&gt;Orale furnishes ONS (Orale Notification Services) and Advanced Queue as publish/subscribe and predictable notification mechanisms which detects and propagates quasi-instantaneously (sub-seconds) those events to components that have subscribed to these mechanisms.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Setting up JDBC for Failover&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;/em&gt;&lt;ol&gt;&lt;li&gt;Set up a multinstance Oracle Database 10g RAC database (see RAC documentation).&lt;/li&gt;&lt;li&gt;Virtualize the database host through a service name (see JDBC URL in chapter 7 of my book).&lt;/li&gt;&lt;li&gt;Configure ONS on each RAC server node (see the RAC Administrator Guide or chapter 7 in my book).&lt;/li&gt;&lt;li&gt;Configure ONS on each client node (10g Release 1) or use simpler remote subscription (10g Release 2). Ensure ons.jar file is in the CLASSPATH then programmatically set the ONS configuration string for remote ONS subscription at the data source level (unfortunately this cannot yet be set through system property): ods.setONSConfiguration("nodes=node1:4200,node2:4200"); The Java virtual machine (JVM) in which the JDBC driver is running must have oracle.ons.oraclehome set to point to ORACLE_HOME -Doracle.ons.oraclehome=&lt;location-of-oracle_home&gt; &lt;/li&gt;&lt;li&gt;Enable the Connection Cache and Fast Connection Failover through system property: -Doracle.jdbc.FastConnectionFailover = true Alternatively, the Connection Cache and Fast Connection Failover can be enabled programmatically using OracleDataSource properties: ods.setConnectionCachingEnabled(true); ods.setFastConnectionFailoverEnabled(true);&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;em&gt;Oracle JDBC: Handling of DOWN events (Under the covers) &lt;/em&gt;Upon the notification of Service Down event, a worker thread (one per pool instance) processes the event in two passes:First pass: Connections are marked as down first, to efficiently disable bad connectionsSecond pass: Aborts and removes connections that are marked as downNote: active connections that may be in the middle of a transaction receive a SQLException instantly&lt;/p&gt;&lt;p&gt;&lt;em&gt;Oracle JDBC: Hanlding of UP Events (under the covers)&lt;br /&gt;&lt;/em&gt;A Service UP event initiates connections to be load balanced to all active RAC instances Connection creation depends on Listener’s placement of connections. Starting with 10g release 2,load balancing advisory events enabled Runtime Connection Load Balancing (covered in chapter 7 of my book). &lt;/p&gt;&lt;p&gt;Object-relational Mapping frameworks as well as any Java EE containers may either leverage Oracle JDBC (bypassing their own connection pool) or subscribe diretly to RAC events using the ONS APIs and processing these (i.e., handle connection retry). To my knowledge, only Oracle's Java EE containers (OC4J) has integrated Fast Connection Failover and ONS at datasource level. &lt;/p&gt;&lt;p&gt;&lt;em&gt;How does Oracle JDBC Fast Connection Failover (FCF) compares with TAF?&lt;br /&gt;&lt;/em&gt;Fast Connection Fail-over and TAF differ from each other in the followingways:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;Driver-type dependency&lt;/em&gt;: TAF is in fact a OCI failover mechanism exposed to Java through JDBC-OCI. FCF is driver-type independent (i.e., works for both JDBC-Thin and JDBC-OCI).&lt;/li&gt;&lt;li&gt;&lt;em&gt;Application-Level Connection Retries&lt;/em&gt;: FCF supports application-level connection retries (i.e., the application may retry the connection or rethrow the exception). TAF on the other hand retries connection transparently at the OCI/Net out of the control ofthe application or Java framework.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Integration with the Connection Cache&lt;/em&gt;: FCF is integrated with the Implicit Connection Cache and invalidates failed connections automatically in the cache. TAF on the other hand works on a per-connection basis at the network level; it does not notify the connection cache of failures.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Load Balancing&lt;/em&gt;: unlike TAF, FCF and runtime connection load balancing (RCLB) support UP event load-balancing of connections and runtime distribution of work across active RAC instances. &lt;/li&gt;&lt;li&gt;&lt;em&gt;Transaction Management&lt;/em&gt;: FCF automatically rolls back in-flight transations; TAF, on the other hand, requires the application to roll back the transaction and send an acknowledgment to TAF to proceed with the failover. &lt;/li&gt;&lt;li&gt;TAF does not protect or fail-over codes that have server-side states such as Java or PL/SQL stored procedures; however, the application can register a callback function that will be called upon failure to reestablish the session states. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;// register TAF callback function “cbk” &lt;/p&gt;&lt;p&gt;((OracleConnection) conn).registerTAFCallback(cbk,msg);&lt;/p&gt;&lt;p&gt;Voila, you now have a Java plateform with connection pool failover, on top of which you can code and deploy JDBC applications or Java EE components.&lt;/p&gt;&lt;p&gt;&lt;em&gt;For more details&lt;/em&gt;, see chapter 7 of my book: &lt;a href="http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html"&gt;http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-1631614862159015893?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/1631614862159015893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=1631614862159015893' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1631614862159015893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/1631614862159015893'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2007/01/is-your-java-application-failoverproof.html' title='Is Your Java Application FailoverProof (i.e., RAC Aware)?'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-116483013586869313</id><published>2006-11-29T11:15:00.000-08:00</published><updated>2007-11-22T16:50:32.859-08:00</updated><title type='text'>Get Bolder with LOBs Manipulation in Java/JDBC</title><content type='html'>The Oracle database supports very large CLOB/BLOB columns/data however, the average Java/JDBC applications manipulates mostly medium size LOBs of tens/hundreds Kbytes in size.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WTF with LOB Programming in Java/JDBC &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you have ever dealt with LOBs in Java/JDBC applications, you know that it is not always straightforward, and sometime difficult to program cleanly. Let's take a closer look at the currently available approaches with Orace JDBC.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;3 Ways to Slice and Dice LOBs&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;As of 10g Release 2, Oracle JDBC furnishes 3 ways of accessing and manipulating LOBs including:Oracle's LOB methods, optimized standard LOB methods, and LONG Streaming. Which one to use and when?In this article, i want to shed some light so as to make the reader more comfortable, bolder, when using CLOBs, BLOBs, and BFILE in Java/JDBC applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Oracle LOB Approach&lt;br /&gt;&lt;/strong&gt;LOB manipulation is done in two steps&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Step#1: Manipulate the LOB Locator&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Create or Retrieve, Insert, and Update the LOB locator using &lt;em&gt;createTemporary, getEmptyCLOB, getEmptyBLOB methods. setBlob, setBLOB, setClob, setCLOB, getBlob, getBLOB, getClob, updateBlob, updateClob, setBLOB, setBLOBATName, setBFILE, updateBLOB, …, and updateCLOB&lt;/em&gt; methods.&lt;br /&gt;&lt;br /&gt;ResultSet rs = stmt.executeQuery(“SELECT blobcol from XobTab”;&lt;br /&gt;...&lt;br /&gt;BLOB BlobLoc = ((OracleResultSet)rs).getBLOB(1);&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Step#2: Manipulate the LOB Content&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Write LOB content using &lt;em&gt;getString, getSubString, and getBytes, setStrings, and putBytes&lt;/em&gt; methods.&lt;br /&gt;&lt;br /&gt;tempLob.putBytes (1, bytarr);&lt;br /&gt;PreparedStatement pstmt = conn.prepareStatement ( "insert into XobTab values (?)”;&lt;br /&gt;((OraclePreparedStatement)ps).setBLOB (1, tempLob);&lt;br /&gt;&lt;br /&gt;Read the LOB contents and Stream the content out, using &lt;em&gt;getBinaryStream, get-String, getCharacterStream, and getAsciiStream.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;byte[] bytarr = new byte[20]; // 20 bytes chunk&lt;br /&gt;BLOB LOBLoc = ps.getBLOB (1);&lt;br /&gt;InputStream is = LOBLoc.getBinaryStream();&lt;br /&gt;while ((length = stream.read(bytarr)) != -1)&lt;br /&gt;{&lt;br /&gt;// process the chunk&lt;br /&gt;bytarr = new byte[10];&lt;br /&gt;}&lt;br /&gt;is.close();&lt;br /&gt;&lt;br /&gt;In pre-10g releases, JDBC-Thin used the PL/SQL DBMS_LOB package for LOB operations; in 10g, it uses a more nativead faster protocol however, certain operations such as &lt;em&gt;hasPattern&lt;/em&gt; and &lt;em&gt;isSubLob&lt;/em&gt; are still done via the dbms_lob package.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Standard and Optimized LOB Approach&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For LOBs of size less than 2 gigabytes, LOB manipulation has been simplified especially in 10g Release 2) by removing the need to explicitly manage the locator. The standard methods &lt;em&gt;getBytes, getBinaryStream, getString, getCharacterStream, getAsciiStream setBytes, setBinaryStream, setString, setCharacterStream, and setAsciiStream&lt;/em&gt; have been extended to take BLOB, CLOB and BFILE columns as parameters. This approach simplifies LOB programming; under the covers, the driver does the right thing (i.e., taking care of the locator, etc).&lt;br /&gt;&lt;br /&gt;Example: Strings or byte arrays can be stored/read into/from the database, by simply using &lt;em&gt;setString or setBytes, getString or getBytes&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;LONG Streaming Approach&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;LONG streaming is furnished to help faster retrieval of data from a LOB without all the LOB overhead (i.e., retrieving the lob locators and going through the lob protocol), which can be very costly for small data. All you need to do is define the column as a LONG, then the driver takes care of LOB to LONG conversion and vice versa. This technique is faster than the locator approach (up to an order ofmagnitude)  however, it is not as flexible as the traditional or optimized LOB manipulation and has the following restrictions: LONG streaming always starts at the beginning of the LOB (i.e., you cannot position or start anywhere); you may read as much data as you wish but only a single pass is allowed (i.e., you cannot read the stream twice).&lt;br /&gt;Using this approach, CLOBs can be declared as LONGVARCHAR using defineColumnType. and streamed using &lt;em&gt;getAsciiStream&lt;/em&gt; by redefining it a as&lt;br /&gt;(OracleStatement)stmt.defineColumnType(&lt;n&gt;,Types.LONGVARCHAR);&lt;br /&gt;&lt;br /&gt;Similarly BLOBs columns can be declared as LONGVARBINARY using defineColumnType then streamed using getBinaryStream&lt;br /&gt;(OracleStatement)stmt.defineColumnType(&lt;n&gt;, Types.LONGVARBINARY);&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;// Pretend that these columns are of LONG and LONG RAW types&lt;br /&gt;(OracleStatement) stmt.defineColumnType(1,Types.LONGVARBINARY);&lt;br /&gt;(OracleStatement)stmt.defineColumnType(2,Types.LONGVARCHAR);&lt;br /&gt;...&lt;br /&gt;ResultSet rs = stmt.executeQuery(“select LOBCOL from XOBTab”);&lt;br /&gt;// Retrieving a Clob with getString");&lt;br /&gt;ocrs.setCommand ("SELECT lobcol FROM XOBTab");&lt;br /&gt;ocrs.execute ();&lt;br /&gt;while (ocrs.next ())&lt;br /&gt;{&lt;br /&gt;bytarr = stmt.getString (1));&lt;br /&gt;}&lt;br /&gt;ocrs.close ();&lt;br /&gt;&lt;br /&gt;// Retrieving a Blob with getBytes");&lt;br /&gt;ocrs.execute ();&lt;br /&gt;while (ocrs.next ())&lt;br /&gt;{&lt;br /&gt;ocrs.getBytes (2).length);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get More &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;This article, excerpted from my book, summarizes the various approaches to LOB manipulation using Oracle JDBC drivers. You can find more details and code snippets in either the &lt;a href="http://www.oracle.com/pls/db102/to_pdf?pathname=java.102%2Fb14355.pdf&amp;amp;remark=portal+%28Application+development%29"&gt;Oracle JDBC 10g R2 doc&lt;/a&gt; or in &lt;a href="http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html"&gt;chapter 8 of my book&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-116483013586869313?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/116483013586869313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=116483013586869313' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/116483013586869313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/116483013586869313'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/11/get-bolder-with-lobs-manipulation-in.html' title='Get Bolder with LOBs Manipulation in Java/JDBC'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-116279732682324414</id><published>2006-11-05T22:45:00.000-08:00</published><updated>2006-11-05T23:18:01.576-08:00</updated><title type='text'>WTF with SQLJ</title><content type='html'>&lt;strong&gt;What is SQLJ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQLJ allows embedding SQL statements in Java, similar to Pro*C (and all precompilable languages). A SQLJ program is pre-compiled into JDBC (by a translator) and therefore represents a simpler and more productive alternatve to straight JDBC programming in client-tier, middle-tier and database-tier. A runtime mechanism is usually needed at execution time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;#sql iter = {SELECT ENAME FROM EMP where EMPNO ='7934'}; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;if (iter.next()) { System.out.println("Employee# 7934 is " + iter.ENAME()); }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Oracle SQLJ Status&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQLJ has been briefly de-supported in early releases of the Oracle Database 10g (namely 10.1.0.1, 10.1.0.2, and 10.1.0.3) but is fully re-supported in the Oracle Database 10.1.0.4 and up.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQLJ Benefits&lt;/strong&gt;&lt;br /&gt;Many benefits including simplicity features, translation-time type checking, interoperability with JDBC, Oracle extensions to SQLJ, SQLJ Stored Procedures, and Runtime-free code generation.&lt;br /&gt;&lt;em&gt;Simplicity Features (Compared with JDBC)&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Embedded host variables (JDBC uses parameter markers).&lt;/li&gt;&lt;li&gt;No need to cast data types.&lt;/li&gt;&lt;li&gt;No need to programmatically register output parameters.&lt;/li&gt;&lt;li&gt;No need to explicitly handle the NULL value (See JDBC support for Null in Part II of my book).&lt;/li&gt;&lt;li&gt;Support for SELECT INTO statements.&lt;/li&gt;&lt;li&gt;Support for PL/SQL anonymous blocks makes it easy to embed PL/SQL in Java.&lt;/li&gt;&lt;li&gt;No need for String concatenation for long SQL statements.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;Translation-Time Type Checking&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Syntax checking of SQLJ constructs: a SQLJ parser checks the grammar, according to the SQLJ language specification.&lt;/li&gt;&lt;li&gt;Syntax checking of Java instructions: a Java parser (invoked under the covers) checks the syntax of Java host variables and expressions within SQLJ executable statements.&lt;/li&gt;&lt;li&gt;Semantics checking: Depending on the option settings, this includes: Syntax of SQL statements by a SQL semantics checker; SQL offline parser; Validation of schema objects (i.e., tables name, columns name); Validation of the mapping between Java types and SQL types.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;Interoperability with JDBC&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;JDBC connections can be used by SQLJ as a connection context and vice versa. &lt;/li&gt;&lt;li&gt;JDBC ResultSet can be passed to a SQLJ application as a SQLJ Iterator, and vice versa.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;Oracle Extensions&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Support for Dynamic SQL: Oracle extends it's implementation beyond the specification which only allows static SQL statements, to allow constructing SQL statements at runtime, similarly to JDBC.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;String table = "new_Dept"; &lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;#sql { INSERT INTO :{table :: dept} VALUES (:x, :y, :z) };&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Compile-Time Performane Optimizations&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Row prefetching &lt;/li&gt;&lt;li&gt;SQLJ statement caching &lt;/li&gt;&lt;li&gt;Update batching &lt;/li&gt;&lt;li&gt;Column type(s) definition&lt;/li&gt;&lt;li&gt;Parameter size definition&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;SQLJ Stored Procedures&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The database-resident Java VM (covered in depth in Part I of my book) embeds a SQLJ translator and runtime which allow you to load, pre-compile, compile and execute SQLJ source programs direcly in the database.&lt;br /&gt;... &lt;/p&gt;&lt;p&gt;dbprint("Hello from SQLJ in the Database!"); &lt;/p&gt;&lt;p&gt;Date today; &lt;/p&gt;&lt;p&gt;#sql {select sysdate into :today from dual}; &lt;/p&gt;&lt;p&gt;dbprint("Today is " + today); &lt;/p&gt;&lt;p&gt;... &lt;/p&gt;&lt;p&gt;static void dbprint(String s) { &lt;/p&gt;&lt;p&gt;try { &lt;/p&gt;&lt;p&gt;#sql { call dbms_output.put_line(:s)&lt;/p&gt;&lt;p&gt;}; &lt;/p&gt;&lt;p&gt;} catch (SQLException e) {} } &lt;/p&gt;&lt;p&gt;&lt;em&gt;Runtime-free code generation&lt;/em&gt;&lt;/p&gt;&lt;p&gt;SQLJ traditionally requires a runtime (implemenrtor specific). Oracle'simplementation allows you to generate runtime-free code (i.e., oure JDBC). &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Advanced/Powerful SQLJ Concepts&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SQLJ is more than a mere high-level JDBC code; the language/specification defines concepts such as connection contexts, execution context, iteratorsand expressions that are more advanced than their JDBC counterpart (when they exis).&lt;br /&gt;A SQLJ program is a Java/JDBC code with SQLJ declaration statements,and SQLJ executable statements.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;SQLJ declaration statements&lt;br /&gt;&lt;/em&gt;This category contains import statements, connection contexts declaration,execution contexts declarations, and iterators declarations.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Excutable Statements&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Executable statements can be grouped into Statementclauses and Assignment clauses.&lt;br /&gt;Statement Clause: &lt;/p&gt;&lt;p&gt;#sql [optional SQLJ space] { Statement clause }; &lt;/p&gt;&lt;p&gt;Assignment clauses &lt;/p&gt;&lt;p&gt;Query clause &lt;/p&gt;&lt;p&gt;#sql [conctx, exectx] iter = { SQLJ clause };&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Function clause &lt;/p&gt;&lt;p&gt;#sql result = { VALUES (&lt;function&gt; (&lt;paramlist&gt;))};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Iterator conversion clause &lt;/p&gt;&lt;p&gt;#sql iter = { CAST :rset }; &lt;/p&gt;&lt;p&gt;&lt;em&gt;Expressions&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Expresions are another powerful SQLJ mechanism that allows you to exploit Java expressions in SQLJ statements including: host expressions,context expressions and result expressions.&lt;/p&gt;&lt;p&gt;#sql [connctx_exp, execctx_exp] result_exp = { SQL with host expression }; &lt;/p&gt;&lt;p&gt;&lt;em&gt;Accessing Oracle SQL and PL/SQL Data Types&lt;br /&gt;&lt;/em&gt;SQL and PL/SQL data are manipulated in SQLJ through SQLJ host variables/expressions, result expressions, and iterator accessors.&lt;/p&gt;&lt;p&gt;Assume a table with an XMLType column, created as follows:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;create xmltype_tbl (xmltype_col SYS.XMLType);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;insert into xmltype_tbl values(SYS.XMLType('&lt;name&gt;tom&lt;/name&gt;'));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;insert into xmltype_tbl values(SYS.XMLType('&lt;name&gt;jon&lt;/name&gt;'));&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;It can be manipulated using the following code fragments:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;import oracle.xdb.XMLType;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;... &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;// &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;#sql iter={select xmltype_col from xmltype_tbl;} &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;while(iter.next()) { &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;System.out.println(iter.xmltype_col().getStringVal()); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;} &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;// &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;while (iter.next()) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;{ &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;System.out.println(iter.xmltype_col.getClobVal()); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Learn more&lt;/strong&gt; about SQLJ and Oracle implementation and code samples&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Oracle SQLJ Doc &lt;a href="http://www.oracle.com/pls/db102/to_pdf?pathname=java.102%2Fb16018.pdf&amp;remark=portal+%28Application+development%29"&gt;http://www.oracle.com/pls/db102/to_pdf?pathname=java.102%2Fb16018.pdf&amp;amp;remark=portal+%28Application+development%29&lt;/a&gt;&lt;/li&gt;&lt;li&gt;OTN Forum: &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=99"&gt;http://forums.oracle.com/forums/forum.jspa?forumID=99&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Book &lt;a href="http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html"&gt;http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-116279732682324414?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/116279732682324414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=116279732682324414' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/116279732682324414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/116279732682324414'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/11/wtf-with-sqlj.html' title='WTF with SQLJ'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-115731412200996395</id><published>2006-09-03T13:08:00.000-07:00</published><updated>2006-09-08T12:16:01.553-07:00</updated><title type='text'>Manipulating Tabular Data using JDBC RowSet API</title><content type='html'>If you Google "Tabular Data", you will get more than 2 millions hits, which is an illustration of the pervasive and broad scope of the concept.  So what are tabular data? The following proposal might not be the most well thought definition but tabular data can be defined as &lt;em&gt;data organized or presented as items/columns and records/rows that can be stored in (or retrieved from) various persistence repositores including file system, spreadsheet, relational tables, XML documents and so on&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;This blog will introduce the goals the JSR-114 RowSet, briefly describe the various models and furnish pointers to get further details and code samples.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why JDBC RowSet?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When dealing with tabular data, a number of Java SE/EE and Web Services requirements (such as JavaBean properties, XML documents properties) that are not addressed by the existing JDBC interfaces.&lt;br /&gt;&lt;p&gt;The RowSet specification (http://www.jcp.org/en/jsr/detail?id=114) addresses the following requirements and shortcomings of JDBC specifications: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Make query results scrollable and updatable without relying on the underlying JDBC driver&lt;/li&gt;&lt;li&gt;Manipulate data (e.g., filtering and joining) and make changes while disconnected from data sources&lt;/li&gt;&lt;li&gt;Associate properties and event listeners to query results to facilitate manipulation by tools&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Consume data results in chunks and ship result set to thin clients, handheld devices, and PDAs which are most of the time not connected and do not have a full-fledged JDBC driver&lt;/li&gt;&lt;li&gt;Convert data results to or from XML documents.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The RowSets Models&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The RowSet Specification (JSR-114) formalizes and completes the concept of RowSet introduced in JDBC 2.0. It defines five standard JDBC RowSet interfaces including: JdbcRowSet, CachedRowSet, WebRowSet, JoinRowSet, and FilteredRowSet (see Figure 1 below). &lt;/p&gt;The RowSet Hierarchy&lt;br /&gt;&lt;a href="http://photos1.blogger.com/hello/69/10349/640/RowSet.0.jpg"&gt;&lt;img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/hello/69/10349/400/RowSet.0.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The base JDBC RowSet interface (javax.sql.Rowset) encapsulate/extend ResultSets (java.sql.ResultSet) through a set of properties including: datasource, datasourcename, url, username, password, typeMap, maxFiedSize, maxRows, queryTimeout, fetchsize, transactionisolation, escapeProcessing, command, concurrency, readOnly, fetchDirection, as well as events and an event listener mechanism.&lt;br /&gt;In general, each rowset model is populated from a repository using the repositorey-specific APi (i.e., JDBC for RDBMS), then manipulated using the towset-model-specific methods.&lt;br /&gt;In the rest of this blog, I'll give you a brief description of each model excerpted from my book (a full coverage of the RowSet API is beyond the scope of a blog).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;JDBCRowSet&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The JDBCRowSet object is a JavaBean equivalent of ResultSet; as such, it maintains a connection to its datasource, has a set of properties,and a listener notification mechanism. The contents are identical to those of a ResultSet object, and it inherits all of the result set methods for rows manipulation, cursor movement, and data manipulation.&lt;br /&gt;The OracleJDBCRowSet class implements the javax.sql.rowset.JdbcRowSet interface.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;CahedRowSet&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The CachedRowSet object represents disconnected RowSet such that the row data and metadata can persist beyond the connection. When the connection to the database is restored, any modifications to the RowSet are propagated back to the database. It caches its rows in memory and allows operating on these without being connected to the datasource, resulting in increased scalability. In addition, it turns any result set object (even the read-only ones) into scrollable and updatable rowsets.&lt;br /&gt;The OracleCachedRowSet class implements the javax.sql.rowset.CachedRowSet interface.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;WebRowSet&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;A WebRowSet object is a CachedRowSet object, augmented with a default WebRowSetXmlReader, which reads an XML document into the rowset, and a default WebRowSetXmlWriter, which writes the rowset as an XML document.&lt;br /&gt;&lt;br /&gt;You can:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a WebRowSet object and dump its contents to an XML document. &lt;/li&gt;&lt;li&gt;Read an XML document into a WebRowSet object.&lt;/li&gt;&lt;li&gt;Make changes to a WebRowSet object (Insert, Update, Delete rows) and synchronize it back to the datasource. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The W3C XML schema for WebRowSet is defined by Sun, and available at &lt;a href="http://java.sun.com/xml/ns/jdbc/webrowset.xsd"&gt;http://java.sun.com/xml/ns/jdbc/webrowset.xsd&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;xs:element name="webRowSet"&gt;&lt;xs:element ref="wrs:properties"&gt;&lt;xs:element ref="wrs:metadata"&gt;The oracle.jdbc.rowset.OracleWebRowSet class implements the javax.sql.rowset.WebRowSet interface. The oracle.jdbc.rowset.OracleWebRowSetXmlWriter class extends the javax.sql.rowset.spi.XmlWriter.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;FilteredRowSet&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;A FilteredRowSet object simulates a SQL WHERE clause by applying user-defined filtering criteria on rows in a disconnected rowset; in other words, it returns/retrieves only rows that meet the defined criteria, and inserts/updates only rows that meet the constraints defined in the filter(s). The constraints are defined within a predicate class then assign this predicate to the FilteredRowSet object; as a result, the constraints defined in the predicate class will be evaluated against each row in the rowset object.In order to use filtered rowsets the JDBC applications must:&lt;br /&gt;&lt;/p&gt;&lt;/xs:element&gt;&lt;/xs:element&gt;&lt;/xs:element&gt;&lt;ul&gt;&lt;li&gt;Define and implement the Predicate interface.&lt;/li&gt;&lt;li&gt;Create an instance of FilteredRowSet object and set properties.&lt;/li&gt;&lt;li&gt;Populate the FilteredRowSet.&lt;/li&gt;&lt;li&gt;Set/enable filters.&lt;/li&gt;&lt;li&gt;Retrieve the filtered rows.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The oracle.jdbc.rowset.OracleFileteredRowSet class implements the javax.sql.rowset.FilteredRowSet; in addition the oracle.jdbc.rowset.OraclePredicate interface inherits from the javax.sql.rowset.Predicate. &lt;/p&gt;&lt;br /&gt;&lt;em&gt;JoinRowSet&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The JoinRowSet object represents a SQL JOIN operation between disconnected RowSet objects.A JoinRowSet object combines data from multiple rowsets. In order to use Join rowsets, the JDBC applications must:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create an empty instance of JoinRowSet object and set properties.&lt;/li&gt;&lt;li&gt;Create and add RowSets objects to the JoinRowSet.&lt;/li&gt;&lt;li&gt;Define the match column (similar to SQL matching columns).&lt;/li&gt;&lt;li&gt;Navigate and consume the JoinRowSet Object.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The oracle.jdbc.rowset.OracleJonRowSet class implements the javax.sql.rowset.JoinRowSet interface.&lt;br /&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Further Details&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;The JSR-114 furnishes a reference implementation of each rowset type as part of Java/JDK 5.0, or as stand-alone Jars (i.e., rowsetjsr114.jar) that can be used on top of any standard JDBC driver. Oracle implements JSR-114 specification as part of the JDBC drivers (i.e., ojdbc14.jar).&lt;br /&gt;&lt;br /&gt;For more details, see:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.jcp.org/en/jsr/detail?id=114"&gt;the specification&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jcp.org/en/jsr/detail?id=114"&gt;Sun's Totorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html"&gt;and my book &lt;/a&gt;which contains the detailled description of Oracle's implementation of each RowSet model and working code samples.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;?xml:namespace prefix = xs /&gt;&lt;xs:element name="webRowSet"&gt;&lt;xs:element ref="wrs:properties"&gt;&lt;xs:element ref="wrs:metadata"&gt;&lt;/xs:element&gt;&lt;/xs:element&gt;&lt;/xs:element&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-115731412200996395?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/115731412200996395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=115731412200996395' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115731412200996395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115731412200996395'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/09/manipulating-tabular-data-using-jdbc_03.html' title='Manipulating Tabular Data using JDBC RowSet API'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-115447886050773856</id><published>2006-08-01T17:34:00.000-07:00</published><updated>2008-05-02T14:11:20.492-07:00</updated><title type='text'>Oracle Database Programming using Java and Web Services</title><content type='html'>This &lt;a href="http://www.amazon.com/o/ASIN/1555583296/ref=s9_asin_image_2/104-7712285-3372749"&gt;book&lt;/a&gt; is about Oracle database programming using Java and Web services. &lt;strong&gt;Foreword by Tom Kyte &lt;a href="http://www.oracle.com/pls/wocprod/docs/page/ocom/technology/tech/java/sqlj_jdbc/tk_foreword.htm"&gt;(html)&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;&lt;a href="http://www.oracle.com/pls/wocprod/docs/page/ocom/technology/tech/java/sqlj_jdbc/foreword_tk.pdf"&gt;(pdf)&lt;br /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/1555583296/"&gt;&lt;img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/hello/69/10349/400/Book.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;This &lt;/strong&gt;&lt;a href="http://www.amazon.com/gp/product/1555583296"&gt;&lt;strong&gt;book&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; is for database developers (DBA, PL/SQL developers, data architects), Java/JDBC/SQLJ developers, and Web services /SOA assemblers.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Through its 1085 pages, it furnishes a complete coverage of the following topics:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Java in the database&lt;/strong&gt;: stored procedures as database programming model (rationale, obstacles to their adoption, languages for stores procedures, PL/SQL or Java?). Under the hood of the Java runtime in the database (design goals, architecture, memory management, security, threading, Java execution in the database, native compilation, etc). Examples of typical and atypical applications (SAP callout, JDBC callout, EJB callout, HTTP Callout), Excel-like expressions parser) using Java in the database. Mapping SQL and PL/SQL types to/from Java. Declaring Java stored procedures (Call Specs). Experimental examples of running JACL, JYTHON, SCHEME and GROOVY in the database using the Java runtime. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Oracle JDBC 10g&lt;/strong&gt;: In depth coverage of the JDBC API specifications and Oracle implementation. Connection and connection services (Implicit Connection Caching). High-Availability &lt;em&gt;in RAC environments&lt;/em&gt; (ONS, Fast Connection Failover, TAF) and scalability (&lt;em&gt;Runtime Connection Load balancing in RAC environments&lt;/em&gt;). Statements and Oracle extensions (statement caching, DML batching). Manipulating Oracle data types with JDBC. Practical coverage of Result Sets and the various RowSet models (JSR-114) . Proxy Authentication, SSL encryption, end-to-end tracing, Logging, local/global Transactions, Security and best practices. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Oracle SQLJ 10g&lt;/strong&gt;: Concise coverage of the SQLJ Language/API and Oracle implementation. Manipulating SQL and PL/SQL data types with SQLJ and contrasting with JDBC (interoperability, differences). Comprehensive coverage of Oracle datatypes mapping, and best practices. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;JPublisher in Action&lt;/strong&gt;: a practical coverage of a versatile tool that complements JDBC (and SQLJ) for accessing the Oracle database from Java. Automatic wrapping of PL/SQL packages as well as mapping complex/user-defined types to Java. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Database Web services&lt;/strong&gt;: Introduction to Web services and SOA for DBAs. How to turn your Oracle database into a Web service consumer (call-out external Web services from within the database using SQL, PL/SQL, Java). How to turn your database into a Web services provider (exposing PL/SQL package into Web service as wellas SQL Query, AQ quques and operations, SQL Queries and DML, and Java in the database --using few mouse clik or a command line utility. How to add SOA services to database web services.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here is &lt;a href="http://www.elsevierdirect.com/samplechapters/9781555583293/Sample_Chapters/02~Chapter_One.pdf"&gt;&lt;strong&gt;the first chapter&lt;/strong&gt;&lt;/a&gt;, the &lt;a href="http://books.elsevier.com/us/bookscat/search/details.asp?country=United+States&amp;amp;community=mk&amp;amp;txtSearch=&amp;amp;searchfield=subjectcode&amp;amp;amp;amp;amp;imprint=Morgan+Kaufmann&amp;amp;operator=%3D&amp;amp;textbook=&amp;amp;highlight=0&amp;amp;display=collapse&amp;amp;isbn=1555583296&amp;amp;srccode=&amp;amp;ref=&amp;amp;mscssid=96XECT71LDRH9M6QKNGS6QJ5XVRJB01D#contents"&gt;&lt;strong&gt;Table Of Content&lt;/strong&gt;&lt;/a&gt;, the code samples&lt;strong&gt; &lt;/strong&gt;at&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://download.oracle.com/technology/tech/java/jsp/pdf/Code_depot.zip"&gt;&lt;strong&gt;OTN&lt;/strong&gt;&lt;/a&gt; and at the publisher's &lt;a href="http://books.elsevier.com/companions/1555583296?country=United+States"&gt;&lt;strong&gt;web site&lt;/strong&gt;&lt;/a&gt;, and a &lt;a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:952229840241#27261000346840428"&gt;&lt;strong&gt;reader's review&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Enjoy and pass on the buzz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-115447886050773856?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/115447886050773856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=115447886050773856' title='226 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115447886050773856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115447886050773856'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/08/oracle-database-programming-using-java_01.html' title='Oracle Database Programming using Java and Web Services'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>226</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-115268078504997793</id><published>2006-07-11T21:17:00.000-07:00</published><updated>2006-07-11T22:12:04.376-07:00</updated><title type='text'>Get the Best Performance out of Java in the Database</title><content type='html'>When you run Java in the database, what are the various execution modes? Are you taking the most efficient approach? In this post I'll touch on the various execution modes for running Java in the Oracle database.&lt;br /&gt;&lt;br /&gt;As we all know, the best execution performance for Java is achieved via binary executables obtained through compilation (JIT compilers and/or static compilers). The Oracle Database currently furnishes a static native Java compiler known as NCOMP, which must be explictly invoked ahead of the deployment.&lt;br /&gt;&lt;br /&gt;There are currently &lt;strong&gt;three execution modes&lt;/strong&gt;: (i) fully interpret, (ii) NCOMPed System classes, and (iii) fully NCOMPed (or NCOMPed User Classes).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fully Interpreted (System and User Classes)&lt;/strong&gt;&lt;br /&gt;In this mode, both system classes and the user classes, run interpreted. During the database installation, the non-compiled Java VM system classes are installed. By default, user classes also run interpreted and most customers stick to the default mode and are happy with the level of performance obtained, mostly because, as explained in previous posts and in my book, the combination of Java and SQL run faster in the database (even fully interpreted). However, this is not the most efficient execution mode.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NCOMPed System Classes and Interpreted User Classes&lt;/strong&gt;&lt;br /&gt;In this mode, the system classes run natively compiled while user classes run interpreted. The natively compiled system classes (NCOMP libraries) are installed explictly following the default database install, from the companion CD. Without further explcit action, the user classes run interpreted on top of the natively compiled system classes. The overall peformance is greater than the previous mode (i.e., fully interpreted).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fully NCOMPed (System and User Classes)&lt;/strong&gt;&lt;br /&gt;In this mode, the system and user classes run natively compiled. User NCOMP requires an explicit action from the developers. It &lt;em&gt;comprises three commands/steps&lt;/em&gt;: 'NCOMP', 'STATUSNC', and 'DEPLOYNC'.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;NCOMP&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;This command takes Java bytecodes that have been resolved and verified during the loading phase (loadjava) and can therefore be trusted and expected to execute correctly, then does three things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;gathers class info, generates a script that will drive the NCOMPing process, and produces the list of NEED_NCOMPNG orALREADY_NCOMPED methods &lt;/li&gt;&lt;li&gt;Pauses for the Java-to-C translation: C compilation and linkage of each package involved into platform-specific DLLs&lt;/li&gt;&lt;li&gt;Deployment/installation of the resulting DLL (unless -noDeploy) is specified&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;em&gt;ncomp [ options ] class_designation_file&lt;br /&gt;-user -u username/password [@database_url]&lt;br /&gt;[-load]&lt;br /&gt;[-projectDir -d project_directory]&lt;br /&gt;[-force]&lt;br /&gt;[-lightweightDeployment]&lt;br /&gt;[-noDeploy]&lt;br /&gt;[-outputJarFile -o jar_filename]&lt;br /&gt;[-thin]&lt;br /&gt;[-oci -oci8]&lt;br /&gt;[-update]&lt;br /&gt;[-verbose]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;STATUSNC &lt;/em&gt;&lt;/p&gt;&lt;p&gt;This command checks whether the JAR files, ZIP files, or CLASSES files are NCOMPed or not.&lt;br /&gt;&lt;em&gt;statusnc [ options ] &lt;file&gt;.jar &lt;file&gt;.zip&lt;br /&gt;&lt;file&gt;.classes.&lt;br /&gt;-user &lt;user&gt;/&lt;password&gt;[@database]&lt;br /&gt;[-output -o &lt;filename&gt;]&lt;br /&gt;[-projectDir -d &lt;directory&gt;]&lt;br /&gt;[-thin]&lt;br /&gt;[-oci -oci8]&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;DEPLOYNC&lt;/em&gt;&lt;/p&gt;&lt;p&gt;This command deployd the natively compiled deployment JAR file, to the database.&lt;br /&gt;&lt;em&gt;deploync [options] deployment.jar&lt;br /&gt;-user -u username/password [@database_url]&lt;br /&gt;[-projectDir -d project_directory]&lt;br /&gt;[-thin]&lt;br /&gt;[-oci -oci8]&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;NCOMP may give an order of magnitude speed up (i.e., 10 times) compared to interpreted execution. But as usual, there is no absolute figure; it all depends on what exactly you are NCOMPing as NCOMP speeds up only Java code, not the embedded SQL.&lt;/p&gt;&lt;p&gt;See more details in the Java Developer's Guide of the Oracle Database documentation nd in my book.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-115268078504997793?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/115268078504997793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=115268078504997793' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115268078504997793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115268078504997793'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/07/get-best-performance-out-of-java-in.html' title='Get the Best Performance out of Java in the Database'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-115095478897920664</id><published>2006-06-21T22:30:00.000-07:00</published><updated>2006-06-21T22:39:49.330-07:00</updated><title type='text'>Invoking External Functionality/System from within the Database</title><content type='html'>Looking at the picture at the following URL,&lt;br /&gt; &lt;a href="http://photos1.blogger.com/blogger/4310/2356/1600/360_DB_Prog.2.jpg"&gt;http://photos1.blogger.com/blogger/4310/2356/1600/360_DB_Prog.2.jpg&lt;/a&gt;, i have touched through my previous posts on the first three points, including:&lt;br /&gt;(1) the user-defined database functinality itself,&lt;br /&gt;(2)calling database functionality from within the database,&lt;br /&gt;and (3) calling user-defined database functionality from outside.&lt;br /&gt;&lt;br /&gt;In this post, I'll touch on the fourth point (4):  invoking external functionality from within the database.&lt;br /&gt;The requirements range from alerting or notifying external systems based on data value/state, validating or obtaining credit card authorization, querying/updating remote database, invoking a rate/tax engine, obtaining dynamic data, invalidating middle-tier data cache, messaging across tiers, executing OS commands, and so on.&lt;br /&gt;&lt;br /&gt;The Java runtime in the database allows the use of various Java-based  mechanisms and protocols, depending on the design/implementation of the target external systems as highlighted in the following examples.&lt;br /&gt;&lt;br /&gt;- Calling out external RMI Servers allow invoking SAP System from within the database&lt;br /&gt;   through SAP JCO.&lt;br /&gt;&lt;br /&gt;- Implementing an HTTP-callout trigger using the Java-based HTTPClient for requesting a&lt;br /&gt;   Web component (i.e., JavaServer Page) to invalidate a middle-tier data cache. Similarly a&lt;br /&gt;   credit card authorization and validation can be implemented using HTTPS Call-out.&lt;br /&gt;&lt;br /&gt;- Alerting/Notifying external systems via email, using Java-based mailer in the database.&lt;br /&gt;&lt;br /&gt;- Implementing JDBC-Callout to issue queries and DML against remote non-Oracle database(s)&lt;br /&gt;   using a 3rd party pure Java JDBC driver. &lt;br /&gt;&lt;br /&gt;- Messaging across tiers using JMS over Streams AQ by invoking Message-Driven Beans in the&lt;br /&gt;   middle-tier.&lt;br /&gt;&lt;br /&gt;- Web Services Callout allows retrieving dynamic data from external Web services or invoking&lt;br /&gt;   remote operations through Web services mechanisms.&lt;br /&gt;&lt;br /&gt;- Invoking OS commands using Runtime.exec('').&lt;br /&gt;&lt;br /&gt;- And so on ...&lt;br /&gt;&lt;br /&gt;The beauty of embedding a full fledged Java VM in the database is that even when a protocol or invocation mechanism is not available by default, you can reuse existing Java library that implements the mechanism or protocol in question. The complete details of the examples and case studies  with the code samples are available in my soon-to-be-released book &lt;a href="http://www.amazon.com/gp/product/1555583296"&gt;http://www.amazon.com/gp/product/1555583296&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-115095478897920664?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/115095478897920664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=115095478897920664' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115095478897920664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/115095478897920664'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/06/invoking-external-functionalitysystem.html' title='Invoking External Functionality/System from within the Database'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-114896952244096442</id><published>2006-05-29T23:03:00.000-07:00</published><updated>2006-06-02T14:37:51.916-07:00</updated><title type='text'>Invoking User-Defined Database Functionality from within and outside the database</title><content type='html'>In my previous post i touched on the fact when database access is significant, it is often more efficient to implement and run user-defined functionality directly in the database.&lt;br /&gt;In his dated but still good report on distributed computing economics (i.e., Grid Computing) Jim Gray's recommends to "put computing as close to the data as possible in order to avoid expensive network traffic". See &lt;a href="ftp://ftp.research.microsoft.com/pub/tr/TR-2003-24.pdf"&gt;ftp://ftp.research.microsoft.com/pub/tr/TR-2003-24.pdf&lt;/a&gt;.&lt;br /&gt;This is true for most RDBMS; as far as the Oracle database is concerned, this is true for PL/SQL, Java, and Web services (i.e., Database Web Services).&lt;br /&gt;&lt;br /&gt;Now, assume you have built user-defined database functionality, how do you invoke it from within and from outside the database? With the Oracle database, there are three cases:&lt;br /&gt;&lt;br /&gt;1/Invoking PL/SQL based user-defined database funtionality&lt;br /&gt;&lt;br /&gt;Assume Func_nn(),Proc_nn(),Pkg_xx.Func_nn(), and Pkg_xx.Proc_nn()&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Invocation from SQL, PL/SQL, and SQL*Plus&lt;br /&gt;SQL&gt;CALL Func_nn();&lt;br /&gt;SQL&gt;CALL Pkg_xx.Func_nn();&lt;br /&gt;SQL&gt;CALL Pkg_xx_Proc_nn();&lt;br /&gt;SQL&gt;Begin Proc_nn() End/&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Invocation from Java (J2EE, JDBC, Java-in-the-database): same as Java-based functionality see below.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;2/ Invoking Java-based user-defined database functionality &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Invocation from Java-in-the-database: A user-defined Java functionality is transparently invoked by another Java class running in the database, provided the invoker has the proper privileges and authorization.&lt;/li&gt;&lt;li&gt;Call Specifications:  Java-based functionality is made available/known to SQL (therefore to PL/SQL, and JDBC) through a PL/SQL Wrapper called Call Spec. There exist top-level Call Spec,PL/SQL-packaged Call Spec, and object type Call Spec. Call Spec must map parameters and retur values to/from SQL or PL/SQL types to Java (and JDBC supported) types; such mapping can be challenging unless you use a tool (i.e., JPublisher). &lt;/li&gt;&lt;li&gt;Invocation from SQL, PL/SQL and SQL*Plus: similar to PL/SQL-based functionality (see above).&lt;/li&gt;&lt;li&gt;Invocation from Java/JDBC/J2EE  using the SQL 92 Syntax CallableStatement cstmt = conn.prepareCall(“{? = call func(?, ?)}”); &lt;/li&gt;&lt;li&gt;Invocation from Java/JDBC/J2EE  using the PL/SQL Anonymous Block syntax CallableStatement cstmt = conn.prepareCall(“begin ? := func(?, ?); end;”); Note: with JDBC programming, Output parameter(s) must register the data types and the value(s) of Input parameter(s) must be set. However,not all SQL database types are supported.&lt;/li&gt;&lt;li&gt;Invocation from Java/JDBC/J2EE using Client-Stub: a JPublisher-generated client-side stub allows callingmethods on Java classes in the database, without the provision of a user-definedCall Spec (see above), and without their limitations (of Call Specs).&lt;/li&gt;&lt;li&gt;Invocation from OJVMJAVA: the Oracle database furnishes an interactive command-lineutility called OJVMJAVA, which lets you run Java classes in the database (i.e., classes with a public static main() method) from the client machine.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;3/ Invoking User-defined Database Functionality as Web Services Simply put, Web services consist of a service client and service provider exchanging SOAP-based XML messages using Web protocols.  User-defined database functionality can be published as Web Services and invoked by by standard-compliant  Web services clients. However, beyond SOAP, WSDL, and UDDI, there are more to Web services. The Oracle implementation of Database Web services benefit from the Quality of Services furnished by the Oracle AS SOA stack. The steps for turning database functionality as Web Services is described in Database Web Services portal (linked from this blog).&lt;/p&gt;&lt;p&gt;All these approaches are fully decribed in my book &lt;a href="http://www.amazon.com/gp/product/1555583296/"&gt;http://www.amazon.com/gp/product/1555583296/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In my next post I'll touch on invoking external functionality from within the database.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-114896952244096442?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/114896952244096442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=114896952244096442' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114896952244096442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114896952244096442'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/05/invoking-user-defined-database.html' title='Invoking User-Defined Database Functionality from within and outside the database'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-114672362990952544</id><published>2006-05-03T23:00:00.000-07:00</published><updated>2006-05-05T22:35:18.616-07:00</updated><title type='text'>User-Defined Database Functionality</title><content type='html'>Beyond the out-of-the-box built-in RDBMS functionality, you often need to extend the capabilities of your database by developing your own database-resident functionality, or data logic.&lt;br /&gt;&lt;br /&gt;The requirements for user-defined database functionality range from performance (see free-sample chapter in previous posts), integration with existing functionality, security, ability to share data logic (across all clients applications), cost reduction, skill reuse, deployment/topology choices (see dilemma below), and many other reasons.&lt;br /&gt;&lt;br /&gt;The following applications are candidates for being implemented as user-defined database functionality:&lt;br /&gt;- Traditional data logic: SQL statements grouping&lt;br /&gt;- Content/Repository management&lt;br /&gt;- In-database Message Queuing and propagation&lt;br /&gt;- Reporting functionality: generate pdf, excel, and XML documents from relational data&lt;br /&gt;- Data-based Alert, and Notification&lt;br /&gt;- Expressions Parsers (see code fragment below)&lt;br /&gt;- Key generation, MD5 CRC checksum&lt;br /&gt;- Multi-media data processing: store, retrieve, transform/convert images (GIF, PNG, JPEG), audio, video, or heterogeneous media data. Alternatively you can just use Oracle interMedia, a packaged multi-media processing framework.&lt;br /&gt;- Text data management: index, search, and analyze texts stored in RDBMS. Alternatively you can just use Oracle Text, a packaged text data processing framework.&lt;br /&gt;&lt;br /&gt;However, an RDBMS is not an application server, you must make the determination that the user-defined functionality pertains indeed to the RDBMS.&lt;br /&gt;Examples:&lt;br /&gt;- tax and rate engines, which take input values and return tax amounts or rates, are better implemented as EJBs and do not belong to the RDBMS.&lt;br /&gt;- a JavaServer Pages that generate user-interface rendered in a browser does not belong to the RDBMS.&lt;br /&gt;As discussed in many forums, making the determination is not always a clear cut.&lt;br /&gt;Examples:&lt;br /&gt;- a frequent dilemma is the choice between caching data in the middle-tier (i.e., CMP Beans, POJO) or pushing the processing closer to the data (i.e., stored procedures)? See http://www.theserverside.com/discussions/thread.tss?thread_id=2613&lt;br /&gt;- a server-side UI can be produced using either a JavaServer Pages (that is deployed in the middle-tier) or the database-resident Oracle Application Express (formerly known as HTML DB), or use the HTP package, directly in the database.&lt;br /&gt;&lt;br /&gt;The mechanisms and programming models for building user-defined database functionality&lt;br /&gt;range from proprietary procedural languages (e.g., PL/SQL, T-SQL), standard languages (e.g., Java), de facto standard languages (C#, VB), messaging systems for database messaging, job/task scheduler, and so on.&lt;br /&gt;&lt;br /&gt;The Oracle database furnishes PL/SQL, Java, Streams AQ, DBMS_SCHEDULER and so on for building user-defined functionality.&lt;br /&gt;There are tons of PL/SQL examples, see http://asktom.oracle.com.&lt;br /&gt;Java in the database is an open alternative to PL/SQL for implementing advanced functionality such as a domain-specific language parser. Imagine an Excel expression evaluator/parser that can be used to generate formulas representing complex interrow calculations in the database and dynamically generating the corresponding SQL.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Mini Parser code fragment&lt;/em&gt;&lt;br /&gt;public class Mini parser {&lt;br /&gt;package example;&lt;br /&gt;import example.parser.parser;&lt;br /&gt;import example.formula.Expr;&lt;br /&gt;import java.io.StringReader;&lt;br /&gt;&lt;br /&gt;public static String eval(String spreadsheetExpr) throws Exception {&lt;br /&gt;parser p =&lt;br /&gt;new parser(new StringReader(spreadsheetExpr));&lt;br /&gt;Expr expr = (Expr)p.parse().value;&lt;br /&gt;return expr.eval();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) throws Exception {&lt;br /&gt;System.out.println(eval(args[0]));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Then the following query returns &lt;em&gt;15&lt;/em&gt; which is not the generated SQL, but gives you an idea of how the expression evaluator works:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;select eval('=sum(1,2,3,4,5)') from dual; &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The complete mini-parser source code as well as the corresponding CUP and LEX descriptions are available in chapter four of my book (see link on this blog).&lt;br /&gt;&lt;br /&gt;In the next posting, I'll elaborate on how to make the user-defined database functionality available for invocation by other database components as well as external components.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-114672362990952544?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/114672362990952544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=114672362990952544' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114672362990952544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114672362990952544'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/05/user-defined-database-functionality.html' title='User-Defined Database Functionality'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-114594511040998902</id><published>2006-04-24T22:08:00.000-07:00</published><updated>2006-04-24T23:05:10.433-07:00</updated><title type='text'>Database Functionality: Beyond Data Storage</title><content type='html'>Ain't no enterprise applications without a database (RDBMS), still  some of us have the tendency to think of databases as dumb data repositories or mere storage engines for Relational/Structured, Binary/MultiMedia, Documents/Unstructured and Semi-Structured/Messages data. If so, as Henri Bergson wrote "&lt;em&gt;The eye can only see what the mind is prepared to accept&lt;/em&gt;" -- iow, you cannot see and utilize all their possibilities. &lt;br /&gt;&lt;br /&gt;An exhaustive coverage of database functionality, that you get out-of-the-box, and those that you can build yourself is beyond the scope of a blog -- but range from OLTP to OLAP/Business Intelligence, from Messaging to Content Management, and much more.&lt;br /&gt;In the next posting I'll touch on programming models that you can use to build database functionality, also known as data logic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-114594511040998902?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/114594511040998902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=114594511040998902' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114594511040998902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114594511040998902'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/04/database-functionality-beyond-data.html' title='Database Functionality: Beyond Data Storage'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-114523170020815271</id><published>2006-04-16T16:55:00.000-07:00</published><updated>2006-04-24T22:08:25.696-07:00</updated><title type='text'>What 360 degrees Database Programming Means</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/4310/2356/1600/360_DB_Prog.2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4310/2356/400/360_DB_Prog.1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;As some of you have asked me privately -- don't be shy, post your comments :), what the h. does 360 degree database programming means? Well, 4 things that i will elaborate on in following posts: (1) the database functionality itself, (2) calling database functionality from within the database, (3) calling database functionality from outside (client, middle-tier, etc), and (4) calling external system/functionality from within the database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-114523170020815271?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/114523170020815271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=114523170020815271' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114523170020815271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114523170020815271'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/04/what-360-degrees-database-programming.html' title='What 360 degrees Database Programming Means'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25155671.post-114385118254207924</id><published>2006-03-31T16:20:00.000-08:00</published><updated>2006-03-31T17:01:02.536-08:00</updated><title type='text'>Stored Procedure as Database Programming Model</title><content type='html'>I thought the best way to trigger this blog is to discuss the rationales for stored procedures, the obstacles to their adoption, languages used for writing stored procedures, and the $100000 question of proprietary procedural languages such as PL/SQL versus open standards languages such as Java.&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/books/pdfs/mensah_ch1.pdf"&gt;http://www.oracle.com/technology/books/pdfs/mensah_ch1.pdf&lt;/a&gt;&lt;br /&gt;Enjoy and share your thoughts, Kuassi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25155671-114385118254207924?l=db360.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://db360.blogspot.com/feeds/114385118254207924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25155671&amp;postID=114385118254207924' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114385118254207924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25155671/posts/default/114385118254207924'/><link rel='alternate' type='text/html' href='http://db360.blogspot.com/2006/03/stored-procedure-as-database.html' title='Stored Procedure as Database Programming Model'/><author><name>Kuassi Mensah</name><uri>http://www.blogger.com/profile/17181349306854451284</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-kT7uj8xdpgc/TuCzYDzlcUI/AAAAAAAAAEY/86qnFp3vSNs/s220/new-me.jpg'/></author><thr:total>23</thr:total></entry></feed>
