Red Hat Linux 9 + ORACLE9ir2 설치

1. Linux용 Oracle9i의 요구사항 확인
최소메모리 : 512 MB RAM 이상
# grep MemTotal /proc/meminfo

스왑 공간 : 일반적으로 RAM 용량의 1배나 최소한 400MB RAM 이상
# /sbin/swapon –s

CD-ROM 드라이브 : ISO9660 포맷을 지원하는 CD-ROM
디스크 공간 : 오라클 9I 소프트웨어 전체를 설치하기 위해 최소 2.5GB가 필요하며, 데이터베이스를 위해서는 1GB가 추가로 필요하다.
# df –k

임시 디스크 공간 : tmp directory에 최소한 400MB의 Free 영역이 필요하다. 
400MB의 용량이 되지 않을 경우에는 오라클 사용자 환경변수 TEMP 와 시스템 전역변수 TMPDIR가 다른 파일시스템에 생성될 수 있다.
# env | grep TEMP
# env | grep TMPDIR

OS : SUSE Linux 7.1이상, Linux Kernel 2.4.4 이상, GNU C lib 2.2
# uname –r
# rpm –qa | grep glibc

JAVA : JRE – Sun JRE 1.3.1 / JDK – Sun JDK 1.3.1 / blackdown 1.1.8_v3 이상

 


2. 공유 메모리 설정
** 오라클사가 제공한 커널 파라미터 값에 대한 권고값 **

파라미터    권장값      설명
SEMMNI      100         시스템 내 세마포어 셋의 최대 개수, 동시에 사용될 수 있는 세마포어의 최대 개수를 결정한다.
SEMMNS      256         시스템 내 세마포어 전체 개수
SEMMSL      100         한 개의 세마포어 셋에 존재할 수 있는 세마포어의 최대개수. 
                        오라클 프로세스의 최대개수에 10개정도를 더한 값으로 설정한다. (오라클 initSID.ora 파일 내의 processes 파라미터)
SEMOPM      100         시스템 내 semop를 호출할 때마다 operation의 최대 개수
SEMVMX      32767       세마포어의 최대값을 결정한다.
SHMMAX      2147483648  한 개의 공유 메모리 세그먼트의 최대 크기 (단위: 바이트)
SHMMIN      1           한 개의 공유 메모리 세그먼트의 최소 크기 (단위: 바이트)
SHMMNI      100         공유 메모리 세그먼트의 최대 개수
SHMSEG      4096        한 개의 프로세스에 연결될 수 있는 공유 메모리 세그먼트의 최대값

** 공유 메모리와 세마포어의 개수 알아보기** 
원래 공유메모리와 세마포어를 변경한 값을 적용하여 커널을 재컴파일 해야하지만 
여건이 되지 않는 (필자도 커널 재컴파일 여건이 안된다.) 경우 소프트웨어적으로 
공유메모리와 세마포어를 변경할 수 있다.

# vi /etc/sysctl.conf
가장 마지막에 다음을 추가합니다.
kernel.shmmax = 2147483648
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range=1024 65000

시스템 리소스를 제한하는 설정파일에 다음을 추가한다.

# vi /etc/security/limits.conf
가장 마지막에 다음을 추가합니다.
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

 


3. 오라클 계정 설정
오라클은 오라클 DB 관리를 위한 별도의 계정과 그룹을 필요로 한다. 
oracle 계정과 dba 그룹인데, 시스템 명령을 이용해서 계정과 그룹을 생성하도록 하자. 
# adduser oracle
# passwd oracle
passwd oracle 
Changing password for user oracle
New UNIX password:
...
# groupadd dba
    
oracle 은 기본적으로 dba 그룹에 포함되어 있어야 함으로 /etc/group 파일을 편집해서 dba 그룹에 oracle 를 포함시켜주도록 하자. 
# vi /etc/group
dba:x:561:oracle
 
이제 오라클 계정이 생성되었으니 oracle 유저로 로그인한다음에 계정 설정이 제대로 되어있는지 확인을 해보도록 한다. 
# su - oracle
# groups
oracle dba

oracle 계정이 생성되고 dba 그룹에 소속되어 있음을 확인할수 있다. 

 


4. 환경변수 설정
오라클을 제대로 설치하고 운용하기 위해서는 몇가지 설정해주어야할 환경변수 값이 있다.
다음과 같이 oracle 계정 환경변수 값으로 .bash_profile 에 정의한다. 

ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/9ir2
ORACLE_OWNER=oracle
ORACLE_SID=ORA92
NLS_LANG=AMERICAN_AMERICA.UTF8
LANG=ko_KR.eucKR
TNS_ADMIN=$ORACLE_HOME/network/admin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_OWNER TNS_ADMIN LD_LIBRARY_PATH LANG NLS_LANG

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export PATH    
export LD_ASSUME_KERNEL=2.4.1
export THREADS_FLAG=native

ORACLE_BASE 이 값은 오라클이 설치될 루트디렉토리를 말한다. 
이것은 설치자가 설정하기 나름이니, 자신의 시스템 상황을 고려해서 적당한 디렉토리에 적당한 이름으로 지정하도록 하자.
여기서는 /oracle 로 정했다. 

