데이터 베이스 응용, 프로그래밍... Oracle 10g XE

위의 스샷은 모든 설정이 끝나고, 기본 계정인 scott로 샘플 테이블인 emp 테이블의 내용을 보는 중이다.


 학기 초이다 보니, 아무래도 새로 듣게 되는 수업을 위한 실습 환경을 만들게 되는 일이 생긴다. 이럴때 또 문제가 되는 것이 나는 왠만하면 Linux 기반에서 이런 것들을 하기를 원한다는 것이다. 그래서 이번 학기에 듣는 데이터 베이스 프로그래밍, 데이터 베이스 응용이라는 두과목에서 Oracle을 배우는 관계로 오늘은 Oracle Database 10g Express Edition(이후 Oracle 10g XE)을 설치하게 되었다.

 Oracle 10g XE 버전은 소규모, 개인을 위한(?) 완전 무료 Oracle 10g 버전이다. 때문에 다음과 같은 약간의 제약이 있다.
Oracle Database XE는 서버의 용량, CPU 숫자에 관계없이 설치가 가능합니다. 다만 호스트 별로 1 GB의 메모리, 1 개의 CPU만을 사용할 수 있으며, 최대 4 GB의 사용자 데이터를 저장할 수 있습니다.

 하지만 내가 설치하려는 머신은 어차피 메모리도 500MB 조차 안되고, CPU도 역시 하나이다. 그리고 거창한 사업이나 프로젝트에 Oracle DB를 쓰려는 것이 아니고, 단지 수업 시간에 하는 내용을 실습하거나 하는 용도로 쓰고 싶은 것이기 때문에 나에겐 알맞다고 판단했다. 게다가 Debian Sarge 머신에 설치하려는 생각을 가지고 있었는데, Oracle 10g XE의 경우 deb 패키지 형태로 제공되었다.

 데비안이나 우분투라면 설치 과정은 간단하다. 나는 Debian Sarge에 설치를 하였다.

① /etc/apt/sources.list 의 수정, 다음의 저장소를 추가

deb http://oss.oracle.com/debian unstable main non-free

② 인증키 추가 및 패키지 설치
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install oracle-xe-universal
 위의 작업은 sudo 를 쓰거나 root의 권한으로 해야 하는 작업이다. Universal 버전을 선택한 이유는 다음과 같다.
Multi-byte Unicode database for all language deployment, with the Database Homepage user interface available in the following languages: Brazilian Portuguese, Chinese (Simplified and Traditional), English, French, German, Italian, Japanese, Korean and Spanish.


③ 위의 작업으로 Oracle의 설치는 끝난다. 설치 후에 환경 설정을 해야 하는데, 다음의 명령으로 관리자 계정인 SYS와 SYSTEM의 패스워드 설정 및 웹 GUI 인터페이스 port 설정, 리스너(listener) port 설정등을 해준다.
/etc/init.d/oracle-xe configure

④ 그리고 나서 .bash_profile 혹은 .bashrc 에 아래의 명령을 추가해서 Oracle 10g XE를 위한 환경 변수등을 적용시킨다.
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

⑤ 이렇게 적용이 끝나면 sqlplus 를 이용한 접속이나, 웹을 이용한 DB 접속이 가능하다.
 터미널에서는 다음과 같이 sqlplus 를 이용할 수 있고,
sqlplus 계정명
 웹에서는 다음과 같이 DB에 접속이 가능하다.
http://host:port/apex/

 이렇게 설치를 끝내고 나서 보니, 각종 교재에 나와있는 Oracle의 기본 계정이라고 하는 scott 계정이 존재하지 않았다. 때문에 다음과 같이 sqlplus에 접속한 뒤에 scott 계정을 만들어 주었다.
CREATE USER scott
IDENTIFIED BY tiger
DEFAULT TABLESPACE users;
TEMPORARY TABLESPACE temp;

