Almost-Native

파이썬 에러 oracledb.exceptions.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library 본문

Java 프로그램 개발, IT

파이썬 에러 oracledb.exceptions.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

2022. 6. 26. 00:14

Oracle DB 에 접속하는 파이썬 프로그램을 실행시 아래와 같은 에러가 발생하는 경우,

 

$ /usr/bin/python3.9  aaa1.py
Traceback (most recent call last):
  File "/home/oracle/Python1/aaa1.py", line 5, in <module>
    oracledb.init_oracle_client()
  File "src/oracledb/impl/thick/utils.pyx", line 478, in oracledb.thick_impl.init_oracle_client
  File "src/oracledb/impl/thick/utils.pyx", line 400, in oracledb.thick_impl._raise_from_info
oracledb.exceptions.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://oracledb.readthedocs.io/en/latest/user_guide/installation.html for help

 

이건 python-oracledb 모듈을 이용하는 파이썬 프로그램에서 init_oracle_client() 실행하는 중에 Oracle Library 를 찾지 못해서 발생하는 에러입니다.

아래와 같이 설치되어 있는 오라클 환경변수를 제대로 세팅해주고 다시 실행하면 됩니다.

 

export ORACLE_HOME=/u02/app/oracle/product/19.12.0/dbhome_1
$
$ /usr/bin/python3.9  aaa1.py
=====> 2260
$

 

또다른 방법으로,

파이썬 프로그램에서 oracledb.init_oracle_client() 부분을 빼버리는 방법이 있습니다.

python-oracledb 모듈에 thin 모드와 thick 모드가 있는데, init_oracle_client() 호출하는 것은 thick 모드를 사용하는 것입니다. thick 모드는 설치된 오라클 모듈이 필요합니다.

반면, thin 모드에서는 설치된 오라클 모듈이 필요하지 않고, init_oracle_client() 호출도 할 필요가 없습니다.

 

참고▶ 파이썬 Oracle DB 연결 라이브러리 비교 (cx_Oracle, Thin oracledb, Thick oracledb)

 

Comments