libclntsh.so .11.1: 공유 개체 파일을 열 수 없습니다.
리눅스에서 itrontab으로 작업을 예약하고 싶은데 작업이 파이썬으로 작성되어 있어서 가져와야 합니다.cx_Oracle
모듈, 그래서 나는 내보냅니다.ORACLE_HOME
그리고.LD_LIBRARY_PATH
.vmdk_profile에서는 다음 오류가 발생합니다.
libclntsh.so .11.1: 공유 개체 파일을 열 수 없습니다.
다음과 같이 셸에서 명령을 실행하여 작업을 실행해도 괜찮으므로,
python a.py # ok
iprontab의 작업을 Python 스크립트를 호출하는 셸 스크립트로 변경하는데 예외가 발생했습니까?
# the shell script scheduled in icrontab
#! bash
python a.py
어떻게 해야 하는지 좀 도와주시겠어요?
지정할 수 있습니다.PATH
그리고 또한ORACLE_HOME
그리고.LD_LIBRARY_PATH
할 수 있도록cron(1)
이진 파일을 찾는 위치를 알고 있습니다.
여기에서 "5 Crontab 환경"을 읽으십시오.
립은 다음 위치에 있습니다./u01/app/oracle/product/11.2.0/xe/lib
(Oracle XE의 경우) 또는 이와 유사합니다.
이 경로를 다음에 추가해야 합니다./etc/ld.so.conf
또는 이 파일이 포함 위치만 표시하는 경우(예: 의 별도 파일)/etc/ld.so.conf.d
디렉토리
Oracle.confin이 있습니다./etc/ld.so.conf.d
경로가 있는 파일 하나만.다른 것은 없어요.
물론 마지막 단계로 ldconfig를 실행하는 것을 잊지 마십시오.
Cron은 작업을 실행할 때 사용자의 프로필을 로드하지 않으므로 셸 스크립트에 명시적으로 프로필을 포함해야 합니다.
libclntsh.so 에 문제가 있는 경우 libclntsh.so 에 대한 심볼릭 링크를 생성해야 합니다./usr/lib/oracle/11.2/client64/lib
로./usr/lib
저는 지난 주말에 cx_Oracle을 사용해야 할 때 같은 문제를 겪었습니다.libclntsh.so 이 있는 $ORACLE_HOME/lib 디렉토리를 포함하도록 LD_LIBRARY_PATH 변수를 수정하는 데 많은 시간을 들인 후, 모든 Oracle xlibx.so 라이브러리에서 /lib/xlibx.so 로 심볼 링크를 생성하여 문제를 해결했습니다.이것은 확실히 "가장 깨끗한" 솔루션은 아니지만, 큰 문제를 일으키지 않고 작동할 가능성이 높습니다.
cd $ORACLE_HOME/lib
for f in `ls ./*.so*`; do;
sudo ln -s $ORACLE_HOME/lib/$f /lib/$f
done
그 후 cx_Oracle은 매력적으로 작동했습니다.
이 게시물은 Postgre와 유사한 문제를 해결하는 데 도움이 되었습니다.SQL 데이터베이스를 사용하여 Oracle로 연결oracle_fdw
.
설치했습니다.oracle_fdw
하지만 내가 노력했을 때CREATE EXTENSION oracle_fdw;
받았습니다error could not load library libclntsh.so.11.1: cannot open shared object file: No such file or directory.
확인했습니다$ORACLE_HOME
,$PATH
그리고.$LD_LIBRARY_PATH
.
Linux Shared Library에 Oracle Shared Library를 배치한 후에만 작동했습니다.
echo /opt/instantclient_11_2 > oracle.conf
ldconfig
나는 종속성을 설치해야 했습니다.
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64
스크립트를 실행하기 전에 Oracle 경로 변수를 전달하십시오.
펄과 마찬가지로 스크립트 시작 부분에 아래를 추가할 수 있습니다.
BEGIN {
my $ORACLE_HOME = "/usr/lib/oracle/11.2/client64";
my $LD_LIBRARY_PATH = "$ORACLE_HOME/lib";
if ($ENV{ORACLE_HOME} ne $ORACLE_HOME
|| $ENV{LD_LIBRARY_PATH} ne $LD_LIBRARY_PATH
) {
$ENV{ORACLE_HOME} = "/usr/lib/oracle/11.2/client64";
$ENV{LD_LIBRARY_PATH} = "$ORACLE_HOME/lib";
exec { $^X } $^X, $0, @ARGV;
}
}
항상 이 문제가 있습니다. 아래 코드를 실행하여 해결할 수 있습니다. 내보내기 LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH
OBS: 항상 사용하기 때문에 구성 파일에 저장한 코드입니다. 행운을 빕니다.
설치 관리자 미디어 데이터베이스/stage/ext/lib에서 $ORACLE_HOME/lib로 모든 라이브러리 파일을 복사하여 문제를 해결했습니다.
다른 가장 은 업데이트하는 입니다.cx_Oracle
최신 버전(6+)으로 변경합니다.은 이버은필않다니습지가 하지 않습니다.LD_LIBRARY_PATH
일체의
아마도 당신은 해야 할 필요가 있습니다.sudo
된 계정으로 :) 관정련된 환 등 계 으 로 록 에 설 정 경 :)
언급URL : https://stackoverflow.com/questions/2708317/libclntsh-so-11-1-cannot-open-shared-object-file
'prosource' 카테고리의 다른 글
vuex 모듈에서 루트 상태를 기반으로 상수를 전역적으로 정의하는 방법 (0) | 2023.06.22 |
---|---|
Git LFS 트랙 폴더 재귀 (0) | 2023.06.22 |
'선택'은 항상 기본 키로 정렬됩니까? (0) | 2023.06.22 |
Scikit 학습 데이터 세트를 Panda 데이터 세트로 변환하는 방법 (0) | 2023.06.22 |
CPU에서 Tensorflow를 실행하는 방법 (0) | 2023.06.22 |