EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 2명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·Sorting Algorithm Animation (2)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

리눅스 7.0에서 오라클 8.1.7 설치 & PRO*C사용
글쓴이: EzDoum 글쓴날: 2002년 04월 10일 오후 04:33




리눅스 7.0에서 오라클 8.1.7 설치 & PRO*C사용

사용환경
Hancom Linux release 1.2
glibc: glibc-2.2-5
Oracle 8.1.7.0.1


오라클 설치 & DB생성
위의 환경에서 DB생성(dbassist)시 에러로 인해 실패한다.
다음과 같이 조치했다.
일단, otn.oracle.com에 접속해 glibc-2.1.3-stubs.tar.gz를 다운받아서 설치한다.

[oracle@dev /down]$ echo $ORACLE_HOME
/u01/app/oracle/product/8.1.7
[oracle@dev /down]$ tar xvzf glibc-2.1.3-stubs.tar.gz -C $ORACLE_HOME
[oracle@dev /down]$ cd $ORACLE_HOME
[oracle@dev 8.1.7]$ ./setup_stubs.sh

$ORACLE_HOME/lib가 LD_LIBRARY_PATH환경변수가 포함되지 않아야 한다.
만일 /etc/ld.so.conf에 있다면, 없애고, ldconfig를 실행한다.

하지만, 자바 runtime에러로 jre가 좀비가 된다.
www.blackdown.org에서 jre1.1.8을 받는다. 오라클의 jre를 대충 보니 IBM의 것을 사용하는것 같다.

[root@dev /down]# tar xvf jre118_v3-glibc-2.1.3.tar -C /usr/local/

[oracle@dev 8.1.7]$ rm JRE
[oracle@dev 8.1.7]$ ln -s /usr/local/jre118_v3 JRE
[oracle@dev 8.1.7]$ bin/dbassist

가끔 dbassist로 DB생성이 안될때가 있다.
이럴때 미리 생성된 Seed DB를 사용하든지, 수동으로 DB를 설치해야 한다.


PRC*C 사용하기
문제는 항상 glibc의 버전에 있다.
보통 오라클은 gblic 2.1버전에서 잘 돌아간다. 하지만, 리눅스 7.0은 2.2버전을 사용하는
관계로 설정하려고 이곳저곳 마구 뒤지고 다녀도 답이 나온 곳은 없다.(-_-;)
본인도 찾다가 포기하고 직접하기로 했다.
일단 $ORACLE_HOME/precomp/admin/pcscfg.cfg 파일을 설정한다.
오라클은 8i부터 전형적으로 이 파일을 비워둔다. 즉, 아무 내용도 없는 파일이다.

[root@dev admin]# cat $ORACLE_HOME/precomp/admin/pcscfg.cfg
sys_include = ($ORACLE_HOME/precomp/syshdr,/usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/,/usr/include)
include = $ORACLE_HOME/precomp/public
include = $ORACLE_HOME/rdbms/demo
include = $ORACLE_HOME/rdbms/public
include = $ORACLE_HOME/network/public
include = $ORACLE_HOME/plsql/public
include = $ORACLE_HOME/otrace/public
ltype = short

주의할 점은 /usr/lib/gcc-lib에는 2개의 디렉토리가 있다는 것이다.

[kang@dev smsgwcs]$ l /usr/lib/gcc-lib/
합계 8
drwxr-xr-x 3 root root 4096 10월 27 2000 i386-glibc21-linux
drwxr-xr-x 3 root root 4096 2월 1 16:25 i386-redhat-linux

보통 i386-redhat-linux를 설정하기 쉬우나,(나도 처음엔 이걸로 했었다) i386-glibc21-linux로
설정해야 한다는 것이다.

바로 make는 되지 않는다.
다음과 같이 하면 컴파일시 에러메시지가 발생하지만, 컴파일하여 실행파일을 얻을 수 있다.
주의: LD_LIBRARY_PATH는 $ORACLE_HOME/lib로 되어 있어야 한다.

