in reply to PERL DBI Error when run from CRON

... but when I run it from cron ...

cron jobs start with a truncated environment. (To see this, try a cron job that does a printenv.) If OCI is depending on environment variables being set (e.g., for an NLS parameter), you're probably going to need to set that variable in a wrapper script that you invoke from cron.