우분투(10.04)에 오라클 11g 설치하기.

 이 글은 다음의 사이트를 베이스로 우분투(10.04)를 기반으로 오라클 11g(linux_11gR1_database_1013.zip) 버전을 설치하여 proc 를 이용한 프로그램의 컴파일까지의 내용을 편집한 것이다.

 원글님: 허니몬의 자바Guru
http://java.ihoney.pe.kr/39

 #1. 먼저 오라클 11g를 설치하기에 앞서 필요한 패키지를 설치하는 작업이 필요하다.

 다음의 패키지를 설치하도록 하자.

 # sudo apt-get install gcc make binutils lesstif2 rpm libmotif3 libaio gawk alien ksh

필요한 패키지 버전(당연히 그 이상 버전도 가능) -> 대부분 설치되어 있음.
binutils-2.15.92.0.2-10
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9
gcc-c++-3.4.3-9
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9
libstdc++-devel-3.4.3-9
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5

 아래의 패키지를 더 설치하도록 하자.

 # apt-get install gcc
binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5
build-essential


** 다음의 위치에서 oracle을 다운받도록 하자. 필자는 11.1.0.6.0 버전으로 설치를 진행하였다.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 #2. 패키지의 설치가 끝났으면 설치를 위한 사용자 그룹과 유저를 만들도록 한다.

# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -m oracle -g oinstall -G dba -s /bin/bash
# usermod -g nobody nobody
# passwd oracle  (oracle 계정의 비밀번호 설정)

#3. 리눅스 커널의 소스도 필요하다.

 # sudo apt-get install linux-headers

 #4. Oracle 에서 필요한 메모리와 CPU 리소스를 위해 커널 파라미터를 수정한다.
 파일을 열고 가장 아래쪽에 다음의 내용을 삽입한다.

 # sudo vi /etc/sysctl.conf

fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

 #5.  /etc/sysctl.conf 파일은 우분투 시스템이 부팅시 처음 읽어오는 정보이다. 이것을 적용시키기 위해서 재부팅을 한다.
 
 혹은 재부팅이 귀찮으면 다음을 입력한다. sysctl.conf 설정을 다시 읽어들이는 명령어이다.

 # sudo sysctl -p

 #6. 다음으로 limit.conf 파일을 수정한다.

 다음의 내용을 /etc/security/limits.conf 파일에 삽입한다.

# sudo vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16383

oracle soft nofile 1023

oracle hard nofile 65535

 /etc/security/limits.conf 파일의 수정이 완료되었으면 다음으로

 /etc/pam.d/login 파일을 열어서 다음 라인을 추가한다.

 # sudo vi /etc/pam.d/login

 session required /lib/security/pam_limits.so
 session required pam_limits.so

 #7. 환경변수 설정.
 다음으로 오라클 기동에 관련한 환경변수를 설정한다.

$ln -s /usr/bin/awk /bin/awk

$ln -s /usr/bin/rpm /bin/rpm

$ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so

$ln -s /usr/bin/basename /bin/basename
/bin/basename

Oracle 11g가 설치될 폴더 생성하기(본인은 11g를 설치하여 11g로 변경함)

$mkdir /oracle

$mkdir /oracle/11g

$chown -R oracle:oinstall /oracle

$chmod -R 775 /oracle

그다음 환경변수 설정을 위해 etc밑에 profile을
gedit로 연다(vi로열어도 상관없음)

$sudo vi /etc/profile

파일을 열었으면.. 파일 가장 아랫부분테 밑에 정보를
복사해서 넣는다.. 파일의 가장 마지막!

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/11g

export ORACLE_SID=oracle

export PATH=$PATH:$ORACLE_HOME/bin

여기까지 했으면.. 환경변수가 제대로 등록되었나.. 터미널을 열어서 확인을 해본다..

$ su – oracle

password:

$ echo $ORACLE_BASE

/oracle

$ echo $ORACLE_HOME

/oracle/11g

$ echo $ORACLE_SID

oracle

 제대로 나오면 이상없음..

 #8. 오라클 압축 풀기.

