[정보] redhat 7.3 에 Oracle 8i 설치하기

문태준의 이미지

** 아래에는 redhat 9에 oracle 8i 설치하는 것과 관련되어 자료가 있는데 glibc 문제에 부딪치지 않나요? 그리고 make 중간에 에러나오는 것은 해결방법이 있습니다. 아뭏든 아래 내용에 나오니 참고하시기 바랍니다.

redhat 7.3 에 Oracle 8i 설치하기

작성자 : 문태준
http://tunelinux.pe.kr
http://database.sarang.net

redhat 7.x 에 오라클 8i를 설치하는 경우에는 glibc 관련한 문제로 약간의 작업이 필요하다. 그런데 기존에 나와있는 자료들은 glibc 2.1 을 받아서 임시로 gcc, ld 등을 바꾸어서 사용하므로 불편한 점이 있다. 이대신 redhat 6.2와의 호환성을 위한 compat 패키지를 이용하면 편리하다. 또한 redhat 7.3이나 8.3, redhat advanced server 에 9i를 설치하는 경우 ctx 관련하여 에러가 나는데 7.3에 8i를 설치하는데도 동일한 문제가 발생하였다. 이에 대한 내용은 왜 자료가 없는지 모르겠다.

기본적인 내용은 아래 페이지를 참고하기 바라며 오라클 설치에 대한 경험은 있다고 가정하고 필요한 부분만 이야기를 하겠다.

ㅇ 환경 : redhat 7.3 / Oracle 8i(817)

ㅇ 필요한 패키지 및 작업
- jdk-1.1.8_v3 - Blackdown Linux port of Sun's Java Development Kit : www.blackdown.org 에서 다운 받으면 된다.
내가 다운받은 것은 jdk118_v3-glibc-2.1.3.tar.bz2 이었다. 이 패키지를 설치하지 않으면 설치화면 자체가 뜨지 않았다. 설치프로그램 자체에서 glibc 2.1 용 jdk를 요구해서 그런 것 같다.
이 패키지를 /usr/local 에 풀고 /usr/local/java로 심볼릭 링크를 해주어야 설치 프로그램에서 jre 의 경로를 제대로 찾을 수 있다. 이를 해주지 않으면 설치화면은 뜨지만 설치 중간에 jre 경로를 찾지 못한다는 에러가 났다. (맞나? 기억이 가물가물..)

- Red Hat Linux 6.2 compatibility packages
compat-libstdc++-6.2-2.9.0.16
compat-glibc-6.2-2.1.3.2
compat-libs-6.2-3
compat-egcs-6.2-1.1.2.16

다음은 이 패키지에 대한 rpm -qi 에 대한 설명이다.
compat-libstdc++-6.2-2.9.0.16
The compat-libstdc++ package contains compatibility Standard C++ libraries that are used by Red Hat Linux 6.2 C++ binaries and KDE 1.x C++ binaries in the current distribution.

compat-glibc-6.2-2.1.3.2
This package contains the version 2.1.3 of the GNU C library for compiling binaries that will run on Red Hat Linux 6.2 and other glibc 2.1.x Linux based systems. This package includes the runtime libraries.

compat-libs-6.2-3
This package includes a number of run-time libraries that are compiled on Red Hat Linux 6.2. This package is required if you want to do development for Red Hat Linux 6.2 and other glibc 2.1 based systems.

compat-egcs-6.2-1.1.2.16
This package includes a compiler that can be to generate binaries that will run on older Red Hat Linux systems (namely Red Hat Linux 6.2). This package includes the C compiler and required compiler libraries for those systems.

compatibility packages를 이용하면 복잡하게 이전 glibc를 받아서 임시로 옮겨서 설치하고 다시 원상복구하는 불편한 작업을 하지 않아도 된다. 얼마나 편리한가!

- glibc-2.1.3-stubs Patch from Oracle. : http://download.oracle.com/otn/linux/oracle8i/glibc-2.1.3-stubs.tar.gz 에서 받으면 된다.
이 패키지는 otn 사이트에서 받아야하며 dbassist 를 이용하여 db를 생성하기전에 패치를 실행해야 db가 생성된다.
프로그램을 풀면 나오는 README 파일에 보면 왜 패치가 필요한지 나와 있다. 설치시 실행파일들이 glibc-2.1.3에서 컴파일된 아카이브를 이용하여 링크를 해야하기 때문다. 애플리케이션 개발자의 경우 이 안에 주의사항도 들어있으므로 같이 읽어보는 것이 좋다.

=================
Patch Description
-----------------
Oracle8i for Linux is shipped with archived objects which were compiled using glibc-2.1.3. The executable components are then linked at install-time using
these archives. Due to compatibility limitations in glibc, if the target system for an installation is based on a later version of glibc, then the executables produced by the linker will not be valid. As a workaround to this limitation, we have created a set of stub libraries which are used at link-time only to mimic the contents of glibc-2.1.3 shared objects. Note that these stub libraries do not contain valid executable code, and therefore
*must NOT* be included in the library path searched by the dynamic loader (i.e., do not include $ORACLE_HOME/lib/stubs in LD_LIBRARY_PATH).

- oracle 환경파일 추가하기
export LD_ASSUME_KERNEL=2.2.5
source /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh

위의 두가지 내용을 .bash_profile 의 오라클 환경변수에 추가로 해주지 않으면 설치 프로그램이 뜨지 않는다.

# cat /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
# Run `. /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh'
# for transparent glibc 2.1.x compatibility build environment.
# Preprocessor will use glibc 2.1.x compatibility headers and
# things will be linked against glibc 2.1.x compatibility libraries.
# This will work both when linking using gcc drivers or standalone ld
# on i386 platform.
export LDEMULATION=elf_i386_glibc21 # This is so that when genclntsh runs
# ld, it first looks at /usr/i386-glibc21-linux/lib
# for libraries
export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
# This is so that the gcc driver uses
# the compatibility compiler

위 두줄은 환경설정을 바꾸어서 gcc와 ld 가 glibc 2.1.3 호환의 헤더와 라이브러리를 찾을 수 있도록 해준다.

ㅇ 설치하기
- jdk와 compatibility package 를 먼저 설치하고 오라클 환경변수를 맞추어준다.
- 이제 오라클 설치하는 매뉴얼에 따라 설치를 한다.
** Available Products 에서 8i 엔터프라이즈를 선택하고 나서 Typical을 고르면 설치가 모두 끝난 후 자동으로 demo db를 생성한다. 이것을 막으며련 Custom을 이용하는 것이 좋고 Custom을 이용하여 characterset 을 한글로 바꿀 수 있다.
- 중간에 ctx 에서 에러가 하나 발생한다. 아래의 해당 사이트를 보면 이에 대한 해결책이 나와있는데 9i에서 나오는 에러라고 하지만 redhat 7.3에 8i를 설치하는데도 발견이 되었다.
"Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk"

http://www.puschitz.com/InstallingOracle9i.shtml

Edit the file $ORACLE_HOME/ctx/lib/env_ctx.mk, go to "INSO_LINK =", and add a "$(LDLIBFLAG)dl" to the line and save it.

Here is the full line with the added "$(LDLIBFLAG)dl" flag:

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)

$(LDLIBFLAG)dl 만 추가를 해주고 다시 시도를 하면 문제가 해결된다.

ㅇ db 생성하기
- 프로그램설치가 끝나고 root.sh 를 실행하라는 메시지가 나오면 glibc-2.1.3-stubs 패치를 적용해야 한다. Typical로 설치를 하면 root.sh를 실행한 후 자동으로 demo db를 생성하므로 이 과정을 멈추도록 하거나 아니면 root.sh를 실행하기 전에 패치를 적용하면 된다.

$ tar -xvzf glibc-2.1.3-stubs.tar.gz -C $ORACLE_HOME
$ cd $ORACLE_HOME
$ ./setup_stubs.sh

** 오라클에서 추가로 제공되는 oracle patchset 을 설치한 후에도 stub-libs 패치를 다시 적용해주어야한다.

- root.sh 에 자잘한 버그들이 있다. 그런데 다른 자료들에는 이에 대한 설명이 거의 없는것을 보면 별다른 문제가 생기지는 않는 것 같다. 8i의 root.sh에 대한 버그는 아래의 suse 자료에는 설명이 되어 있다.
ftp://ftp.suse.com/pub/suse/i386/supplementary/commercial/Oracle/docs/817_sles7_install.pdf

두가지를 고치면 된다.
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'` => 원래의 root.sh는 마지막 ` 의 전에 ' 가 빠져있다. 기호를 헷갈리지 말길. `는 숫자판 1 옆에 있는 것을 말하며 '는 자판 오른쪽 가운데 있는 것을 말한다. `` 는 가운데 있는 내용을 실행한 것을 앞에 선언한 변수에서 받기 위한 용도이다.

또한가지는 RMF에 대한 설정이 두가지 있는데 하나는 "" 가 빠져있다. ""를 들어가도록 바꾸면 된다.
RMF="/bin/rm -f"

** 수세의 SLES7, SLES8에서는 glibc-2.1.3-stubs 패치만 적용하면 되어 간단하다. 또한 오라클 환경변수, init 파일 등도 rpm으로 제공하여 편리하다.

참고자료 : http://tunelinux.pe.kr/wikix/index.php?display=OracleInstall

Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.