THE WORLD DISCUSSES #PYTHIAN ON TWITTER. HAVE A QUESTION? USE OUR HASHTAG AND ASK AWAY.

DBD::Oracle 1.24 Released

The “Beer” version of DBD::Oracle (1.24) has been released. You can find it at CPAN DBD::Oracle.

DBD::Oracle 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 Pythian as Open Source/Free Software.

This is largely a maintenance release that fixes a number of bugs. New stuff includes some more improvements to embedded types from Charles Jardine.

Timestamps in Embedded Object now use precision to 6 places.

The big enhancement this round is extending the code to allow more than one row to be returned with a single fetch. Those of you who use Rowcache size will now find that your queries will run much faster.

I have also added the ora_ncs_buff_mtpl parameter, so you can now have very fine grain control over the size of the data buffer using for NCHAR conversions of lobs.

One more little note — thanks to my mistake in compressing a file last week, the version number on CPAN is 1.24a, while the internal Version is still 1.24.

Here is the complete change list: Read the rest of this entry . . .

DBD::Oracle — Better Embedded Types

Thanks to a patch from Tomas Pokorny, you can now select Oracle user-defined types directly into a Perl object.

User-defined types include Object, Varray, and Table. These have been around in Oracle since 8i but have never really gained any sort of popularity for any number or reasons. The most common reason I have heard from DBAs and modelers is that they break relational integrity. As the objects in Oracle are “Embedded,” I do not see how that is possible. The more practical reason is that the SQL to retrieve and query this sort of object tends to be rather involved, and is sometimes slower than a simple table join; also, this sort of object can be hidden or unavailable to many kinds of modeling software.

With the new functionality of DBD::Oracle, selects of these objects are simple to work with in Perl. Lets take the example below for a web site that has a number of different “user” types. Read the rest of this entry . . .

Which DBD::Oracle Version is for Me?

1, 2, 3, 4, 5, 6, 9, or 10. It ain’t no Feist song, but she got it right. Notice that she mentions no 7 or 8 in it. Well, that is also true for version support in release 1.21 of DBD::Oracle.

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.

Oracle Version
DBD::Oracle Version <8 8.0.3 – 8.0.6 8iR1 – R2 8iR3 9i – 11g
0.1 – 16 Y Y Y Y Y
1.17 Y Y Y Y Y
1.18 N N N Y Y
1.19 N N N Y Y
1.20 N N N Y Y
1.21 N N N Y Y
1.22 N N N N Y

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.

Note that one can still connect to any Oracle version with the older DBD::Oracle versions. The only problem you will have is that some of the newer OCI and Oracle features available in later DBD::Oracle releases will not be available to you.

So to make a short story a little longer:

Read the rest of this entry . . .

Install DBD::Oracle on 64-bit Linux and Oracle 11g

Karun Dutt and I managed to get DBD::Oracle 1.21 to install on a 64-bit Linux OS against the Oracle 11 full client. Here’s what we did.

As root, we downloaded DBD::Oracle from CPAN.

# perl -MCPAN -eshell
cpan> get DBD::Oracle
...

We replaced the distribution makefile with: http://svn.perl.org/modules/dbd-oracle/trunk/Makefile.PL (this is the latest Makefile.PL).

# cd /root/.cpan/build/DBD-Oracle-1.21
# export ORACLE_HOME=<actual value of Oracle Home>
# export ORACLE_SID=<actual value of ORACLE_SID>
# export ORACLE_USERID=<a working ORACLE_USERID>
# export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME
# perl Makefile.PL
...
# make
...
# make test
...
# make install
...

It works!

DBD::Oracle and Instant Client 11.1.0.6.0

I have just managed to get DBD::Oracle to successfully compile, install, and test with the 11.1.0.6.0 Instant Client (IC) on a Linux (32bit) OS. It seems Oracle, in its wisdom, has changed the folder structure yet again, so to get it to compile, try this.

The table structure of the IC out of the RPMs is:

/usr/lib/oracle/11.1.0.1/client/ (Instant Client Package Basic)
/usr/share/oracle/11.1.0.1/client/ (SQL*Plus)
/usr/include/oracle/11.1.0.1/client/ (Instant Client – SDK)

So, doing the following . . .

export ORACLE_HOME=/usr/lib/oracle/11.1.0.1/client
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$PATH