# cd /path/to/zipfile (Oracle 압축 파일을 받은 폴더로 이동한다).
# sudo chown oracle:oinstall Oracle11*.zip
# sudo Oracle11*.zip /home/oracle
# su – oracle
# unzip linux_11gR1b5_database.zip – 파일명은 버전에 따라 달라질 수 있습니다.

# chown -R oracle:oinstall database

 #9.Turn on the display – runInstaller를 실행하기 전에 xdisplay를 일치시켜줘야
한다는
군요…

 root 계정이나 oracle 에서 xdisplay를 사용하려고 하면 실행되지 않는 부분을 해결하기 위해서는 아래의
명령어를 본인의 사용계정에서 설정해줘야 합니다.

 꼭!! 안그러면 실행 중 오류가 뜹니다.

 # sudo -i
 #
xhost +
 # su – oracle
 # DISPLAY=:0.0; export DISPLAY

 
 #10. 오라클 설치 시작.

# su – oracle
# export LANC=C  // 그냥 실행하면 한글이 깨진 설치화면으로 나옵니다. 속편하게 영어로~!!
$ cd /path_to_extracted_files
$ ./runInstaller

#11. 오라클 설치.

아래 그림에서 보시는 것처럼


Oracle Base Location : /oracle


Oracle Home Location : /oracle/11g


Global DataBase Name : oracle

(주의: 다른 값을 넣고 싶은 경우, 위의 export ORACLE_SID=oracle” 설정과 똑같은 값을 넣어주어야 합니다.)

Inventory directory 는 /oracle/oraInventory로 설정

System group name 은 dba로 설정


나머지 과정은 Next~ Next~~를 눌러주면 된다.

 !! 주의 !!

 필자의 환경 – 우분투 10.04 – Desktop 에서 오라클 설치를 진행할 경우, 왜인지 중간에 Assistant 프로세스를 진행할 때 hang이 걸리는 문제가 있었다.
왼쪽의 화면처럼 창이 하나 뜨고 창의 안쪽에는 아무런 화면이나 메시지가 나타나지 않는 문제였다.

 분명 저번에 어떻게 해결한 것 같았는데, 도저히 기억이 나질 않았다. 한참을 고민하다가 답을 찾았다. 아마도 데스크탑 환경에서 실행중인 한 패키지(혹은 라이브러리) 중에서 화면을 띄우는 라이브러리와 뭔가 상성(?)이 맞지 않아서 생기는 문제인 듯 했다.

 그래서 우분투 처음 시작시, 로그인을 할때 시작을 Xterm 모드로 로그인을 하여 데스크탑 설정과 관련된 대부분의 라이브러리/프로세스 실행을 멈추게 하였다.

 그리고 설치를 진행하니 정상적으로 설치가 되는 것을 확인하였다…

 

 쭈욱 넥스트가 나오고 다음 창이 나오면, Script to be executed : 경로에 있는 곳으로 가서 sh(스크립트
파일)을 실행시키자.

 위쪽에 써 있듯이, root 계정으로 실행시켜야 한다.

 #12. Complete Install And System Reboot.

본인 계정으로 로그인 후 터미널을 실행하여 /etc/oratab파일 부분을 수정


보이는 것처럼 oracle:/oracle/11g:N 을 oracle:/oracle/11g:Y 로 변경하면 된다.

#13. 오라클 리스너의 절대 패스 수정

# gedit /oracle/11g/bin/dbstart


 ORACLE_HOME_LISTNER= 부분을

 ORACLE_HOME_LISTNER=/oracle/11g 로 설정해 주면 되겠다.


제……………….. 오라클 실행해보자…

oracle 계정에서

$ lsnrctl start

리스너 시작 후에

