linux 에서 oracle instantclient 원 격 연결 서버 사용

6892 단어 Oacle
저 는 securecrt 를 사용 하여 서버 에 원 격 으로 이동 합 니 다. 이 서버 에서 다른 기계 의 Oacle 에 접근 하고 싶 습 니 다.redhat, 64 비트 기 계 를 사 용 했 습 니 다.서버 의 Oacle 버 전 11.2.
1. 소프트웨어 를 먼저 다운로드 합 니 다. http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
sqlplus 로 접근 하고 싶 고 phop 프로그램 으로 접근 하고 싶 어서 다운로드 하 였 습 니 다.
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm  
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm  
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
설치 소프트웨어 직접 rpm - ivh oracle *
2. 설 치 된 디 렉 터 리 / usr / lib / oracle / 11.1 / client / lib / 가 존재 하 는 지, 또는 이름 이 나 와 일치 하지 않 는 지, 일치 하지 않 는 지, 실행:
vi / etc / ld. so. conf. d / oracle - lib. conf 가입 / usr / lib / oracle / 11.2 / client 64 / lib /
ldconfig
3, 다운로드 http://pecl.php.net/package/oci8 의 소프트웨어 oci 8 - 1.4.7. tgz, 자신 이 선택 한 버 전
tar xzf oci8-1.4.7.tgz
cd oci8-1.4.7
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib/
make && make install
4. / etc / phop. ini 에: extension = "oci 8. so" 를 추가 합 니 다.이 어 phop - m 를 사용 하여 모듈 이 불 러 왔 는 지, apache 를 다시 시작 하 는 지, phopinfo 에서 oci 모듈 이 있 는 지 확인 합 니 다.
5. 실제로 Oacle 이 설치 되 어 있 습 니 다. 인 스 턴 트 클 라 이언 트 이후 방대 한 Oacle 클 라 이언 트 를 설치 할 필요 가 없습니다. 그러나 지금까지 프로그램 을 쓰 든 sqlplus 를 사용 하 든 데이터 베 이 스 를 잘못 보고 할 수 있 습 니 다. 연결 방식: sqlplus' 사용자 이름 / '비밀번호' @ 데이터베이스 서비스 이름 (여기 서 작은 따옴표 를 사용 하 는 것 은 암호 에 특수 문자 가 들 어 있 는 것 을 피하 기 위해 서 입 니 다 @)
오류: ORA - 12154: TNS: 지정 한 연결 식별 자 를 분석 할 수 없습니다.
tnsnames. ora 가 지정 되 지 않 았 기 때 문 입 니 다.
6. / usr / lib / oracle / 11.2 / client 64 디 렉 터 리 에 mkdir - p network / admin 을 새로 만 든 다음 admin 디 렉 터 리 에 tnsnames. ora 를 새로 만 들 고 다음 과 같은 내용 을 기록 합 니 다.
 
#tnsnames.ora Network Configuration File: /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora
SDHE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.203.49)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dhe)
    )
  )
DHE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.191.23)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dhe)
    )
  )

 또는 Oacle 서버 에서 같은 디 렉 터 리 에 있 는 이 파일 을 직접 복사 합 니 다.
sqlnet. ora 를 새로 만 들 고 쓰기:
 
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

 7, 환경 변수 설정: ~ /. bashrc 에 기록:
 
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin

 8, 다시 sqlplus 로 로그 인, sqlplus' 사용자 이름 / '비밀번호' @ dhe, 성공!이 때 사용자 가 읽 기 권한 만 있다 면 라 이브 러 리 에 있 는 표 의 데 이 터 를 읽 으 려 면 select * from 라 이브 러 리 이름. 표 이름
9. 이때 체크 백 키 를 사용 하면 오류 가 발생 합 니 다. ~ /. bashrc 에 stty erase ^ H 를 기록 합 니 다.중국어 검색 도 어 지 러 울 수 있 으 니 실행 하 세 요.
  sqlplus user/pass@ip/sid (sqlplus , )
# :
SQL> select userenv( 'language' ) from dual; 
USERENV( 'LANGUAGE' )
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
로 컬 문자 집합 변 수 를 위 에서 찾 은 것 으로 설정 합 니 다!
 
vim ~/.bashrc export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
10. 과거 명령 을 가 져 오 려 면 위로 화살표 키 를 사용 하 십시오. rlwrap 을 설치 하고 설정 하 십시오. 저 는 해 본 적 이 없습니다 ~
11. 설정 을 검사 하기 위해 phop 프로그램 을 쓰 려 면 다음 절 차 를 참고 하 십시오.
 
<?
$dbconn=OCILogon("dev","!@#","dhe");
if($dbconn){
    echo "yes";
}else{
    echo "no";
}
$sql ="select name from dhe.user";
$stmt = OCIParse($dbconn, $sql);
if(!$stmt) {
echo "<h1>ERROR - Could not parse SQL statement.</h1>";
OCILogoff($dbconn);
exit;
}
OCIExecute($stmt);
while( OCIFetchInto($stmt, $result_array) )
{
    echo "name=$result_array[0]
"; } OCILogoff($dbconn); ?>

 12. 요약: 저 는 하루 가 넘 게 이 설정 을 했 습 니 다. 주로 처음에 Oacle 클 라 이언 트 를 설치 해 야 하 는 지 알 수 없 었 습 니 다. 그리고 제 가 방문 한 것 은 다른 사람의 데이터 베 이 스 였 습 니 다. 권한 을 열 어야 하고 권한 이 개통 되 었 는 지 알 수 없 었 습 니 다. 제 가 사용 할 수 있 는 사용 자 는 읽 기 권한 만 있 었 습 니 다. 이것 은 제 작업 에 제한 을 받 았 습 니 다.그리고 비밀번호 에 @ 기호 가 들 어 있 는 문제 도 저 를 오랫동안 괴 롭 혔 습 니 다. 마지막 으로 phop 프로그램 이 어떻게 쓰 는 지 모 르 겠 습 니 다. Oacle 의 phop api 가 두 세트 가 있 는 것 같 습 니 다. 저도 잘 모 르 겠 습 니 다. 물론 가장 큰 문 제 는 제 경험 이 부족 합 니 다.
13. 많은 글 을 참고 하여 일일이 열거 하지 않 았 습 니 다. 문제 가 있 거나 본문 이 잘못 되 었 으 면 지적 해 주 십시오. 감사합니다!
---------------------------------------
다음:
1. phop test. php 를 사용 하면 Oacle 에 성공 적 으로 접근 할 수 있 지만 apache 에 두 면 브 라 우 저 로 접근 하면 오류 가 발생 하여 지정 한 연결 식별 자 를 분석 할 수 없습니다.
이 유 는 apache 를 시작 할 때 service httpd restart 를 사용 하고 환경 변 수 를 도입 하지 않 았 기 때문에 스스로 시작 스 크 립 트 를 작성 합 니 다.
 
#!/bin/bash

service httpd stop

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

#service httpd start
/usr/sbin/apachectl start
echo "Start httpd:                                            [  OK  ]"

 2. 중국어 난 코드 를 찾 아 OCILogon ("dev", "@ \ #", "dhe", "gb 2312") 에서 찾 습 니 다.마지막 매개 변수 설정 문자 인 코딩: gbk, utf 8 등;
-

좋은 웹페이지 즐겨찾기