본문 바로가기

DB/Oracle

[LINUX] ORACLE 설치와 활용 - 1 (8i)


Linux Oracle 설치와 활용(Ⅰ)

이수준 (dislevel@newhuman.org)

 

     

서  론

    인터넷 서버로서의 많은 가능성을 보여주고 있는 Linux는 사실상 미묘한 문제가 있었다. Apache는 웹서버로서의 더할 나위 없는 정상의 고지에 있었고, Samba는 많은 작업들을 MS WINDOWS로부터 해방시켜 주었으며 X WINDOW는 MS의 그것과 못지 않은 많은 윈도우 매니저들로 치장되었다. 문제는 좀더 신뢰성 있는 서비스들이었고 그것은 대체로 D/B 시스템과의 밀접한 관계를 가진다. 물론 Linux에서도 아주 훌륭한(그것도 공개의) D/B 들이 존재하는데 MiniSQL이나 Postgresql등이 그것이고 MySQL같은 조금 특별한(반 공개/반 상용) 것들도 있다. 하지만, 이것들이 아무리 훌륭하다고 해도 사용자의 입장에서는 누구하나 책임져주지도, 기술지원 해주지도 않는 이러한 D/B 시스템들에 자신의 귀중한, 혹은 상업적인 목적의 자료를 담아두고 맘 편해 하는 이는 별로 없을 것이다. 그러나 지금은 여러 우여 곡절 끝에 Linux는 Oracle 을 위시한 대형 D/B시스템 업체들로부터 지원을 받게 되었다. 대형 상용 D/B시스템 업체들의 지원과 엔터프라이즈급 성능을 갖춘 커널 2.2의 발표로 인터넷 서버 시장을 넘어 이제는 국내에서도 엔터프라이즈 플랫폼으로 Linux 가 강력하게 등장하고 있다.

 

목  적

    이 글의 목적은 간단하다. 여러 D/B벤더들의 제품중에서 유독 한국에서 초강세를 보이고 있는 Oracle (server for Linux 8.0.5)를 Linux상에서 설치하는 방법과 운용 방법, 그리고 간단한 pro-c 사용법, 그리고 한참 주가를 올리고 있는 php3와의 연동을 약 3회분에 걸쳐 살펴본다. Test에 사용된 Oracle server는 정품이 아니고 Oracle Home Page에 가면 쉽게 구할 수 있는 개발자 버전임을 알려둔다.

    ◎ 시스템 요구사항

    메모리 : 활용의 목적이 아닐 경우 32메가도 가능

    스왑영역 : 일반적으로 RAM의 3배 크기의 스왑영역이 권장. 1GB이상의 RAM을 가진 
                   시스템에서는 2배 크기의 스왑영역이 권장된다.

    디스크 : 최소한 4개(At least four devices) : Oracle 소프트웨어 설치를 위해 하나, 나머지 
                세개는 OFA호환 데이터베이스를 생성하기 위해 사용된다.
                - 활용의 목적이 아닐 경우 한 개의 디스크라도 상관없다.
                - 활용의 목적이라면 최소 2개의 물리적 디스크 추천 (리눅스, 오라클 )
                - 다운로드 받은 파일과 압축을 풀고 설치할 용량으로 최소 1기가 이상이 필요하다.

    Operating System : Linux 2.0.34
    - 오라클의 리눅스 팀은 실제 2.0.33 이상이라고 한다. 
    - 필자는 참고로 국내에서 유명한 알짜 리눅스 5.2를 사용하였으며 커널은 2.0.36을 
       사용하였다.

    System Libraries : GNU C Library, version 2.0.7
    - 문서상에서는 2.0.7이상을 요구하고 있으나 오라클의 리눅스 개발 팀으로부터의 설명으로는
       실제 2.0.6이상이면 된다고 한다.
       GLIBC 2.1.x 용으로는 패치 파일이 따로 나와 있다. 아직 테스트는 해보지 못했다.

    Window Manager : 어떤 X 윈도우 시스템도 가능
    -솔라리스에서는 X-window 상에서 관리할 수 있는 svrmgrm 이 있지만 Linux에서는 현재 
      커맨드 라인 모드에서만 작동하는svrmgrl 만이 존재한다.

 

