우분투(10.04)에 오라클 11g 설치하기.

 이 글은 다음의 사이트를 베이스로 우분투(10.04)를 기반으로 오라클 11g(linux_11gR1_database_1013.zip) 버전을 설치하여 proc 를 이용한 프로그램의 컴파일까지의 내용을 편집한 것이다.

 원글님: 허니몬의 자바Guru
http://java.ihoney.pe.kr/39

 #1. 먼저 오라클 11g를 설치하기에 앞서 필요한 패키지를 설치하는 작업이 필요하다.

 다음의 패키지를 설치하도록 하자.

 # sudo apt-get install gcc make binutils lesstif2 rpm libmotif3 libaio gawk alien ksh

필요한 패키지 버전(당연히 그 이상 버전도 가능) -> 대부분 설치되어 있음.
binutils-2.15.92.0.2-10
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9
gcc-c++-3.4.3-9
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9
libstdc++-devel-3.4.3-9
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5

 아래의 패키지를 더 설치하도록 하자.

 # apt-get install gcc
binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5
build-essential


** 다음의 위치에서 oracle을 다운받도록 하자. 필자는 11.1.0.6.0 버전으로 설치를 진행하였다.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 #2. 패키지의 설치가 끝났으면 설치를 위한 사용자 그룹과 유저를 만들도록 한다.

# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -m oracle -g oinstall -G dba -s /bin/bash
# usermod -g nobody nobody
# passwd oracle  (oracle 계정의 비밀번호 설정)

#3. 리눅스 커널의 소스도 필요하다.

 # sudo apt-get install linux-headers

 #4. Oracle 에서 필요한 메모리와 CPU 리소스를 위해 커널 파라미터를 수정한다.
 파일을 열고 가장 아래쪽에 다음의 내용을 삽입한다.

 # sudo vi /etc/sysctl.conf

fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

 #5.  /etc/sysctl.conf 파일은 우분투 시스템이 부팅시 처음 읽어오는 정보이다. 이것을 적용시키기 위해서 재부팅을 한다.
 
 혹은 재부팅이 귀찮으면 다음을 입력한다. sysctl.conf 설정을 다시 읽어들이는 명령어이다.

 # sudo sysctl -p

 #6. 다음으로 limit.conf 파일을 수정한다.

 다음의 내용을 /etc/security/limits.conf 파일에 삽입한다.

# sudo vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16383

oracle soft nofile 1023

oracle hard nofile 65535

 /etc/security/limits.conf 파일의 수정이 완료되었으면 다음으로

 /etc/pam.d/login 파일을 열어서 다음 라인을 추가한다.

 # sudo vi /etc/pam.d/login

 session required /lib/security/pam_limits.so
 session required pam_limits.so

 #7. 환경변수 설정.
 다음으로 오라클 기동에 관련한 환경변수를 설정한다.

$ln -s /usr/bin/awk /bin/awk

$ln -s /usr/bin/rpm /bin/rpm

$ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so

$ln -s /usr/bin/basename /bin/basename
/bin/basename

Oracle 11g가 설치될 폴더 생성하기(본인은 11g를 설치하여 11g로 변경함)

$mkdir /oracle

$mkdir /oracle/11g

$chown -R oracle:oinstall /oracle

$chmod -R 775 /oracle

그다음 환경변수 설정을 위해 etc밑에 profile을
gedit로 연다(vi로열어도 상관없음)

$sudo vi /etc/profile

파일을 열었으면.. 파일 가장 아랫부분테 밑에 정보를
복사해서 넣는다.. 파일의 가장 마지막!

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/11g

export ORACLE_SID=oracle

export PATH=$PATH:$ORACLE_HOME/bin

여기까지 했으면.. 환경변수가 제대로 등록되었나.. 터미널을 열어서 확인을 해본다..

$ su – oracle

password:

$ echo $ORACLE_BASE

/oracle

$ echo $ORACLE_HOME

/oracle/11g

$ echo $ORACLE_SID

