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
시스템 요구사항 검증
# 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 = 142
# 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
(#처리는 서버에서 해당값보다 크거나 같은 경우이다. 적다면 주석 풀고 붙여넣는다.)
변경이 완료되면
# /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를 실행해보자.

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

group name도 dba로 설정해준다.

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


자 이제 Summary 를 볼 수 있다.





다음은 패스워드 설정이다. 11g 에서는 sys / system / dbsnmp / sysman 을 제외한 모든 계정이 잠겨있다.
여기서 풀어줄 수 있다. 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 ~