python cx_Oracle 모듈 의 설치 와 사용 에 대한 상세 한 소개

python cx_Oracle 모듈 설치
최근 에 데이터 이전 스 크 립 트 를 써 야 합 니 다.단일 Oracle 의 데 이 터 를 MySQL Sharding 클 러 스 터 로 옮 기 고 Liux 에 cx 를 설치 해 야 합 니 다.오 라 클 은 좀 귀 찮 은 것 같 아 요.정리 하고 정 리 를 해 보 세 요.
Oracle 클 라 이언 트 에 대해 서 는 해당 하 는 python 모듈 만 설치 해 야 하 는 것 이 아 닙 니 다.Oracle),Oracle Client 를 설치 해 야 합 니 다.일반적으로 Instant Client 를 선택 하면 충분 합 니 다.tnsnames.ora 를 설정 해 야 합 니 다(물론 host:port/schema 를 통 해 간단하게 접근 할 수 있 습 니 다).
설치:
1.우선 버 전 을 확정한다.우리 의 Oracle 데 이 터 는 좀 늙 었 기 때문에 나 는 비교적 오래된 버 전 인 Oracle Instant Client 10.2.0.4 를 선택 했다.
2.instantclient-basic 를 다운로드 합 니 다.다운로드 주소:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。여기 서 심각 한 BS Oracle 을 하려 면 먼저 등록 해 야 다운로드 할 수 있 습 니 다.이것 도 됐 습 니 다.관건 은 등록 할 때 비밀 번 호 는 숫자 에 알파벳 이 있 고 알파벳 에 대소 문자 가 있어 야 하 며 적어도 8 자리 가 있어 야 합 니 다.내 은행 비밀번호 보다 더 안전 한 비밀 번 호 를 만 들 라 고 강요 했다.

$wget http://download.oracle.com/otn/linux/instantclient/10204/basic-10.2.0.4.0-linux-x86_64.zip


3.설치 설정

$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip
$cd instantclient_10_2
$cp * /usr/lib  #            ,          

 
$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip
$cp -rf instantclient_10_2 /opt/
$vi /etc/profile
   export ORACLE_HOME=/opt/instantclient_10_2
   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

$source /etc/profile

4.tnsnames.ora 설정(tns 설정 하지 않 아 도 됨)
tnsnames.ora 는 존재 하지 않 습 니 다.스스로 만 들 려 고 했 습 니 다.저 는 이런 방식 을 사용 하지 않 았 습 니 다.관심 있 는 것 은 구 글 이 가능 합 니 다.
 5.설치 cx 다운로드Oracle python 모듈

$wget http://downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm
$rpm -ivh cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm 
$ls /usr/lib/python2.6/site-packages/cx_Oracle.so #           ,  python   ,        ,      
6.검증 및 문제 해결

$python
>>import cx_Oracle
오류 보고:import cxOracle gave ImportError: libclntsh.so.10.1: cannot open shared object file: No such file or directory
instant client 의 동적 라 이브 러 리 를 찾 지 못 했 음 을 표시 합 니 다.환경 변수 가 설정 되 어 있 는 지,유효 하 는 지,버 전이 정확 한 지 확인 하 십시오.
오류 신고:ImportError:./cxOracle.so: undefined symbol: PyUnicodeUCS4_Decode

Google   :There is nothing wrong with Debian. Python supports two incompatible 
 modes of operation for Unicode, UCS2 (the default), and UCS4. Debian uses the default,
 Redhat uses UCS4. You need to recompile the extension for UCS-2 mode
 (i.e. using a Debian installation); this would fix the undefined symbol: PyUnicodeUCS4_Decode
그래서 python 을 다시 컴 파일 합 니 다.

$./configure --prefix=/usr/local/python2.6.5 --enable-shared -enable-unicode=ucs4
$make;make install
재 검증,드디어 정상 import.
사용:
1.기본 연결 C 사용 Oracle tns alias

connection =cx_Oracle.connect("tp/tp@ocn_test")
#  tns alias  
cmd>tnsping ocn_test
TNS Ping Utility forLinux: Version 9.2.0.8.0-Production on 27-SEP-201110:47:48
Copyright (c) 1997, 2006, Oracle Corporation. Allrights reserved.
Used parameter files:
/opt/……/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL =TCP)(HOST =10.20.36.19)(PORT =1520))) (CONNECT_DATA =(SID =ocntest)))
OK (10msec)
2.사용자 입력 비밀번호 연결

pwd =getpass.getpass()
connection =cx_Oracle.connect("tp",pwd,"ocn_test")
3.사용 자 는 Python 명령 에 연결 계 정 정 정 보 를 직접 입력 합 니 다.예 를 들 어 python script.py tp/tp@ocn_test

connection =cx_Oracle.connect(sys.argv[1])
4.Easy Connect 문법 을 사용 하여 드라이브 를 통 해 데이터 베 이 스 를 연결 합 니 다.

connection =cx_Oracle.connect('tp','tp','10.20.36.19:1521/ocntest')
#or
connection =cx_Oracle.connect('tp/[email protected]:1521/ocntest')
5.DSN 으로 TNSNAME 구성

tns_name =cx_Oracle.makedsn('10.20.36.19','1521',' ocntest ')
connection =cx_Oracle.connect('tp','tp',tns_name)
6.SYSDBA 로 로그 인

connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSDBA)
#or as SYSOPER
connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSOPER)
Linux 서버 에서 Oracle 작업 을 수행 하 는 중 오류 가 발생 했 습 니 다.

TNS:listener does not currently know of service requested in connect descriptor
해결 방법:
문제 분석http://ora-12514.ora-code.com/한 번 의 고생 끝 에 다섯 번 째 연결 방식 을 사용 하여 이 문 제 를 순식간에 해결 했다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기