SQL> conn oracle as sysdba
Enter password:
Connected to an idle instance.
SQL> startup
ORACLE instance started.

 
 #.14 여기까지가 oracle 의 설치부분이다. 이제 proc를 이용한 프로그램의 컴파일을 위한 부분을 알아보도록 하자.

 예제 proc 프로그램을 이용하여 컴파일을 시도해보자.

 나는 사내에서 사용하는 Pro 프로그램을 사용했다.

 다른 분들은 이곳
 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Database/dbms_programing/OracleProcPrograming_Start

 을 참고하여 알맞은 예제 소스를 구하도록 바란다.(사실 저곳에 나머지 내용이 다 나와있다.)

 필자의 경우 proc 프로그램 컴파일을 실행하면 아래의 오류 메시지가 나왔다.

 /oracle/11g/bin/proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

 libclntsh.so.11.1 파일을 찾을 수가 없다는 내용인데 이는 라이브러리 패스와 심볼릭 링크 설정으로 해결 할 수 있다.
 

먼저 .bash_profile 에 다음을 추가한다. (필자의 경우 ~/.bashrc) 였다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

그래도 안되면 $ORACLE_HOME/lib 에 파일 이 있는지 확인후 없으면 링크한다.

[oracle@localhost lib]$ ln -s
libclntsh.so.10.1  libclntsh.so

 

 그리고 추가로 다음의 문제도 발생했었는데…

Error at line 34, column 11 in file /usr/include/stdio.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 15, column 10 in file /usr/include/_G_config.h
#include <stddef.h>
………1
–More–make: *** [oraquery.o] Error 1
PCC-S-02015, unable to open include file
Error at line 52, column 11 in file /usr/include/wchar.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 53, column 11 in file /usr/include/libio.h
# include <stdarg.h>
……….1
PCC-S-02015, unable to open include file
Syntax error at line 332, column 3, file /usr/include/libio.h:
Error at line 332, column 3 in file /usr/include/libio.h
  size_t __pad5;
..1
PCC-S-02201, Encountered the symbol “size_t” when expecting one of the following
:

 이는 /oracle/11g/precomp/admin/pcscfg.cfg 설정을 바꿔줌으로써 해결 할 수 있었다.

 /oracle/11g/precomp/admin/pcscfg.cfg 파일안에  /usr/lib/gcc/i486-linux-gnu/4.4/include 설정을 추가하도록 한다.

 단, 이 설정은 배포판, gcc 버전 등에 따라 바꿔질 수 있으므로 경로를 확인해서 입력하여만 한다.
 
 여기까지 설정이 끝났다면 이제 Proc 를 사용하면 된다. 🙂

mysql 에러 – libmysqlclient.so.15

<!—————————– 글의 본문………………………………………시작–>

“error in loading shared libraries libmysqlclient.so.15:
    cannot open shared object file: No such file or directory”
 
 MySQL의 라이브러리를 열지 못한다는 메시지이다. 컴파일 할 때 MySQL의 동적 라이브러리를 사용하는데, 동적 라이브러리이므로 실행시에도 라이브러리가 필요하게 된다.
 
 libmysqlclient.so가 /usr/lib 혹은 /usr/lib/mysql 디렉터리에 존재하지 않을 경우에 발생하는 문제이다.
 
 가장 간단한 해결법으로는 모든 MySQL 라이브러리를 /usr/lib/나 /usr/local/lib 밑으로 복사하는 것인데 별로 추천하는 방법은 아니다.
 
 두 가지 방법이 있는데, 먼저 시스템의 운영자라면, /etc/ld.so.conf 파일에libmysqlclient.so가있는 경로를 적어 준 후에 ldconfig 라는 명령을 프롬프트에서 실행하여 주면 된다.
 
 이러한 권한이 없는 일반 사용자라면, 자신의 쉘의 환경 변수를 이용하면 된다.
 
 각자의 쉘이 맞게, LD_LIBRARY_PATH를 libmysqlclient.so가 있는 디렉터리로 지정을 해주자.
 
 C 쉘 사용자는  setenv LD_LIBRARY_PATH  경로명 본 쉘 사용자는 export LD_LIBRARY_PATH  경로명 이렇게 해주면 된다.

[APM] MYSQL 설치

1. MYSQL 설치

– 홈페이지 : http://www.mysql.org

– MYSQL 다운받기
wget ftp://ftp.superuser.co.kr/mysql/mysql-4.1.8.tar.gz

– 압축해제
tar xvfz mysql-4.1.8.tar.gz

– 디렉토리 이동
cd mysql-4.1.8

– configure
./configure –prefix=/usr/local/mysql –localstatedir=/usr/local/mysql/data –with-charset=euckr

– configure 옵션 설명
–prefix=/usr/local/mysql : 설치될 MYSQL 의 위치지정

–localstatedir=/usr/local/mysql/data : MYSQL 의 데이터베이스 데이터들이 저장될 위치지정

–with-charset=euckr : MYSQL 에서 한글지원을 하기위한 설정. 주의할 것은 예전버전에서는 euc_kr 로 지정을 하였으나 4.1.X 이후버전 부터는 euckr 로 지정함.

–without-innodb : InnoDB 테이블 핸들러를 포함하지 않고 컴파일을 한다.

–disable-largefile : 큰파일 지원을 하지 않도록 설치한다. MYSQL 데이터베이스의 성능보다는 안정성을 위한 옵션입.

–with-raid : RAID 를 지원하도록 컴파일한다.

–with-unix-socket-path=SOCKET : MYSQL 소켓파일( mysql.socket ) 파일의 위치를 지정할 수 있음. 단, 지정할 때에는 반드시 절대경로를 이용해야 함.

–with-mysqld-user=username : mysqld데몬을 실행할 계정명을 지정할 수 있음.

— with-zlib-dir=DIR : 데이터압축 라이브러리인 zlib을 지원하기 위한 zlib설치위치를 지정하는 옵션임.

–with-openssl-includes=DIR : OpenSSL 을 지원하기위한 옵션으로 DIR 에는 OpenSSL 의 헤드위치를 지정한다.

–with-openssl-libs=DIR : OpeSSL 의 라이브러리를 지원하기위한 옵션으로 DIR 에는 OpenSSL 의 라이브러리 위치를 지정한다.

–with-isam : ISAM 타입의 테이블을 지원하는 옵션임

– make
make

– make install
make install

– /usr/local/mysql/bin 으로 이동하여 mysql_install.db 를 실행한다. 그 결과 /usr/local/mysql/data 디렉토리가 생성이 되며 이 디렉토리내에 mysql 데이터베이스와 test 데이터베이스를 생성하게 된다.
cd /usr/local/mysql/bin
./mysql_install.db

– MYSQL 의 실행
/usr/local/mysql/bin/mysqld_safe &

– error 가 발생한다. mysql 사용자를 추가하고 다시 실행한다.
useradd -M mysql
chown -r mysql:mysql /usr/local/mysql/data

– MYSQL 실행
/usr/local/mysql/bin/mysqld_safe &

– MYSQL 의 관리자( root ) 패스워드 설정
cd /usr/local/mysql/bin
./mysqladmin -u root password 88888888
./mysqladmin -u root -p mysql

mysql 에러 – libmysqlclient.so.15

“error in loading shared libraries libmysqlclient.so.15:
cannot open shared object file: No such file or directory”
MySQL의 라이브러리를 열지 못한다는 메시지이다. 컴파일 할 때 MySQL의 동적 라이브러리를 사용하는데, 동적 라이브러리이므로 실행시에도 라이브러리가 필요하게 된다.
libmysqlclient.so가 /usr/lib 혹은 /usr/lib/mysql 디렉터리에 존재하지 않을 경우에 발생하는 문제이다.
가장 간단한 해결법으로는 모든 MySQL 라이브러리를 /usr/lib/나 /usr/local/lib 밑으로 복사하는 것인데 별로 추천하는 방법은 아니다.
두 가지 방법이 있는데, 먼저 시스템의 운영자라면, /etc/ld.so.conf 파일에libmysqlclient.so가있는 경로를 적어 준 후에 ldconfig 라는 명령을 프롬프트에서 실행하여 주면 된다.
이러한 권한이 없는 일반 사용자라면, 자신의 쉘의 환경 변수를 이용하면 된다.
각자의 쉘이 맞게, LD_LIBRARY_PATH를 libmysqlclient.so가 있는 디렉터리로 지정을 해주자.
C 쉘 사용자는  setenv LD_LIBRARY_PATH  경로명 본 쉘 사용자는 export LD_LIBRARY_PATH  경로명 이렇게 해주면 된다.