본문 바로가기

web/Django

centos에 python oracle 패키지 에러 libclntsh.so: cannot open shared object file: No such file or directory

 

 

django.db.utils.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://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

파이썬에서 오라클에 접속하기 위해선 cx_oracle 패키지를 사용하는데, cx_oracle에선 오라클의 libclntsh.so라는 파일을 사용한다.

리눅스에서는 오라클의 해당 패키지를 다운로드 한 후 패스를 설정해 주면 된다.

 

1. 패키지 다운로드

https://www.oracle.com/database/technologies/instant-client/downloads.html

오라클 공식 사이트에서 자신의 서버에 맞는 패키지를 다운로드 하면 된다. (혹시 중간에 가입하라고 나오면 무시하고 진행할 수 있다.)

나는 linux x86-64 -> (최신버전) instantclient-basic-linux.x64-21.6.0.0.0dbru.zip을 다운로드 했다.

 

$ wget https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip

 

2. 적당한 곳에 압축 풀기

 

opt oracle이라는 폴더를 하나 생성후 해당 폴더로 옮겨서 압축을 푼다

1
2
3
4
mkdir -/opt/oracle
mv instantclient-basic-linux.x64-21.6.0.0.0dbru.zip /opt/oracle
cd /opt/oracle
unzip instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
cs

 

3. 필요 패키지 설치 및 경로 설정

libaio 패키지 설치

$ sudo yum install libaio

 

bashrc에 경로를 지정해 준다.

vi 로 bashrc로 연후 export 부분을 추가한다

1
2
$ sudo vi ~/.bashrc
export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_6:$LD_LIBRARY_PATH
cs

오라클 접속에 필요한 기본 폴더 생성

$ mkdir -p /opt/oracle/instantclient_21_6/network/admin

 

LD_LIBRARY_PATH 경로 인식시키기

1
2
3
$ sudo vi /etc/ld.so.conf.d/oracle_instant_client.conf
/opt/oracle/instantclient_21_6
 
cs

 

ldconfig 적용

$ sudo ldconfig -v

 

끝!