가. root 로 하여야 할일

    1. 다운로드 http://technet.oracle.com에서 오라클 리눅스를 다운 받는다.

    2. /usr/src 에 다운로드 받은 805ship.tgz 파일을 옮긴 후 /usr/src/ora에서 압축을 푼다.
       /usr/src/ora 상에 다음과 같은 파일과 디렉토리가 생성되었을 것이다.

        # ls
        DST.LST          network/           plsql/
        nlsrtl/              precomp/          RELDESC.TXT
        ocommon/       rdbms/             bin/
        oemagent/       slax/                oracore/
        sqlplus/           jdbc/                orainst/
        svrmgr/           lib/                   ord/
        unix.prd          otrace/              unixdoc/

    3. Create Mount Points
        이제 오라클을 설치할 위치를 정하는 단계이다. 여기서는 /home/oracle에 오라클을 설치
        하는 것으로 가정하겠다. 이 위치에 오라클을 설치할 하드 디스크 파티션을 마운트 시켜야
        한다. 
    - 대부분의 사용자가 하나의 파티션에 리눅스를 설치할 것이다. 그렇지만 만일 두개 이상의 
       하드디스크 파티션을 이용할 것이라면 /etc/fstab의 내용을 적합하게 고쳐야 한다.
       각 파티션의 내용을 다음에 설명하도록 하겠다.

    4. DBA group 생성
       /etc/group 파일에 dba라는 그룹을 생성한다.

       # groupadd dba 
       혹은 직접 vi edit로 /etc/group을 편집할 수도 있다.

    5. 리눅스 커널 설정
        오라클8 서버의 SGA 구조를 수용하기 위해 리눅스 커널의 Interprocess Communication
        (IPC) 파라메터들을 설정해야 한다. 시스템이 SGA를 수용하기에 충분한 shared 메모리를 
        가지지 않았다면 데이터베이스를 실행할 수 없을 것이다.

    다음에 상응하는 커널 파라메터를 설정한다.

    maximum size of a shared memory segment(SHMMAX) 
    maximum number of shared memory segments in the system(SHMMNI)
    maximum number of shared memory segments a user process can attatch(SHMSEG)
    maximum amount of shared memory that can be allocated system-wide(SHMMNS)
    SHMMAX*SHMSEG에 의해 허용되는 전체 shred 메모리 크기가 결정된다.

    ㄱ) SHMMAX = 4294967295 : 단일 공유 메모리 세그먼트의 최대크기(바이트단위) 
    ㄴ) SHMMIN = 1 : 단일 공유메모리 세그먼트의 최소크기(바이트)
    ㄷ) SHMIMNI = 100 : 공유메모리 지시자(identifiers)의 갯수
    ㄹ) SHMSEG = 10 : 각 프로세스에 부여될 수 있는 공유메모리 세그먼드의 최대 갯수
    ㅁ) SEMMNS = 200 : 시스템 내의 세마포어 갯수
    ㅂ) SEMMNI = 70 : 세마포어 지시자(identifiers)의 갯수. SEMMNI은  동시에 생성될 수 있는
                               세마포어 갯수를 결정한다.
    ㅅ) SEMMSL = PROCESSES 초기화 파라메터의 값과 같거나 크도록, 하나의 세마포어 안에 
                                            존재할 수 있는 세마포어들의 최대 갯수. 
                                            오라클 프로세스들의 최대 갯수와 같아야 한다.

    솔라리스의 경우에는 다음의 값들을 /etc/system 파일에서 설정해 주어야 하지만, 설정을 하지 않아 문제가 발생한적은 없었다. 기본 커널 상태로 놓고 인스톨하여도 무방하다. (레드헷의 디폴트 커널이든 다시 컴파일한 커널이든)

    6. 오라클 관리자 계정 생성
        adduser 혹은 useradd 로 dba그룹에 속하는 유저 oracle을 생성한다.

      ㄱ) adduser 명령으로 oracle user를 생성한다.
           # adduser oracle
      ㄴ) vi /etc/passwd 명령을 사용하여 oracle user 의 설정 값을 위에서 
          설명한 것대로 바꾼다. - dba gid와 같아야 한다.

    7. oratab 파일 생성
       오라클 인스턴스에 대한 정보는 oracle 소유의 oratab 파일에 저장된다.
       하지만 이 스크립트를 root로 실행해서 /etc 디렉토리에 oratab 파일이 생성되도록 한다.

       실제 인스톨과정에서 oratab.sh을 실행하면 ORACLE_OWNER환경변수가 설정되어 있는지
       묻고 있다. 따라서 ORACLE_OWNER을 다음과 같이 설정한다.

      #export ORACLE_OWNER=oracle

 

