The latest release of DBD::Oracle is now ready and can be found at: CPAN DBD::Oracle. It is a Perl module that works with the DBI module to provide access to Oracle databases. It is maintained by me, John Scoles, under the auspices of The Pythian Group as open source/free software.
Last night, I left my presentation in a good state and verified the first batch of demos — all worked fine. This morning turned into a disaster as I found out that the rest of my demos stopped working. Well, I didn’t have any other choice but to add new slides with some demo results. Since I did it in a rush, there were some overlaps and I ended up with way too many slides. Good news that the first demo generated sufficiently enough interest about services automation and connection load balancing so we spent significant time there. All in all, today’s session wasn’t as good as yesterday but I managed to avoid a complete failure with the demos so I guess I shouldn’t complain.
Recently, I was involved in a discussion about import performance in this OTN forum in which the original poster raised the issue of whether or not import will resort to single-row inserts for tables with date columns. For array inserts, the buffer parameter essentially specifies the size of this array. We know, however, that if a table has lob columns, the import parameter buffer is not honored, and the import utility will use single-row inserts for those tables. But tables with date columns, so the claim goes, also must suffer single-row inserts. In this blog, I will probe this further and validate that claim.
My session was scheduled after lunch and all attendees made it back which is a good sign (thanks to good presentations from Dan Norris and Edward Whalen). I’m pretty satisfied with the results — I was able to reproduce all eviction examples I planned from the first time and I had to skip only few demos at the end (I suspected I wouldn’t get there). Anyway, I covered all the material except those last few demos (well, the audience will have labs tomorrow and I can play with it) and quick look at the few script internals and sources but that was handed over as a home work.
Just a quick note that I’m going to present two sessions on the RAC Attack! event in Chicago next week — 4-5 August 2008. The event is organized as two threads — one for advanced RAC DBA’s and another one for beginners. Each thread will have one day of hands-on labs and one day of lectures. Another option would be to choose two days of lectures. More details on the RAC Attack event home page.
How does a wild-mannered MySQL DBA like me get to speak at an Oracle conference? Well, after I received the MySQL Community Award two years in a row, Dan Norris contacted me, and encouraged me to submit a proposal with him on how to contribute to the community.
One of the main goals in architecting a Disaster Recovery (DR) solution is to make a DR failover transparent to the end users. Too often, users must reboot their desktops, clear their browser cache and the jinitiator jar cache, and so on, even when we have made sure that the post-failover URL of the 11i instance is the same. After a failover of an 11i instance from a primary site to a DR site, if the user can operate without changing anything in his desktop, only then can we say that the goal is achieved.
With some of the new functionality that was introduced in DBD::Oracle 1.21, you can no longer use the Oracle 7 and most early 8 clients to build DBD::Oracle. I hope this little table will help you choose which version of DBD::Oracle is right for you. As there are dozens and dozens of different versions of Oracle’s clients, I did not bother to list any of them, just the major release versions of Oracle that are out there.
There seems to be a bug in DBD::Oracle’s execute_array when working with 11g. If you tell DBD::Oracle to autocommit, it seems that in 11g this commit will not take place when an error occurs during the processing of one of the tuples that you passed into execute_array. I included the tables, code and workaround in this post.
This paper goes over what needs to be done to use OCI effectively, especially in a web environment. The step-by-step approach taken in this document is very readable and the well explained code snippets make it a very good reference — great for comparing your code to the “proper” way to do it.