MySQL의 경우 create database 문을 이용하여, 사용자별로 분리된 영역에 테이블들을 저장하고 운용할수 있도록 한다.

오라클의 경우는 약간 다르게 (물론 사용자를 위해서 DB를 새롭게 만들수도 있겠지만) 테이블 스페이스를 할당하고, 사용자 추가시에 추가될 사용자의 기본 테이블 스페이스를 지정함으로서 계정에 따른 데이터베이스 영역을 운용할 수 있도록 한다.

우선 테이블 스페이스를 생성하기 위하여 DBA권한으로 sqlplus통해 오라클에 접속한다.

$sqlplus
system
password
sql> (아시다시피 sqlplus의 프롬프트)

테이블 스페이스를 생성한다. 테이블 스페이스는 저장 영역 및 임시 테이블 스페이스 이렇게 두게가 필요하지만, 임시 테이블 스페이스는 기본으로 정해져 있는 임시 테이블 스페이스 영역을 사용해도 된다.

각각의 create tablespace 문의 상세한 사용은 생략하고, 가장 기본적인부분으로만 진행. 물론 오라클이 데이터파일에 대한 접근권한이 있어야 한다.

테이블 스페이스 생성.
sql> create tablespace ts_name datafile '/home/oracle/data/ts_name.dbf' size 100M autoextend on next 10M

임시 테이블 스페이스 생성
sql>create temporary tablespace ts_name_temp tempfile '/home/oracle/data/ts_name_temp.dbf' size 10M extent management local uniform size 120k

사용자를 생성하고 권한을 부여하도록 한다.
sql>create user userid identified by password default tablespace ts_name temporary tablespace ts_name_temp

sql>grant resource,connect to userid

완료. 클라이언트나 jdbc등을 사용해서 접속이 가능한지 테스트하고 db를 사용할수 있다.

2010/02/18 14:04 2010/02/18 14:04

오라클 클라이언트는 말그대로 데이터베이스 서버에 접속하여 데이터베이스를 사용할수 있도록 하는 소프트웨어이다. 이것이 중요한 이유는 대부분의 개발을 진행함에 있어 오라클 연동 작업이 바로 이 오라클 클라이언트를 요구하기 때문이다. 각종 라이브러리와 헤더 파일들이 오라클 클라이언트를 설치하면서 설치된다. 그럼, 당연하겠지만 오라클 클라이언트가 오라클 데이터 베이스에 잘 접속할수 있도록 설정을 해주어야 한다.

우선 인스톨러를 GUI환경에서 실행시킨다. (runInstaller)
(여기에서 오라클 데이터 베이스를 설치한 곳에 또 클라이언트를 설정해야 하느냐 하는 의문점이 들것이다. C/C++ 등의 개발시에 필요할듯한 헤더나 라이브러리들은 오라클 서버만 설치를 해도 존재하는것으로 보이지만, PHP등과 같은 프로그램은 반드시 오라클 클라이언트를 요구한다. 그것도 잘 설정된....)

설치화면을 통하여 설치를 진행하는것에는 큰 문제가 없을것이다.

설치 종료후 접속할 서버에대한 정보를 오라클 클라이언트에게 주어야 하는데, 전에 우리는 이미 net service에 관하여 살펴보았고, 이들 설정을 하였으므로 이미 절반(서버측)은 준비가 되어 있는 상태이다.

오라클 클라이언트는 {$ORACLE_HOME}/network/admin/tnsname.ora 파일을 참조한다. 없을경우 하위의 sample을 카피하여 사용할수 있으며, 이때 샘플에 있는것은 꽤나 디테일 하므로 모두 지우고 최소한의 설정만으로 접속 및 사용이 가능하도록 하기 위해 아래와 같은 항목을 사용한다.

S_DB_NAME =
  (DESCRIPTION =
  (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = {대상아이피})(PORT = 1521))
  )
  (CONNECT_DATA =
     (SERVICE_NAME = {대상서비스이름})
  )
  )