나. oracle user 로 할 일

    1. ~/.bash_profile의 수정
       ( sh을 사용할 경우 .profile을 수정한다. redhat 리눅스를 기준으로 설명한다.) 
       oracle로 접속하여 다음과 같이 .profile을 만든다. RedHat에서는 .bash profile 이다.

      export 
      ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5
      export 
      LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
      export ORACLE_SID=linux
      export ORACLE_TERM=386
      export 
      ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
      export PATH=$PATH:$ORACLE_HOME/bin
      export TMPDIR=/tmp
      export 
      CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
      umask 022 
      (위에서 export 다음의 줄을 export 뒤에 나와야 한다.)

    위의 경우는 “root 작업 4”의 “Create Mount Points”에서 이야기한 오라클을 설치할 경로로 /home/oracle인 경우이다.

각 설정에 대한 설명

    ORACLE_HOME : 
    오라클을 /home/oracle에 설치하기로 하였으므로 /home/oracle/app/oracle/product/8.0.5로 지정된다.

    LD_LIBRARY_PATH :
    오라클의 동적/정적  라이브러리의 경로를 나타내는 환경변수로 Pro*C나 PHP등을 사용할 때 중요하게 적용된다.

    ORACLE_SID :
    오라클 인스턴스의 이름이다. 영문자로 3-4글자로 정해준다. 필자는 인스턴트의 이름을 linux 라고 지었다.

    그 외의 환경변수는 예제에 나와 있는 데로 하면 된다.

    지역언어설정 환경변수 NLS_LANG은 모든 인스톨이 끝나고 설명하도록 하겠다.

환경변수 갱신

    위와 같이 .profile내용을 변경하였다면

      # . .bash_profile 혹은
      # source .bash_profile 하여 환경변수 내용을 업데이트한다. 또는 oracle계정으로 다시 로그인한다.

 

