python 설치 cxOracle 모듈 에서 흔히 볼 수 있 는 문제 와 해결 방법

본 고의 실례 는 python 설치 cx 를 다 루 었 다Oracle 모듈 에서 흔히 볼 수 있 는 문제 와 해결 방법.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
cx 설치 또는 사용Oracle 은 libclntsh.so.10.1 과 같은 Oracel 링크 라 이브 러 리 를 사용 해 야 합 니 다.그렇지 않 으 면 다양한 오류 정보 가 있 을 수 있 습 니 다.
Oracle Instant Client 를 설치 하면 이 링크 라 이브 러 리 를 얻 을 수 있 고 수백 조 의 큰 Oracle Client 를 설치 하지 않도록 할 수 있 습 니 다.
소프트웨어 다운로드 주소:
cx_Oracle 홈 페이지:http://cx-oracle.sourceforge.net/
필요 한 Oracle 링크 라 이브 러 리 의 다운로드 주소:http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
흔히 볼 수 있 는 오류 와 해결 방법:
1.win 32 바 이 너 리 설치
windows 에 cx 설치Oracle-5.0-10g.win 32-py 2.6.msi 이후 가 져 올 때 DLL 로 딩 에 실패 한 오 류 를 다음 과 같이 보고 합 니 다.
IDLE 2.6.1

>>> import cx_Oracle
Traceback (most recent call last):
 File "<pyshell#0>", line 1, in <module>
  import cx_Oracle
ImportError: DLL load failed:         。

해결 방법:
Oracle 사이트 에서 instantclient-basic-win 32-10.2.0.4.zip 를 다운로드 하여 압축 을 풀 고 그 중의 oci.dll 파일 을 Python 설치 디 렉 터 리 의 Lib/site-packages 에 복사 합 니 다.예 를 들 어 C:/python 26/Lib/site-packages.
2.linux 아래 바 이 너 리 설치
linux 에서x86_64 번,cx 설치Oracle-5.0.1-10g-py24-1.x86_64.rpm 타 임 스 오류.

[root@BJ-UPDATE-01 ~]# rpm -ivh cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
error: Failed dependencies:
    libclntsh.so.10.1()(64bit) is needed by cx_Oracle-5.0.1-1.x86_64

해결 방법:
레 퍼 런 스http://cx-oracle.sourceforge.net/BUILD.txt
Oracle 사이트 에서 basic-10.2.0.4.0-linux-x86 다운로드64.zip 에서/opt 디 렉 터 리 로 압축 을 풀 면 libclntsh.so.10.1 이/opt/intantclient 에 있 습 니 다.10_2 디 렉 터 리 중
환경 변수 설정

vi /root/.bash_profile

다음 두 줄 추가:

export ORACLE_HOME=/opt/instantclient_10_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

source/root/.bash 실행profile 변경 사항 적용
이 링크 라 이브 러 리 의 심 볼 릭 링크 만 들 기

cd $ORACLE_HOME
ln -s libclntsh.so.x.x libclntsh.so

cx 다시 설치Oracle
--nodeps 인 자 를 추가 하 십시오.그렇지 않 으 면 상기 오 류 를 보고 할 수 있 습 니 다.

[root@BJ-UPDATE-01 ~]# rpm -ivh --nodeps cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
#5.0.3     --nodeps  

3.linux 소스 코드 설치
환경 변수 와 심 볼 릭 링크 를 위 와 같이 설정 합 니 다.linuxx86_64 소스 코드 를 설치 하고 python setup.py build 를 실행 합 니 다.컴 파일 할 때 오류 정 보 는 다음 과 같 습 니 다.
Connection.c:1169:경고:문장 이 작 동 하지 않 습 니 다.
Connection.c:1171:오류:'udt커 넥 션 에'environment'라 는 멤버 가 없어 요.
Connection.c:1172:경고:전달 매개 변수 1('EnvironmentCheckForError')에서 호 환 되 지 않 는 포인터 형식 으로 변환
Connection.c:1172:경고:전달 매개 변수 2('EnvironmentCheckForError')에서 호 환 되 지 않 는 포인터 형식 으로 변환
Connection.c:1172:오류:함수'Environment 제공Check ForError 님 이 실 삼 이 너무 많아 요.
Connection.c:1176:오류:'udt'Connection'에는'ession Handle'이라는 멤버 가 없어 요.
해결 방법:
5.0.3 버 전의 오류 가 발생 하지 않 았 습 니 다.ORACLEHOME 아래 include 디 렉 터 리 가 있어 야 합 니 다.이 디 렉 터 리 에는 컴 파일 에 필요 한 원본 파일 이 있어 야 합 니 다.원본 파일 은 Oracle Instant Client 라 는 클 라 이언 트 에 포함 되 어 있 지 않 습 니 다.저 는 windows 클 라 이언 트 의 D:/oracle/produt/10.2.0/client 입 니 다.1/oci/include 이 디 렉 터 리 에서 복사 한 것 입 니 다.
4.import 오류

>>> import cx_Oracle
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libnnz10.so: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libclntsh.so.10.1: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
>>>

이것 은 SELinux 의 제한 때문에 다음 명령 을 실행 하여 제한 을 취소 합 니 다.

chcon -t texrel_shlib_t cd $ORACLE_HOME/libnnz10.so
chcon -t texrel_shlib_t cd $ORACLE_HOME/libclntsh.so.10.1

5.런 타임 오류

Traceback (most recent call last):
 File "oracle_conn.py", line 9, in ?
  connection = cx_Oracle.Connection(u"oracle/oracle123@CCIP")
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

아니면 SELinux 의 제한,SELinux 를 disabled 로 설정 합 니까?
selinux 끄 기:
실행 명령:  vim /etc/selinux/config
selinux=enforcing 또는 permissive 를 disabled 로 변경 합 니 다.
실행 명령:  setenforce 0
6.유 니 코드 의 설치 패키지 에 문제 가 있 습 니 다.

Traceback (most recent call last):
 File "./oracle_conn.py", line 22, in ?
  folderIds=cursor.fetchmany(10)
cx_Oracle.DatabaseError: OCI-22061: Message 22061 not found; No message file for product=RDBMS, facility=OCI; arguments: [T

현재 5.0.3 버 전의 가방 이 SQL 을 실행 할 때 오류 가 발생 할 수 있 음 을 발 견 했 습 니 다.사용 을 권장 하지 않 고 유 니 코드 가 아 닌 가방 으로 바 꾸 면 문제 가 없습니다.
더 많은 파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기