오라클11g 설치 (in centOS 5.1) Oracle


문서는
http://www.oracle.com/technology/pub/articles/smiley_rac10g_install.html
http://www.oracle-base.com/articles/10g/OracleAS10gInstallationOnFedora2.php
참조.

시스템 환경 점검
2.6.9-11 이상의 커널이 필요하다.
# uname -r

필요한 패키지 버전(그 이상도 당연히 가능) -> 대부분 설치되어 있다.
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


libaio-devel-0.3.106 <- 2009.1.8 설치 중 발견.
compat-libstdc++-33-3.2.3-i386 <-2009.1.8 설치 중 발견.



실제로 요구사항으로 체크되는 패키지의 목록은 다음과 같다.   <- 2009.1.8 update

make-3.81
binutils-2.17.50.0.6
gcc-4.1.1
libaio-0.3.106
libaio-devel-0.3.106
libstdc++-4.1.1
libstdc++-devel-4.1.1
sysstat-7.0.0
libgcc-4.1.1
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
glibc-common-2.5
glibc-devel-2.5

gcc-c++-4.1.1
compat-libstdc++-33-3.2.3


시스템 요구사항 검증
# grep MemTotal /proc/meminfo
MemTotal :    xxxxxx KB
# grep SwapTotal /proc/meminfo
SwamTotal : xxxxx KB

계정 생성
# groupadd oinstall
# groupadd dba
# useradd -m -g oinstall -G dba oracle
# passwd oracle


디렉토리 생성
# mkdir /oracle
# chown -R oracle.dba /oracle
# chmod -R 755 /oracle


hosts 파일
/etc/hosts 파일이 제대로 설정되어 있는지 확인.
# cat /etc/hosts
<IP-address> <fully-qualified-machine-name> <machine-name>

커널 파라미터 설정
 Oracle 11g? 가 요구하는 커널 매개변수 설정이다. 아래의 수치는 최소값이며 /etc/sysctl.conf에 적혀있는 값이
아래의 값보다 높을 경우에는 변경하지 않아도 된다. 물론 낮을 경우에는 /etc/sysctl.conf 에 추가해준다.

# sysctl -a | grep ... 으로 확인할 수 있다.

#kernel.shmall = 2097152
#kernel.shmmax = 2147483648
#kernel.shmmni = 4096   <- 수정했음.
# semaphores: semmsl, semmns, semopm, semmni
#kernel.sem = 250 32000 100 128
#fs.file-max = 131072
net.ipv4.ip_local_port_range = 1024 65000
kernel.msgmni = 2878
#kernel.msgmax = 8192
#kernel.msgmnb = 65535

net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