다. 실제적인 Oracle 의 설치

    1. 인스톨러 실행

      ㄱ) oracle로 로그인 한다. - 절대 root로 인스톨로를 실행하면 안된다.
      ㄴ) oracle 설치 디렉토리로 이동
           # cd /usr/src/ora/orainst 
      ㄷ) orainst를 실행한다.
           # ./orainst 를 실행한다.

    화면에서 [TAB]키, 화살표키, 스페이스 바를 이용하여 항목을 선택할 수 있다.

    2. 검은 배경의 설치화면이 나오면 Custom Install을 선택한다.

    3. 처음 설치하는 것이므로, (o) Install, Upgrade, or De-Install Software을 선택한다.

    4. 새롭게 인스톨 할 것이므로  Install New Product - Create DB Objects을 선택한다.

    5. Mount Point를 설정한다. root user로 할 일 5. 번에서 설정한 것처럼 mount point를
        /home/oracle로 설정한다.

    6. .bash_profile에서 설정한 것처럼 $ORACLE_HOME 디렉토리를 설정한다.

    7. ORACLE_BASE 와 ORACLE_HOME을 설정한다.

    8. log 파일이 남을 위치를 설정한다.

    9. Install from CD-ROM을 선택하여야 한다.

    10. ORACLE_SID를 .bash_profile에서 설정한 것과 같이 linux로 선택한다.

    11. NLS 의 설정 - 여기에서는 일단 ALL language를 선택한다.

    12. install 이 끝이 난 후 root.sh을 실행하라는 메시지가 출력된다. 반드시 install 후에는
         root.sh을 실행하여야 한다.

    13. Software Asset Manager에서 설치한 부분을 선택한다.여기에서는 모든 부분을 설치
         한다고 가정을 한다.

    14. 13)에서처럼 Install을 선택한 후 몇 가지 사항에 대하여 OK를 한 후 OSOPER group (dba)
          를 설정한다.

    15. 생성할 DB Object를 선택한다. - Filesystem-Based Database을 선택한다.

    16. Database Mount Points를 정한다. 설치도중에 3개의 mount points를 기입하라고 하는데
         물리적으로 분리된 하드가 3개 존재하면 가장 좋지만 실제 PC에서는 힘든 일이다. 
         이렇게 3곳으로 데이터를 분리하는 이유는 데이터베이스가 하드 디스크로의 읽기/쓰기를
         하는 과정에서 경합을 줄이고 에러 및 문제의 발생시 자연스런 복구를 위한 것이다. 
         하지만 오라클 프로그램과 동일한 하드디스에 밖에 인스톨 할 공간이 없다면 여기에 모두
         동일한 경로를 적어주면 된다.

         필자도 오라클을 설치할 때  /home/oracle에 오라클 프로그램을 설치하고 데이터 파일을
         위한 3개의 마운트 포인트도 /home/oracle로 설정하였다.

    17. Character Set 설정 - 한글을 쓰기 위해서KO16KSC5601로 설정한다.

    18. National Character Set 설정

    19. System password 의 설정 (보통 manager라고 password를 입력한다. )

    20. sys password 의 설정 ( manager로 password를 설정. )

    21. dba password 의 설정 ( no라고 설정한다. )

    22. TNS Listener Password 의 설정

    23. Configure MTS and start SQL*Net listener 설정은 no로 한다.

    24. Control files 의 위치 확인.

    25. 기본적인 데이터베이스 관련 파일의 위치와 용량의 확인

    26.  JDBC 셋의 선택 (default로 선택을한다.)

    27. CTX Temporary Tablespace을 선택한다.

    28. CTX demo table을 설치할 것을 선택한 후에, Oracle Document를 설치할 것에 대하여 
         셋팅한다. 디렉토리를 설정한 후 pdf, html, both 어떤 형식으로 설치할 것인지 묻는데 
         그때에는 자신이 원하는 항목 중에서 한가지를 선택하면 된다.

    29. 이제 인스톨이 시작되기 시작하고 그래프가 올라가기 시작한다. 하염없이 기다리자 -_-;

    30. 설치완료 화면.

    31. 설치 검증 
         설치가 모두 끝났다면 $ORACLE_HOME/orainst 디렉토리에 생성된 root.sh을 root 계정
         으로 실행 시킨다. 

       ㄱ) root로 로그인한다. 
       ㄴ) cd $ORACLE_HOME/orainst 
       ㄷ) ./root.sh

      # ./root.sh
      - /etc/oratab 아래에 다음과 같은 내용이 추가되었다.

      *:/home/oracle//app/oracle/product/8.0.5:N
      linux:/home/oracle/app/oracle/product/8.0.5:N

 