ORACLE_HOME 은 실제 오라클 제품이 설치될 디렉토리이다. 
ORACLE_OWNER 와 ORACLE_SID 는 오라클 관리 계정의 이름이다. 
NLS_LANG 는 사용될언어이다.
LANG 는 C 로 지정을 해놓기를 바란다 그렇지 않으면 오라클 설치중 몇군데에서 한글 메시지가 깨져서 나온다. 
그밖에 오라클라이브러리(LD_LIBRARY_PATH)와 오라클 설치후 실행파일이 놓일 디렉토리 위치(PATH)를 지정해주도록 한다. 


** 오라클 환경 설정 항목과 그에 대한 설명 **

설정 이름           설정 설명
ORACLE_BASE         오라클 설치 프로그램인 OUI를 저장하고 오라클 트레이스 파일 및 데이터 파일을 저장하는 디렉토리의 이름을 기록하는 오라클 환경변수 명이다.
ORACLE_HOME         현재 설치하고자 하는 오라클 데이터베이스 서버를 저장할 디렉토리명을 기록한다.
ORACLE_OWNER        오라클 제품을 컴트롤할 OS 시스템 레벨의 유저가 누구인가를 설정하는 오라클 환경변수로, 앞 단락에서 생성한 oracle 사용자를 지정한다.
LD_LIBRARY_PATH     오라클 제품을 사용할 때 사용되는 오라클 공유 라이브러리들의 경로를 나타낸다. 반드시 $ORACLE_HOME/lib를 포함하여 설정한다./
ORACLE_SID          오라클 서버 인스턴스의 이름인 Oracle System Identifier(SID)를 설정한다. 하나의 하드웨어에 여러 개의 데이터베이스 인스턴스가 존재할 수 있지만, SID는 개별 인스턴스에 대해 유일한 이름으로 명명되어야 한다.
PATH                $ORACLE_HOME/bin을 포함하여 설정한다.
NLS_LANG            오라클 데이터베이스의 문자 셋을 설정한다. 여러분이 생성하게 될 데이터베이스의 문자셋과 일치해야 한다.
TNS_ADMIN           Oracle Network를 구성할 때 필요한 설정파일의 위치를 지정하는 것으로, insterner.ora, tnsnames.ora, sqlnet.ora 파일들이 위치하고 있다.
ORA_NLS33           NLS_LANG 항목에 설정된 문자 셋대로 오라클 데이터베이스에서 각국의 언어 및 도량형을 제공하는 데 필요한 정보를 갖고 있는 파일들의 위치를 지정한다.
TEMPDIR             오라클 데이터베이스가 운영 중에 임시 파일들을 위치시킬 장소를 지정한다.
EDITOR              SQL *Plus 상에서 edit명령어를 사용했을 때 실행할 수 있는 OS 레벨의 에디터를 지칭하는 것으로, 여러분에게 익숙할 만한 pico, vi를 설정한다.
LANG                데이터베이스의 문자 셋을 결정하는 NLS_LANG과 달리, 현재 사용자의 세션에서의 문자 셋을 결정하는 시스템 환경변수이다. 필자와 같이 ko_KR.eucKR를 
                    설정하면 한글화된 시스템 메시지를 볼 수 있으며, 오라클에서 제공하는 모든 자바 툴에서 한글화 메시지를 바로 볼 수 있다.
DISPLAY             Oracle Universal Installer 등 오라클에서 제공하는 자바로 만들어진 여러 가지 툴이 구동하기 위한 X윈도우 환경을 설정하기 위한 것으로, 사용자의 서버 명이나 IP를 설정한다.
LD_ASSUME_KERNEL    KERNEL 버전을 다른것으로 보이게 하기 위한 환경 변수다.
THREADS_FLAG        JAVA의 Thread 실행과 관련이 있는 값이다.

여기까지 환경변수등을 설정하고 환경변수 적용을 위해 리부팅을 한다.
# shutdown -r now

 


5. 오라클 설치
이제 설치하는 일만 남았다. 
설치 파일을 적당한 디렉토리(여기서는 /home/oracle)에 옮기고 압축을 풀도록하자(물론 CD 로 구웠을경우에는 CD 를 마운트) 

그리고 설치하고자 하는 디렉토리(ORACLE_BASE)가 있는지 확인하고 없다면 만들어 주도록 한다. 
그리고 만들어진 디렉토리는 oracle 유저가 접근 가능해야 함으로 chown 을 이용해서 디렉토리 권한을 변경시켜주도록 한다.
# mkdir oracle
# chown oracle.dba oracle
    
이제 oracle 계정으로 변경(switch user)한다음에 오라클 인스톨 스크립트를 실행시키면 된다.
그런데 오라클 인스톨 프로그램은 X 터미널상에서 실행시켜야 함으로 oracle 유저에게 X 터미널 권한을 줘야 한다.    
이건 root권한으로 한다
# xhost +localhost
localhost being added to access control list
 
이제 oracle 계정으로 변경한다음 오라클 설치 디렉토리로 이동해서 설치 스크립트를 작동시키도록 하자. 
여기서는 설치 파일을 /home/oracle에 압축을 풀었다.