GRANT AQ_ADMINISTRATOR_ROLE TO scott;
GRANT CONNECT TO scott;
GRANT RESOURCE TO scott;
EXECUTE dbms_aqadm.grant_type_access('scott');
  이렇게 scott 계정을 만들어 주고 나니, 교재에서 실습해 볼 때 나오는 기본 예제 테이블도 없다는 것을 알았다. Oracle 10g XE 디렉토리를 뒤져보았지만 찾을 수가 없어서 Oracle 9i 설치된 컴퓨터에서 예제 테이블 생성 파일(demobld.sql)만 가져왔다. 하지만 이 파일을 적용해 보니 다음과 같은 에러를 뿜으면 정상적으로 테이블이 만들어 지지 않았다.
        TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20)
                       *
3행에 오류:
ORA-01843: 지정한 월이 부적합합니다.
 원인을 검색해 본 결과 NLS_DATE_FORMAT이 맞지 않아서 생기는 오류였다. 위의 예제 테이블 생성(sql)에서의 NLS_DATE_FORMAT은  'DD-MON-YYYY' 인데, 시스템의 NLS_DATE_FORMAT은 다른 형식으로 설정되어 있어서 오류가 생겼다.(이 글을 작성한 후 꽤 시간이 지나고 나서 알았지만 위의 오류의 정확한 원인은 아래의 NSL_LANGUAGE 설정 문제였다. NLS_DATE_FORMAT의 설정과는 무관한 문제였다.)

 NLS_DATE_FORMAT의 확인은 다음의 명령어로 알아볼 수 있다.
select sysdate from dual;
  NLS_DATA_FORMAT을 변경하는 방법은 다음과 같다.
alter session set nls_date_format='DD-MON-YYYY';
 이렇게 수정해 주었음에도 불구하고, 에러가 났는데 원인입력하려는 데이터의 DATE 타입은 영문 기준인데, 현재 설정되어 있는 NLS_LANGUAGE가 KOREAN으로 설정되어 있어기 때문이다. DATE 타입이 영문으로 표기하면, 'DD-MON-YYYY' 의 경우 '22-MAR-2007'과 같은 형태가 되지만, 한글로 표기하면 '22-3월 -2007'과 같은 형태가 되기 때문에 오류가 생기는 것이였다. 다음의 명령어로 NLS_LANGUAGE를 AMERICAN으로 변경해주고 나서야 정상적으로 예제 테이블 생성 파일(demobld.sql)을 실행(?) 할 수 있었다.
alter session set nls_language='AMERICAN';

 테이블 추가가 끝난 후에는 NLS_DATE_FORMAT과 NLS_LANGUAGE를 원하는대로 다시 바꾸어도 상관이 없다. 예제 테이블 생성 파일과 삭제 파일을 첨부해 둔다.
예제 테이블 생성 파일 : demobld.sql
예제 테이블 삭제 파일 : demodrop.sql

참고 사이트
   http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html
   http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm
   http://database.sarang.net/?inc=read&aid=22003&criteria=oracle
   http://database.sarang.net/?inc=read&aid=28034&criteria=oracle
   http://www.cryer.co.uk/brian/oracle/ORA01843.htm

by sakuragi | 2007/03/22 22:59 | :: C space :: 컴퓨터 | 트랙백 | 핑백(1) | 덧글(19)

트랙백 주소 : http://sakuragis.egloos.com/tb/3226239
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at links for 2009-1.. at 2009/11/26 09:33

... 방향키 사용하기 흠… 잘 되는군. (tags: oracle linux keyboard sqlplus) sakuragi's miscellaneous space : 데이터 베이스 응용, 프로그래밍… Oracle 10g XE 오라클 10g xe 설치후 환경변수 설정하는 명령. . /usr/lib/oracle/xe/app/oracl ... more

Commented by 백일몽 at 2007/03/23 00:55
sql 플러스만 필요해서 설치는 했는데 정작 쓰지를 않는군요. -.-;;; 그래도 혹시 모르니 딜리셔스
Commented by lowid at 2007/03/23 22:16
건드리는(?) 부분이 많으시네요..
Commented by sakuragi at 2007/03/23 22:54
백일몽, 저도 그냥 수업이 있어서 깔았을 뿐이예요. :)
lowid, 실력이 없어서 여기 저기 찔러보는 중이예요. :)
Commented by 좋은진호 at 2007/03/25 22:55
깔끔하게 정리하셨네요. 애쓰셨습니다.
이번학기도 장학금??? ^^
Commented by sakuragi at 2007/03/29 03:09
좋은진호, Oracle 은 사용하는데 있어서 Mysql 이나 Postgresql 이랑 상당히 다른 것 같아요. 생각보다 복잡하네요. 이번 학기에는 장학금은 힘들지도... 듣는 과목들이 만만치 않아서요. T_T
Commented by LinDol at 2007/04/05 17:05
감사감사~
사쿠라기옹 감사해요 ^^
Commented by sakuragi at 2007/04/05 18:20
LinDol, 별말씀을요 ( __)
Commented by 신성철 at 2007/06/24 15:23
예전에 오라클 7,8i만 써보다가 오라클 xe 를 이렇게 쉽게 설치 할 수 있다는 걸 처음 알았네요.
올려주신 글 참고 잘했습니다. 그리고 확인해 보니 테스트 계정인 scott 이 hr 로 바뀌었나 보더군요...^^
Commented by sakuragi at 2007/06/26 22:29
신성철, 근데 10g 관련 서적에 여전히 scott 계정이 나오는 걸 보면 어쩌면 10g xe에만 scott 계정이 없는 걸 지도 모르겠네요. 그리고 hr 계정은 9i에도 있더라구요. :D
Commented at 2008/01/24 23:20
비공개 덧글입니다.
Commented by sakuragi at 2008/01/30 02:43
비공개덧글, 도움이 되었다니 감사합니다.
Commented by rosner at 2008/04/04 01:19
굳이 9i에서 안가지고 와도 hr 계정을 활성화시키면 여러 데모 테이블들이 존재하네요. 알고계셨다면, 삭제 부탁드려요^^;
Commented by sakuragi at 2008/04/04 01:45
rosner, 본문에도 적었다시피, 당시 가지고 있던 교재가 scott 계정의 데모 예제를 리용한 쿼리문과 그에 따른 결과값을 보여주었기에 굳이 9i에서 가져 왔습니다.
Commented by 방문자 ㅋ at 2008/09/09 12:00
ubuntu 8.04에서 설치 했습니다. 오랜 삽질 끝에 드디어 ㅜㅜ 엄청 고맙습니다.
참고로 windows XP가 기본운영체제인 pc에서 vmware로 돌렸는데
설치중 swap 영역이 작다는 메세지가 출력돼는군요
swapfile을 만들어서 해결 했습니다.
저랑 비슷한 문제가 있으신 분은 아래를 참고 하시면 좋겠네요

http://www.ubuntu.or.kr/viewtopic.php?f=11&t=320
Commented by 52da at 2009/03/18 19:28
저도 쓰려는 예제는 모두 9i쪽에 있는 테이블을 이용하는 것이어서 당황했습니다. 10g xe에는 scott 계정도 없고, HR에 들어있는 테이블도 예전꺼와 완전히 다르더군요^^; 9i데모 테이블파일 감사합니다^^
Commented by sakuragi at 2009/05/06 01:08
넵.. 저도 당황했었죠~ 도움이 되서 다행입니다~ ^^
Commented by 요렇게 삽입 at 2009/05/18 03:21
>sqlplus sys as sysdba

@C:oraclexeapporacleproduct10.2.0serverRDBMSADMINscott.sql

CONNECT SCOTT/TIGER
Commented by bbgun at 2009/10/29 11:12
좋은내용 감사합니다. 실습중에 저도 같은 에러여서 조금 헤맸는데 덕분에 해결했네요..

Commented by sakuragi at 2009/11/09 00:57
도움이 되었다니, 저도 기쁘네요~ ^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶

:+: sakuragi's Steam :+: