본문 바로가기
데이터베이스

Oracle 11g R2 + Ubuntu 12.04(LTS 64bit) 설치법

by 하센세 2013. 5. 9.

공식적으로 우분투 리눅스는 오라클 데이터베이스의 설치 배포판을 지원하지 않는다.

오라클 리눅스, RedHat 계열의 리눅스 배포판에서는 지원이 되는것 같은데 우분투는 공식적으로 지원이 없다.

따라서 우분투에서 설치하기 위해서는 까다로운 작업들은 거쳐야 한다.


또한, 2013년 4월 현재 오라클DB는 R2 버전을 제공하기에 기존 How to Install 또는 설치법들은 R1기준으로 설명이 되어있다

그리고 인터넷에 올라온 여러 설치법으로 설치해 보아도 제대로 설정되지 않는 경우가 많았다. 


그 중 일단 설치까지 성공한 버전은 에오메르님의 블로그 (http://dimpl.tistory.com/8 ) 를 통하여 설치에 성공하였다.

하지만 실제 동작에 여러문제가 발생하여 나름 긴 시간을 에러와 사투(?)를 벌여야 했다. 

일단 설치 성공 메뉴얼을 인용하면.

----------------------------------------------------------------------------------------------------------------

================================================================================

1. 사전 작업들

================================================================================

  • 우분투 12.04 64bit 설치(모든 종류의 우분투계열 12.04 64bit 에 적용가능하다.)
  • 오라클홈페이지에서 Linux 64비트용 Oracle 받기

 

 

================================================================================

2. 우분투 설정 변경

================================================================================

  • Oracle 설치에 필요한 그룹 및 oracle 계정 생성
   1:  sudo groupadd oinstall
   2:  sudo groupadd dba
   3:  sudo mkdir -p /opt/oracle
   4:  sudo useradd -g oinstall -G dba  -d /opt/oracle -s /bin/bash oracle
   5:  sudo passwd oracle
   6:  sudo chown -R oracle:oinstall /opt/oracle
   7:  sudo echo "oracle ALL=(ALL) ALL" >> /etc/sudoers

 

 

  • 커널 파라미터 변경

 

/etc/sysctl.conf 의 맨 아래 부분에 다음의 내용을 추가한다.

 

   1:  #
   2:  # Oracle 11g
   3:  #
   4:  kernel.sem = 250 32000 100 128
   5:  kernel.shmall = 2097152
   6:  kernel.shmmni = 4096
   7:  # Replace kernel.shmmax with the half of your memory in bytes
   8:  # if lower than 4Go minus 1
   9:  # 1073741824 is 1 GigaBytes
  10:  kernel.shmmax=1073741824
  11:   
  12:  # Try sysctl -a | grep ip_local_port_range to get real values
  13:  net.ipv4.ip_local_port_range = 9000  65500
  14:   
  15:  net.core.rmem_default = 262144
  16:  net.core.rmem_max = 4194304
  17:  net.core.wmem_default = 262144
  18:  net.core.wmem_max = 1048576
  19:   
  20:  # Max value allowed, should be set to avoid IO errors
  21:  fs.aio-max-nr = 1048576
  22:  # 512 * PROCESSES / what really means processes ?
  23:  fs.file-max = 6815744 
  24:   
  25:  # To allow dba to allocate hugetlbfs pages
  26:  # 1001 is your oinstall group, id. grep oinstall /etc/group will give this value
  27:  vm.hugetlb_shm_group = 1001

 

여기서 주의할 점은 아까 추가한 oinstall 그룹의 그룹아이디가 1001 이 아닌 경우에 vm.hugetlb_shm_group의 값을 해당 그룹아이디로 수정 해 주어야 한다.

 

수정이 되었으면 아래의 명령을 실행하여 시스템에 반영한다.

 
   1:  sudo sysctl -p

 

이제 oracle 계정의 제한들을 수정한다.

/etc/security/limits.conf 맨 아래에 다음과 같은 내용을 추가한다.

 

   1:  # Oracle
   2:  oracle           soft    nproc   2047
   3:  oracle           hard    nproc   16384
   4:  oracle           soft    nofile  1024
   5:  oracle           hard    nofile  65536
   6:  oracle           soft    stack   10240

 

/etc/pam.d/login 파일에 아래와 같은 내용이 포함되어 있는지 확인한다. 없으면 추가한다.

   1:  session    required   pam_limits.so

/etc/profile의 맨 아래에 다음의 내용을 추가한다.

   1:  if [ $USER = "oracle" ]; then
   2:          if [ $SHELL = "/bin/ksh" ]; then
   3:                ulimit -p 16384
   4:                ulimit -n 65536
   5:          else
   6:                ulimit -u 16384 -n 65536
   7:          fi
   8:  fi 

 

 

================================================================================

3. 필요 패키지 추가

================================================================================

 

아래 명령을 실행하여 패키지들을 최신의 상태로 만든다.

   1:  sudo apt-get update
   2:  sudo apt-get dist-upgrade

 

아래 명령을 실행하여 필요한 패키지들을 설치 한다.

   1:  sudo apt-get install alien autoconf automake autotools-dev binutils bzip2 doxygen elfutils expat gawk gcc gcc-multilib g++-multilib ia32-libs ksh less lesstif2 lesstif2-dev lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libmotif4 libodbcinstq4-1 libodbcinstq4-1:i386 libpth-dev libpthread-stubs0 libpthread-stubs0-dev libstdc++5 lsb-cxx make openssh-server pdksh rlwrap rpm sysstat unixodbc unixodbc-dev unzip x11-utils zlibc build-essential

 

아래 명령들을 실행하여 필요 패키지를 설치한다.

   1:  mkdir /tmp/libstdc++5
   2:  cd /tmp/libstdc++5
   3:  wget http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_i386.deb
   4:  wget http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.3/libstdc++5-3.3-pic_3.3.6-8ubuntu1_amd64.deb
   5:  sudo dpkg --force-architecture -i libstdc++5_3.3.6-17ubuntu1_i386.deb
   6:  sudo mv /usr/lib/libstdc++.so.5* /usr/lib32/
   7:  sudo dpkg -i libstdc++5-3.3-pic_3.3.6-8ubuntu1_amd64.deb

 

Oracle을 설치하려면 XWindow가 필요하기 때문에 Ubuntu Server의 경우 아래의 명령을 실행하여 gnome을 설치한다.

   1:  sudo apt-get install ubuntu-desktop

 

모두 설치되었으면 재부팅을 한다.

 

 

 

================================================================================

4. 설치시 오류에 대한 대비

================================================================================

 

아래의 명령들을 실행해 준다.

   1:  sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
   2:  sudo ln -sf /bin/bash /bin/sh
   3:  sudo ln -s /usr/bin/awk /bin/awk
   4:  sudo ln -s /usr/bin/rpm /bin/rpm 
   5:  sudo ln -s /usr/bin/basename /bin/basename
   6:  sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/.

아래의 명령들을 실행 해 준다.

   1:  su - oracle
   2:  cd
   3:  touch oraerr.sh
   4:  chmod +x oraerr.sh

/opt/oracle/oraerr.sh 에 아래와 같은 내용을 넣어준다.

   1:  sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
   2:  sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
   3:  sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
   4:  sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
   5:  sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk

 

아래 명령을 실행해 실행가능한 파일로 만든다.

   1:  chmod +x oraerr.sh

 

아래 명령을 실행해 준다.

   1:  touch .bashrc
   2:  ln -s .bashrc .bash_profile

 

/opt/oracle/.bashrc 파일에 다음과 같은 내용을 넣어준다.

 

   1:  # set file creation mask
   2:  umask 022
   3:   
   4:  # setting up oracle environment variables
   5:  ORACLE_BASE=/opt/oracle/oracle11g
   6:  ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
   7:  LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
   8:  PATH=$ORACLE_HOME/bin:$PATH
   9:  export ORACLE_BASE ORACLE_HOME LD_LIBRARY_PATH PATH

 

아래 명령을 실행해 oracle 환경변수를 지정해 준다.

 

   1:  cd
   2:  . .bashrc

 

 

 

================================================================================

6. Oracle 설치

================================================================================

 

자, 이제 본격적으로 오라클 설치를 진행해 보자.

oracle 계정으로 로그인하고, 터미널을 하나 연다.

 

미리 받아놓은 오라클 설치파일의 압축을 풀어준다.

 

   1:  unzip linux.x64_11gR2_database_1of2.zip
   2:  unzip linux.x64_11gR2_database_2of2.zip

아래의 명령들을 실행하여 oracle 설치를 시작한다.

   1:  cd /opt/oracle/database/
   2:  export LANG=C
   3:  ./runInstaller

 

설치 중간에 필요한 라이브러리들을 못찾는다고 불평을 하지만, “ignore all” 을 체크하고 넘어간다.

 

설치시 오류가 발생한다. 원래 날 수 밖에 없는 것이니 겁먹지 말고, 설치화면은 그대로 두고,

터미널을 하나 열어 아래의 명령을 실행한다.

   1:  cd
   2:  ./oraerr.sh

 

그렇다 아까 만들어놓은 스크립트를 실행하는 것이다. 실행이 끝났으면 다시 설치화면으로 돌아와서,

그 오류 화면에서 “retry”를 눌러준다.

그러면 나머지 모든 설치과정이 아무 문제없이 진행될 것이다.

 

 

 

================================================================================

7. 결론.

================================================================================

 

굳이 이렇게 설치할 필요가 있을까?

하지만, 우분투를 쓰고 있으면서 오라클도 쓰고 싶다면 머, 그냥 이렇게라도 설치를 해야 하겠지..

그래도 되도록이면 지원되는 리눅스 배포판을 사용하는 것이 정신건강에 좋다.


----------------------------------------------------------------------------------------------------------------

일단 얼굴은 모르지만 힘든 작업을 해준 에오메르님께 감사를 드리고 간혹, 블로그 링크가 깨어지거나 삭제되는 경우가 있어서 내용을 차용 하였다. 

자 여기까지 작업하면 Ubuntu12.04 64bit에서 설치에 성공한다. 그러나 실행시 문제가 발생하는 그 문제점들은 하나씩 수정해 보자. 

첫번째, 오라클 실행방법

리눅스에서 오라클을 실행하는 방법은 첫번째 설치를 진행했던 oracle 계정으로 로그인 한다.

su oracle

암호입력

암호입력까지 마치면 다음과 같이 하여 DBMS로 접속한다.

oracle:~$ sqlplus sys as sysdba               // sysdba로 접속한다.

접속에 성공하면 SQL프롬프트가 뜬다.

SQL> startup                //DB 구동


깔끔하게 돌기위해 ....<계속>