oracle

 제대로 나오면 이상없음..

 #8. 오라클 압축 풀기.

# cd /path/to/zipfile (Oracle 압축 파일을 받은 폴더로 이동한다).
# sudo chown oracle:oinstall Oracle11*.zip
# sudo Oracle11*.zip /home/oracle
# su – oracle
# unzip linux_11gR1b5_database.zip – 파일명은 버전에 따라 달라질 수 있습니다.

# chown -R oracle:oinstall database

 #9.Turn on the display – runInstaller를 실행하기 전에 xdisplay를 일치시켜줘야
한다는
군요…

 root 계정이나 oracle 에서 xdisplay를 사용하려고 하면 실행되지 않는 부분을 해결하기 위해서는 아래의
명령어를 본인의 사용계정에서 설정해줘야 합니다.

 꼭!! 안그러면 실행 중 오류가 뜹니다.

 # sudo -i
 #
xhost +
 # su – oracle
 # DISPLAY=:0.0; export DISPLAY

 
 #10. 오라클 설치 시작.

# su – oracle
# export LANC=C  // 그냥 실행하면 한글이 깨진 설치화면으로 나옵니다. 속편하게 영어로~!!
$ cd /path_to_extracted_files
$ ./runInstaller

#11. 오라클 설치.

아래 그림에서 보시는 것처럼


Oracle Base Location : /oracle


Oracle Home Location : /oracle/11g


Global DataBase Name : oracle

(주의: 다른 값을 넣고 싶은 경우, 위의 export ORACLE_SID=oracle” 설정과 똑같은 값을 넣어주어야 합니다.)

Inventory directory 는 /oracle/oraInventory로 설정

System group name 은 dba로 설정


나머지 과정은 Next~ Next~~를 눌러주면 된다.

 !! 주의 !!

 필자의 환경 – 우분투 10.04 – Desktop 에서 오라클 설치를 진행할 경우, 왜인지 중간에 Assistant 프로세스를 진행할 때 hang이 걸리는 문제가 있었다.
왼쪽의 화면처럼 창이 하나 뜨고 창의 안쪽에는 아무런 화면이나 메시지가 나타나지 않는 문제였다.

 분명 저번에 어떻게 해결한 것 같았는데, 도저히 기억이 나질 않았다. 한참을 고민하다가 답을 찾았다. 아마도 데스크탑 환경에서 실행중인 한 패키지(혹은 라이브러리) 중에서 화면을 띄우는 라이브러리와 뭔가 상성(?)이 맞지 않아서 생기는 문제인 듯 했다.

 그래서 우분투 처음 시작시, 로그인을 할때 시작을 Xterm 모드로 로그인을 하여 데스크탑 설정과 관련된 대부분의 라이브러리/프로세스 실행을 멈추게 하였다.

 그리고 설치를 진행하니 정상적으로 설치가 되는 것을 확인하였다…

 

 쭈욱 넥스트가 나오고 다음 창이 나오면, Script to be executed : 경로에 있는 곳으로 가서 sh(스크립트
파일)을 실행시키자.

 위쪽에 써 있듯이, root 계정으로 실행시켜야 한다.

 #12. Complete Install And System Reboot.

본인 계정으로 로그인 후 터미널을 실행하여 /etc/oratab파일 부분을 수정


보이는 것처럼 oracle:/oracle/11g:N 을 oracle:/oracle/11g:Y 로 변경하면 된다.

#13. 오라클 리스너의 절대 패스 수정

# gedit /oracle/11g/bin/dbstart


 ORACLE_HOME_LISTNER= 부분을

 ORACLE_HOME_LISTNER=/oracle/11g 로 설정해 주면 되겠다.


제……………….. 오라클 실행해보자…

oracle 계정에서

$ lsnrctl start

리스너 시작 후에

