programing

Perl DBD:: Oracle 모듈 설치

instargram 2023. 7. 1. 08:01
반응형

Perl DBD:: Oracle 모듈 설치

누가 Perl 설치 방법을 안내해 주시겠습니까?DBD::Oracle모듈?

지금까지 제가 한 일은 다음과 같습니다.

  • 플랫폼: RHEL 5.8 64비트
  • 설치된 Perl DBI 패키지
  • 리눅스용 Oracle Instant 클라이언트 64비트(인스턴트 클라이언트용 기본 + sdk + sqlplus 구성 요소) 설치
  • 올바른 설정$ORACLE_HOME그리고.$LD_LIBRARY_PATH
  • 그럼 내가 할 때perl Makefile.pl다음 오류와 함께 실패합니다.

    I'm having trouble finding your Oracle version number... trying harder
    
    WARNING: I could not determine Oracle client version so I'll just
    default to version 8.0.0.0. Some features of DBD::Oracle may not work.
    Oracle version based logic in Makefile.PL may produce erroneous results.
    You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version.
    
    Oracle version 8.0.0.0 (8.0)
    DBD::Oracle no longer supports Oracle client versions before 9.2
     Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271.
    
  • 인스턴트 클라이언트 버전: 11.1.0

  • DBD::Oracle버전은 1.44입니다.

Oracle Instant 클라이언트를 성공적으로 설치했다면 제가 무엇을 놓쳤는지 알려주실 수 있나요?

설치가 가능합니까?DBD::OracleOracle 인스턴트 클라이언트를 사용하지 않고도 사용할 수 있습니까?

  • ExtUtils-MakeMaker 모듈이 없는 경우 설치(sudo yum install perl-ExtUtils-MakeMaker)
  • Perl DBI 모듈 설치($ yum install perl-DBI)
  • Oracle Instant Client의 경우 3RPM 이하로 수동으로 설치합니다(Instant Client Downloads for Linux x86-64).예는 v11.2.0.3.0-1에 대한 것입니다. 아래 명령을 실제 버전에 맞게 조정합니다.)

    oracle-instantclient11.2-basic-11.2.0.3.0-1
    oracle-instantclient11.2-devel-11.2.0.3.0-1
    oracle-instantclient11.2-sqlplus-11.2.0.3.0-1
    

저는 64비트 리눅스 박스를 사용하고 있으니 RPM 파일 이름을 적절히 선택하세요.비슷한 것sudo yum -y install oracle-instantclient*rpm해야 합니다)

  • 변수 아래 설정:

    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
    export ORACLE_HOME=/usr/lib/oracle/11.2/client64
    

    MacOS 사용자에게는 다음이 필요합니다.

    DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/
    

    추가ORACLE_HOME당신에게PATH변수.

  • DBD 다운로드:: CPAN오라클

  • 모듈을 분리하고 아래 명령을 지정된 순서대로 실행합니다.

    perl Makefile.PL
    make
    sudo make install
    

gcc 누락에 대한 불만이 있을 경우 (일시적으로) 설치 후 제거할 수 있습니다.

완료!!!

제가 직면했던 문제들은 잘못된 것 때문이었습니다.LD_LIBRARY_PATH로 설정했습니다./usr/lib/oracle/11.2/client64반면에 정확한 값은/usr/lib/oracle/11.2/client64/lib.

물론, 이것은 저와 같은 초보자에게 훌륭한 배움이었습니다.

DBD 설치 방법:: DBD 설치에 필요한 모든 단계가 포함된 Oracle:: Oracle CPAN 모듈. 간단한 설치가 아닙니다.그 목적은 두통을 줄이고 반복 가능한 과정으로 바꾸는 것입니다.

다음은 CentOS 7.2에서 yum 패키지와 CPAN을 사용하여 수행한 작업입니다.여기에서는 Oracle 버전 12.1을 사용하고 있다고 가정하지만 대부분의 버전이 이러한 방식으로 작동할 것으로 예상됩니다.

Oracle Instant Client 설치

yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1

데모 만들기 파일 복사

설치에서는 *.mk 파일이 /usr/share/oracle/12.1/client64에 있어야 하지만 yum 패키지 설치에서는 파일이 /usr/share/oracle/12.1/client64/demo에 있어야 합니다.

sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64

.bashrc 수정

~/.bashrc에 다음 행을 추가합니다.

export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export PATH=$ORACLE_HOME:$PATH

이제 파일의 소스합니다.

source ~/.bashrc

CPAN 및 DBI 업데이트

CPAN 및 DBI를 최신 버전으로 업데이트

cpan> install CPAN
cpan> reload cpan
cpan> install DBI

DBD 설치::오라클

cpan> install DBD::Oracle

레이드빌 루시퍼의 대답에 약간의 추가.질문에 언급된 것과 같은 문제가 있었습니다.저는 레이드빌 루시퍼가 묘사한 모든 단계를 수행했습니다.하지만 여기서 언급한 것과 같은 문제가 있습니다.

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh

그래서 저는 다음과 같은 심볼릭 링크를 만들었습니다.

ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so*

그 단계 이후에 위의 오류(-lclntsh를 찾을 수 없음)가 수정되었습니다.make 명령 실행에 오류가 없습니다.

제가 여전히 가지고 있는 유일한 문제는 왜 이 상징적인 연결이 필요한지 이해할 수 없다는 것입니다.

언급URL : https://stackoverflow.com/questions/11407513/perl-dbdoracle-module-installation

반응형