Discussions
Categories
- 385.5K All Categories
- 4.9K Data
- 2.5K Big Data Appliance
- 2.4K Data Science
- 453.4K Databases
- 223.2K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 47 Multilingual Engine
- 606 MySQL Community Space
- 486 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.2K ORDS, SODA & JSON in the Database
- 585 SQLcl
- 4K SQL Developer Data Modeler
- 188K SQL & PL/SQL
- 21.5K SQL Developer
- 46 Data Integration
- 46 GoldenGate
- 298.4K Development
- 4 Application Development
- 20 Developer Projects
- 166 Programming Languages
- 295K Development Tools
- 150 DevOps
- 3.1K QA/Testing
- 646.7K Java
- 37 Java Learning Subscription
- 37.1K Database Connectivity
- 201 Java Community Process
- 108 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.4K Java EE (Java Enterprise Edition)
- 22 Java Essentials
- 176 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 208 Java User Groups
- 25 JavaScript - Nashorn
- Programs
- 667 LiveLabs
- 41 Workshops
- 10.3K Software
- 6.7K Berkeley DB Family
- 3.6K JHeadstart
- 6K Other Languages
- 2.3K Chinese
- 207 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 474 Portuguese
cx_Oracle error when used in a cron job
Hi everyone,
I've installed cx_Oracle and used it successfully in a number of python scripts, but it's throwing an error when I try to run one of those python scripts as a cron job.
Below is the traceback that I'm logging from the cronjob:
Anyone have suggestions?
It's greatly appreciated.
Serdar
I've installed cx_Oracle and used it successfully in a number of python scripts, but it's throwing an error when I try to run one of those python scripts as a cron job.
Below is the traceback that I'm logging from the cronjob:
<<snipped>> import cx_Oracle File "build/bdist.linux-i686/egg/cx_Oracle.py", line 7, in <module> File "build/bdist.linux-i686/egg/cx_Oracle.py", line 6, in __bootstrap__ ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directoryAgain, the script works fine if I run it manually (i.e. "python script.py"). I've googled around for hours and can't seem to figure this out.
Anyone have suggestions?
It's greatly appreciated.
Serdar
Answers
-
I would say there's something defined in your environment that's not available at cron time. For example, LD_LIBRARY_PATH, it might be defined in your ~/.bashrc
You could try modify the os environ before importing cx_Oracle.
E.g:
import os
os.environ['LD_LIBRARY_PATH'] = ':~/oracle/product/10.2.0/client/lib'
import cx_Oracle
.. -
Mariano wrote:This is precisely what turned out to the be problem. I had a number of environment variables set in my .bashrc, including ORACLE_HOME, LD_LIBRARY_PATH and TNS_NAME.
I would say there's something defined in your environment that's not available at cron time. For example, LD_LIBRARY_PATH, it might be defined in your ~/.bashrcYou could try modify the os environ before importing cx_Oracle.The above approach did not work in my case. Instead, I had to copy all of the variables mentioned above from my .bashrc into the top of my crontab, so that it appeared like this:
E.g:
import os
os.environ['LD_LIBRARY_PATH'] = ':~/oracle/product/10.2.0/client/lib'
import cx_Oracle
..[email protected] SHELL=/bin/bash PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/oracle/11.1/client/lib/ ORACLE_HOME='/usr/lib/oracle/11.1/client' LD_LIBRARY_PATH ='/usr/lib/oracle/11.1/client/lib' TNS_ADMIN = '/home/username' # where my tnsnames.ora file lives # m h dom mon dow command <<snipped>>
Now everything's working like a charm. Thanks so much for the help Mariano. You rock!
Regards,
Serdar -
Glad to know it help you to debug the problem.
It seems I made a mistake in my suggestion (os.environ is a dict, actually it seems I don't really know who to publish in this forum):
import os
os.environ\['LD_LIBRARY_PATH'\] = ':~/oracle/product/10.2.0/client/lib'
anyway... if it works, don't fix it!
This discussion has been closed.