Friday, December 19, 2008

Oracle Python adapter ( cx_Oracle ) got DRCP

The latest Oracle Python adapter (cx_Oracle) got Database Resident Connection Pool, Python 3 and many other goodies.
See more details.

Sunday, November 16, 2008

Read parts of my book on Google Books

I just found out that parts of my book (fragments ranging from page 224 to page 374) has been scanned and available online.

The entire section on running Groovy in the database is available.


Thursday, November 06, 2008

Wednesday, October 29, 2008

Oracle PHP Video from the Singapore PHP Meetup

Presented by my colleague Blair Layton; here is the video of the Singaporian PHP Meetup

Tuesday, September 30, 2008

Our OOW Poscast on Dynamic Languages

See you at Oracle Develop Beijin, Mumbai, Moscow, and Prague

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

See you there, Kuassi

Sunday, August 31, 2008

What is Going on for Database Application Performance (OCI, C/C++, Java/JDBC) and Net Services

Here are session and hands-on lab related to application performance from database perspective.
See other posts for my Java, JDBC, PHP and Ruby sessions and hands-on labs.

Hands-on lab:

See you there

What is Going on for PHP and Ruby on Rails at Oracle OpenWorld, San Francisco, Sep 21st-25th

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.


Hands-on Labs

See you there.

What is Going On for JDBC, Java in the Database, and UCP at Oracle OpenWorld, San Francisco, Sept 21-25th

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.
Look other posts on this blog for my other sessions and labs.


Hands-on Labs

See you there.

Tuesday, August 19, 2008

Hands-on Oracle Database 11g Application Development

You don't want to miss this unique opportunity

Because this is a hands-on event (laptop provided and pre-staged), space is limited.

Fwiw, you may win
- 1 iPod Touch
- $15 iTunes card
- 1 free OOW pass (does not include travel and expenses)
- books (from recommendations).

Sunday, July 13, 2008

Oracle Symfony in PHP Minor

Mladen Gogala is an Oracle DBA with PHP expertise.
Enjoy the article @

Tuesday, June 24, 2008

PHP OCI8 1.3.3 Has Gone Production

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.

See the README in the OCI8 bundle and read the white paper for more information.

Sunday, June 01, 2008

New release of database-resident Lucene integration

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.

This is a perfect illustration of data-intensive-and-compute-intensive processing that i will be talking about in comign events.

Wednesday, April 23, 2008

Instant Client on MAC OS X Database Client (+ Instant Client) for Apple MAC OS X on Intel x86 is now available for download on OTN.
The client is supported on the latest OS release - MAC OS X Leopard 10.5.


Monday, April 07, 2008

April San Francisco Java Meetup - Quercus: How to Run PHP on Java

Similar to Jython, and JRuby, Quercus, a 100% Java implementation of PHP 5 allows running PHP applications on a Java VM.

Caucho (the maker of Resin) is positioning this as a PHP/Java bridge which
  1. allows PHP applications to be deployed over a Java application server and leverage Java infrastructure: JDBC, JMX, Web Bean (JSR 299), EJB, etc. WordPress was deployed over Quercus in few minutes .
  2. allows Java to use PHP as view component, in the face of the larger adoption of dynamic languages (PHP, Python, Ruby) for Web applications.

I have not tried but it must be possible to deploy your PHP applications with Quercus, OC4J and the Oracle database.

Sunday, April 06, 2008

San Francisco Ruby Monthly Meetup: Open Social

At this month's SF Ruby meetup:

  • 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.
  • Michael Slater and Christopher Haupt described how 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.


San Francisco PHP Meetup April: Symfony

I attended this month's SF PHP Meetup in the city.

Dustin Whittle of Yahoo presented the Symfony framework (initiated by a french guy, oui!!).

The meetup was crowded and well received as you can read here. 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).

Imo, the following capabilities may be extended with Oracle

  • 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)
  • ability to use the database for Internationalization/Localization dictionary; may leverage Oracle built-in Internationalization/Localization


Friday, February 22, 2008

