问题
I am establishing a connection to oracle 11g which is in a remote server using cx_oracle 7 with python 3.6.7. my OS in Ubuntu 18.04
I have installed oracle instant client library with libclntsh.so but I am not getting the expected output.
here is the code which i am using to connect to the oracle db
connection = cx_Oracle.connect("username/password@host/port")
print (connection.version)
connection.close()
when the script runs i expect to get the connection version instead i am getting the following error message
File "script.py", line 13, in connection = cx_Oracle.connect("username/password@host/port") cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
回答1:
After some more research i got the solution from ubunu community , after you have installed oracle instantclient you will have to integrate oracle libraries as follows:
export LD_LIBRARY_PATH=/usr/lib/oracle/
<version>
/client(64)/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}For example, 12.1 version for Linux x86_64:
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
where <version>
indicates the version of your of your oracle intantclient e.g 11.2, 12.2
The connection parameter should be as follows connection = cx_Oracle.connect("username/password@host/service_name e.g orcl")
to get the listener/service_name type the following in the oracle sqlplus
SQL> show parameter local_listener
the value is the listener
来源:https://stackoverflow.com/questions/55823744/how-to-fix-cx-oracle-databaseerror-dpi-1047-cannot-locate-a-64-bit-oracle-cli