SQL> conn oracle as sysdba
Enter password:
Connected to an idle instance.
SQL> startup
ORACLE instance started.

 
 #.14 여기까지가 oracle 의 설치부분이다. 이제 proc를 이용한 프로그램의 컴파일을 위한 부분을 알아보도록 하자.

 예제 proc 프로그램을 이용하여 컴파일을 시도해보자.

 나는 사내에서 사용하는 Pro 프로그램을 사용했다.

 다른 분들은 이곳
 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Database/dbms_programing/OracleProcPrograming_Start

 을 참고하여 알맞은 예제 소스를 구하도록 바란다.(사실 저곳에 나머지 내용이 다 나와있다.)

 필자의 경우 proc 프로그램 컴파일을 실행하면 아래의 오류 메시지가 나왔다.

 /oracle/11g/bin/proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

 libclntsh.so.11.1 파일을 찾을 수가 없다는 내용인데 이는 라이브러리 패스와 심볼릭 링크 설정으로 해결 할 수 있다.
 

먼저 .bash_profile 에 다음을 추가한다. (필자의 경우 ~/.bashrc) 였다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

그래도 안되면 $ORACLE_HOME/lib 에 파일 이 있는지 확인후 없으면 링크한다.

[oracle@localhost lib]$ ln -s
libclntsh.so.10.1  libclntsh.so

 

 그리고 추가로 다음의 문제도 발생했었는데…

Error at line 34, column 11 in file /usr/include/stdio.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 15, column 10 in file /usr/include/_G_config.h
#include <stddef.h>
………1
–More–make: *** [oraquery.o] Error 1
PCC-S-02015, unable to open include file
Error at line 52, column 11 in file /usr/include/wchar.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 53, column 11 in file /usr/include/libio.h
# include <stdarg.h>
……….1
PCC-S-02015, unable to open include file
Syntax error at line 332, column 3, file /usr/include/libio.h:
Error at line 332, column 3 in file /usr/include/libio.h
  size_t __pad5;
..1
PCC-S-02201, Encountered the symbol “size_t” when expecting one of the following
:

 이는 /oracle/11g/precomp/admin/pcscfg.cfg 설정을 바꿔줌으로써 해결 할 수 있었다.

 /oracle/11g/precomp/admin/pcscfg.cfg 파일안에  /usr/lib/gcc/i486-linux-gnu/4.4/include 설정을 추가하도록 한다.

 단, 이 설정은 배포판, gcc 버전 등에 따라 바꿔질 수 있으므로 경로를 확인해서 입력하여만 한다.
 
 여기까지 설정이 끝났다면 이제 Proc 를 사용하면 된다. 🙂

2010 June 16 Clody

 Today, I try to talk about some happenings in yesterday.

 At the beginning, it was just good dinner, as usual.

 But… I didn’t notice. Two some special people int that event.

 One person… is Mr. James. He is one of the CEO of Nexus Community.

 Actually, His working place is not in Korea. His Working place is in China.

 So, I didn’t know who is he, and what is his position.

 It was my first mistake.

 So… what is second mistake? And who is second person? Guess who?

 It’s me.

 I’m a new man in Nexus Community, and I didn’t introduce myself to James, not yet.

 Anyway, I did introduce myself to Jame, politely.

 When I finished my introduction, he told me.

 “Do you know how we introduce our new member in our own traditional way?”

 I said “Well…..”

 That is my second, critical mistake.

 What I only remember the thing before to arrived at home that I drink again and again.

 True to be told, it’s not bed. Funny and helpful to me.

 It was a good chance for me. To make more friend with Nexusians.

 James was knew, and everybody already experienced it.(or not?)

 Well… I want to write more about next episode.

 But it’s enough. Because after a long time later, when I remember about my first company(Nexus) everything will be remembered in my memory, named as a “Good memory”.

 