# zcat ship_9204_disk1.cpio.gz | cpio -idmv
# zcat ship_9204_disk2.cpio.gz | cpio -idmv
# zcat ship_9204_disk3.cpio.gz | cpio -idmv

압축을 푸니까
/home/oracle/Disk1
/home/oracle/Disk2
/home/oracle/Disk3
디렉토리가 생성 되었다.

# su - oracle 
# cd /Disk1
# ./runInstaller 

    
그럼 잠시 하드디스크가 버벅댄후 아래와 같은 인스톨 화면이 뜬다. 

다음 버튼을 누르도록 한다. 그럼 설치할 디렉토리를 묻는 창이 뜬다. 대상을 눈여겨 보기 바란다. 
환경변수 ORACLE_HOME 을 제대로 세팅했다면 이미 경로가 지정되어 있을것이다. 

다음으로 넘어간다. 

이제 Unix Group Name 을 지정하라는 화면이 뜰건데, dba 를 입력하고 다음 버튼을 누른다. 
그러면 잠시후 /oracle/product/9ir2/orainstRoot.sh를 root 권한으로 실행하라는 팝업 창이 뜰것이다.
한텀을 하나 더 띄운다음 root 권한으로 위의 스크립트를 실행시켜주고 확인 버튼을 클릭한다. 

그다음은 입맛에 맞도록 설치 하면 된다.

 


6. Database 시작과 종료
① 오라클 데이터베이스 시작하기
Database 의 시작과 종료는 반드시!! Oracle 계정으로 수행해야 합니다.
# su oracle
# sqlplus /nolog
SQL> connect / as sysdba
SQL> startup

오라클 데이터베이스를 시작하고 종료하기 위해서는 OS에서의 인증과 암호 파일을 생성하는
툴인 orapwd를 통해야 한다. 그리고 sys 스키마의 권한인 sysdba 권한과 public 스키마 
권한인 sysoper 권한의 특별한 시스템 권한을 소유한 사용자이어야 한다.

sysdba : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN, MOUNT, BACKUP, CHANGE, CHARACHER SET 절의 명령어 실행

sysoper : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN, MOUNT, BACKUP 절의 명령어 실행

SQL> SELECT * FROM v$version; 현재의 오라클 데이터베이스 인스턴스의 버전 확인하기

② 오라클 데이터베이스 종료하기
# sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
SQL> exit

③ oratab 파일 편집하기
오라클 데이터베이스를 /etc/rc.d/init.d에 스크립트로 설정하여 자동으로 실행하게 하여봅시다.
# vi /etc/oratab
다음 부분을 수정 ([SID], [ORACLE_HOME], [자동실행/종료 플래그]로 구성되어 있습니다.)
ora9:/oracle/product/9ir2:N  --> ora9:/oracle/product/9ir2:Y

④ Parameter 파일 링크
xxxxxxxxxxxx은 일정치 않은 숫자 입니다.
# cp /oracle/admin/ora92/pfile/initORA92.ora.xxxxxxxxxxxx /oracle/product/9ir2/dbs/initORA92.ora
# chown oracle.oracle initORA92.ora

⑤ /etc/rc.d/init.d 에 등록하기
oracle 스크립트를 /etc/rc.d/init.d 에 복사합니다.
# cp /usr/local/src/oracle-9.2.0.4.0 /etc/rc.d/init.d/oracle

직접 스크립트 작성시에는 아래와 같이 작성한다
# vi /etc/init.d/oracle
----------------------------------------------------------------------------
#!/bin/sh
#
# Startup script for Oracle
#
# chkconfig: - 90 15
# description: Start Oracle
#
# processname: oracle
#
# Source function library.
. /etc/rc.d/init.d/functions

export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9ir2
export PATH=$PATH:$ORACLE_HOME/bin

# See how we were called.
case "$1" in
  start)
    echo ""
    echo "Starting oracle: "
    su - oracle -c "dbstart"

    echo ""
    echo "Starting TNS listener:"
    su - oracle -c "lsnrctl start"
    touch /var/lock/subsys/oracle
    echo
    ;;
  stop)
    echo ""
    echo "Shutting down TNS listener:"
    su - oracle -c "lsnrctl stop"

    echo ""
    echo "Shutting down oracle:"
    su - oracle -c "dbshut"
    rm -f /var/lock/subsys/oracle
    echo
    ;;
  restart)
    $0 stop
    sleep 2
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
----------------------------------------------------------------------------


oracle에 실행권한을 부여합니다.
# chmod 755 /etc/rc.d/init.d/oracle

시스템에 oarcle9i 데몬을 등록한다.
# chkconfig --add oracle
# chkconfig --level 2345 oracle on

Oracle Database를 재시작 시켜본 후, LISTENER 데몬이 띄워져 있는지 확인합니다.
# /etc/rc.d/init.d/oracle start
# ps ax | grep LISTENER


----------------------------------------------------------------------------
오라클 서버를 추가로 설치하고 싶다면....Database Configuration Assistant를 실행한다.

# /oracle/product/9ir2/bin/dbca