oracle instant client(오라클 인스턴트 클라이언트) 설치 및 selinux 연계
오라클 인스턴트 클라이언트 리눅스에 설치하는 방법
설치
다운로드
- 오라클 인스탄트 클라이언트 다운로드 사이트에 연결
- Instant Client Package 에서 Basic 과 SQL*Plus 다운로드
압축 해제
for i in instantclient*zip; do unzip $i;done
설정
instant client 압축 해제 디렉터리로 이동(Ex: /home/lesstif/instantclient_11_2)
cd instantclient_11_2/
설치 경로와 library Path 를 환경 변수 파일(Ex: .bash_profile) 에 설정
export INSTANT_CLIENT_PATH=${HOME}/instantclient_11_2 export LD_LIBRARY_PATH=${INSTANT_CLIENT_PATH}:${LD_LIBRARY_PATH} export PATH=${INSTANT_CLIENT_PATH}:${PATH}
SQLPATH 변수를 glogin.sql 이 있는 경로로 설정
export SQLPATH=${INSTANT_CLIENT_PATH}:${SQLPATH}
NLS_LANG 환경 변수 설정
한글export NLS_LANG=KOREAN_KOREA.AL32UTF8
영어만 사용할 경우 아래 lang 으로 설정
영어export NLS_LANG=AMERICAN_AMERICA.UTF8
연결 정보를 설정하는 tnsnames.ora 을 찾는 경로인 TNS_ADMIN 환경 변수 설정
export TNS_ADMIN=${INSTANT_CLIENT_PATH}
TNS_ADMIN 폴더(Instant Client 설치 폴더)내에 tnsnames.ora 를 만들고 연결 정보 설정
mydb= "(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=mydb.example.com) (PORT=1621) ) (CONNECT_DATA= (SID=MYSID) ) )"
ORA-12154: TNS:could not resolve the connect identifier specified 가 날 경우 명령행에서 connection string 을 검증한 후에 tnsnames.ora 에 설정
sqlplus scott/tiger@"(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP)(HOST=mydb.example.com)(PORT=1621)) (CONNECT_DATA= (SID=MYSID)))"
SQLPlus 를 실행해서 DB 에 정상적으로 연결되는지 확인
sqlplus scott/tiger@mydb
SELinux 연동
RHEL/CentOS 에서 SElinux 를 사용할 경우 libclntsh 에 textrel_shlib_t context 가 부여되어야 PHP-FPM 등에서 로딩이 됨
semanage fcontext -a -t textrel_shlib_t /var/lib/oracle\(64\)\?/.*/client64/lib/libclntsh\.so\(.[^/]*\)*
같이 보기
- RHEL/CentOS/Ubuntu 와 Windows 환경의 PHP 에서 오라클(Oracle) 사용하기
- 동적 라이브러리(shared library)와 Linker/Loader 이해하기
- SELinux 이해하기(Understanding SELinux)
Ref
- Configuring SQL*Plus Instant Client
- http://itvomit.com/2013/10/25/getting-oracle-instant-client-php-and-oci8-all-working/