라. Oracle Database 의 구동

    1. oracle user로 login.

    2. svrmgrl을 실행시킨 후 database를 가동한다.

      $ svrmgrl   - svrmgrl 의 실행

      SVRMGR> connect internal - internal 접속
      Connected.
      Oracle Server Manager Release 3.0.5.0.0 - Production

      (c) Copyright 1997, Oracle Corporation. All Rights  
           Reserved.

      Oracle8 Release 8.0.5.0.0 - Production
      PL/SQL Release 8.0.5.1.0 - Production

      SVRMGR> connect internal - internal 접속
      Connected.

      SVRMGR> startup;
      ORACLE instance started.
      Total System Global Area    4754704 bytes
      Fixed Size                         48400 bytes
      Variable Size                     4222976 bytes
      Database Buffers               409600 bytes
      Redo Buffers                     73728 bytes
      Database mounted.
      Database opened.

      SVRMGR> exit - svrmgrl 의 종료
      Server Manager complete.

    3. lsnrctl 명령을 이용하여 Oracle listener을 가동시킨다.
        - lsnrctl start : Oracle listener 의 가동
        - lsnrctl stop  : Oracle listener 의 멈춤
       $ lsnrctl start

    LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 21:56:51
    (c) Copyright 1997 Oracle Corporation.  All rights reserved.

    Starting /home/oracle/app/oracle/product/8.0.5/bin/tnslsnr: please wait...

    TNSLSNR for Linux: Version 8.0.5.0.0 - Production
    System paramete rfile is 
    /home/oracle/app/oracle/product/8.0.5/network/admin/
    listener.ora
    Log messages written to 
    /home/oracle/app/oracle/product/8.0.5/network/log/
    listener.log
    Listening on: 
    (ADDRESS=(PROTOCOL=ipc)(DEV=6)(KEY=linux))
    Listening on: 
    (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=PNPKEY))
    Listening on: 
    (ADDRESS=(PROTOCOL=tcp)(DEV=11)(HOST=192.168.1.1)(PORT=1521))

    Connecting to 
    (ADDRESS=(PROTOCOL=IPC)(KEY=linux))
    STATUS of the LISTENER
    ------------------------
    Alias                       LISTENER
    Version                   TNSLSNR for Linux: Version 8.0.5.0.0 - Production
    Start Date                26-APR-99 21:56:56
    Uptime                    0 days 0 hr. 0 min. 1 sec
    Trace Level              off
    Security                   OFF
    SNMP                      OFF
    Listener Parameter File   
    /home/oracle/app/oracle/product/8.0.5/network/admin/
    listener.ora
    Listener Log File         
    /home/oracle/app/oracle/product/8.0.5/network/log/
    listener.log
    Services Summary...
    extproc               has 1 service handler(s)
    linux         has 1 service handler(s)
    The command completed successfully

    - 오라클 리스너가 제대로 실행이 되지 않을 경우 listener.ora, tnsnames.ora을 알맞게 
       편집한다. 
     (/home/oracle/app/oracle/product/8.0.5/network/admin 위치하여 있다.)

    다음은 tcp/ip 프로토콜을 기준으로 하여서 listener.ora를 알맞게 편집한 것이다.

    #
    # Installation Generated Net8 Configuration
    # Version Date: Jun-17-97
    # Filename: Listener.ora

    LISTENER =
    (ADDRESS_LIST =
    (ADDRESS= (PROTOCOL= IPC)(KEY= linux))
    (ADDRESS= (PROTOCOL= IPC)(KEY= PNPKEY))
    (ADDRESS= (PROTOCOL= TCP)(Host= 192.168.1.1)
    (Port= 1521))
    - database 가 설치되어 있는 ip를 적어준다.
    )
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME= 192.168.1.1.)
    - database 가 설치되어 있는 ip를 적어준다.
    (ORACLE_HOME= 
    /home/oracle/app/oracle/product/8.0.5)
    (SID_NAME = linux)
    - linux sid , 설치도중 적어준 sid를 적어준다.
    )
    (SID_DESC = 
    (SID_NAME = extproc) 
    (ORACLE_HOME =
    /home/oracle/app/oracle/product/8.0.5)


    (PROGRAM = extproc) 

    )
    STARTUP_WAIT_TIME_LISTENER = 0
    CONNECT_TIMEOUT_LISTENER = 10
    TRACE_LEVEL_LISTENER = OFF


    # Installation Generated Net8 Configuration 
    # Version Date: Oct-27-97 
    # Filename: Tnsnames.ora 
    #  
    extproc_connection_data = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = IPC)(KEY = linux)) 
    (CONNECT_DATA = (SID = extproc)) 

    linux =
    - oracle alias
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL= TCP)(Host= 192.168.1.1)
    (Port= 1521))
    - database 가 설치되어있는 database 의 ip
      (CONNECT_DATA = (SID = linux))
    - oracle sid 
    )

    linux_BEQ =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = 
    /home/oracle/app/oracle/product/8.0.5)
    (argv0 = oraclelinux)
    (args = ‘(DESCRIPTION = 
    (LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))’)
    (envs = 
    ‘ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5,ORACLE_SID=linux’)
    )
    )

    4. 이제 다시 lsnrctl start 명령으로 실행하여 Oracle listener을 실행한다. 
        이제 sqlplus을 실행하여 접속이 되나 확인을 하자. test 용으로 id : scott password : tiger
        가 제공됨을 알 수 있다. 이미 설치 중에 system과 sys의 password는 직접 입력하였으므
        로, system 혹은 sys로 접속이 가능한지 확인할 수 있다.

    5. sqlplus로 접속이 확인되었으면 이제 listener을 종료한 후 database를 종료시켜 보자.

    - listener 의 종료
    $ lsnrctl stop

    LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 22:18:35

    (c) Copyright 1997 Oracle Corporation.  All rights reserved.

    Connecting to 
    (ADDRESS=(PROTOCOL=IPC)(KEY=linux))
    The command completed successfully

    - oracle database 의 shutdown 
    $ svrmgrl
    Oracle Server Manager Release 3.0.5.0.0 - Production

    (c) Copyright 1997, Oracle Corporation.  All Rights Reserved.

    Oracle8 Release 8.0.5.0.0 - Production
    PL/SQL Release 8.0.5.0.0 - Production

    SVRMGR> connect internal
    Connected.
    SVRMGR> shutdown
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SVRMGR> exit
    Server Manager complete.

    $

 