Oracle Database and RESTFul Web Services

The Oracle database 11g furnishes SOAP-based Native Database Web services however, RESTful Web services are having better traction than SOAP based Web Services.

My friend Marcelo has just posted the results of his new proof of concept.

Play with and enjoy.


Tuesday, February 19, 2008

Oracle Database 11g Client Result Cache Coming to Java

Server Side Query Result Cache

"Caching, caching and caching” is a well-known secret for performance.
The Oracle database 11g furnishes Query Result Cache, 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.
It also furnishes PL/SQL Function Result Cache[1], which is similar to the SQL query result cache but applied to PL/SQL Functions.

Client-Side Query Result Cache

Caching query result sets in the database memory still requires client/server network round-trip(s). The other well-known secret is "The fastest database access is no database access". 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.
Client Result Cache is SQL oriented[2] 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.

In addition, Client Result Cache is synchronized with the database and is automatically invalidated.

Performance Proof Points
Running the Nile benchmark[3] with Client Result Cache enabled and simulating up to 3000 users results in

  • Up to 6.5 times less server CPU usage
  • 15-22% response time improvement
  • 7% improvement in mid-tier CPU usage

Enabling Client Result Cache

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.

1) Server (database):
Set CLIENT_RESULT_CACHE_SIZE (default 0, cache disabled)
2) Client (sqlnet.ora):
Set OCI_RESULT_CACHE_MAX_SIZE (optional); it overrides server cache size
3) Application code.
Explicitly specify which query to cache with a hint in the query string.
e.g., /*+ RESULT_CACHE */

That’s it!

JDBC Example –

* Client Query Result Cache (sorry for the code formatting)
import the java.sql package
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;

class CLientRSCache

public static void main (String args [])
throws SQLException
long start;
long end;
long elapsed;

String name = null;
OracleConnection conn = null;
OraclePreparedStatement pstmt = null;
OracleDataSource ods = new OracleDataSource();
// Set the URL (user name, and password)
String url = "jdbc:oracle:oci:scott/tiger@//localhost:1522:orcl11g";

String query = "select /*+ result_cache */ * from emp where empno < ?" conn.setImplicitCachingEnabled(true);

conn.setStatementCacheSize(1); // Cache of 1 Stmt

PreparedStatement pstmt ;

ResultSet rs;

for (int i = 1; i <= 10; i++) {

pstmt = conn.prepareStatement (query);


// Set the start time

start = System.currentTimeMillis();

// Execute the query and retrieve the Result Set

rs = pstmt.executeQuery();

while ( ) )


// process result set


pstmt.close( ) ;


// Set the End time

end = System.currentTimeMillis();

elapsed = end - start;

// Print the time taken to prepare and execute query

// Note: the 1st invocation is nor cached

// Successive invocations are cached

// You may invalidate the result set using SQL*Plus.

System.out.println(" Iteration# “ + i + “ Time to prepare and execute the query ” + elapsed);


// Close the connection




Benefits of Client Result Cache

  • Easy to use
  • Transparent cache consistency with server side changes
  • Frees application developers from building a per-process result cache
  • Extends database-side query caching to middle-tier and client-tiers
  • Ensures better performance by eliminating round trips to the server
  • Improves server scalability by saving server resources
  • Transparent cache management
  • Concurrent access to result-sets optimizes memory management
  • RAC support

See more details on Client Result Cache in the Oracle Call Interface Programmer’s guide[4].
[1] See the Oracle database 11g documentation for more details on Query Result cache and PL/SQL Function Result Cache.
[2] It is currently not distributed, unlike Coherence or MemCache
[3] An end-to-end ecommerce application server benchmark

Speaking at PHP Quebec 2008

I'll be speaking at PHP Quebec 2008 during the following sessions

1) a lunch time keynote on Oracle database 11g Database Resident Connection Pool (DRCP)
"Web-Scale PHP Connection Broker"

2) PHPLab: a 3 hours BYOL technical workshop where database vendors rep will be asked any question.

If you plan to attend, let's have a free beer together.