아이폰 – 월드 워(World War)

 늦바람이 무섭다고 했던가..

 요즘 새로이 산 아이폰 3G(으윽.. 내가 사자마자 아이폰4 출시와 아이폰 3G 의 급격한 가격 하락이 시작되었다..ㅠㅠ) 를 가지고 노느라 정신이 없다.

 아이폰을 구입하기 전까지는 휴대폰은 오직 문자와 전화만을 위한 용도로 사용되었는데, 아이폰은 나의 생각을 바꾸어 주었다.

 요즘 하고 있는 게임은 월드 워(World War) 이다.

 얼마전에 유행하던(지금도???) 웹 게임과 비슷한 방식인데 휴대폰에서 플레이를 하니 시도때도없이 생각이나 손에서 떼지를 못하고 있다.

The Beginners Guide To World War For The iPhone | John Nemec

이미지출처 : johnnemec.com

 어서 빨리 동맹군을 많이 만들어야 하는데 큰일이다..ㅎㅎㅎ

 혹시 한국분들 플레이하고 계시면 동맹추가 부탁드려요

 KSFPE5
 pchero 입니다. 🙂

2010 June 14 Rain

 This is my first English diary after I moved here in Seoul.

 Today I finished my little homework that is about computer programs.

 In last few days, I tried to interconnect each different three computer programs on my linux laptop.

 But every time I tried, do failed. But yesterday, I did it!

 Of course, I had asked some help from the Internet and NEXUSIANS.

 And now I posted every information about interconnection of each three programs on my web blog.

 I hope I wish it will be helpful for someone who wants to use that programs.

—————————————————————————————————

 Milky said.
 Good job.
 I bet you had a hard time interconnecting those three programs.
 Job well done!