마. Oracle Database 의 사용자 등록

    system/manager라는 Oracle 사용자 계정은 UNIX시스템에서의 root를 사용하는 것과 유사하기 때문에 우리는 문제를 발생시키는 것을 최소화하기 위해 되도록 적은 권한을 갖는 사용자를 생성할 필요가 있다.

    SQL*PLUS에 연결하고 사용자를 생성한다.

    $ sqlplus system/manager

    SQL*Plus: Release 8.0.5.1.0 - Production

    Copyright (c) Oracle Corporation 1997.  All rights reserved.

    Connected to:
    Oracle8 Server Release 8.0.5.0.0 - Production Release
    PL/SQL Release 8.0.5.0.0 - Production

    SQL> create user <user> identified by <psw>
    2  default tablespace users
    3  temporary tablespace temp;

    User created.
    SQL> grant connect, resource to <user>

    Grant succeeded.

    SQL> exit

    Disconnected from Oracle8 Server Release 8.0.5.0.0 - 
    Production Release
    PL/SQL Release 8.0.5.0.0 - Production

    시스템에 새로운 사용자계정을 생성하였기 때문에 새로운 계정을 가지고 시스템에 로그인 할수 있다. Oracle 데이터베이스에 로그인 하기 위해서는 다음과 같다.

    $ sqlplus <user>/<password>

    이 부분이 에러 메시지 없이 수행된다면, 성공적으로 Oracle 데이터베이스를 설치한 것이다.

 

바. Oracle 데이터 베이스의 자동 실행

    Oracle 데이터베이스의 자동 시작과 중지는 Oracle에서 제공하는 파일인 dbstart와 dbstop를 이용하여 설정할 수 있다. 이러한 파일들은 etc/oratab 파일의 존재여부에 의존한다.

    /etc/oratab 파일의 형식은 다음과 같다.

    SID:ORACLE_HOME:AUTO