반드시 위와 같은 심플한 설정을 사용해야 한다거나, 사용을 권장하는 것은 아니나, 간단한 설정을 확인 해 봄으로써 이해를 돕고자 함이니 조악한 설정에 이해를 ....

어찌되었던 설정 항목 자체는 딱 보면 알수 있도록 간단하다, 대상의 호스트 아이피를 적고 대상 호스트에서 서비스 되고 있는 서비스의 이름을 적음으로써 S_DB_NAME을 구분자로 오라클 서버에 접속할수 있게된다는 뜻이다.

확인을 위하여 대상서비스에 계정이 등록되어 있다고 한다면,
sqlplus wowsim/{패스워드}@S_DB_NAME 으로 데이터 베이스에 접속할수 있다.

이로써 우선 오라클 데이터 베이스 설치 및 최초 기본설정에 대한 내용은 마치고자 한다. 쥔장의 작업 메모 정도이므로 다른 독자분이 계시다면, 충분히 오라클 도큐먼트를 검토 하라고 말하고 싶다.
2006/12/26 17:43 2006/12/26 17:43

오라클 넷 서비스란 네트워크를 통한 데이터 베이스 작업을 일컷는 말로서 데이터 베이스 작업을 네트워크를 통하여 함으로서 보다 확장성 있는 시스템을 유지 할수 있도록 한다.

우선 이전까지 데이터 베이스 서버를 설치하고 사용할 데이터 베이스를 만들었으므로 이를 이용하기 위하여 넷서비스를 설정 해보도록 하자.

설치시에 데이터베이스를 만들었다면 자동을 net configuration assitance가 실행되며, 이때 넷 서비스를 설정 할수 있으나 이번에는 설치시에 데이터 베이스를 만들지 않고, 수동으로 넷 서비스를 설정해 보도록 하겠다.

이경우 넷 서비스를 설정하기 위하여 listener.ora 파일을 수정하게 된다. 이 파일은 텍스트 형식으로 되어 있으므로 단순히 샘플을 카피하여 수정하여 사용하도록 한다.

cp {$ORACLE_HOME}/network/admin/sample/listener.ora      
    {$ORACLE_HOME}/network/admin/

{$ORACLE_HOME}의 경우 설치시에 사용한 알맞은 경로를 사용한다.

아래는 본인의 넷 서비스 예제이다.

