메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


*참고 : https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html

(pip, rpm, zip파일등을 이용한 다양한 설치 방법이 자세하게 설명되어 있음)


1. python : 2.7.5, OS  : RHEL7.4 64bit, Oracle database : 11.2인 Linux환경에서 RPM을 이용하여 설치/설정하는 방법이다. 

2. cx_Oracle을 Linux에 설치한다. 

   - 다운로드 URL : https://pypi.org/project/cx-Oracle/5.3/#files

   - 다운로드 받은 rpm파일을 서버에 업로드 한후 다음 명령으로 설치한다. 

      : sudo yum install cx_Oracle-5.3-11g-py27-2.x86_64.rpm 

3. Oracle Client를 설치한다. 

  - 다운로드 URL :  https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/

  - 다운로드 받은 rpm파일을 서버에 업로드 한후 다음 명령으로 설치한다

     : sudo yum install oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm

4. Instant client 19이후 버젼에서는 관련 라이브러리를 자동으로 잡아주지만 설정되지 않는 경우는 다음과 같이 설정해준다. 

  sudo sh -c "echo /usr/lib/oracle/19.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"

  sudo ldconfig   (확인 : sudo ldconfig -v)

5. 4번과 같이 해도 python에서 "import cx_Oracle"하면 ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory같은 오류가 발생하는데..

이런 경우는 LD_LIBRARY_PATH값을 확인하여 그 경로에 가서(cd ${LD_LIBRARY_PATH}) oracle instant client가 설치된 경로의 library파일을 링크 걸어준다. 

 (예, sudo ln -s /usr/lib/oracle/19.9/client64/lib/libclntsh.so.19.1 libclntsh.so.11.1)

6. python shell을 실행하여 "import cx_Oracle"을 입력하고 엔터하여 import시 오류가 발생하지 않는지 확인한다. 

7. 아래와 같은 python프로그램을 작성하여 수행해본다. 

-------------------------------------------------------------------------

import cx_Oracle

import os


#한글지원방법

os.putenv('NLS_LANG', '.UTF8')


# 함수 정의

def connect():

    #라이브러리 연결(이거 설정하면 AttributeError: 'module' object has no attributes 'init_oracle_client'오류가 발생한다. 이거 생략하고 실행하면 잘 수행됨)

    #cx_Oracle.init_oracle_client(lib_dir=r"D:\8_Programs\Oracle\instantclient_19_9")

    #cx_Oracle.init_oracle_client(lib_dir=r"/usr/lib/oracle/19.9")

    

    con_ip='localhost:1526/testdb'

    con_id='user'

    con_pw='password'

 

    #연결에 필요한 기본 정보(유저, 비밀번호, 데이터베이스 서버 주소)

    connection = cx_Oracle.connect(con_id,con_pw, con_ip)

    cursor = connection.cursor()

    cursor.execute("""

        select *

        from member

        where name='홍길동'

        """)


    for list in cursor:

        print(list)


    cursor.close()

    connection.close()

    

# 함수 실행    

connect()


-------------------------------------------------------------------------


* instantclient version별로 지원하는 Oracle version
21 -> 12.1 이상
19,18,12.2 -> 11.2 이상
12.1 -> 10.2 이상
11.2 -> 9.2 이상



번호 제목 날짜 조회 수
641 우분투 16.04 LTS에 apache2와 tomcat7 연동하여 설치하기 2014.05.09 1596
640 FAILED: IllegalStateException Variable substitution depth too large: 40 오류발생시 조치사항 2014.08.19 1595
639 upsert구현방법(년-월-일 파티션을 기준으로) 및 테스트 script file 2018.07.03 1574
638 hiverserver2기동시 connection refused가 발생하는 경우 조치방법 2014.05.22 1558
637 ExWordCount jar파일 file 2013.03.06 1555
636 마이바티스(MyBatis)쿼리로그 출력및 정렬하기 2015.12.01 1546
635 apt-get install mysql-server수행시 "404 Not Found" 오류발생시 조치방법 2014.09.10 1504
634 The disk drive for uuid= is not ready yet or not present 오류 해결방법 2014.04.21 1491
633 resouce manager에 dr.who가 아닌 다른 사용자로 로그인 하기 2018.06.28 1487
632 ubuntu 커널 업그레이드 방법 2018.09.02 1483
631 build.gradle을 pom.xml로 변환하는 방법 2016.08.18 1477
630 avro 사용하기(avsc 스키마 파일 컴파일 방법, consumer, producer샘플소스) 2016.07.08 1457
629 Mybatis foreach 문법정리(상황에 따른 사용법) 2015.11.10 1454
628 solr vs elasticsearch 비교2 2014.09.29 1424
627 crypto관련 기생충 박멸 스크립트 2018.05.11 1420
626 mysql에서 외부 디비를 커넥션할 경우 접속 속도가 느려질때 2017.06.30 1419
625 lagom-linux용 build.sbt파일 내용 2017.10.12 1415
624 Oozie 설치, 환경설정 및 테스트 2014.04.08 1404
623 우분투 root 패스워드 설정하기 2013.03.04 1393
622 자주쓰는 유용한 프로그램 2018.03.16 1385
위로