http://www.perlmonks.org?node_id=1012709


in reply to Re: Cron revisited
in thread Cron revisited

You Said "What I'm trying to understand is why the script works on one server but not another ..."

Are the two servers configured the same? Exactly the same? Are you sure? (I'll bet they aren't.)

----
I Go Back to Sleep, Now.

OGB

Replies are listed 'Best First'.
Re^3: Cron revisited
by tweetiepooh (Hermit) on Jan 16, 2013 at 09:14 UTC

    Sorry to disturb your hibernation but I know the 2 aren't the same and have stated such in the original posting. Just about everything has changed - OS version, database client, Perl version.

    What I'm trying to figure is what element of that would cause the script to fail in cron on one server but not the other. My feeling is that it's the database client.

      I don't know the cause of your problem, but I've had success with the Solaris/Perl/OracleInstantClient/cron combination by including a BEGIN block in my perl code as below:
      BEGIN { unless (($ENV{BEGIN_BLOCK}) or $^C) { $ENV{ORACLE_HOME} = '/usr/local/instantclient'; $ENV{LD_LIBRARY_PATH} = '/lib:/usr/local/instantclient:/usr/local/ +lib'; $ENV{TNS_ADMIN} = '/apps/admin'; $ENV{BEGIN_BLOCK} = 1; exec 'env',$0,@ARGV; } }
      Obviously you should set your ORACLE_HOME and LD_LIBRARY_PATH env variables to the correct ones for your installations in the above. Note that the TNS_ADMIN env variable tells you where to look for tnsnames.ora.
        Thanks for the sane reply. I've now implemented something similar. What was puzzling me was that on version of Client worked without these shenanigans. My feeling now is that is could be a change within the Oracle software rather than the Perl side of things so that, as compiled, Perl can see the library it calls but that library can't see its dependencies.
        :) Thanks buddy I covered that already, and that type of thing usually yields an error message of : failed to load ...so ... Dynaloader ... library not found

        The error message tells you what needs fixing :)