LISTENER=
  (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.111)(PORT=1521))
     (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
  (SID_LIST=
   (SID_DESC=
     (GLOBAL_DBNAME=local_db_name.domain_name)
     (ORACLE_HOME={$ORACLE_HOME})
     (SID_NAME={$ORACLE_SID}))
   (SID_DESC=
     (SID_NAME=plsextproc)
     (ORACLE_HOME={$ORACLE_HOME})
     (PROGRAM=extproc)))

예제 중 {$ORACLE_HOME}과 {$ORACLE_SID} 를 알맞게 치환하여야 하며, 데이터 베이스의 서비스명에 따라. 글로벌 데이터베이스명 까지 바뀌어야 한다.

상세한 내용은 오라클 문서에서 확인할 수 있다.

http://download-west.oracle.com/docs/cd/B10501_01/network.920/a96581/listener.htm#NETRF00

리스너는 크게 리스너 자체 설정 부분 및 오라클 하위 호환성을 보장하고 서비스를 구분하기 위한 SID 설정 부분의 두가지 부분으로 이루어진다.

LISTENER는 리스너의 이름이며, 우선 리스너의 처음 설정은 리스너를 통해 리스너를 실행할 호스트와 포트를 정의 한다.

SID는 서비스를 구분하기 위한 것으로 위의 리스너 설정의 ADDRESS와 대응하여 설정된다. 이중 중요한 것은 SID_NAME과 GLOBAL_DBNAME 으로 글로벌 네임은 클라이언트가 서비스를 구분하기 위하여 사용되며, SID는 실제 서비스를 구분하기 위하여 사용된다.

리스너설정 후 lsnctl start하여 리스너를 기동하여 설정을 확인할수 있으며, 만일 기동중이라면 lsnctl stop 하여 리스너 작동을 중지시킨후 다시 시작할수 있다. 기동후 lsnctl status를 통해 현재 가동중인 리스너의 상태를 조회할수 있다.
2006/12/22 13:29 2006/12/22 13:29

우선 이전에 오라클을 설치와 오라클의 물리적 구조를 알아보았는데, 본인이 워낙 초짜인 이유도 있겠지만 대부분의 입문자들이 그렇듯 우선 무엇인가를 하기 위해서 입문서를 보다가 처음 이론에서 많이들 포기 하기때문에, 바로 사용가능한 데이터 베이스를 만들어 보기로 한다. 이전까지는 최소의 사전 지식이었으며, 이외에도 간단한 설정파일들은 핸들링 할수 있어야 한다.

우선 사전 계획을 세워야 한다.
- 생성 계획.
   - 데이터 베이스의 테이블과 인덱스를 고려한 하드웨어의 공간을 예상한다.
   - 운영될 운영체제에 알맞은 데이터 베이스의 I/O 구성을 예상한다.
   - 글로벌 데이터베이스 네임을 선택한다.
   - 초기 설정 파일의 각 속성을 숙지한다.
   - 데이터베이스의 문자셋을 선택한다.
   - 데이터베이스에서 지원할 시간대를 고려한다.
   - 표준 데이터베이스 블럭의 크기를 선택한다.
   - 롤백 세그먼트 보다 Undo 테이블 스페이스를 사용한다.
   - 백업과 복구 전략을 수립해 둔다.
   - 데이터베이스의 시작과 종료에 관하여 숙지해 둔다.
   - 어떠한 방법으로 데이터베이스를 생성할것인가?
       - DBCA(Database Configuration Assistant)를 사용한다.
       - 수동으로 스크립트를 이용한다.
       - 기존의 데이터베이스를 업그레이드 한다.

기존의 설치를 그대로 했다면 아마도 이미 데이터 베이스가 생성 되어 있을것이다. 이 데이터 베이스를 무시하고 새로운 데이터 베이스를 수동으로 생성할것이다. 이 과정을 통해 데이터 베이스란 의미를 확인하기 위함이다.
- 수동으로 데이터베이스 생성하기.
   - 오라클 시스템 구분자 : SID(Oracle System identifier)를 환경변수에 등록한다.
       - 홈디렉토리의 .bash_profile을 수정한다. 설치시 사용했던 것이 있으니 별 문제는
          없을것이다.
   - 데이터베이스를 생성하기 위한 시스템 계정으로 로그인 했는지 확인한다.
   - 초기 설정 파일을 생성한다.
       - 샘플 파일을 참조한다.
          http://download-west.oracle.com/docs/cd/B10501_01/server.920/
          a96521/create.htm#1018369
       - 기본 ($ORACLE_HOME/dbs/init$ORACLE_SID.ora) 파일을 수정한다.
   - 인스턴스에 접속하기.
       sqlplus /nolog
       connect / as sysdba
   - 인스턴스 시작하기.
       startup nomount
           (샘플의 BACKGROUND_DUMP_DEST,CORE_DUMP_DEST,USER_DUMP_DEST의
           디렉토리는 먼저 만들어주어야 한다.)
       이때까지 데이터 베이스는 생성되어 있지 않은 상태이다. 기능들은 SGA영역에
       프로세스상으로 존재할 뿐이다.
   - 데이터베이스 만들기.
       create database t75
       user sys identified by blahblah
       user system identified by blahblah
       logfile group 1 ('/oradata/t75/redo01.log') size 100M,
       group 2 ('/oradata/t75/redo02.log') size 100M,
       group 3 ('/oradata/t75/redo03.log') size 100M
       maxlogfiles 5
       maxlogmembers 5
       maxloghistory 1
       maxdatafiles 100
       maxinstances 1
       character set KO16KSC5601
       national character set UTF8
       datafile '/oradata/t75/system01.dbf' size 300M reuse
       extent management local
       default temporary tablespace tempts1
           tempfile '/oradata/t75/temp01.dbf' size 20M reuse
       undo tablespace undotbs datafile '/oradata/t75/undotbs01.dbf' size 200M reuse
           autoextend on next 5120K maxsize unlimited;
           (임시테이블 스페이스를 만들시에 tempfile옵션을 사용한다.)
           (national character set은 UTF8, AL16UTF16 두가지만 존재한다. 두가지 모두
           유니코드이므로 문제는 없다.)

상기의 내용중 create의 문법은 하나하나 확인해 가면서 점검해야 한다. 이 문장이 이해가 간다면 이미 데이터베이스의 개괄적인 내용은 알고 있다고 생각해도 된다. 나머지는 이 데이터베이스를 어떻게 잘 관리 하느냐 이다.

이제 사용자들이 사용할 테이블 스페이스를 만든다. 물리적인 하나의 파일로 분할함으로서 데이터베이스의 백업의 용이성과 운영시 안정성을 높인다.

   CONNECT SYS/password AS SYSDBA
       -- create a user tablespace to be assigned as the default tablespace for users
   CREATE TABLESPACE users LOGGING
       DATAFILE '/oradata/t75/users01.dbf'
       SIZE 25M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
       EXTENT MANAGEMENT LOCAL;
   -- create a tablespace for indexes, separate from user tablespace
   CREATE TABLESPACE indx LOGGING
       DATAFILE '/oradata/t75/indx01.dbf'
       SIZE 25M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
       EXTENT MANAGEMENT LOCAL;

그리고 데이터 베이스에서 사용할 딕셔너리 뷰를 만드는 스크립트를 실행한다. 딕셔너리 뷰에 관해서는 나중에 알아보도록 하고 지금은 DBA가 데이터 베이스를 관리하기 위한 설정을 저장하고 있는 테이블이라고 개념만 잡고 있도록 하자.

   @{$ORACLE_HOME}/rdbms/admin/catalog.sql
   @{$ORACLE_HOME}/rdbms/admin/catproc.sql
       (당연히 '{$ORACLE_HOME}' 설치된 알맞은 위치로 변경되어야 한다.)

이후 백업 및 관리의 편의를 위하여 좀더 많은 작업이 남아 있지만, 우선은 이정도에서 데이터 베이스를 운영 할수는 있다. 좀더 자세한 데이터베이스의 생성은 오라클 문서를 확인하면 상세히 알수 있다.
http://download-west.oracle.com/docs/cd/B10501_01/server.920/
a96521/create.htm#1656
참조 사이트는 실제로 해보고 반드시 한번쯤은 읽어보기를 권한다.

2006/12/21 : 설치환경 또는 이전에 했던 작업에 따라 많은부분이 달라질수 있으므로. 반드시 원문서 및 자신의 데이터 베이스 환경에 대한 이해가 필요하다. 무작정 상기의 순서로 진행하는경우 에러메시지를 받게 될것이다.
2006/12/15 11:16 2006/12/15 11:16

예전에 오라클 바이블에서 보았었던 내용이었지만, 어느새 까마득히 까먹고 다시 처음부터 살펴 보고나서야 다시 정리가 된 오라클의 물리적 구성이다.

오라클이라고 해도 받은 정보는 어찌되었건 물리적으로 하드디스크에 저장이 되어야 하고 이렇게 저장하는 과정에서 성능 문제와 위험성(쓰다가 정전 또는 하드디스크의 오류)는 발생하기 마련이다. 이를 최대한 안정적으로 운영하고, 유연하게 대처하기 위하여 오라클에서는 각 객체(테이블 스페이스,테이블,뷰 등)에 각각 설정을 가능하게 해 두고 있다. 이러한 설정은 데이터 베이스를 만들거나 테이블 스페이스를 만드는경우 많이 쓰이게 되는데. 우선 그 구성은 아래와 같다.
오라클의 물리적 구성도

오라클의 물리적 구성도

블럭은 오라클의 가장 기본적인 데이터 구성요소이다. 디스크의 억세스 크기와 동일하게 하는 것이 대부분이다.

익스텐트는 블럭내의 데이터를 논리적으로 구분하여 저장되는 단위이다.

세그먼트는 오라클 데이터 베이스 내에서 처리되는 프로세스의 단위로서
데이터 세그먼트 : 실제 데이터를 저장.
인덱스 세그먼트 : 테이블의 인덱스를 저장.
롤백 세그먼트 : 트랜젝션 처리를 위한 DML을 저장.
임시 세그먼트 : 데이터의 조회등을 위해 임시로 사용되는 공간.
등이 존재하며,
이러한 모든 구성요소를 가지고 있는 테이블 스페이스가 존재하게 된다.

상기의 내용이 매우 이론적일수 있으나 추후 테이블 스페이스를 만들어 유저에게 할당하거나 데이터베이스를 최적화 하는데 매우 중요한 내용이므로 숙지하고 있어야 한다.

오라클 9i 기준.
2006/12/12 21:47 2006/12/12 21:47

예전에 오라클 8.1.5를 리눅스 상에서 깔기위해 엄청난 삽질을 했었던 기억이 있다.
그때는 리눅스에서도 IT라는것에도 초짜임에 분명했지만, 되지도 않는 영어를 가지고 외국문서들을 찾아가면서 근 2~3주의 시간을 들여 설치에 성공했었을때의 기쁨은 아직도 잊지 못하고 있다. 특히나 그당시 오라클을 깔기 위해서 과정이 별다른 실수없이 진행을 하더라도 반나절 이상이 걸리는 작업이기에 사소한 환경설정에도 손을 벌벌 떨었던 기억이 난다.

어찌되었던 이번에 다시 오라클을 대면하게 되었다. 8.1.5는 이미 지원이 중단된지 오래. 게다가 9i 조차 구버젼으로 otn에서 별도의 링크를 타고 들어가 받을수 있게 되어 있었다.

뭐 일단 기본문서를 기반으로 설치시작...
하지만 주르륵 떨어지는 에러 메시지들...
아핫!!! 변하게 없구나 오라클...ㅠ,.ㅠ

다음은 간단 오라클 설치기.

우선은 http://www.puschitz.com/InstallingOracle9i.shtml 링크의 문서를 기반으로 진행한다. 오라클을 설치하고자 했던 사람이라면 모두 한번쯤은 봤을 문서.

1. 오라클 다운로드.
   - OTN에서 다운로드 받는다.
2. 압축해제.
   - gunzip lnx_9204_disk1.cpio.gz 하면 cpio 파일이 나온다.
   - cpio -idmv < lnx_9204_disk1.cpio 하면 Disk1 이란 디렉토리가 만들어진다.
   - 추후 오라클 계정을 만든후 이들 파일에 오라클 계정이 접근할수 있도록 소유권을 수정해 놓는다.
3. 메모리설정.
   - 문서상의 메모리설정은 참조.
   - 기본적으로
         echo `expr 1024 \* 1024 \* 1024` > /proc/sys/kernel/shmmax
      로 공유메모리 영역만을 늘려주었다.
4. 설치를 위한 패키지 확인.
   - 여러가지가 있지만 전체설치를 했을경우 나머지는 패스. 단 아래의 두가지 패키지가 없다.
         compat-oracle-rhel4-1.0-5.i386.rpm
         compat-libcwait-2.0-2.i386.rpm
   - 이것은 오라클 패치 p4198954_21_LINUX.zip 파일을 받아보면 안에 존재하는데 오라클 패치가 metalink에서 회원제로 운영되기때문에 (라이센스가 있는 회사의 코드를 회원가입시 요구) 구하기가 힘들것이다.
  - 2006/12/19 추가: http://oss.oracle.com/projects/compat-oracle/files/RedHat/에서 p4198954_21_LINUX.zip 자료를 받을수 있을것이다.
  - 위의 패키지가 없을경우 설치중 링크 에러 및 인스톨러가 돌아가지 않는다.
5. 계정설정.
   - 오라클 계정을 만든다.
6. 오라클 설치 디렉토리
   - 설치 디렉토리를 -p 옵션을 사용하여 만든다.(ex: mkdir -p /oracle)
   - 만들어진 디렉토리의 소유자를 위에서 만든 오라클 계정으로 한다.
7. 오라클 환경변수 설정.
   - 환경변수를  .bash_profile에 추가한다. 단 X-window상에서 인스톨러를 구동시키는데 이경우 환경변수 반영이 안된다. 따라서 source .bash_profile 를 실행하여 환경변수를 반영하도록 하자. 일반 터미널 환경에서는 환경변수가 제대로 반영되지만 실수를 줄이기 위해 항상 환경변수가 제대로 반영되었는지 확인하도록 한다. (ex: echo $ORACLE_HOME)
   - 환경변수의 내용은 위의 문서를 참조하자.
8. 오라클 계정으로 로그인
   - 이제 오라클 계정으로 X-window를 실행한다. 필자의 경우 원격에서 설치를 진행하여야 했기때문에 Xming이란 유틸리티를 사용하여 원격에서 X-Window로 접속후 작업을 진행 했다.
    - 압축을 풀어놓은 곳에서 ./runInstaller를 실행하여 GUI환경에서 설치를 진행한다.
9. 설치의 진행.
    - 이때부터 위의 문서와 내용이 틀려지는데 결국 오라클의 patch를 구하지 못해 그냥 GUI 환경에서 에러를 무시하고 설치를 진행하게 되었다. 하지만 운영상의 큰문제점은 없고 ems tool이 설치시 에러를 보고 한다.
    - 보통 리눅스 사용자라면 터미널에서의 작업이 많으므로 이는 무시하고 그대로 진행한다.
10. 설치 마무리 및 테스트.
    - 설치가 종료되면 GUI인스톨러는 맨 처음으로 돌아간다 여기에서 EXIT를 선택하여 설치를 마친다.
    - 설치가 제대로 되었는지 확인하기위해 오라클 데이터 베이스를 시작하고 멈춰 보도록 하자.
11. 오라클 데이터 베이스 시작과 종료.
    - 8 대 버젼과 다르게 프롬프트가 sqlplus로 통합되었다. 우선 시스템 계정으로 로그인 하자.
        sqlplus /nolog
        conn / as sysdba
    - startup 명령으로 오라클 데이터 베이스를 시작한다.
    - shutdown 명령으로 오라클 데이터 베이스를 종료한다.
12. 추가적인 작업.
    - 우선 사용자를 만들자 sqlplus에서 SQL문을 사용하여 사용자를 만들수 있다.
    - 리스너를 설정하여 외부에서 원격으로 데이터 베이스가 접속되는지 확인할수 있다.
       이를 위해서는 리스너에 관한 자료들을 참조하자. 하지만 기본적인 설정만으로도 대부분 잘 동작한다.

너무 간단하게 설명한듯 하지만 위의 링크에 상세한 내용이 있으므로 충분하다고 생각이된다.
간만에 삽질에 마음이 뿌듯....오라클 설치가 많이 쉬워지기는 했지만 여전히 시스템 관리자들에게는 너무 힘들지 않을까 하는 생각이 든다. (일반적인 접근성이 떨어진다는 뜻.....)
2006/11/16 14:54 2006/11/16 14:54