Oracle 9.2.0 설치 (Hancom 3.0 / RedHat 9)

저도 Oracle 9i를 Linux 에 설치 하는 고생을 나름대로 해본 관계로 ^^;
설치하면서 적었던 기록을 올립니다. 참고가 되셨으면 좋겠습니다.
Configuration Tool에서 발생하는 에러는 “5. 설치”의 “9)” 단계에서 주의사항으로 적은 바 대로
하시면 에러가 발생하지 않습니다. 대신 Database Configuration은 실행이 안되므로 설치후
DBCA를 이용하여 설정하시면 됩니다.

=========================

1. 설치 Software 정보

– OS : Hancom Linux 3.0 (kernel 2.4.18-15hl) – RedHat 9과 거의 같은 것으로 사료됨.
– Java : JRE 1.3.1_09
– Database: Oracle 9i Release 2 (9.2.0)

2. Oracle9i Database 9.2.0 버전 가져오기

– 홈페이지: otn.oracle.com
– 설치 파일: lnx_920_disk1.cpio.gz, lnx_920_disk2.cpio.gz, lnx_920_disk3.cpio.gz

3. 설치 파일 풀기

$ gzip –d lnx_920_disk1.cpio.gz
$ cpio –idmv < lnx_920_disk1.cpio

나머지 두개의 파일에 대해서도 같은 작업을 수행하면 Disk1, Disk2, Disk3 디렉토리가 생긴다.

4. 설치 준비

1) J2SDK 1.3.1_09 설치 (/opt/jdk1.3.1_09)
2) Linux 시스템 Configuration 수정
/etc/rc.d/rc.local에 추가하면 된다.
여기서는 별도의 파일 /etc/rc.d/rc.local.tuning에 저장하고 rc.local에서
이 파일을 호출하게 했다.
아래 와 같이 설정 후 rc.local.tuning 실행.

$ /etc/rc.d/rc.local.tuning

#
# file system options
#

# file-max (default: 49145) (for Oracle)
echo “65536” > /proc/sys/fs/file-max
ulimit -n 65536

#
# Shared Memory (for Oracle)
#

# maximum size of shared memory (default: 33554432) -> 2GB
#echo “2147483648” > /proc/sys/kernel/shmmax
echo “4294967295” > /proc/sys/kernel/shmmax

# maximum number of shared memory segments in the entire system (default: 4096)
echo “4096” > /proc/sys/kernel/shmmni

# maximum shared memory size to use (default: 2097152)
echo “2097152” > /proc/sys/kernel/shmall

#
# Semaphores
#

# SEMMSL SEMMNS SEMOPM SEMMNI (default: 250 32000 32 128)
echo “250 32000 100 128” > /proc/sys/kernel/sem

#
# network options
#

# local port range (default: 32768 61000)
echo “1024 65000″ > /proc/sys/net/ipv4/ip_local_port_range

3) Total Memory 확인 (512MB 이상 권장)
$ grep MemTotal /proc/meminfo

4) Swap space 확인 (RAM의 2배, 최소 400M 이상)
$ /sbin/swapon –s

5) Disk space 2.5G 이상 확인
/tmp disk space 400M 이상 확인

6) file size max 설정 2G 이상 확인
$ ulimit –f

7) group 생성
“dba” group 생성.
“oper” group 생성.
“oinstall” group 생성.

8) “oracle” user 생성.
initial group: oinstall
secondary group: dba
home: /home/oracle
shell: bash

9) ~oracle/.bashrc 수정

# Environment Variables for Oracle9i
export ORACLE_BASE=”/opt/oracle”
export ORACLE_HOME=”/opt/oracle/product/9.2.0″
export ORACLE_OWNER=”oracle”
export ORACLE_SID=”ORCL”
export NLS_LANG=”AMERICAN_AMERICA.UTF8″
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=”/opt/jdk1.3.1_09/bin”:$ORACLE_HOME/bin:
$ORACLE_HOME/Apache/Apache/bin:$PATH
#export TNS_ADMIN=”/home/oracle/config/9.2.0″

# Use old Linux threads with floating stacks instead of
# the new Native POSIX Thread Library (NPTL)
export LD_ASSUME_KERNEL=”2.4.1″
export THREADS_FLAG=”native”

# CLASSPATH
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

10) binutils version 2.11.90.08-13 이상 확인

