원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


오라클 9.2.0.4 설치( EntePrise AS 3.0)

1. OS 준비 세팅

1-1 필요한 파일셋

gcc-3.2.2-5
cpp-3.2.2-5
glibc-devel-2.3.2-11.9
binutils-2.13.90.0.18-9
pdksh-5.2.14-21
없는 패티키(인스톨후)-- rpm 다운후 설치한것들.
ompat-gcc-7.3-2.96.118.i386.rpm : 설치됨
compat-libgcj-7.3-2.96.118.i386.rpm  : 설치됨 (redhat 9 용)
compat-libgcj-devel-7.3-2.96.118.i386.rpm  : 설치됨 (redhat 9 용)
libncursers  : 설치 안됨
nss_db-compat-2.2-20.i386.rpm  : 설치암됨

compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3.2.96.122
compat-libstdc++-devel-7.3-2.96.122
openmotif21-2.1.30-8.i386.rpm
setarch-1.3-1

다른 것은 다 있었느나 compat-db-4.0.14.5 가 없어서 rpmfind.net에서 찾아서
설치를 했다.

1-2. 계정 및 그룹생성 시스템 설정
# groupadd dba
# adduser -g dba oracle

# vi /etc/sysctl.conf
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
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

만약 리붓팅하지 않을려면 다음과 같이한다.
# echo 250 32000 100 128 > /proc/sys/kernel/sem
# echo 536870912 > /proc/sys/kernel/shmmax
# echo 4096 > /proc/sys/kernel/shmmni
# echo 2097152 > /proc/sys/kernel/shmall
# echo 65536 > /proc/sys/fs/file-max
# echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

오라클은 최소 512MB의 메모리와 400MB의 스왑 공간을 필요로 한다. 따라서 부족하다면
임시적으로 스왑공간을 아래와 같이 만들어준다.

# dd if=/dev/zero of=tmp_swap bs=1k count=900000
# chmod 600 tmp_swap
# mkswap tmp_swap
# swapon tmp_swap

스왑해제
# swapoff tmp_swp
# rm tmp_swap

1-3 환경파일 세팅

export PS1="[\u@\h \w]"
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_OWNER=oracle
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
#export TMPDIR=$ORACLE_BASE/tmp
#export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG='AMERICAN_AMERICA.KO16KSC5601'
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORAClE_HOME
/oracm/lib:/lib:/usr/lib:/usr/local/lib
export LD_ASSUME_KERNEL=2.4.21(여기서 이것은 커널 버전에 맞게 설정을 한다.)
export THREADS_FLAG=native
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/oracm/bin:
/usr/java/jre1.3.1_16/bin(이것은 꼭있어야 될지 모르겠지만 설치한 자바 패스를 설정)
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:
$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

참고로 LANG 은 설정하지 않는다.

2. 프로그램 다운 로드 및 설치

2-1. 프로그램 다운 및 압축풀기

http://otn.oracle.com/software/products/oracle9i/htdocs/linuxsoft.html
적당한곳에 3개의 파일을 받아 압축을 푼다.
# zcat lnx_920_disk1.cpio.gz | cpio -idmv <-- http로 받지 않았을 때
# gunzip  < lnx_920_disk1.cpio.gz.cpio.gz <-- http로 받았을 때
# cpio -idmv < lnx_920_disk1.cpio.gz.cpio.gz

2-2 설치전 확인 사항

jre 1.3.1을 받아서 설치를 한다.

runinstaller을 실행 시키면 아래와 같은 에러가 생길 경우
$ ./runInstaller
$ Initializing Java Virtual Machine from /tmp/OraInstall2003-04-13_09-56-16PM/jre/bin/java. Please wait...
Error occurred during initialization of VM Unable to load native library:
/tmp/OraInstall2003-04-13_09-56-16PM/jre/lib/i386/libjava.so: symbol
__libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
Cause
Bug 3006854
Fix
Download and apply the Patch 3006854 from Metalink before starting the installation of Oracle 9.2.0.1
or 10.1.0.2 on a Red Hat Advanced Server 3.0
그래서 recommed 패치 받는곳으로가서 3006854 이 패치 아이디로 패치를 찾으니 나와서 다운을 받아서
note에서 나온대로 실행을 하고난 뒤 ./runinstaller 실행을 시키니 실행이 되었다..
(이거 알아내는데 4시간 걸림 ^^ 얼마나 기뻣는지..^^)


아래의 에러는 무시를 한다.
Font specified in font.properties not found
[--symbol-medium-r-normal--*-%d-*-*-p-*-adobe-fontspecific]

에러 때문에 oui 한글 폰트가 깨져서 나오는데 아무런 상관이 없으니 그냥 설치하면 된다

해결 ; LANG=C로 세팅을 환경파일에 세팅을 하면 된다.

2-3.설치
난 설중 아무런 에러가 안생겼지만 다른 버전에서 생기는 에러일때 해결 방법

언어설정에 korean을 추가하고 설치는 custem으로하여 +sqlplus를 체크하고 넘어간다.
설치 중 두번의 에러메세지가 나온다.
Error in invoking target install of makefile
/usr/ora9/product/9.2/network/lib/ins_oemagent.mk

위의 경우 무시하고 지나간다.

