5. 패치
runInstaller를 실행시 위와같은 에러메시지가 날때 패치를 해줘야 한다.
Error occurred during initialization of VM
Unable to load native library: /tmp/OraInstall2003-10-25_03-14-57PM/jre/lib/i386/libjava.so:
    symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

# su - root
# unzip p3006854_9204_LINUX.zip
Archive:  p3006854_9204_LINUX.zip
   creating: 3006854/
  inflating: 3006854/rhel3_pre_install.sh
  inflating: 3006854/README.txt

#
cd 3006854
# sh rhel3_pre_install.sh
Applying patch...
Patch successfully applied


-- Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
resolve

root# xhost +
oracle$ export DISPLAY=:0.0
oracle$ xclock

Fedora 8에서 Oracle 9i 설치하기

카테고리 없음 2008. 6. 19. 11:47 posted by 이한비

1. root로 로그인하여 oracle 사용자 계정을 만들고 dba 그룹에 포함시킨다.


   $ su -
   # groupadd dba
   # useradd -g dba oracle

   # passwd oracle


2. 시스템 파라메터 추가.


   /etc/sysctl.conf 파일에 다음 항목을 추가한다.


   kernel.sem = 250 32000 100 128
   kernel.shmmax = 2147483648
   kernel.shmmni = 128
   kernel.shmall = 2097152
   kernel.msgmnb = 65536
   kernel.msgmni = 2878
   fs.file-max = 65536
   net.ipv4.ip_local_port_range = 1024 65000


   /etc/sysctl.conf 파일을 변경하였으면 다음과 같이 sysctl -p 명령을 실행하거나 시스템을 리부팅해야만 한다.


   # sysctl -p


   /etc/security/limits.conf 파일에 다음 항목을 추가한다.

    oracle        soft     nporc          2047
    oracle        hard    nporc          16384
    oracle        soft     nofile          1024
    oracle        hard    nofile          65536

3. oracle 사용자로 로그온하여, Oracle 환경 변수를 설정

   /home/oracle/.bash_profile 파일에 다음 항목을 추가한다.


   export ORACLE_BASE=/opt/oracle
   export ORACLE_HOME=$ORACLE_BASE/920
   export ORACLE_SID=DBA
   export LD_LIBRARY_PATH=$ORACLE_HOME/lib
   export ORACLE_OEM_JAVARUNTIME=/usr/java/jre1.3.1_19
   export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME
   export ORACLE_OWNER=oracle


* ORACLE_BASE에 설정한 디렉토리는 임의로 변경해서 사용해도 된다.
* ORACLE_SID 는 자신이 하고 싶은 이름으로 설정하면 된다.
* ORACLE_OWNER=oracle  여기서 oracle은 1번에서 생성한 게정을 써준다.


   .bash_profile을 저장하고 새 환경 변수를 로드한다.

   
    $ cd /home/oracle
    $ . .bash_profile


4. Oracle 기본 디렉터리를 생성한다.


    $ su -
    # cd /opt
    # mkdir oracle
    # chown oracle:dba oracle


다운로드 및 설치
================


1. rpm 패키지를 다운로드하고 설치한다.


   필요한 패키지가 설치되어 있는지 확인하는 방법은 다음과 같다.


   $ su -

   # rpm -q binutils compat-libgcc-296 compat-libstdc++-296 compat-libstdc++-33 \
    cpp gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel \
    libgcc libstdc++ libstdc++-devel make openmotif21 setarch libXp

    * 위에서 패키지를 검사를 해서 설치 되지 않은것만 밑에 처럼 yum install을 이용해서 설치한다.


   이번에는 간단하게 yum을 이용하여 패키지를 설치하였다.

   # yum install cpp  (대부분 설치되어 있으며, 이미 설치되어 있는 경우, 실행 할 필요 없습니다.)

   # yum install gcc  (glibc-headers와 glibc-devel 패키지가 같이 설치됩니다.)

   # yum install compat-libgcc-296

   # yum install compat-libstdc++-33

   # yum install compat-libstdc++-296


   compat-gcc는 반드시 compat-gcc-7.3-2.96.126.i386.rpm으로 설치해야 한다.
   만약, 2.96 버전이 아닌 3.X 버전이 설치되어 있는 경우, 다음과 같이 패키지를 삭제한다.


   # rpm -e compat-gcc


   다음 링크에서 compat-gcc 패키지를 다운로드한다.

   http://download.fedora.redhat.com/pub/fedora/linux/core/2/i386/os/Fedora/RPMS/compat-gcc-7.3-2.96.126.i386.rpm

   다운로드 한 패키지를 설치한다.


   # rpm -ivh compat-gcc-7.3-2.96.126.i386.rpm
 
   GCC4 컴파일러를 GCC2 컴파일러로 교체한다.


   # cd /usr/bin
   # mv ./gcc ./gcc4
   # mv ./gcc296 ./gcc


2. JRE를 다운로드하고, 설치한다.


   썬 웹사이트(http://java.sun.com/j2se/1.3/download.html)에서 j2re1.3.1_11 또는 그 이상(j2re1.3.1_XX)의 버전을 다운로드한다.
   여기서는 j2re-1_3_1_20-linux-i586.bin을 사용했다.

   # chmod +x j2re-1_3_1_20-linux-i586.bin

   # ./j2re-1_3_1_20-linux-i586.bin
   # mv jre1.3.1_20 /opt/

   * 굳이 mv를 사용해서 jre1.3.1_20을 옮기지 않아도 된다.

3. 오라클 웹사이트(http://otn.oracle.com/kr)에서 오라클 소프트웨어를 다운로드하고 압축을 해제한다.


   $ gunzip ship_9204_linux_disk1.cpio.gz
   $ gunzip ship_9204_linux_disk2.cpio.gz
   $ gunzip ship_9204_linux_disk3.cpio.gz

   $ cpio -idmv < ship_9204_linux_disk1.cpio
   $ cpio -idmv < ship_9204_linux_disk2.cpio
   $ cpio -idmv < ship_9204_linux_disk3.cpio


   Disk1 디렉터리의 Disk1/install/linux/oraparam.ini에서 JRE_LOCATION 변수를 변경한다.


   JRE_LOCATION=/opt/jre1.3.1_20

  * 위에서 mv를 사용해서 jre1.3.1_20을 옮기지 않았다면 /usr/java/jre1.3.1_20 이렇게 써주어야한다.


4. 오라클을 설치한다.


* 설치를 하기 전에 로그아웃을 한 다음에 oracle 계정으로 X-window로 로그인 한다.
그러면 xhost + 설정을 하지 않아도 된다.   oracle 계정으로 설치를 시작한다.

   $ cd Disk1
   $ ./runInstaller


   여기서, Universal Installer가 표시되지 않고, 다음과 같은 에러가 발생하게 된다.


   Initializing Java Virtual Machine from /tmp/OraInstall2007-02-28_09-43-30PM/jre/bin/java. Please wait...

   /tmp/OraInstall2007-02-28_09-43-30PM/jre/bin/i386/native_threads/java: error while loading shared libraries:

   libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory


   이런 경우, 다음과 같이 조치한다.


   $ su -

   # cd /usr/lib

   # ln -s libstdc++-3-libc6.2-2-2.10.0.so libstdc++-libc6.1-1.so.2


   $ cd Disk1

   $ ./runInstaller


        * 설치중간에 orainstRoot.sh 팝업이 나올시
           새창에서 su -root
          # cd /tmp
          # ./orainstRoot.sh실행
              완료후 계속 진행

        * 설치진행 100%후
          /oracle/ora92/root.sh 실행 대화상자 팝업
       $su - root
       #cd /oracle/ora92
       #./root.sh
        시스템 기본 디렉토리 물을때 엔터를 누른다.




5. Universal Installer의 설치 과정에서 링크 단계로 넘어가기 전에 다음 파일을 변경해주어야 한다.
   그렇지 않으면, 링크 단계(18%)에서 더 이상 설치는 진행되지 않고 무한 대기하게 된다.
   $ORACLE_HOME/bin/gennttab 파일(설치 과정 중, 약 20%가 넘어가면 생성된다)을 다음과 같이 변경한다.
  
   변경전
   ------
   LIB='echo ${TtoLIB} | sed 's/ /\\
   /g' | grep "^${T}:" | awk -F: '{print $2}''
   INI='echo ${TtoLIB} | sed 's/ /\\
   /g' | grep "^${T}:" | awk -F: '{print $2}''
   BAS='echo ${TtoLIB} | sed 's/ /\\
   /g' | grep "^${T}:" | awk -F: '{print $2}''


   변경후
   ------
   LIB='echo ${TtoLIB} | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}''
   INI='echo ${TtoLIB} | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}''
   BAS='echo ${TtoLIB} | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}''

* fedora core 7에서는 위에서 처럼 변경하지 않아도 설치되는것 같다. 설치가 잘 진행 된다면 변경하지 않아도 된다.

6. 링크 단계가 종료되면, 네트워크 설정, 데이터베이스 생성, 에이전트, 아파치 서버 설정 단계로 넘어가지만,

   모든 작업이 실패하게 된다.   

   네트워크 설정 및 데이터베이스 생성 작업을 다시 수행하려면 다음과 같이 설정하고 재시도한다.
   설치화면은 닫지 않고 그대로 둔다.


   $ mv $ORACLE_HOME/JRE $ORACLE_HOME/JRE.bak

   $ ln -s /opt/jre1.3.1_20 $ORACLE_HOME/JRE            <- mv로 jre를 변경하지 않았다면, /opt/jre1.3.1._20 을 /usr/java/jre1.3.1_20 으로 해야 한다. 밑에 작업도 마찬가지 이다.

   $ cd /opt/jre1.3.1_20/bin
   $ ln -s java /opt/jre1.3.1_20/bin/jre
   $ ln -s java /opt/jre1.3.1_20/bin/i386/green_threads/jre
   $ ln -s java /opt/jre1.3.1_20/bin/i386/native_threads/jre


   네트워크 설정 및 데이터베이스 생성 작업을 재시도(Retry)하여 작업을 진행한다.



* Agent configuration assistant 에러 시 조치 사항

일단은 밑에 starting http server 에러시 조치 사항을 참고하여서 http server 를 먼저 해결한 후,

설치를 종료한다. 추후에 Agent configuration assistant를 설치 할 수 있다.


아래와 같은 에러가 발생한다.

Parameter "orahome"=/home/oracle/product/9.2.0
Parameter "nodeinfo"=NO_VALUE
agnet serivce failed


* starting http server 가 실패하면 oracle 계정으로 밑에 작업을 하면 http 서버가 시작된다.

  $ ln -s /usr/lib/libgdbm.so.2.0.0 /usr/lib/libdb.so.2


설치를 종료하였다면 패치를 해야지 Agent configuration assistant 를 설치 할 수 있다.





두개의 파일을 일단 다운 받는다.



인스톨러종료후
$ agentctl start  했을시
 
DBSNMP for Linux: Version 9.2.0.4.0 - Production on 07-JAN-2004 19:11:14
 
Copyright (c) 2003 Oracle Corporation.  All rights reserved.
 
Starting Oracle Intelligent Agent.../opt/oracle/product/9.2.0/bin/dbsnmpwd: line 156:  1855 Segmentation fault      nohup $ORACLE_HOME/bin/dbsnmp $*
>>$DBSNMP_WDLOGFILE 2>&1
/opt/oracle/product/9.2.0/bin/dbsnmpwd: line 156:  1868 Segmentation fault      nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
/opt/oracle/product/9.2.0/bin/dbsnmpwd: line 156:  1880 Segmentation fault      nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1
/opt/oracle/product/9.2.0/bin/dbsnmpwd: line 156:  1892 Segmentation fault      nohup $ORACLE_HOME/bin/dbsnmp $* >>$DBSNMP_WDLOGFILE 2>&1


위와 같은 에러가 나타나게 된다.

* 일단은 인스턴스를 꼭 종료하고 패치를 해야한다.

* 인스턴스를 종료하려면 oracle 계정으로
$ sqlplus /nolog
sql> connect / as sysdba
connected.
sql> shutdown
하게 되면 인스턴스가 종료가 된다.


종류후에 다운 받은 두 파일을 압축을 푼다.

p2617419_10102_GENERIC.zip 에는 OPatch를 사용하는 방법이 나와 있다.
OPatch를 사용하여서 p3238244_9204_LINUX.zip 안에 있는 파일을 패치하는 것이다.
패치 작업은 http://freekt7.tistory.com 에서 opatch라고 검색하면 나온다.
잘 읽어보고 패치 작업을 마무리 한다.


그런 후에 oracle 계정으로
$ find $ORACLE_HOME -name "*.mk" | xargs grep -l dbsnmp
/opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk
/opt/oracle/product/9.2.0/network/lib/env_oemagent.mk
$
$ cd $ORACLE_HOME/network/lib
$ make -f ins_oemagent.mk install
$ agentctl start

agent started.

이렇게 되면 Agent configuration assistant가 설치된 것이다.




설치 후 작업
=============


1. GCC를 다시 원상복구한다.

   $ su -
   # cd /usr/bin
   # mv ./gcc ./gcc296
   # mv ./gcc4 ./gcc


2. Oracle Universal Installer의 JRE 경로를 변경한다.

   $ORACLE_BASE/oui/oraparam.ini 파일에 JRE_LOCATION 변수를 변경한다.


   JRE_LOCATION=/opt/jre1.3.1_20





TIP & TECH

- 설치로그보기 -

tail -f $ORA_HOME/app/oracle/product/orainventory/logs/installactions.log


- oracle 삭제 -

$ORACLE_HOME 디렉토리에 있는 설치화일을 전부삭제
/etc밑에 orainst.loc, oratab 삭제
/usr/local/bin/oraenv 파일삭제
/tmp디렉토리에서 관련파일삭제
elete the /etc/oratab file. If using 9iAS delete the /etc/emtab file also.
# rm /etc/oratab /etc/emtab
끝 재설치 하면됩니다.



오라클9i 부팅할때 자동으로 시작하기


먼저 오라클을 설치한 디렉터리로 가자. 나의 경우는 /opt/oracle/product/9.2.0/bin/ 인데 이곳에 dbstart 와 dbshut 가 있다. 이중 dbstart 를 vi /etc/rc.d/rc.local (리눅스의 초기부팅설정화일 DOS의 Autoexec.bat 같은 것)에 적어주면 부팅할 때 자동으로 오라클을 실행한다. 그러나 이렇게 하는 건 start만 가능할 뿐이다. 종료까지 하려면 스크립트파일을 작성해야만 한다. /etc/oratab 은 오라클을 자동 시작 기능을 사용할지 여부를 결정하는 파일이다. 디폴트 값은 No 인데 Yes로 바꿔주면 dbstart, dbshut 를 사용할 수 있다.


vi /etc/oratab 라고 쳐보자. 맨 아래에 나의 경우 SID 이름을 ora1 이라 주었기 때문에
ora1:/opt/oracle/product/9.2.0:N 이 있을 것 인데 문장 끝에 N 이 보일 것 이다. 이걸 Y로 고치자. ora1:/opt/oracle/product/9.2.0:Y 이렇게 말이다.


그 다음 SID를 위한 초기화 파일을 복사해야만 한다. 나의 SID 이름이 ora1 이므로 initora1.ora.642002224936라는 파일이 /opt/oracle/admin/ora1/pfile/ 에 존재할 것 이다. 초기화 파일명은 SID 이름에 따라 달라지는 것이다. 예로 만일 SID 를 test 로 했다면 inittest.ora.642002224936가 있을 것 이다.
/opt/oracle/admin/test/pfile/initora1.ora.642002224936 을
/opt/oracle/product/9.2.0/dbs/ 디렉터리로 initora1.ora 로 rename 해서 옮긴다.

자 이제 마지막으로
su - oracle -c /opt/oracle/product/9.2.0/bin/dbstart (오라클 시작 !)
su - oracle -c /opt/oracle/product/9.2.0/bin/lsnrctl start (리스너 시작 !)
이 라고 쳐서 실제로 가동되는지 test 해보자. (위의 내용을 /etc/rc.d/rc.local 에 입력하면 컴퓨터가 처음 부팅할 때 자동으로 오라클과 리스너를 시작한다. 단 리스너의 경우엔 스크립트에 입력할 때 따옴표로 묶어야 start 명령이 적용된다. 이렇게
su - oracle -c /opt/oracle/product/9.2.0/bin/“lsnrctl start”)

참고) 오라클 리스너 설정법
먼저 vi /etc/services를 해서 오라클을 위한 포트를 등록해준다.
Xtel 1313/tcp # French minitel
LISTENER 1521/tcp # Oracle Listener by TCP
LISTENER 1521/udp #Oracle Listener by UDP
Support 1529/tcp #GNATS, Cygnus bug tracker

위의 밑줄 친 부분을 추가해 주면 된다.

그리고 /opt/oracle/product/9.2.0/bin/에 있는 netmgr을 실행해서 리스너를 설정한다.(아마 디폴트 값이 있을 것이다. 그냥 사용해도 무방하다.) 이렇게 하면
/opt/orqacle/product/9.2.0/network/admin/ 디렉터리에 listener.ora 가 있을 것이다. 확인하라.
이 제 마지막으로 /opt/oracle/product/9.2.0/bin/에 리스너 구동 프로그램인 lsnrctl이 있다. oracle계정으로 로그인 한 후 lsnrctl start를 쳐 리스너를 시작하자. 중지할 때는 lsnrctl stop 이다. 자 이제 외부에서 접속이 가능할 것이다.
http://www.sqlgate.com 에서 sqlgate 를 구해 외부에서 시험 접속을 해보자.





* 출처 사이트 2개를 참조해서 포스팅 해 보았습니다. 자료가 많은 덕분에 다행히도 3번만에 성공했네요
    oracle 9i는 설치가 좀 까다로운것 같습니다.
   
출 처 : http://cafe.naver.com/tech2u.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=106
        http://blog.bagesoft.com/703