11) glibc version upgrade (2.3.2-5 권장)
$ rpm -qa |grep glibc
glibc-common-2.3.2-1
glibc-debug-2.3.2-1
glibc-kernheaders-2.4-7.20
glibc-devel-2.3.2-1
glibc-2.3.2-1
glibc-debug-static-2.3.2-1
glibc-utils-2.3.2-1
glibc-profile-2.3.2-1

note) glibc version을 2.3.2로 맞추어야 함
ftp://ftp.hancom.com/pub/HancomLinuxOS/3.1/glibc 에서 관련 파일을 모두 받아 설치함.
rpm 설치할 때 option은 “–Uvh –nodep”.

12) /usr/local/bin (또는 /opt/bin) 디렉토리를 만들고 oracle user가 실행 권한을 가지도록 함.
(이 디렉토리가 PATH에 포함되어있는지도 확인)

13) 디렉토리 생성
$ mkdir –p /opt/oracle/product/9.2.0
$ mkdir /var/opt/oracle
$ chown oracle:dba /var/opt/oracle
$ chown –R oracle:dba /opt/oracle/*
$ chmod 755 /var/opt/oracle

14) /etc/security/limits.conf 수정

아래 내용을 추가
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

15) GUI (X-Window) 사용이 가능한 터미널에서 설치 작업을 수행한다.

16) Swing application (Oracle Universal Installer)에서 한글 폰트를 사용할 수 있도록 설정한다.
(한글 폰트 설정을 하지않으면 OUI에서 한글이 깨져 보이므로 설치를 진행할 수 없다)

OUI에서 사용하는 JRE는 Disk1 디렉토리에 들어있다.
/home/oracle/Disk1/stage/Components/oracle.swd.jre/1.3.1.0.0/1/DataFiles/Expanded/jre/linux/lib/
디렉토리에 font.properties.ko를 만들고, 이 디렉토리 아래 fonts 디렉토리에 한글 폰트
(백묵폰트)를 복사하고 fonts.dir 파일을 수정하였다.

5. 설치

1) oracle 계정으로 log-in
2) ~oracle/Disk1/runInstaller 실행.
Oracle Universal Installer 화면이 나타나면 Next를 누르고 설치 단계에 따라 적절한 설정 값을 넣어가며 설치를 진행한다.

3) Inventory Location: /opt/oracle/oraInventory
4) Unix Group Name: dba
5) orainstRoot.sh을 실행하라는 pop-up window가 나타나면 다른 terminal을 열어 orainstRoot.sh을 실행한다.
(만일 실행 도중 /etc/oraInst.loc 파일을 만들 수 없다는 error가 나오면 root 권한 으로 “touch /etc/oraInst.loc” 하여 파일을 만들어주고 oraInst.loc의 owner를 oracle:dba로 만든후, orainstRoot.sh을 다시 실행한다.)

6) Oracle Home Name: OUIHome
Oracle Home Path: /opt/oracle/product/9.2.0

7) Select Product: Oracle9i Database
8) Installation Type: Enterprise Edition
9) Database Configuration: General Purpose
(주의) 만약 “Software Only”라는 항목이 있으면 그것을 선택한다.
뒤에 나오는 Configuration Tools 단계에서 Database Configuration을 하지 않고 넘어가게 한다.
Database Configuration은 설치 후 DBCA를 이용하여 수동으로 설정한다.
(Software Only를 선택하면 아래 10) ~ 12) 단계는 거치지 않는다)

10) Database Identification:
Global Database Name: ORCL.strobus.com
SID: ORCL

11) Database File Location: /opt/oracle/oradata
12) Database Character Set: AL32UTF8 (Unicode)

13) Error 발생

“Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk”

다른 터미널을 열어서 $ORACLE_HOME/ctx/lib/env_ctx.mk 파일을 편집한다.
INSO_LINK를 찾아 $(LDLIBFLAG)dl 을 추가한다.

INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca
$(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut
$(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,
-rpath,$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS)

다시 Error window로 돌아와서 Retry버튼을 누르면 설치를 계속한다.

14) Setup Privileges:
root 권한으로 root.sh을 실행하라는 pop-up window가 나타나면 새 terminal을 열어서 root 권한으로 root.sh을 실행한다. 이때 bin 디렉토리로 /usr/local/bin을 지정한다.

15) Configuration Tools 화면에서 Oracle Net, Apache Web Server, Database 등의 Configuration을 진행한다. error 가 발생해도 무시한다.
16) 설치 완료 메시지가 나오면 Oracle Universal Installer를 종료한다.

6. 설치 후 작업

1) oracle 계정으로 log-in
2) $ cd $ORACLE_HOME/network/lib
$ make –f ins_net_client.mk install

3) $ORACLE_HOME/ctx/lib/ins_ctx.mk 파일 편집

ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)

를 아래와 같이 수정.

ctxhx: $(CTXHXOBJ)
$(LINK) –ldl $(CTXHXOBJ) $(INSO_LINK)

$ make –f $ORACLE_HOME/ctx/lib/ins_ctx.mk install

7. Database 생성

DBCA (Database Configuration Assistant)를 이용하여 ORCL Database를 생성한다.

1) $ORACLE_HOME/bin/dbca 수정

if [ -f /etc/rac_on ]; then
# Run DBCA
$JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m
-classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
else
# Run DBCA
$JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m
-classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
fi

2) $ORACLE_BASE/oradata 디렉토리를 만들어준다.
3) $ORACLE_HOME/bin/dbca 실행
Welcome 화면이 나오면 Next.

4) Operations: Create Database
5) Database Templates: New Database
6) Database Identification
Global Database Name: ORCL.strobus.com
SID: ORCL
7) Database Options: Next
8) Database Connection Options: Dedicated Server Mode
9) Initialization Parameters
Database Character Set: KO16KSC5601
National Character Set: AL16UTF16
10) Database Storage: Next
11) Creation Options: “Generate Database” 선택하여 Database를 생성한다.
“Generate Database” 대신 “Generate Database Creation Scripts” 선택하여 /opt/oracle/admin/ORCL/scripts 디렉토리에 Database 생성 스크립트를 만들어 수동으로 Database를 만드는 경우 아래 12) ~ 14) 단계를 수행한다.
Finish 버튼 누름.
12) 스크립트를 생성하여 수동 설정을 선택한 경우: DBCA 종료 후 /opt/oracle/admin/ORCL/scripts/ORCL.sh 파일 수정.
setenv ORACLE_SID ORCL을 export ORACLE_SID=ORCL로 수정.
13) /etc/oratab 수정 (다음 항목 추가)
ORCL:/opt/oracle/product/9.2.0:Y
14) /opt/oracle/admin/ORCL/scripts/ORCL.sh 실행.

8. Starting and Stopping the Database

1) Start

$ su – oracle
$ lsnrctl start
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 – Production on ?et Svi 29 13:52:34 2003

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 93393176 bytes
Fixed Size 450840 bytes
Variable Size 75497472 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 – Production

2) Shut down

$ su – oracle
$ lsnrctl stop
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 – Production on ?et Svi 29 13:55:32 2003

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 – Production

9. SYS 및 SYSTEM User Password 변경

1) $ sqlplus /nolog
2) SQL> connect SYS/change_on_install as sysdba
3) SQL> ALTER USER username IDENTIFIED BY passwd ACCOUNT UNLOCK;

10. 샘플 스키마 설치

1) scott User 생성
$ sqlplus system/*****

SQL> create user scott identified by tiger
2 default tablespace users
3 temporary tablespace temp;

User created.

SQL> grant connect , resource to scott;
Grant succeeded.

2) sample table 설치
$ORACL_HOME/sqlplus/demo 디렉토리에 sample 테이블 설치를 위한 sql 파일 있음.

$ sqlplus scott/tiger

SQL>@?/sqlplus/demo/demobld
Building demonstration tables. Please wait.

Demonstration table build is complete.

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.2.0 – Production
With the Partitioning option
JServer Release 9.2.0.2.0 – Production

정상적으로 설치된 경우 마지막에 sqlplus를 종료함. 다시 scott 유저로 접속한 다음 아래의 명령으로 어떤 테이블이 생성되었는지 확인.

$ sqlplus scott/tiger

SQL> select * from tab;

TNAME TABTYPE CLUSTERID
————- ——— ————-
BONUS TABLE
DEPT TABLE
DUMMY TABLE
EMP TABLE
SALGRADE TABLE

* 참고: Installing Oracle 9iR2 on Red Hat 9
Oracle9i Quick Installation Procedure Release 1 (9.0.1) for Linux Intel
Oracle9i Release Notes Release 2 (9.2.0.4.0) for Linux x86