강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

Oracle 8.1.7 설치 (RedHat 7.0)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle02.gif

icon04.gif <7.0 기반위에 Oracle8i R3 (8.1.7.0.0)설치를 위한 Workaround>

와우리눅스 게시판에 올라와있는 Workaround로 설치해보았으나 잘되지 않았다.

이문서는 경험에비춰 추가하였으며 원본을 원하신다면 와우리눅스로 방문해보기 바란다.

Redhat 7.0에서 Oracle8i R2 및 R3를 설치하는 것은 Default로는 불가능하다.

Oracle사에서도 Linux용 Oracle8i는 R2 (8.1.6.1.0)이 Redhat 6.2에서 설치, 운영하 는것이 최근 버전에 대한 Certification이다.

공식적으로는 위의 제목처럼 설치한다는 것은 Certify되어 있지 않기에 약간의 트릭이 필요하다.

물론 이 트릭도 Oracle사 에서는 인정하지 않겠지만...

본 Workaround는 Tom Bissett씨의 자료를 많이 참고했다.

주소는 http://jordan.fortwayne.com/oracle/ 이며 Linux 배포판별로 Oracle을 설치하는 방법들이 자세히 소개되어 있으니 한번쯤 방문해 보기 바란다.

본 Workaround가 담고 있는 주요 내용은 아래와 같다.

1) Redhat 7.0에서 glibc 2.2x의 문제

2) 와우리눅스 7.0에서 Net8 Configuration Assistant의 문제
(와우리눅스 7.0만의 문제는 아닌것 같지만 다른 배포판에서는 테스트해 보지 않았음)

3) Net8 Protocol의 compile/link 문제

이상의 내용에 대한 Workaround를 담고 있으며 문제점이나 잘 못 기술된 부분들에 대한

Comment는 이곳 게시판이나 E-mail로 질타 바랍니다.

oraman@dreamwiz.com

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

System 환경

- Linux box: 와우리눅스 7.0 KKachi pre-release

- RDBMS: Oracle8i EE Release 3 (8.1.7.0.0) for Linux

설치를 위해 필요한 것들

- 와우리눅스 7.0 X-mas pre-release

RedHat 7.0 기반으로 이루어진 한글 배포판이다. 아래의 주소에서 다운로드 받을 수 있고, 필요하다면 와우리눅스 사무실에 방문하여 직접 CD를 받을수도 있다(물론 공짜~)

http://www.wowlinux.com

- Oracle8i EE Release 3 (8.1.7.0.0)

http://technet.oracle.com에서 무료로 다운로드 받을 수 있다.
Oracle 본사에서 운영하는 Technet 사이트로 Oracle Products 및 Oracle solution 관련 정보들을

접할 수 있다. 물론 가입을 해야 하지만 무료~~~

- JDK 1.1.8

Oracle8i R3는 설치하기 이전에 JDK118이 Linux box에 미리 설치되어 있어야 한다.

http://www.blackdown.org에서 다운로드 받을 수 있으며 받아야 할 화일 이름은 jdk118_v3-glibc-2.1.3.tar.bz2 이다. root user로 다운을 받아서 /usr/local에 옮겨 놓는다.

- glibc 2.1

VA Linux System사에서 Patch용으로 사용하도록 한 SDK이다. 아래의 주소에 있다.

http://ftp.valinux.com/pub/support/hjl/glibc/sdk/2.1/i386-glibc-2.1-linux.tar.gz

icon04.gif STEP 1. JDK 1.1.8 설치

root로 작업을 하며 /usr/local에서 압축을 풀고 Link을 건다.

참고로 본 화일은 /usr/local에 있다고 가정하자.

su - root

cd /usr/local

tar xvIf jdk118_v3-glibc-2.1.3.tar.bz2

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

(cd /usr/local/java라고 키인하여 제대로 이동하는지 확인하고 다음으로 넘어가자)

icon04.gif STEP 2. glibc 2.2x를 glibc2.1로 대치

배포판 와우리눅스 7.0에 들어 있는 glibc는 2.2-5인데 Oracle8iR3는 glibc 2.1이 반드시 필요하다.
2.2에서는 Oracle DB 생성에 있어서 링크의 문제가 발생하여 제대로 DB 생성이 되지 않는다.
해서 glibc 2.2에서 사용하는 gcc, cc, ld를 glibc 2.1로 대치하는 작업이 필요하고, Oracle DB 생성 후 되돌릴 수 있다.

