메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, 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 이상



번호 제목 글쓴이 날짜 조회 수
461 Namenode Metadata백업하는 방법 총관리자 2020.02.10 385
460 sparql 문법구조 설명 file 총관리자 2015.12.09 380
459 특정문자열이나 URI를 임의로 select 절에 지정하여 사용할때 사용하는 sparql 문장 총관리자 2016.08.25 376
458 scan의 startrow, stoprow지정하는 방법 총관리자 2015.04.08 376
457 HUE를 사용할 사용자를 추가 하는 절차 총관리자 2018.05.29 369
456 TransmitData() to failed: Network error: Recv() got EOF from remote (error 108) 오류 현상 총관리자 2019.02.15 367
455 HDFS상의 /tmp폴더에 Permission denied오류가 발생시 조치사항 총관리자 2017.01.25 367
454 기준일자 이전의 hdfs 데이타를 지우는 shellscript 샘플 총관리자 2019.06.14 363
453 hadoop클러스터를 구성하던 서버중 HA를 담당하는 서버의 hostname등이 변경되어 문제가 발생했을때 조치사항 총관리자 2016.07.29 363
452 root계정으로 MariaDB설치후 mysql -u root -p로 db에 접근하여 바로 해줘야 하는일..(케릭터셑은 utf8) 총관리자 2015.10.02 362
451 git설명 한글판 총관리자 2015.12.09 359
450 Ubuntu 16.04 LTS에서 사이트에 무료인증서를 이용하여 SSL적용 file 총관리자 2017.05.23 358
449 linux에서 특정 포트를 사용하는 프로세스 확인하기 총관리자 2017.04.26 357
448 [kudu]테이블 drop이 안되고 timeout이 걸리는 경우 조치 방법 총관리자 2020.06.08 356
» python2.7.4에서 Oracle DB(11.2)를 사용하기 위한 설정(RPM을 이용하여 RHEL 7.4에 설치) 총관리자 2021.11.26 355
446 Hive MetaStore Server기동시 Could not create "increment"/"table" value-generation container SEQUENCE_TABLE since autoCreate flags do not allow it. 오류발생시 조치사항 총관리자 2017.05.03 352
445 [sqoop] mapper를 2이상으로 설정하기 위한 split-by컬럼을 찾을때 유용하게 활용할 수 있는 쿼리 총관리자 2020.05.13 348
444 Apache Spark와 Drools를 이용한 CEP구현 테스트 총관리자 2016.07.15 345
443 embedded-cassandra의 data 저장위치 총관리자 2019.06.09 342
442 쿠버네티스(k8s) 설치 및 클러스터 구성하기 총관리자 2019.10.19 339

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로