설정  예

    #
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by the Oracle8 and SQL*Net install procedures.
    #
    # A colon, ‘:’, is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, ‘#’, are comments.
    #
    # Entries are of the form:
    # $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third field indicates
    # to the dbstart utility that the database should, “Y”, or should not,
    # “N”, be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    linux:/oracle8/app/oracle/product/8.0.5:Y

    init.d & rc.d

    리눅스 시스템의 시작과정이나 종료과정을 변형하여 데이타베이스를 시작시키고 종료 시킬 수 있다. 이것은 매우 쉽지만, 어떠한 Linux(slackware, debian, redhat, etc)시스템을 사용하느냐에 따라  변경될 수 있다는 것을 필자는 지적한다. 이 문서에서는 Redhat Linux 5.2 에서 동작하는 예를 보여줄 것이다. 자신의 Linux 시스템에 따라 수정하기 위해서는 자신의 Linux 시스템 문서 자료를 참고한다. 우선, 우리는 /etc/rc.d/init.d 디렉토리에 있는 dbshut와 dbstart를 실행할 스크립트를 생성할 필요가 있다.

    #!/bin/sh
    #
    # /etc/rc.d/init.d/oracle
    # Description: Starts and stops the Oracle database and listeners
    # See how we were called.

    case “$1” in
    start)
     echo -n “Starting Oracle Databases: “
     echo “----------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Starting Oracle Databases as part of system up.”  >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     su - oracle -c dbstart >> /var/log/oracle
     echo “Done.”
     echo -n “Starting Oracle Listeners: “
     su - oracle -c “lsnrctl start” >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     touch /var/lock/subsys/oracle
     ;;
    stop)
     echo -n “Shutting Down Oracle Listeners: “
     echo “-----------

    ---------------------------------” >> /var/log/oracle
     date +”! %T %a %D : ShutDown Oracle Databases as part of system down.” >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     echo “Done.”
     rm -f /var/lock/subsys/oracle
     echo -n “Shutting Down Oracle Databases: “
     su - oracle -c dbshut >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     ;;

    restart)
     echo -n “Restarting Oracle Databases: “
     echo “-------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Restarting Oracle Databases as part of system up.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     su - oracle -c dbstop >> /var/log/oracle
     su - oracle -c dbstart >> /var/log/oracle
     echo “Done.”
     echo -n “Restarting Oracle Listeners: “
     su - oracle -c “lsnrctl stop” >> /var/log/oracle
     su - oracle -c “lsnrctl start” >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     touch /var/lock/subsys/oracle
     ;;

    *)

    echo “Usage: oracle {start|stop|restart}”
    exit 1
    esac

    이 파일이 실제적으로 정확히 당신의 시스템에서  데이터베이스를 중지하고 실행시키는지를 확인해야 한다. 에러메세지를 위한 /var/log/oracle인 log 파일을 확인하라.
    다음 명령들은 실행수준 2,3,4에 해당하는 데이테베이스를 실행시는 것을 확인 시켜줄 것이다.

    $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
    $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
    $ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle

    시스템을 재 부팅하거나, 재 실행 시킬 때에 데이터베이스를 중지시키기 위해서 우리는 다음과 같은 연결(link)이 필요한다.

    $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle          # Halting
    $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle          # Rebooting

 

마치는 글

    이상으로 간략하게나마 Linux 상에서의 Oracle 데이터베이스 설치와 구동법에 대해서 알아보았다. 
    그림과 함께 좀 더 명확한 설치법을 소개해 줄 수도 있었지만, 이제 간단한 설치법 정도는 기타 책이나 오라클사 세미나에 가면 쉽게 구할 수 있으므로 기본 설치법에 사용자 등록, 자동 시작/종료를 추가해 첫 글을 마친다. 다음에는 간단한 sqlplus 사용법, Oracle SQL, pro-c 에대해서 알아보고 마지막으로 PHP3와 연동하는 것으로 이 글을 마칠까 한다.


출처 :  http://linuxlab.co.kr/docs/7-4.htm