On Thu, 16 Jan 2003 10:11:02 -0500 Robert Hansen <[EMAIL PROTECTED]> wrote:
> I really appreciate your suggestion. However, even with this approach we > would be using one version or the other in a given script. We currently > cycle through each database on a given server (regardless of the Oracle > version) from each of our monitoring scripts. I wouldn't want to have to > schedule 2 sets of monitoring scripts (one for 8i instances and one for 9i > instances). It's not looking like there is a clean, simple way of doing > this now, but it is my hope that this be considered in later releases of > DBD-Oracle. One thought is to create different drivers (not sure what's > involved) and thereby allowing the version selection in the DBI->connect > statement. My intent and hope was to keep the Oracle version specifics out of the Perl script. You have to set ORACLE_HOME differently anyway, the same shell script that does that could also set PERL5LIB, DBD_LIB, or ORACLE_VER to whatever is needed so the begin block I suggested would find the right DBD::Oracle. It's not as clean as I'd like, but if you have to use OPS$, something else has to give. You replied to Kristian's suggestion, not my reply or re-reply. I've repeated parts of my second message below. >> A variation on the above would allow you to use the desired >> DBD::Oracle without having to put the directory in $PERL5LIB and >> without hardcoding the directory in a script. >> >> Create a symlink to the appropriate directory in a known location >> relative to $ORACLE_HOME in each instance. Setting a specific >> environment variable might also be an option. # Untested >> BEGIN { >> my $DBD_LIB = $ENV{DBD_LIB}; >> my $ORACLE_HOME = $ENV{ORACLE_HOME}; >> my $ORACLE_VER = $ENV{ORACLE_VER}; >> if ( defined $DBD_LIB ) {} # Envvar takes precedence >> elsif ( defined $ORACLE_HOME && -d "$ORACLE_HOME/DBD-Oracle" ) { >> $DBD_LIB = "$ORACLE_HOME/DBD-Oracle"; >> } >> elsif ( defined $ORACLE_VER && length $ORACLE_VER ) { >> $DBD_LIB = "/app/DBD-Oracle/$ORACLE_VER"; >> die "Invalid \$ORACLE_VER: $ORACLE_VER" if ! -d $DBD_LIB; >> } >> # Add other likely locations, if desired >> >> # Not using 'use lib', $DBD_LIB might legitimately not be set >> if ( defined $DBD_LIB && length $DBD_LIB ) { >> die "Not a directory: '$DBD_LIB'\n" if ! -d $DBD_LIB; >> unshift @INC, $DBD_LIB; >> } >> } >> use DBI; # DBD::Oracle is require()d by DBI->connect() -- Mac :}) ** I normally forward private questions to the appropriate mail list. ** Ask Smarter: http://www.tuxedo.org/~esr/faqs/smart-questions.html Give a hobbit a fish and he eats fish for a day. Give a hobbit a ring and he eats fish for an age.