python 설치 cxOracle 모듈 에서 흔히 볼 수 있 는 문제 와 해결 방법
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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.