perl Makefile.PL -m /usr/share/oracle/11.1.0.1/client/demo.mk -h /usr/include/oracle/11.1.0.1/client/

. . . will work.

I have also updated the Makefile.PL, which can be found here: http://svn.perl.org/modules/dbd-oracle/trunk/Makefile.PL.

Cheers, John Scoles.

DBD::Oracle 1.20 Released

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 as open source/free software, under the auspices of The Pythian Group.

The release has been fully tested with the latest version of DBI (1.601).

Below is the list of the changes and/or fixes in this release. Read the rest of this entry . . .

Announcement: DBD::Oracle 1.19 Released

The latest release of DBD::Oracle is now ready and can be found at:

CPAN DBD::Oracle

The release has been fully tested with the latest version of DBI (1.53).

Below is the list of the changes and /or fixes in this release.

  • Fixed execute_array to comply with DBI standard from Martin J. Evans, Xho Jingleheimerschmidt and others
  • Fixed execute_array so it will not throw a Perl warning on undef values in Tuples from John Scoles
  • Fixed execute_array so it will take the ora_array_chunk_size DB handle attribute
  • Fixed some typos in code and READMEs from John Scoles
  • Fixed a few other little bugs dealing with compatibility with Oracle 8 Changes to README from Karl Auer
  • Suppress warning in 26exe_array.t from Philip Garrett
  • Added support for array context aware execute_for_fetch from Martin J. Evans
  • Fixed Makefile.PL for an incompatibility with ExtUtils::MM_Unix v1.50 (invoked byExtUtils::MakeMaker) from Dennis McRitchie
  • Updated POD to reflect that OCI after 9.2 no longer strips trailing spaces

Please enjoy,

John Scoles.

Inaugural post – Pythian and DBD::Oracle

Hello!

I am happy to present the very first post to my new group blog, where I will be inviting Pythian DBAs with interesting thoughts to contribute to prepare blogs of their own. You can read the group blog either one author at a time, by clicking the author’s name in the right-hand side of this column, or if you prefer, you can see all the posts on one page by going to the main group blog page.

My subject for this first posting: DBD::Oracle. If you have used perl to interact with a database, you are aware of the DBI that Tim Bunce and his collaborators first developed in the 1990s in order to interact with a database abstraction layer. DBD::Oracle is one of the database layer drivers that allows the DBI to communicate with Oracle. Pythian is a big user of perl and DBD::Oracle internally, as our problem tracking groupware, Support Track, and our availability monitoring software, avail, are all written using the DBI to communicate with the underlying database.

Late last year, Tim posted to the DBI users’ mailing list looking for a volunteer that would become the maintainer for DBD::Oracle. He explained that as he was no longer a user of Oracle, the task of keeping the software current was becoming increasingly difficult and distracting for him. Pythian volunteered and I am proud to announce that we made our first release, DBD::Oracle 1.17 last month. This release adds support for Oracle XE, Oracle’s free low-end database, and for installation using the Oracle Instant Client, as well as troubleshooting a variety of installation gotchas and bugs in the makefile.

Seah Hull at the Oracle Open Source blog interviewed me on the subject of Pythian taking on the stewardship of DBD::Oracle and even has a podcast of the interview available on his site.

We cover the following material:

1. Why don’t you tell us a bit about yourself, and your company?
2. When a perl programmer wants to interface with a database, what
technology do they use?
3. How did that DBI project get started, and by whom?
4. How does the DBD::Oracle component come into play? What language is it written in, and how does it interface with Oracle’s own libraries?
5. What has Pythian’s role been with this project in the past, and how has that changed recently?
6. From a business perspective, why would a company like Pythian want to contribute to this project for free? What is the advantage?
7. How have Open Source technologies benefited Pythian?
8. Do you have any other comments on Open Source, benefits, industry
threats, myths, and so on? Is everything really just free? And
furthermore won’t everyone eventually go the way of a free database?

Check it out!

Cheers,

Paul

Start NowWith Pythian - database design, management and emergency handling capabilities...

Live Updates

pythian: RT @sheeri: #confoo talk "Bending Queries to your Will with EXPLAIN" slides http://bit.ly/explainslides & handout
more



Testimonials

  • Serge Racine

    DBA, Brookfield Energy

    We are very satisfied by the service given to us by Andre and Shakir in support of our recent data quality and reorganization initiative.... more