인생에 뜻을 세우는데 있어 늦은 때라곤 없다

WEB/DB

오라클11g 설치 (CentOS)

projin 2016. 7. 27. 10:49

문서는
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 ~

LIST