일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리눅스
- spring boot
- jvm
- dto valid
- CentOS6
- spring
- header setting
- 도커
- SpringBoot
- 초기 구축
- docker
- JavaScript
- Java
- 헤더 설정
- Next.js 14
- swagger
- jpa entity자동
- generate entity
- NextJS
- docker 설치
- 초기 세팅
- generate pojos
- JPA
- React
- MySQL
- java9
- java8
- ollama langflow
- memcached
- custom valid
- Today
- Total
개발자의 길
레드햇 계정 리눅스에서 오라클 11 설치하기 본문
레드헷계열의 리눅스중 대표적인것이 엔터프라이즈와 CentOS, Fedora이다.
이 세개는 모습이나 쓰는방법이 거의 동일하다. 다만 엔터프라이즈는 돈을 내야 yum이라든지 기술적 지원을 받을수 있다. 돈을 내기 싫다면 안정버젼 엔터프라이즈의 클론 버젼인 CentOS를 사용하면 된다.
오라클은 왜 써야하는가? 하는 생각을 많이 해보았다.
우선 오라클을 써보지 않은 DB유져들은 취직이 힘들다는 점이다. 1980년대부터 서버용 DB를 선점해온 Oracle은 MS의 MSSQL의 어떠한 공격에도 임베디드시장에서의 1위자리를 내준적이 없다.
그만큼 많은 DB서버중 기업체에서 가장 널리 쓰인다고 말할수 있다. 이 말은 즉 오라클을 모르면 DB설계자로서 DBMS관리자로서 취직이 어렵다는 이야기가 된다.
우리가 많이 쓰는 MySQL은 접하기도 쉽고, 구성도 어떤 SQL보다 쉽다. 많은 프로젝트들이 MySQL로도 실현 가능하다. 하지만, MySQL을 이용하지 않고, 오라클만을 고집하며 DB를 구성하는 회사들이 많다.
뭔가 있어보이고, 뭔가 틀려보이는 착각때문일까? 아니면 트랜잭션에 롤백시스템..이라면서 거들먹 거리며 알아듣지도 못하는 영어를 써대며 오라클을 칭송하는 기존 관리자들의 자만심때문일까?
어쨋든, DB manager로서 반드시 오라클을 배워 차후의 프로젝트에서는 오라클을 이용한 DB구성을 해보자는 일념하에 이 포스팅을 시작한다.
오라클의 마지막버젼은 11g로서 오라클의 개발은 리눅스 엔터프라이즈 하에서 이루어진다고 한다.
그 소스들을 가지고 유닉스버젼과 윈도우즈버젼으로 재포팅한다고 하니..
아마도 오라클을 사용하기에 가장 좋은 배포본은 레드헷 계열인듯 싶다. 실제로 금융사나 대형 증권사같은 회사들은 Linux For SYSTEM Z하에서 오라클로 DB구성을 한다고 한다. (보진 못했지만)
돈이 왔다갔다 하는 시스템이니 안정성과 기능,보안에서는 오라클이 가장 알맞은 시스템인것만은 틀림없다.
잡소리는 때려치우고...
오라클은 리소스를 굉장히 많이 잡아먹는 DBMS이다. 최소 Require 물리적 메모리가 1기가에 달한다. 또한 스왑파일의 크기도 최소 1기가를 요구하니 실제적으로 실무에 사용하기 위해서는 적어도 오라클용으로 물리적 메모리로 2기가정도 되는 메모리를 활당해야 겠다. 테스트하는 vmware용 레드헷머신에 과감히 1기가의 메모리를 활당하고 테스트 머신이라 할지라도 disk durid에서 스왑파일로 2기가의 용량을 주기로 하였다.
80기가 하드 노트북에 20기가를 테스트용 리눅스머신에 하드디스크를 활당하고 2기가 램 윈도우시스템에 vmware에 1기가램을 활당하면 상당히 버벅거림을 느낄정도가 되겠다.
그래서 이번 포스팅에서는 가급적 스샷을 자제한다. 난 시스템이 느려지면 작업을 안하는 스타일이라..
기획하고 있는 실무서버에는 4기가 램에 2테라의 하드를 붙일 생각이다. DB로 구성한 스토리지 데이타서버를 만들어 네트워크상에서 언제든 불러올수 있어야 하니..
OS환경 : CentOS 5.3
물리적메모리 : 1G
스왑 : 2기가
하드디스크 : 20기가
오라클버젼 : oracle 11g for linux(i386)
오라클 설치에 필요한 용량 : 3.5기가 이상..
download : 오라클홈페이지 ( 상당히 느리다. 알아서 딴곳에서 받자.)
우선 시스템의 용량에 4기가정도 되는 용량이 있어야 한다. df명령으로 확인하여 보자
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 18G 4.8G 12G 29% / tmpfs 506M 0 506M 0% /dev/shm [root@localhost ~]# |
용량은 충분하다. 오라클사이트에 가서 다운을 받자.
http://www.oracle.com/technology/software/products/database/oracle11g/111060_linuxsoft.html
그런데 여기서 다운받으면 우리나라의 경우 약 14시간정도 걸린다. 아마도 웹브라우져가 도중에 서버릴것이다. 다운로드 속도가 매우 느리다. 무료로 다운받게한 오라클이지만, 아마도 자신들의 웹사이트외의 업로드는 금지시켜놓은듯 하다. 북한이나 이란등의 미국의 적대국가에서 강력하게 사용할수 없다고 전제도 하고 있는것보면 무상이지만, 마음대로 자료실에 올리면 안되는듯 싶다. 알아서 찾자.
* 의존성 체크
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
yum -y install binutils compat-db control-center gcc glibc gcc-c++ glibc-common gnome-libs libstdc++-devel make pdksh sysstat xscreensaver
[root@localhost ~]# yum -y install binutils compat-db control-center gcc glibc gcc-c++ glibc-common gn ome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver Dependencies Resolved ====================================================================================================== Transaction Summary Total download size: 1.8 M Installed: compat-db.i386 0:4.2.52-5.1 sysstat.i386 0:7.0.2-3.el5 |
배포본을 최신버젼을 설치하였더니, 없는 프로그램의 두개이다.
1. 오라클 설치용 계정만들기
[root@localhost ~]# groupadd -g 5000 dba [root@localhost ~]# useradd -g dba oracle [root@localhost ~]# passwd oracle Changing password for user oracle. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@localhost ~]# mkdir -p /home/oracle/oracle11 [root@localhost ~]# chmod 775 -R /home/oracle/oracle11 [root@localhost ~]# chown oracle:dba /home/oracle/ |
2. 커널 매개변수를 변경한다.(왜 확인하는지는 몰겟당..;)
[root@localhost backup]# sysctl -a | grep kernel.shmall kernel.shmall = 2097152 [root@localhost backup]# sysctl -a | grep kernel.shmmax kernel.shmmax = 33554432 [root@localhost backup]# sysctl -a | grep kernel.shmmni kernel.shmmni = 4096 [root@localhost backup]# sysctl -a | grep kernel.sem kernel.sem = 250 32000 32 128 [root@localhost backup]# sysctl -a | grep fs.file-max fs.file-max = 24589 [root@localhost backup]# sysctl -a | grep net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 [root@localhost backup]# sysctl -a | grep kernel.msgmni kernel.msgmni = 16 [root@localhost backup]# sysctl -a | grep kernel.msgmax kernel.msgmax = 8192 [root@localhost backup]# sysctl -a | grep kernel.msgmnb kernel.msgmnb = 16384 |
/etc/sysctl.conf 파일의 마지막 부분에 아래를 추가시킨다
#For Installing Oracle Setting kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=4194304 |
커널 매개변수 변경을 위하여 vi /etc/sysctl.conf를 실행하여 위와 같이 편집한다.
변경후 아래와 같이 실행
[root@localhost ~]# /sbin/sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 536870912 kernel.shmall = 268435456 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.wmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_max = 262144 |
3. /etc/security/limits.conf변경
Linux 계정 별로 실행되는 프로세스와 열린 파일 수를 제한해야 한다.. /etc/security/limits.conf 를 열고 아래의 내용과 같이 추가한다.
#<domain> <type> <item> <value> #* soft core 0 |
4. /etc/pam.d/login변경
[root@localhost ~]# vi /etc/pam.d/login #%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth include system-auth account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so session optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open session required pam_namespace.so session optional pam_keyinit.so force revoke session include system-auth session optional pam_ck_connector.so session required /lib/security/pam_limits.so |
5. /home/oracle/.bash_profile의 변경
[root@localhost ~]# vi /home/oracle/.bash_profile export ORACLE_BASE=/home/oracle/oracle11 export ORACLE_SID=ORCL export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1 export PATH=$PATH:$ORACLE_HOME/bin export DISPLAY=:0. |
파란마크 부분을 추가한다.
6. 압축을 푼다.
루트 계정으로 받은 오라클 db를 오라클 계정으로 이동하여 퍼미션을 오라클로 변경하고 압축을 풀어준다.
[root@localhost ~]# cd /root/Desktop/ [root@localhost Desktop]# ls gnome-terminal.desktop hadjaha-009b9e425c.desktop linux_11gR1_database.zip [root@localhost Desktop]# mv linux_11gR1_database.zip /home/oracle/ [root@localhost Desktop]# ls -la /home/oracle/ 합계 1803100 drwx------ 4 oracle dba 4096 7월 14 20:12 . drwxr-xr-x 4 root root 4096 7월 14 19:44 .. -rw-r--r-- 1 oracle dba 33 7월 14 19:44 .bash_logout -rw-r--r-- 1 oracle dba 346 7월 14 20:10 .bash_profile -rw-r--r-- 1 oracle dba 124 7월 14 19:44 .bashrc drwxr-xr-x 4 oracle dba 4096 7월 14 19:44 .mozilla -rw-r--r-- 1 root root 1844533232 7월 14 19:26 linux_11gR1_database.zip drwxrwxr-x 2 root root 4096 7월 14 19:45 oracle11 [root@localhost Desktop]# chown oracle.dba /home/oracle/linux_11gR1_database.zip 합계 1803100 drwx------ 4 oracle dba 4096 7월 14 20:12 . drwxr-xr-x 4 root root 4096 7월 14 19:44 .. -rw-r--r-- 1 oracle dba 33 7월 14 19:44 .bash_logout -rw-r--r-- 1 oracle dba 346 7월 14 20:10 .bash_profile -rw-r--r-- 1 oracle dba 124 7월 14 19:44 .bashrc drwxr-xr-x 4 oracle dba 4096 7월 14 19:44 .mozilla -rw-r--r-- 1 oracle dba 1844533232 7월 14 19:26 linux_11gR1_database.zip drwxrwxr-x 2 root root 4096 7월 14 19:45 oracle11 [root@localhost Desktop]# |
사용자 변경과 압축풀기
[root@localhost Desktop]# su oracle [oracle@localhost Desktop]$ cd [oracle@localhost ~]$ ls linux_11gR1_database.zip oracle11 [oracle@localhost ~]$ unzip linux_11gR1_database.zip/home/oracle/ [oracle@localhost ~]$ ls database linux_11gR1_database.zip oracle11 [oracle@localhost ~]$ cd database |
7. 설치시작
Xwindows로 oracle계정으로 다시 로그인한다.
설치시에 xWindows가 한글세팅이라면, 오라클은 EUC_KR용 설치화면을 뿌리기 때문에 인코딩이 깨져나오는 현상이 발생할것이다.
이럴경우는 당황하지 말고 영문으로 설치하도록 한다.
콘솔상에서 export LANG=C 를 입력하면 인스턴트 영문모드가 된다.
[oracle@localhost database]$cd /home/oracle/database [oracle@localhost database]$ export LANG=c [oracle@localhost database]$ ./runInstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 80 MB. Actual 9276 MB Passed Checking swap space: must be greater than 150 MB. Actual 2047 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-07-14_08-44-33PM. Please wait ...[oracle@localhost database]$ [oracle@localhost database]$ |
설치화면이 시작된다.
Oracle Basic Location : /home/oracle
Oracle Home Location : /home/oracle/prdouct/11.1.0/db_1
UNIX DBA Group : dba
를 입력한다. 입력하지 않아도 기본으로 나올것이다.
여기서 Location에 Oracle의 권한이 없는 디렉토리를 선택하면 아래와 같은 에러메세지가 나오므로, 로케이션은 앞의 .bash_profile에서 설정한대로 해주어야 한다.
Advanced Install버튼을 그리고 넥스트를 선택하자.
Inventory Directory가 /home/oracle/oracle11/oralInventory로 변경하고 Next하자.
만약 퍼미션 에러가 난다면 터미날에서 루트로 접속하여 oracle11디렉토리를 oracle.dba에게 준다.
언어를 추가한다.
Enterprise Edition - product Language
한국어와 쓰일 일본어를 정도를 영어와 함께 추가한다.
Install Location을 변경하는 부분이다. .bash_profile에서 설정해준것이 나올것이다. Next!
check mode- 시스템이 사양이 올바른가에 대한 체크를 한다. 설치에서 Warning 1개와 Not Excute부분이 1개 나왔다. 사설ip를 쓰는것이 문제가 되었다. 이것은 /etc/hosts부분에 사설ip domain명 별칭 등을 넣어서 해결할수 있다.
그냥 넘어가자
Create Database항목을 체크한후 Next
Select General Purpose
데이타베이스 이름과 SID값을 위와 같이 입력
메모리와 인코딩과 샘플 스키마등에 대해서 설정하여 준다.
메모리는 테스트 서버이니 디폴트인 403MB으로 잡았다.
인코딩은 UTF-8로 잡아줬다.
나머지는 디폴트로 NEXT
Management Option 별다른 체크없이 Next
file System - /home/oracle/oracle11/oradata
Do not Enable Automated backups 자동백업 하지 않는다에 체크..
패스워드는 실무에서는 별도로 각기 관리 비번을 준다.
구찮으므로 모두 통일된 패스워드 발급
디폴트된 값으로 Next
이후 오라클에 사용등록하라는 메세지가 나오는데 등록안할것이므로 Next
설치 환경에 대한 설정을 보여준다. Summary- Next Installing
이제 설치모드 돌입.. 꽤 시간이 흘러야 다음 장면을 볼수 있다.
설치가 다 끝나면 다음과 같은 메세지가 출력된다.
터미널을 열어 루트로 로그인하여 위의 sh파일들을 실행하자(2개다). 실행후 OK버튼
설치가 끝이 났다. 이제 오라클이 제대로 제대로 설치되어 움직이는지 확인하여 보자.
(/home/oracle/oracle11/product/11.1.0/db_1/bin)
[oracle@localhost bin]$ ./lsnrctl start LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 15-JUL-2009 00:08:15 Copyright (c) 1991, 2007, Oracle. All rights reserved. TNS-01106: Listener using listener name LISTENER has already been started [oracle@localhost bin]$ ./lsnrctl status LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 15-JUL-2009 00:08:58 Copyright (c) 1991, 2007, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.1.0.6.0 - Production Start Date 14-JUL-2009 22:09:41 Uptime 0 days 1 hr. 59 min. 46 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/oracle/oracle11/product/11.1.0/db_1/network/admin/listener.ora Listener Log File /home/oracle/oracle11/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521))) Services Summary... Service "ORACLE11" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service... Service "ORACLE11_XPT" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service... Service "ORCLXDB" has 1 instance(s). Instance "ORCL", status READY, has 1 handler(s) for this service... The command completed successfully [oracle@localhost bin]$ sqlplus /nolog SQL*Plus: Release 11.1.0.6.0 - Production on Wed Jul 15 00:13:47 2009 Copyright (c) 1982, 2007, Oracle. All rights reserved. SQL> connect orcl as sysdba Enter password: Connected. |
실행시에
./lisnrctl: error while loading shared
libraries: /home/oracle/oracle11/product/11.1.0/db_1/lib/libnnz11.so: cannot restore
segment prot after reloc: Permission denied
이런 오류나 난다면
root 권한으로 로그인해서 /etc/selinux/config 를 열고 아래 부분을 수정한다
SELINUX=enforcing -> SELINUX= disabled
수정 후에 재부팅을 해줘야 적용된다!!
구동이 되는것을 확인했다면 이제 부팅시 자동으로 오라클이 동작하도록 설정해보자
일단 /etc/init.d/oracle start|stop|restart 명령을 쓸수 있겠끔 스크립트를 만들어준다
[root@localhost ~]# vi /etc/init.d/oracle if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ] case "$1" in [root@localhost ~]# vi /etc/rc.local touch /var/lock/subsys/local
#!/bin/bash
ORA_HOME="/home/oracle/oracle11/product/11.1.0/db_1"
ORA_OWNER="oracle"
then
echo "Oracle Startup: failed"
exit 1
fi
start)
echo -n "Oracle Start: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
echo -n "ORACLE Shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
esac
exit 0
[root@localhost ~]#
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
/etc/init.d/oracle start
[root@localhost ~]#
시스템 부팅과 함께 다시 오라클이 구동될수 있도록 /etc/rc.local에 위에서 작성한 스크립트 파일을 삽입한다.
[root@localhost ~]# shutdown -r now Broadcast message from root (pts/1) (Wed Jul 15 01:59:35 2009): The system is going down for reboot NOW! |
부팅과 함께 자동으로 오라클이 구동되었다.
한가지 유의 할점은 처음 했으니 디비에 접속할 유저를 생성해야 한다.
유저 생성은 내 블로그에 있으니 뒤저보도록
'3. DB' 카테고리의 다른 글
[ORACLE] TO_CHAR 함수 모든것! (1) | 2013.12.26 |
---|---|
[ORACLE] TO_CHAR 의 펑션.. (0) | 2013.12.26 |
[ORACLE] 오라클 유저 생성,권한주기, 유저 지우기 (0) | 2010.08.27 |
ibatis 조건 속성 및 동적 작성법 (0) | 2010.03.12 |
[MYSQL] 조건별 결과물 CASE ~ WHEN ~ END (0) | 2010.03.12 |
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.