자바스크립트가 비활성화 되어있습니다.
자바스크립트가 활성화 되어야 콘텐츠가 깨지지 않고 보이게 됩니다.
자바스크립트를 사용할수 있도록 옵션을 변경해 주세요.
- willbsoon

본문 바로가기
Python

python Oracle DB 연결

by willbsoon 2020. 6. 12.

python 에서 oracle db를 연결하는 방법

다른 db같은 경우에는 연결해주는 패키지만 설치하면 끝나는 경우가 많다.

그런데? 이 오라클 디비는 패키지만 설치해준다고 끝나질 않는다.. ㅠ 더 설치해줘야하는 유틸이 있어서 포스팅을 해보자.

윈도우에서의 에러
리눅스에서의 에러

 

오라클에 접속하기 위해서 필요한 패키지가 cx_Oracle 이라는 패키지인데. 이 패키지만 설치한다고 해결되지 않는다.

더 자세한 Document를 보고싶다면 해당 사이트에 접속하자.

 

 

cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#quick-start-cx-oracle-installation

 

cx_Oracle 7 Installation — cx_Oracle 7.3.0 documentation

© Copyright 2016, 2019, Oracle and/or its affiliates. All rights reserved. Portions Copyright © 2007-2015, Anthony Tuininga. All rights reserved. Portions Copyright © 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta, Canada. All rights reserved R

cx-oracle.readthedocs.io

 

이 문서를 보면 리눅스의 경우 libaio 패키지 설치가 필요하다고 한다.

윈도우의 경우는 Microsoft Windows Redistributables를 다운받아야한다고 한다.

 

그리고 공통적으로 oracle client가 필요하다. 그건 여기서 다운받자. 윈도우 리눅스 환경에 맞춰서 받아보자

 

 

먼저 윈도우를 보자

 

64비트로 들어가면 오라클 디비 버전에 따라 설치하게 되면 로그인을 해야한다. 오라클 아이디 비번을 미리 알아두자!

 

zip 파일을 받고 난후 C 드라이브 밑에 깔아보자.

C:\oracle\instantclient_11_2

 

이 경로에 압축풀고 난 뒤 이제 PATH에 추가해보자.

import cx_Oracle
import os
LOCATION = r"C:\oracle\instantclient_11_2"                # oracle db를 쓰기위한 유틸파일
os.environ["PATH"] = LOCATION + ";" + os.environ["PATH"]  # 환경변수 등록

 

 

그러면 완료된다!

 

 

 

이제 리눅스에 해보자

여기를 참조하면 되겠다.

다운받은 파일을 /opt/oracle로 이동시키고 압축을 풀자.

$ mkdir -p /opt/oracle
$ mv /home/ubuntu/다운로드/instantclient-basic-linux.x64-11.2.0.4.0.zip /opt/oracle
$ cd /opt/oracle
$ unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip

 

그리고 libaio1 패키지를 다운받자.

$ sudo apt install libaio1

 

다음으로는 환경변수에 LD_LIBRARY_PATH 를 추가해보자

$ sudo vi ~/.bashrc


...
export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2:$LD_LIBRARY_PATH

 

 

tnsnames.ora, sqlnet.ora, oraaccess.xml 와 같은 설정파일이 들어갈 디렉토리를 만들어줘야한다.

12.2 아래버전들은 수동으로 작업해줘야한다고 하니 해주자.

 

$ sudo mkdir -p /opt/oracle/instantclient_11_2/network/admin

 

그렇다면 이제 디비에 접속해서 데이터를 불러와보자.

그런데...? 안되네

 

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 

 

 

에휴.. 

구글링으로 열심히 찾아보니 LD_LIBRARY_PATH를 설정하여 해결할 수있다고 한다.

파일 내용에 설정할 경로를 넣는다.

$ sudo vi /etc/ld.so.conf.d/oracle_instant_client.conf

# oracle instant client
/opt/oracle/instantclient_11_2

추가한 설정 파일을 적용한다.

sudo ldconfig -v

 

그러면?

 

성공적으로 완성이 된다.

 

모두들 성공하시길~!

 

 

 

 

 

 

댓글