(#처리는 서버에서 해당값보다 크거나 같은 경우이다. 적다면 주석 풀고 붙여넣는다.)


2009.1.8 update


실제 확인하는 커널 매개변수와 값. (물론 값이 큰건 성공으로 표시된다.)
semmsl=250
semmns=32000
semopm=100
semmni=128
shmmax=536870912
shmmni=4096
shmall=2097152
file-max=65536
VERSION=2.6.18
ip_local_port_range=1024 - 65000
rmem_default=4194304
rmem_max=4194304
wmem_default=262144
wmem_max=262144


실제로 적어줘야하는 형식은 위에 적혀있는 것을 따르거나 google it.



변경이 완료되면

# /sbin/sysctl -p 로 변경된 설정을 적용한다.


oracle 사용자 계정의 shell limit 설정
Linux 계정 별로 실행되는 프로세스와 열린 파일 수를 제한한다. 이를 위해 /etc/security/limits.conf 를 편집한다.
아래에 추가하자. (간격은 tab으로 조정하던지.. 알아서 )
#<domain>      <type>  <item>         <value>
    oracle            soft     nproc            2047
    oracle            hard    nproc            16384
    oracle            soft     nofile             1024 
    oracle            hard    nofile             65536

그리고 /etc/pam.d/login 에 다음을 추가하자.
session    required    /lib/security/pam_limits.so


oracle 계정을 위한 환경변수
DB 서버에서 설정해야하는 환경변수는 다음과 같다.

ORACLE_BASE
ORACLE_HOME
ORACLE_SID
PATH

위의 변수를 추가하기 위해서 oracle 계정의 .bash_profile에 다음을 추가한다.

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle/11g; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin

오라클 배포판 다운받기
배포판을 다운받아서 특정 디렉토리에 압축을 풀어놓는다. 물론 디렉토리는 oracle 계정의 소유여야한다.
루트로 작업하고 나중에 chown을 사용해도 상관없다.

# unzip linux.x64_11gR1_database.zip    <물론 zip파일의 이름은 다를 수도 있다 -_->
# chown -R oracle.oinstall ./database

설치 전에..
oracle 계정으로 로그인 해서  설치 파일들을 풀어놓은 디렉토리에서 runInstaller를 실행하기 전에..
# xhost +
(+까지 쳐야한다. 이걸 해줘야 루트로 로그인 한 X윈도에서 터미널로 su - oracle을 이용해서
  oracle 계정을 사용 xwindow 창을 띄울 수 있다. 궁금하다면 man xhost 를 참고할 것)

예전에는 /etc/redhat-release를 수정해주곤 했는데 안해줘도 잘 나온다.

oracle 11g도 한글이 다 깨져서 나온다. runInstaller 전에 다음을 실행한다.
# export LANG=C
그리고 나서 runInstaller를 실행하면 깨지지 않고 나올 것이다. 물론 영어로 -_-;

이제 runInstaller를 실행해보자.

Base Location
Home Location 을 profile과 동일하게 맞춰주고..
Global Database Name 도 SID 와 맞춰준다.
Advanced Installation으로 들어가면 이것저것 만질 수 있는게 많다. 귀찮으므로 패스.

자.. 이제 다음 화면이다.

Inventory Directory와 Group Name을 지정하는데 Inventory는 적당한 곳에 위치시키고..
group name도 dba로 설정해준다.

이제는 설치전 요구사항에 대해서 검사를 하는데.

Warning도 뜨고.. not execute(Network 설정)도 뜬다. 그냥 User Verify 로 선택하고 넘어가자.

11g에서는 다음 화면이 추가로 생겼다. 환경설정 관리자 등록 화면인데.. 등록하면 뭔가 귀찮으니까 -_- 패스


자 이제 Summary 를 볼 수 있다.

Install 버튼을 눌러서 계속 진행한다.

와우. 별일 없이 쭉 넘어갔다. 8i 시절 부터 10g까지 리눅스에 설치시 끈질기게 괴롭히던 Link Error가 사라졌다.
다음은 패스워드 설정이다. 11g 에서는 sys / system / dbsnmp / sysman 을 제외한 모든 계정이 잠겨있다.
여기서 풀어줄 수 있다. scott 정도는 풀어주자.

scott 을 추가해준다.


항상 해오던 루트로 실행해줄 스크립트다. 터미널을 하나 열어서 적혀있는 스크립트를 루트권한으로 실행해준다.

설치가 완료 되었다.




오라클 자동 시작/종료 설정
# vi /etc/oratab
orcl:/oracle/11g:N   <- N을 Y로 수정한다.
orcl:/oracle/11g:Y



에러처리
다음과 같은 에러가 날 것이다.

error while loading shared libraries libnnz11.so: cannot restore segment prot after reloc Permission denied

뭔가 퍼미션이 없다는 얘긴데.. 이건 SELinux를 disable 시켜주면 된다. SELinux disble 시키는 방법은

/etc/selinux/config 파일을 잘 읽어보고 고치면 된다. (모르면 구글에 검색)

또 이런 에러가 날 수도 있다.

$ ./lsnrctl start
 
LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 18-FEB-2008 19:14:37
 
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
 
Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: Message 12545 not found; No message file for product=network, facility=TNS
 TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
  TNS-00515: Message 515 not found; No message file for product=network, facility=TNS
   Linux Error: 2: No such file or directory


이런 경우는 포트가 열려있지 않은 경우니까.. 방화벽에서 1521번 포트를 열어주자.

오라클 실행과 종료
oracle 계정에서
$ lsnrctl start   <리스너 스타트>

리스너 시작 후에..

$ sqlplus /nolog
sqlplus> connect orcl as sysdba
...
sqlplus> startup

서비스 스크립트 작성

# vi /etc/init.d/oracle 
다음의 내용을 파일에 쓴다.

----------------------------------------------------------------------
#!/bin/bash
ORA_HOME="/oracle/11g/"
ORA_OWNER="oracle"
 
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
        echo "Oracle Startup: failed"
        exit 1
fi
 
case "$1" in
start)
        echo -n "Oracle Start: "
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
        touch /var/lock/subsys/oracle
        echo "OK"
        ;;
stop)
        echo -n "ORACLE Shutdown: "
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
        rm -f /var/lock/subsys/oracle
        echo "OK"
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo "Usage: $0 start|stop|restart"
        exit 1
esac
exit 0

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

사용은 /etc/rc.d/init.d/oracle start | stop | restart ~

그럼


