DBD::Oracle technically just needs the Oracle client, so even if you have a full version of oracle installed, it will just use the client part. In order to find all the required files, you will have to tell the build procedure where to find all of that. That information usually gets passed by means of the $ORACLE_HOME environment variable.

You'll need to set that to a valid installation path. That may either be a full-fledged installation or to an installation of the Oracle Instant Client. Both will work. And as the client can speak to a different version of the server (the database itself does not need to run on the same machine), you are not bound to using the exact same version of the database: you can talk to a Oracle 9 database with an Oracle Instant Client version 11. FWIW You can have several versions of both installed on the same machine without any of them prohibiting any of the others to function. That is a great way to test your updates.

When you have compiled and tested and installed DBD::Oracle, it then has builtin information about the libraries it uses, but it does not have enough information builtin to find all the message files (damn locales) or other diagnostical information. That is why you also need to set $ORACLE_HOME at runtime.

I hope I interpreted your question correctly.

Enjoy, Have FUN! H.Merijn

Comment on Re^5: Perl DBI not working with Oracle DBD in 11g r2 environment