SVN + Redmine + Eclipse 연동하기.

 회사에서 우연한 기회로 접하게 된 redmine.

 전부터 알고는 있었지만 한번도 사용한 적이 없었던 Subvision.

 Java 프로그래밍을 할때만 사용했었던 Eclipse.

 이 세가지를 이용하여 C/C++ 개발환경을 꾸며보았다.

 나름 열심히 고생해서 연동에 성공했지만.. 늘 그렇듯이 하고나면 아무것도 아닌 것. 🙂

 그래도 과정에 있어서 재미있는 경험을 많이 했으니 그것으로 만족하련다. 🙂

 그리고, 이 문서로 하여금 다른이들이 나와 같은 고생을 하지 않았으면 한다. ㅎㅎㅎㅎ

 ————————————————————————————————

 문서의 목적 :
 리눅스(Ubuntu-10.04)의 환경에서 Eclipse + SVN + Redmine 연동하기.

 지은이 :
 탱이.

 # 1. Eclipse 설치하기.

 먼저 Eclipse 를 설치한다. 우분투에서의 Eclipse 설치는 매우 간단하다. 다음을 입력한다.

 # sudo apt-get install eclipse

 
 # 2. Eclipse CDT 설치하기.

 대부분의 사람들이 그러하듯 나 역시도 Eclipse 의 가장 큰 장점은 수많은 종류의 플러그인이라고 생각한다. Eclipse 에서 C/C++ 의 개발을 가능하게 하기 위해서는 따로 별도의 플러그인 설치가 필요하다. 그것이 바로 CDT 이다.

 Eclipse 를 구동하여 다음의 메뉴로 들어간다.

 help -> Install New Software

 그러면 아래의 그림과 같은 화면이 나오는데, 여기서 화면에서처럼 Programming Language -> Eclipse C/C++ Development Tools 를 체크하여 설치하도록 한다.

 # 3. Eclipse 의 Subversion 플러그인 설치하기.

 #2 의 단계만으로 Eclipse 에서의 C/C++ 프로젝트의 생성 및 개발이 가능해진다. 하지만 우리의 목적은 여기까지가 아니다.

 SVN 과 Eclipse 의 연동을 위해서는 SVN 플러그인(subclipse)이 따로 더 필요하다. 이 역시 별도의 설정이 필요한다. 아래 스크린 샷과 같은 설정을 하면 된다.


 플러그인의 저장소(?) 를 업데이트를 하고 Subclipse Plugin/Subclipse 플러그인을 설치한다.

 이로써, SVN + Redmine + Eclipse 연동을 위한 Eclipse 에서의 설정은 반정도 끝이 났다.

 # 4. SVN + Redmine 설치하기.

 이제 SVN 과 Redmine 을 설치할 차례이다. 많은 사람들이 이부분에서 좌절을 하고 고통을 겪었으리라 생각한다. 비록 문서와 자료가 많기는 하나, 상당히 어렵고 까다롭게 느껴지기 때문이다.

 하지만 기쁜 소식이 있다. SVN + Redmine + Apache + Mysql 등등의 여러가지 프로그램들을 모아 하나의 패키지로 제공하는 곳이 있다.

 바로 Bitnami(http://bitnami.org) 이다.

 사실 Bitnami 는 Redmine 뿐만 아니라, Mantis, Trac 등등의 다른 버그 리포팅 툴과 기타 여러가지 프로그램들의 All-in-one 패키지를 제공한다. 다른 패키지가 필요하신 분들은 이곳에서 큰 기쁨을 찾을 수 있으리라 생각한다. 🙂

 SVN + Redmine 통합 패키지를 다운받도록 한다.

 실행권한을 주고 설치를 하도록 하자.

 # wget http://bitnami.org/files/stacks/redmine/0.9.4-0/bitnami-redmine-0.9.4-0-linux-installer.bin

 # chmod a+x bitnami-redmine-0.9.4-0-linux-installer.bin

 # sudo ./bitnami-redmine-0.9.4-0-linux-installer.bin

다음의 설정 화면들이 나타나도록 하는데 중요하니 하나씩 집고 넘어가자.

 

설치경로


 먼저 설치 경로이다. 다른 값을 넣어도 무방하나, 해당 폴더의 소유권과 위치 등은 반드시 유의하여 지정해야 한다. 여기서는 기본 값을 사용한다.

유저 정보를 입력하는 곳이다. Redmine 에서 사용될 최고 관리자의 ID와 패스워드를 입력한다. 물론 절대 잊어버리면 안된다.


 Redmine 의 아파치 서버의 포트를 설정하는 부분이다. 이 역시 다른 값을 써도 무방하나, 다른 프로그램과의 포트 충돌/접속시의 프트지정 등의 여러가지 사항등을 고려한다면 기본값이 가장 무난할 듯 보인다.

 여기서는 기본값 80을 사용하도록 한다.


 MySQL의 포트를 지정하는 부분이다. 이역시 전과 설명 동일하며, 기본값을 사용하도록 한다.

 마지막 MySQL의 또다른 설정이 있었는지 기억이 나질 않는다. 따로 재설치를 해보려 했으나 컴퓨터의 사정으로 그것조차 여의치 않았다. 하지만 보통 대부분의 설정들이 그러하듯, 무슨값을 설정하든 설정한 값들에 대한 기억만 확실하다면 언제든지 변경이 가능하니 그리 큰 문제는 없으리라 생각한다.(물론, 아닐수도 있다 ^^;;)

 이제 Bitnami 의 설치가 시작되고 약간의 시간이 걸리니 잠시 커피라도 한잔 마시면서 여유를 가지는 것도 좋을 것이다.

 # 5. Bitnami 의 설정.

 Bitnami 의 설치가 무사히 끝났다면 이제 Bitnami의 설정을 할 차례이다.

 여기서 잠시 그간의 성과를 구경할 수 있다.

 인터넷 창에

http://localhost

라고 입력해보기 바란다. 감격의 Bitnami 메인로고를 볼 수 있다. 🙂
 (만약 안되는 분들은 아마 Apache 포트 설정을 바꾸신 분들이라고 생각한다. http://localhost:포트번호 ex. http://localhost:8080 을 입력해보시기 바란다.)

 이제 매번 서버가 부팅이 될때마다 자동으로 bitnami 가 실행될 수 있도록 rc.local 파일을 수정해주자.

 # sudo vi /etc/rc.local


 만약 설치시 경로를 달리 지정했다면 경로를 수정하여 작성해야함은 물론이다.

 매 부팅시 Bitnami 자동 실행 을 위한 설정은 끝이 났다.

 이번에는 SVN 설정의 차례이다.

 적당한 위치에 SVN 을 위한 디렉토리를 생성하여 그곳으로 이동한다. 필자의 경우 /home/pchero/svn 으로 결정했다.

 새로운 저장소를 생성하자. svnadmin 명령어를 이용하는데 여기서 주의해야 할 점은 Bitnami로 설치된 패키지의 SVN 패키지를 이용한다는 것이다.(사실, 따로 SVN을 설치했다면 그것을 이용해도 무방하다.)

 
 생성된 저장소의 설정 파일을 바꿔주자.

# vi conf/svnserve.conf

[general]
#anon-access = read
anon-access = none
auth-access = write
password-db = passwd

 익명의 접근 권한을 설정 및 패스워드 방식을 설정하도록 한다. 간단한 password-db = passwd 방식을 이용하도록 한다.

 계정 설정 및 패스워드를 설정하도록 한다.

# vi conf/passwd

[users]

pchero = 1111

* 설정 파일을 편집할 때 주의할 점은 절대 설정 라인의 앞부분에 빈칸이 존재해서는 안된다는 것이다.

 다시 Eclipse로 돌아가자.

 Windows -> Show View -> Other -> SVN -> SVN Repositories 를 선택하여 Eclipse 아랫단에 저장소 탭을 추가하자.

 추가된 저장소 탭에서 마우스 우클릭 -> new 를 선택하여 새로운 저장소를 추가하도록 한다.

 
 이제 Eclipse 에서 새로운 테스트 프로젝트를 생성하도록 하자.

 보통의 빈 프로젝트를 생성하도록 한다.

 프로젝트 생성 후, 생성된 프로젝트 위에서 우클릭 -> Team -> Share Project 을 선택하도록 한다.

 다음에 나오는 메뉴에서 SVN 을 선택하여 다음을 클릭하면 조금전 추가한 test 저장소가 보일 것이다.

 
 저장소를 추가한 후, 해당 프로젝트에 아무 파일이나 생성해보자.

 그리고 해당 프로젝트 위에서 우클릭 -> Team -> Commit 을 클릭하도록 하자.

 
 위와 같은 창이 나오면서 변경된 사항들이 나타날 것이다.(필자는 컴퓨터의 사정에 의해 따로 추가한 파일이 없어서 그냥 빈 공간만 나오게 되었다.)

 이제 OK 를 눌러 추가된 파일이 정상적으로 저장소에 저장되는 것을 복 다시 http://localhost 로 접속하도록하자.

 Bitnami 를 설치할 때 입력 했던 사용자 정보를 이용하여 관리자 계정으로 로그인을 하자.

 로그인 후, 왼쪽 상단에 있는 projects 메뉴로 들어가 아무 프로젝트나 하나 생성하도록 하자. (필자의 경우 TEMS 라는 이름으로 프로젝트를 생성하였다.)

 정상적으로 프로젝트가 생성이 되었다면 다시금 왼쪽 상단의 projects 를 클릭하였을 때, 해당 프로젝트의 이름이 나타날 것이다.

 이제 대망의 마지막 단계이다.

 해당 프로젝트의 제일 마지막 탭에 Settings 를 클릭하여 Repository 를 클릭하도록 한다.

 해당 프로젝트의 저장소를 설정하는 부분인데, SCM 에는 당연히 Subvision 을 골라주도록 하고, 알맞은 Url 과 ID/Passwd 를 입력하도록 한다.

 아래는 필자의 설정 예이다. 여지껏 잘 따라왔던 분들이라면 무리없이 입력할 수 있으리라 생각한다.


 설정을 마친 후, Save 버튼을 누르면 바로 왼쪽에 Repository 라는 항목이 생겨날 것이다. 클릭을 해보면 조금전 파일을 추가한 프로젝트의 저장소 모습이 나타날 것이다. 🙂