2007년 5월 31일 목요일

ubuntu oracle-xe php

oracle과 php연동을 위해서 oci8관련된걸 설치해야 한다.

우선 oracle이 정상적으로 설치되었다는 가정하에 /opt/oracle/instantclient 디렉토리를 만든후에 여기에서 client관련된 파일을 다운로드(basic과 sdk) 한다.

다운로드 받은 파일을 /opt/oracle/instnatclient 에 압축을 푼다음에
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so 

심볼릭 링크를 건다.

그후 apt-get install 로 php-pear패키지와 php5-dev패키지를 설치한다.
oci8을 install하는데 sudo pecl install oci8을 실행시키면 경로를 입력하라고 나오는데 이때 $oracle_home을 입력한다.

/etc/php5/apache2/php.ini에 extention=oci8.so 추가후에 phpinfo(); 로 oci8관련된 항목이 있는지 확인한다.

그 후에 테스트 코드를 만들어서 확인하면 되는데 OCIEnvNlsCreate() failed 이와 같은 에러가 난다면 아파치 실행시킬때 oracle 계정과 관련된 환경변수들을 제대로 인식 못한 것이기 때문에 오라클 환경변수를 아파치 실행할때 export시켜서 실행시키면 해결할 수 있다. /usr/sbin/apache2ctl 파일에 오라클 환경변수를 추가한다.

관련 url :
http://samgerstenzang.com/blog/archives/2006/09/howto-installing-oracle-xe-on-ubuntu-with-php

oracle database xe install

http://www.oracle.com/global/kr/download/seminar/2005/dbxe/dbxe_faq_kor.pdf

이 파일을 읽어보면 중소기업이나 개인등이 무료로 이용할 수 있는 라이센스이다.
ubuntu에서 설치를 해봤는데 별 이상없이 바로 설치 되었다.
접속은 sqldeveloper로 해봤는데 접속은 바로 성공.

sources.list 에 deb http://oss.oracle.com/debian unstable main non-free 추가후에 apt-get update; apt-get install oracle-xe로 설치한다.(아주 쉽다.) 이때 에러가 난다면 wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -를 실행한다.
스왑 파티션 용량이 작으면 늘려주고 /etc/init.d/oracle-xe configure로 설정을 한다.

문제는 shell에서 sqlplus /as sysdba로 했을때 ora-12705 관련 에러가 났다.
nls_lang 문제 인거 같아 찾아 보는데 $ORACLE_HOME/bin/nls_lang.sh 파일이 있는데 이 파일은 $ORACLE_HOME/bin/oracle_evn.sh 파일이 nls_lang.sh를 실행시킨다. 이때 무슨 문제인지는 모르나 env로 확인해봤을때 NLS_LANG 값이 제대로 입력되지 않았다. 그래서 sqldeveloper로 오라클 서버로 연결한 다음에

select USERENV('LANGUAGE') FROM DUAL;

sql문을 실행시킨다음에 결과값을 NLS_LANG 값을 입력 시켰더니 해결되었다.

한글 관련해서는 ~/.bashrc 에 export NLS_LANG='KOREAN_KOREA.AL32UTF8'을 추가한 다음에 nls_lang.sh 파일에 있는 nls_lang=${nlslang}.${charset}를 .bashrc 파일에 있는것과 동일하게 맞춰주면 된다.

관련 url : http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html