다운로드 받은 glibc 2.1은 /download 에 위치한다고 가정하자. 물론 root로 작업한다.

su - root

cd /

tar xfz /download/i386-glibc-2.1-linux.tar.gz

cd /usr/bin

mkdir saved

mv gcc cc ld saved

ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc

ln -s gcc cc

ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld

cd /usr/lib

mkdir saved

mv libc.so libdl.so libm.so libpthread.so saved

mv libc.a libdl.a libm.a libpthread.a saved

(위의 작업들은 순서대로 수행하고 오타가 나지 않도록 주의!!!)

icon04.gif STEP 3. Oracle8i 설치를 위한 group, user 생성 및 환경 설정

기본적으로 Oracle products을 설치하는 User와 설치된 제품을 가지고 개발하는 User는 다르다.
이번 단계에서는 설치를 위한 유저의 생성 및 환경 설정이지 개발자의 환경설정은 아님을 주지하기 바란다.

참고로 다음과 같이 정의하겠다.

Group: dba

User: ora817

Oracle SID: ora817

Oracle Home: /oracle/app/oracle/product/8.1.7

(Group, User 생성은 다른 문서를 참조 바람). 참고로 ora817 user의 .bash_profile 내용중 Oracle8iR3 관련 환경 정보는 아래와 같다.

다른 user name이라해도 환경은 가능하면 아래의 내용을 따라주기 바란다.

# groupadd -g 5000 dba

# useradd -u 5000 -g dba ora817

# passwd ora817

# chmod -R /oracle

# Environment for Oracle8i (8.1.7.0.0) Release 3

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/8.1.7

export ORACLE_OWNER=ora817

export ORACLE_SID=ora817

export TMPDIR=$ORACLE_BASE/tmp

export PATH=$PATH:/oracle/app/oracle/product/8.1.7/bin:/usr/local/java/bin:

export CLASSPATH=.:/oracle/app/oracle/product/8.1.7/jdbc/lib/classes111.zip

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG=American_America.KO16KSC5601

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export ORACLE_TERM=vt100

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export LANG=C

umask 022

mesg n

(/bin /usr/bin 및 기타 PATH는 기본적으로 설정되어 있다고 가정함)

icon04.gif STEP 4. Oracle8i 설치 I

Custom으로 설치하며 Net8이 제대로 설치되었는지까지의 과정을 살펴본다.

중간중간 중요한 부분만 설명하겠다.

1) XWindows를 ora817 user로 다시 로그인한다

(Gnome, KDE 상관 없고 Remote에서 작업을 하기 위해서는 XWin emulator가 필요하다)

2) Oracle8i를 /usr에 Copy하여 압축을 푼다.

cd /usr/Disk1

./runInstaller

3) 설치 제품은 Oracle8i Enterprise Edition 8.1.7.0.0을 선택하고, 설치 타입은 반드시 Custom으로 할 것이며 Database를 생성하겠냐는 질문에는 No라고 한다.

아직은 DB를 생성할 필요가 없다.

4) '설치 가능한 제품구성 요소'에서는 최소한의 설치를 한다.
설치하지 않겠다고 체크되는 그 모든것은 다 설치하지 않는것이 시간을 벌 수 있다.
나중에 다시 설치해야 하기 때문에... 그러나 반드시 Net8과 관련된 내용은 모두 선택해야 한다.

5) 이렇게 해서 설치과정을 진행하고 나면 'Net8 Assistant Configuration' 과정이 나타난다.

이 단계에서 새로운 Net8 Assistant 설정을 위한 Windows가 Open되어야 하지만 그렇게 되지 않는다.
메세지 내용에서 'Net8 구성:'이라는 메세지를 마지막으로 그 어떤 진행과정이 없다.
과감히 Net8 Assistant Configuration을 클릭하여 프로그램을 종료한다.

(runInstaller까지 종료한다)

icon04.gif STEP 5. Net8 Protocol 확인 및 Net8 재설치

TCP/IP관련 Net8 adapter가 제대로 설치가 되지 않는다. 확인하고 다시 Net8을 설치해야 한다.

1) Net8 Protocol의 설치 내용 확인하기 위해서는 Terminal 창에서 ora817 계정으로 adapters라고 타이핑한다.

[ora817@phonon 8.1.7]$ adapters

Installed Net8 Tranport Protocols are:

IPC

Error!!! TCP/IP is not completely installed!

Present in libntcp8, but missing from ntcontab.o...

BEQueath

Error!!! SSL is not completely installed!

Present in libntcps8, but missing from ntcontab.o...

RAW

Installed Net8 Naming Adapters are:

TNSnames.ora

OracleNames

LDAP

Hostname

(이하 생략)

위에서 보듯이 TCP/IP 프로토콜이 제대로 설치가 되지 않았다. 이는 설치과정에서 ins_names.mk에 대한 compile/link의 문제가 발생된 경우인데 재설치해야 한다.

3) runInstaller를 실행하여 Custom 설치 선택, Net8 제품을 체크하여 재설치할 수 있도록 한다.
STEP 4에서 설치하지 않은 제품도 선택이 되지만 이것들 역시 이번 과정에서는 설치하지 않도록 한다.
부연 설명하면 STEP 4를 똑같이 한번 더 수행하는 경우이다.

4) 재설치 하는 동안에 다음과 같은 Error 메세지가 보인다. '재시도'하지 말고 '무시'를 선택하여 계속 진행한다.

/oracle/app/oracle/product/8.1.7/network/lib/ins_names.mk의

install 대상을 부르는데 오류가 발생했습니다.

5) 정상적으로 재설치까 끝나면 다시 한 번 Net8이 제대로 설치되었는지 확인한다.

[ora817@phonon 8.1.7]$ adapters

Installed Net8 Tranport Protocols are:

IPC

TCP/IP

BEQueath

SSL

RAW

Installed Net8 Naming Adapters are:

TNSnames.ora

OracleNames

LDAP

Hostname

(이하생략)

위의 내용처럼 Net8 Protocol들이 정상적으로 설치되었다면 작업은 거의 끝났다.

icon04.gif STEP 6. Oracle8i 설치 II

Custom으로 설치하며 Net8이 제대로 설치되었기에 Net8만 빼고 나머지 옵션들을 설치 하면 된다.
중간중간 중요한 부분만 설명할 것이며, 과정은 STEP 4와 동일하다.

1) runInstaller 재수행

cd /usr/Disk1

./runInstaller

2) Custom 선택, '설치 가능한 제품구성 요소' 항목에서 Net8은 이미 설치되어 있기에, 그리고 link가 재대로 이루어져 있기 때문에 Net8만 빼고 나머지 필요한 설치하고자 하는 제품들을 선택 하여 설치한다.

(Net8은 반드시 재설치하지 않도록 한다)

3) 설치가 정상적으로 끝나면 종료하고 나서 ora817 user process을 확인하고 JRE관련 process들은 다 죽인다.

ps -ef|grep ora817

icon04.gif STEP 7. Listener 구성

본 과정을 생략하고 싶다면 아래에 제공된 listener.ora 및 tnsnames.ora 화일을 그대로 카피해서 사용해도 상관 없다. 물론 Directory 위치 및 SID 이름 및 Host 이름등은 자기의 것으로 수정해야 한다.

1) 리스너 구성

netca

(그러면 Net8 Configuration Assistant의 창이 새롭게 뜨고 아래 내용을 참고하여 리스너를 추가한다)

리스너명: LISTENER

TCP/IP 포트: 1521

2) 로컬 네트 서비스 이름 구성

위의 1) 과정에 이어 계속 작업을 진행하는데, 로컬 네트 서비스 이름 구성에서 아래 내용을 참고하여 구성한다.

서비스 이름: ora817

프로토콜: TCP

호스트 이름: kimhg

TCP/IP 포트: 1521

네트 서비스 이름: ora817

3) 위의 과정을 거치게 되면 listener.ora 및 tnsnames.ora가 생성되는데 참고로 그 내용은 다음과 같다.
화일들의 위치는 $ORACLE_HOME/network/admin에 있다.

확인해 보기 바란다.

# LISTENER.ORA Network Configuration File:

/oracle/app/oracle/product/8.1.7/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =

kimhg.rush.co.kr)(PORT = 1521))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /oracle/app/oracle/product/8.1.7)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = ora817)

(ORACLE_HOME = /oracle/app/oracle/product/8.1.7)

(SID_NAME = ora817)

)

)

# TNSNAMES.ORA Network Configuration File:

/oracle/app/oracle/product/8.1.7/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

ORA817 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =

kimhg.rush.co.kr)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = ora817)

)

)

INST1_HTTP =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =

kimhg.rush.co.kr)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = SHARED)

(SERVICE_NAME = ora817)

(PRESENTATION = http://admin)

)

)

4) listener 스타트

Listener가 재대로 동작하는지 확인한다.

lsnrctl start (리스너 스타트)

lsnrctl status (리스너 상태 확인)

lsnrctl stop (리스너 종료)

icon04.gif STEP 8. Oracle8i Database 생성

이제는 Oracle8i Database를 생성할 수 있게 되었다. 기존에 열려 있는 창들이 있다면 모두 닫고 JRE 관련 process도 체크하여 필요하다면 다 죽인다.
시간이 많은 사람들은 XWindows를 종료했다가 다시 접속해도 괜찮다.

1) Oracle Database Configuration Assistant 수행

새로운 터미널 창을 열어 Oracle Database Configuration Assistant를 수행한다.

cd $ORACLE_HOME/bin

dbassist

만약 여기서 dbassist가 실행이 되지 않으면

# cd /usr/Disk1/patch

# sh README.sh 를 실행후 dbassist를 실행.

2) 생성할 데이터베이스 유형 선택은 '사용자 정의'로...

3) 데이터베이스용으로 구성할 옵션 선택에서는 모두 선택해도 좋지만 생성하는데 무진장한 시간이 소요된다. 보통 Typical로 설치하게 되면 DB를 생성하는 과정이 CD에 들어있는 DB 생성 이미지를 그대로 옮겨 놓는 형태이기에 체 한시간도 걸리지 않지만 Custom으로 설치할 경우에는 새롭게 DB를 생성하기에 많은 시간이 필요하게 된다. 서너시간 정도(???)

4) 위의 과정에서 참고해야 될 정보들은 아래와 같다.

전역데이터베이스명: ora817

SID: ora817

문자집합변경

문자집합: KO16KSC5601

국가별 문자 집합: KO16KSC5601FIXED

"Change Character Set"을 눌러서 National Character Set을 "KO16KSC5601FIXED"로 설정
(오라클 메뉴얼에 따르면 NCHAR나 NVARCHAR2및 NCLOB같은 data type을 사용하기 위해 필요하다고 나옴)

5) 마지막으로 Database를 생성하는 부분에 있어서 일단은 쉘 스크립트로 저장하자.

'쉘 스크립트에 정보 저장'을 선택하여 initORA817.sh라고 저장

6) 정상적으로 저장이 되었다면 이제 단지 위의 스크립트를 수행하는 일만 남았다.

참고로 위의 스크립트는 $ORACLE_HOME/assistant/dbca에 기본적으로 저장된다.

7) 잠자리에 들기 전에 위에서 저장된 스크립트를 수행하고 Zzzz...

cd /$ORACLE_HOME/assistants/dbca

./instORA817.sh

이제 APM을 설치하시면 됩니다.

MySQL을 설치 하겠습니다

/usr/local에 있는 mysql-3.22.32.tar.gz의 압축을 풀어주고 환경설정을 합니다

[localhost@local]# tar xvzf mysql_3.22.32.tar.gz

[localhost@mysql-3.22.32]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr

[localhost@mysql-3.22.32]# make

[localhost@mysql-3.22.32]# make install

설치가 성공적으로 끝났으면

[localhost@mysql-3.22.32]# cd /usr/local/mysql/bin

mysql 기초 테이블을 생성합니다

[localhost@mysql-3.22.32]# ./mysql_install_db

mysql 데몬을 뛰어 줍니다

[localhost@mysql-3.22.32]# ./safe_mysqld &

GD를 설치 하겠습니다

/usr/local에 있는 gd-1.8.3.tar.gz의 압축을 풀어주고 설치를 합니다

[localhost@local]# tar xvzf gd_1.8.3.tar.gz

[localhost@gd-1.8.3]# make all

PHP4을 설치 하겠습니다

php4를 설치하기전에 아파치를 한번 실행 시켜 줍니다

/usr/local에 있는 apache_1.3.12.tar.gz의 압축을 풀고 실행을 합니다

[localhost@local]# tar xvzf apache_1.3.12.tar.gz

[localhost@apache_1.3.12]# ./configure --prefix=/usr/local/apache

한후 php4를 설치

/usr/local에 있는 php4.0.1pl2.tar.gz의 압축을 풀어주고 환경설정을 합니다

[localhost@local]# tar xvzf php4.0.1pl2.tar.gz

[localhost@php4.0.1pl2]# ./configure --prefix=/usr/local/php

--with-oci8=/오라클설치디렉토리(/oracle/app/oracle/product/8.1.5)

--with-apache=/usr/local/아파치설치소스디렉토리(/apache_1.3.12)

--with-mysql=/usr/local/mysql

--with-gd=/usr/local/gd-1.8.3

--enable-track-vars --enable-debug

위의 컴파일명령어를 1줄에 입력하여 엔터.

[localhost@php4.0.1pl2]# make

[localhost@php4.0.1pl2]# make install

[localhost@php4.0.1pl2]# cp php.ini.dist /usr/local/lib/php.ini

ZendOptimizer를 설치하실려면

/usr/local에 있는 ZendOptimizer-Beta4-Linux-glibc[1].0.tar.gz의 압축을 풉니다

[localhost@local]# tar xvzf

ZendOptimizer-Beta4-Linux-glibc[1].0.tar.gz

[localhost@local]# mkdir /usr/local/Zend

[localhost@local]# mkdir /usr/local/Zend/lib

[localhost@ZendOptimizer]# cp ZendOptimizer.so /usr/local/Zend/lib

[localhost@ZendOptimizer]# vi /usr/local/lib/php.ini

[Zend Optimizer]

zend_optimizer.optimization_level=7

zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"

를 맨 끝에 추가한다.

아파치 소스디렉으로 이동.

[localhost@apache_1.3.12]#./configure

--prefix=/usr/local/apache(아파치설치디렉토리)

--activate-module=src/modules/php4/libphp4.a

--enable-rule=SHARED_CORE

--enable-module=so [엔터]

위의 명령어를 1줄에 입력

[localhost@apache_1.3.12]#make [엔터]

[localhost@apache_1.3.12]#make install [엔터]

[localhost@apache]#cd conf [엔터]

httpd.conf 파일을 open

#AddType application/x-httpd-php .php

#AddType application/x-httpd-php-source .phps

라인의 주석해제.

Addtype application/x-httpd-php .php3

Addtype application/x-httpd-php .html

Addtype application/x-httpd-php .htm

라인 추가

/usr/local/lib/php.ini 파일을 열고 다음라인을 찾아 수정

.....

magic_quotes_sybase=on (수정)

.....

include_path=.:/usr/local/bin (수정)

.....

upload_tmp_dir=/tmp (추가)

.....

아파치설치디렉으로이동 /usr/local/apache/bin/apachectl 과 /etc/profile 파일을 열고 상단에

다음라인 추가

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=/oracle/app/oracle/product/8.1.7

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

export PATH=$PATH:$ORACLE_HOME/bin

export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

(위 라인은 원격DB에 접속하여 insert등을 할 경우 한글을 사용하기위함으로

DB 서버쪽의 NLS_LANG 설정과 맞추어야함)

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export ORACLE_SID=ora817

위의설정은 아파치실행시 오라클함수를 물고 들어가기위해서임(굳이 전역변수 /etc/profile에는 넣을 필요는 없지만 나의 경우엔 아파치가동시 오라클함수를 물고가지를 못해 전역변수선언해서야 PHP에서 오라클함수가 인식가능) 이상과 같이 하면 설정은 제대로 setting.

아파치 재실행 과 전역변수 실행(# source /etc/profile [엔터])

php에서 OCILogon("id","pwd",[sid]) 함수를 call 할 경우 db서버쪽에서는 [sid]부분을 생략해도 가능할지 모르나 클라이언트에서는 [sid]부분에 $ORACLE_HOME/network/admin/tnsnames.ora파일 부분의 서비스이름을 반드시 써야 함.

그전에 DB서버쪽에는 $ORACLE_HOME/network/admin/listener.ora가 가동되어있어야한다.

vi test.php

<?php

$conn=OCILogon("id","pwd",@ora817("서비스이름"));

$query='insert into 테이블명 values(값1,값2....값n)";

$stmt=OCIParse($conn,$puery);

OCIexecute($stml);

OCILogOff($conn);

?>

그전에 Table이 생성되어 있어야하며 값들중에 한글도 넣고 실행해 보시고 $sqlplus [엔터] 로 확인해 보세요.

감사합니다...

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,834 개
  • 현재 접속자 :  124 명