Error in invoking target install of makefile
/usr/ora9/product/9.2/ctx/lib/ins_ctx.mk
위의 경우는 X terminel을 하나 더 띄우고 oracle 계정으로 아래순서대로 실행한다.
$ cd $ORACLE_HOME/install
$ tail make.log
gcc -o ctxhx -L/opt/ora9/product/9.2/ctx/lib/ -L/opt/ora9/product/9.2/lib/
-L/opt/ora9/product/9.2/lib/stubs/ /opt/ora9/product/9.2/ctx/lib/ctxhx.o
-L/opt/ora9/product/9.2/ctx/lib/ -lm -lsc_ca -lsc_fa -lsc_ex -lsc_da -lsc_ut
-lsc_ch -lsc_fi -lctxhx -lc -Wl,-rpath,/opt/ora9/product/9.2/ctx/lib -lnls9
-lcore9 -lnls9 -lcore9 -lnls9 -lxml9 -lcore9 -lunls9 -lnls9

긁어 붙인다음 -ldl 을 추가한 후 엔터한다.

100% 설치후 루트권한으로 아래 명령을 실행시키라는 메세지가 뜬다.
/home/oracle/product/9.2.0.1/root.sh


참고 )
한가지 더 설정한것이 있는데 이것은 없어도 될것 같지만 아래에 적어 놓는다
# mv /usr/bin/gcc /usr/bin/gcc323
# mv /usr/bin/g++ /usr/bin/g++323

Create symbolic links.
# ln -s /usr/bin/gcc296 /usr/bin/gcc
# ln -s /usr/bin/g++296 /usr/bin/g++
참고)패치 3006854(root사용자에서 스크립트을 실행 하기만 하면 된다.)


USER=`whoami`
if [ $USER != root ]; then
  echo "Must be root to run this script, please login as root and re-try"
  exit
fi

# see if libcwait.so is already being loaded
if [ -f "/etc/ld.so.preload" ] && [ -n "`grep libcwait /etc/ld.so.preload`" ]; then
  echo "Patch has already been applied"
  exit
else
  echo "Applying patch..."
fi

cat << EOF |
#include <errno.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <sys/wait.h>
pid_t
__libc_wait (int *status)
{
  int res;
  asm volatile ("pushl %%ebx\n\t"
          "movl %2, %%ebx\n\t"
          "movl %1, %%eax\n\t"
          "int \$0x80\n\t"
          "popl %%ebx"
          : "=a" (res)
          : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0), "S" (0));
  return res;
}
EOF
gcc -O2 -shared -fpic -xc - -o /etc/libcwait.so
# Check we built libcwait.so
if [ -f "/etc/libcwait.so" ]; then
  echo "/etc/libcwait.so" >>/etc/ld.so.preload
  echo "Ensuring permissions are correctly set..."
chown root.root /etc/libcwait.so /etc/ld.so.preload
  chmod 755 /etc/libcwait.so
  chmod 444 /etc/ld.so.preload
  echo "Done."
  echo "Patch successfully applied"
else
  echo "Patch installation failed, Please fix errors and try again."
fi

참고) 한글폰트 꺠지는 경우
2-1) JDK 1.1.8 의 설치



http://www.blackdown.org 에서 다운로드 받은 jdk118_v3-glibc-2.1.3.tar.gz2을 설치한다. 이때 해당 파일은 /usr/local 에 있다고 가정한다.



user> su - root

root> cd /usr/local

root> bunzip2 jdk118_v3-glibc-2.1.3.tar.gz2

root> tar xvfz jdk118_v3-glibc-2.1.3.tar

root> ln -s /usr/local/jdk118_v3 /usr/local/java

export LD_ASSUME_KERNEL=2.2.5

그럼 잘 되네요...

^^;
번호 제목 글쓴이 날짜 조회 수
55 캐릭터셋 확인하는 쿼리 조인상 2010.05.12 8158
54 v$datafile 의 status 에 recover로 표시되는 경우 조인상 2010.05.12 10021
53 NT기반 오라클환경에서 OS 다시 깔았을때 복구방법 조인상 2010.05.12 9186
52 AIO 문제때문에 오라클 실행안될때 조인상 2010.05.12 9702
51 제약조건 이름은 아는데 테이블을 모를경우 찾는 스크립트 조인상 2010.05.12 8475
50 오라클 온라인백업스크립트 구성 예 조인상 2010.05.12 7475
49 Oracle Library Cache and Dictionary Cache 조인상 2010.05.12 8883
48 오라클 인덱스 분리해서 임포트 하는 방법 조인상 2010.05.12 6669
47 오라클 hotbackup 스크립트 조인상 2010.05.12 9616
46 오라클 삭제하는 방법 조인상 2010.05.12 14186
45 AIX 64bit - oracle 10.2.0.1 설치 file 조인상 2010.05.12 12786
44 오라클 홈디렉토리 변경 ( /oracle_backup => /oracle ) 조인상 2010.05.12 11961
» Linux 32bit ( EntePrise AS 3.0) - 오라클 9.2.0.4 설치 조인상 2010.05.12 7364
42 INCREMENTAL, CUMULATIVE, COMPLETE EXPORT & IMPORT 조인상 2010.05.12 7177
41 오라클 cold 백업 스크립트(특정데이터파일만 추출) NT용 file 조인상 2010.05.12 9245
40 TNS-12540: TNS:internal limit restriction exceeded 조인상 2010.05.12 9340
39 테이블 컬럼의 데이터타입 변경 조인상 2010.05.12 14426
38 테이블의 특정 컬럼에 걸려있는 제약 조건의 확인 조인상 2010.05.12 8006
37 테이블 복구 사례 조인상 2010.05.12 6860
36 Oracle Flashback 복구 조인상 2010.05.12 8020
서버에 요청 중입니다. 잠시만 기다려 주십시오...