ps. 오래전에 썼지만 최근 10g 설치 건이 있어서 검색하던 차에 몇몇 블로그에서 보이더군요.
      그것도 CCL까지 붙여서. 어처구니가 없어서 정말 -_-;


덧글

  • aJava 2008/02/19 12:33 # 삭제 답글

    warning message 중에서..

    [ /etc/sysctl.conf ]
    ...
    #kernel.sem =250 32000 32 128
    kernel.sem =250 32000 100 128

    #net.core.rmem_default = 126976
    #net.core.rmem_max = 131071
    #net.core.wmem_default = 126976
    #net.core.wmem_max = 131071

    net.core.rmem_default = 4194304
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 262144

    요거 적어주면 워닝 몇개 없어지더군요 ( 주석은 디폴트값 )

    여튼, 잘 보고 갑니다~
  • mswar 2008/04/25 23:29 # 삭제 답글

    허락도 없이 제 블로그에 담았습니다. 기분 나쁘셨다면 제 블로그에 답글 남겨 주시면 바로 삭제 하겠습니다. 좋은 자료 감사합니다.

    blog.naver.com/mswar
  • 2008/11/25 13:59 # 삭제 답글 비공개

    비공개 덧글입니다.
  • refill 2008/11/26 11:56 # 답글

    삭제까지 하실 필요는 없고.. 그저 출처만 밝혀주시면 됩니다.
  • light0a 2008/12/08 15:04 # 삭제 답글

    유익한 글 감사해요. 담아갑니다^^
  • jarlong 2009/02/02 17:37 # 삭제 답글

    존경합니다. 담아갑니다
  • nicew 2009/02/05 10:30 # 삭제 답글

    좋은 정보 감사합니다^^
  • nextho 2009/02/12 00:08 # 삭제 답글

    방화벽 포트 1521 열어주면 에러 해결된다는 부분 ...
    제가 방화벽에(iptable) 포트 추가해주고 했는데도 ... 계속 저런 에러가 납니다.
    오라클도 처음이고 리눅스도 처음이라 ... 계속 헤메고있습니다. 조언좀 부탁드립니다.
  • refill 2009/02/12 08:34 #

    에러 메시지를 보여주셔야 도와드릴 수 있을거 같네요.
  • nextho 2009/02/12 09:24 # 삭제

    LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 12-FEB-2009 09:15:43

    Copyright (c) 1991, 2007, Oracle. All rights reserved.

    Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: Message 12545 not found; No message file for product=network, facility=TNS
    TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
    TNS-00515: Message 515 not found; No message file for product=network, facility=TNS
    Linux Error: 2: No such file or directory

    -------------------------------------
    에러메시지 입니다.
    listener.ora 이파일도 뭐 수정하고 해야되나요?
  • nextho 2009/02/12 10:34 # 삭제

    오홋 ORACLE_HOME 변수가 ORACLE_home 으로 되어있어서
    저런 에러가 났었나봐요 해결했습니다. 감사합니다^^
  • refill 2009/02/12 17:03 # 답글

    해결하셨다니 다행이네요 ^^
  • basaaja 2009/09/30 18:19 # 삭제 답글

    저의 경우는


    Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: Message 12545 not found; No message file for product=network, facility=TNS
    TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
    TNS-00515: Message 515 not found; No message file for product=network, facility=TNS
    Linux Error: 2: No such file or directory

    이 에러 발생시

    환경 변수의
    ORACLE_HOME 를 /oracle 이 아니라 /home/oracle/app/oracle/product/11.2.0/dbhome_1/
    으로 잡아줘야 되던데요 .. ?

    문서에서 빠진게 아닌가요 ? 아님 제가 하다가 뭐 빼먹었을 수도 있고요 ㅎㅎ
    그래도 이거 보고 설치 성공해서 매우 감사합니다. !!
  • 이상훈 2009/10/01 16:16 # 삭제 답글



    이곳에 들러서 오라클설치에 대한 것을 다 해결할수 있었습니다.
    귀중한 노하우를 공개해 주셔서 정말 감사합니다.

    P.S. 혹시나 싶어 한말씀...
    ==> CentOS 5.3 설치하여 했는데요. 설치요구 패키지에 pdksh 라는것이 나오더라구요.
    도저히 해당 내용이 설치 되지 않아서 무시하고 했는데 일단은 잘 되었답니다.
  • 김병국 2011/01/26 10:18 # 삭제 답글

    좋은 정보 고맙습니다.
  • 호러블캣 2011/09/16 11:18 # 삭제 답글

    정말 친절하시군요. 감사합니다. ^^
댓글 입력 영역