[kang@dev smsgwcs]$ proc test.pc
[kang@dev smsgwcs]$ make -f demo_proc.mk test
make -f /u01/app/oracle/product/8.1.7/precomp/demo/proc/demo_proc.mk OBJS=test.o EXE=test build
make[1]: 들어감 `/home/kang/work/smsgwcs' 디렉토리
cc -O3 -DPRECOMP -I. -I/u01/app/oracle/product/8.1.7/precomp/public -I/u01/app/oracle/product/8.1.7/rdbms/public -I/u01/app/oracle/product/8.1.7/rdbms/demo -I/u01/app/oracle/product/8.1.7/plsql/public -I/u01/app/oracle/product/8.1.7/network/public -DLINUX -D_GNU_SOURCE -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -c test.c
test.c: In function `main':
test.c:233: warning: return type of `main' is not `int'
cc -o test test.o -L/u01/app/oracle/product/8.1.7/lib/ -L/u01/app/oracle/product/8.1.7/lib//stubs/ -lclntsh `cat /u01/app/oracle/product/8.1.7/lib/sysliblist` -ldl -lm
/usr/bin/ld: warning: libwtc8.so, needed by /u01/app/oracle/product/8.1.7/lib//libclntsh.so, not found (try using --rpath)
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcstu'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtclkm'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcsrin'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcMerr'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcsrin0'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcsrfre'
/u01/app/oracle/product/8.1.7/lib//libclntsh.so: undefined reference to `wtcLerr'
collect2: ld returned 1 exit status
make[1]: *** [build] 오류 1
make[1]: 나감 `/home/kang/work/smsgwcs' 디렉토리
make: *** [test] 오류 2
[kang@dev smsgwcs]$ gcc -o test test.o -L$ORACLE_HOME/lib -lclntsh
[kang@dev smsgwcs]$ ./test

Connected to ORACLE as user: SCOTT

Enter employee number (0 to quit): 0


Total rows returned was 0.

G'day.


이상 허접한 설명을 마칩니다.
make의 에러메시지가 싫다면, 자신의 환경에 맞게 makefile을 만들어 쓰세요.

8.1.7에서 제가 쓰는 Makefile817입니다.
패치의 영향인지 runtime시 링크라이브러리를 찾지 못하더군요.
따라서 컴파일시 환경변수 LD_LIBRARY_PATH를 추가해 컴파일했습니다.



[추가사항] - 2002년 1월 21일(원래 '레드햇6.2 & 오라클8.1.5에서 PRO*C 사용'에 두었지만 이곳에도 포함)
7.1(Paran)에서는 2.91.66이 아예 존재하지 않았고, 2.96밖에 설치되어 있지 않았다.
따라서 kgcc라는 패키지를 깔아줘야 한다.
rpmfind.net에 가서 kgcc를 키워드로 검색하여 다음을 다운받아 설치했다.

kgcc-1.1.2-40.i386.html The GNU C Compiler for kernel compilation RedHat-7.0 for i386 kgcc-1.1.2-40.i386.rpm

설치하면 /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include라는 디렉토리가 생기므로
이 디렉토리를 pcscfg.cfg에 설정해준다.

물론 위에서 한 것처럼 헤더파일들의 수정을 해줘야 한다는 것을 잊지 말자.


다음은 오라클사의 패치파일에 대한 설명이다.
=================
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).

===========================================
Instructions for New Oracle8i Installations
-------------------------------------------

Install Oracle8i as usual, but choose not to create a database during install.

Once installation is complete, follow the procedure described in the
section "Instructions for Existing Installations" below. It will then
be possible to create a database.

================================================
Instructions for Existing Oracle8i Installations
------------------------------------------------

Place the tar file glibc-2.1.3-stubs.tar.gz in $ORACLE_HOME. Make sure
ORACLE_HOME is set in your environment. Then carry out the following steps:

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

You should now be able to use Oracle as usual.

================
Warning
----------------

Make sure the directory $ORACLE_HOME/lib is not listed in your
/etc/ld.so.conf. The system could potentially become unstable after applying
this patch in that case. If $ORACLE_HOME/lib is currently listed in
/etc/ld.so.conf, remove it and run ldconfig before applying this patch.

================================
Notes for Application Developers
--------------------------------

If your application does not require linking at install sites, then no
additional steps are required for your application to be compatible with
glibc or the Oracle8i client shared library after the installation of this
patch. This is true regardless of whether your application was compiled
using glibc-2.1.3 or a later version.

If your application is compiled using glibc-2.1.3 and requires linking at
install-time using the Oracle8i client shared library, then you may also
need to link your application using the stub libraries provided in this
patch. For example, an application which might typically be linked as
follows on a glibc-2.1.3 based system:

gcc -o app app.o -L$ORACLE_HOME/lib -lclntsh

should now be linked as follows on systems with a newer version of glibc,
in order to ensure compatibility:

gcc -o app app.o -L$ORACLE_HOME/lib -L$ORACLE_HOME/lib/stubs -lclntsh

If your application is compiled using a version of glibc later than 2.1.3
and requires linking at install-time using the Oracle8i client shared
library, then you must NOT link your application with the stub libraries
provided in this patch. Doing so may either cause the link to fail or the
resulting executables to be invalid.

Note that the stub libraries provided in this patch only cover the shared
objects that make up glibc. If your application must be linked at install-
time with other shared objects which were built to have dependencies on the
locally installed version of glibc (e.g., X11), then your application must
be compiled using the same version of glibc that was used by those other
components. For example, on a system with glibc-2.2, linking your
application with libX11.so will fail if you attempt to use the glibc-2.1.3
stub libraries, since libX11.so on that system will have been compiled and
linked using glibc-2.2.

================
Revision History
----------------

06-FEB-2001: added ldconfig warning to README
08-FEB-2001: added libnsl.so stub needed for OPS cm/nm
28-FEB-2001: move stub libraries from $OH/lib to $OH/lib/stubs
01-MAR-2001: added stubs for all remaining glibc libraries
14-MAR-2001: added setup_stubs.sh to simplify installation
16-MAR-2001: added patch description and notes for application developers

* 관리자 추가(EzDoum):
이 글은 여기서 (http://dbakorea.pe.kr ) 가져온 것입니다..

  • 첨부 파일: Makefile817.txt Makefile817.txt (410 Bytes)

  • 관련 링크
  • [분류: 데이터베이스 인쇄용 페이지 본문 email로 보내기 ]

    <  안녕하세요~ | 리눅스 6.2 & 오라클 8.1.5 & GCC에서 PRO*C 사용  >

    답장 쓰기
    글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

    검색
    Google

    분류
    ·공지 (6)
    ·인터넷 (87)
    ·하드웨어 (260)
    ·C/C++ (65)
    ·어셈블리 (7)
    ·리눅스 (136)
    ·리눅스 커널 (67)
    ·윈도우즈 (25)
    ·데이터베이스 (20)
    ·보안 (16)
    ·.NET (25)
    ·그래픽 (13)
    ·책소개 (42)
    ·호기심 천국 (80)
    ·잡담 (111)
    ·사랑 (3)

    전체 본문수: 963
    전체 답장수: 525


    분류 : 데이터베이스
    최근글
    최근글
    가장 많이 읽은 글
    ·The Ubiquitous B-Tree (1)
    뜨거운 감자
    ·Tkprof를 이용한 SQL Trace 실행 순서 (3)

    EzDoum투표
    이지도움 어때요?
    이게 뭐야. 다시 안올란다. --;
    아이 좋아라~ +_+;
    관심없다.
    먼가는 있는거 같은데 뭐하는 곳이지?
    기타 (자유게시판에 글로 남겨 주세요)
    [ 결과 | 투표 ]

    랜덤 링크
    http://kldp.net


     Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
     Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum