본문 바로가기

Oracle/Oracle Setup

Oracle Database on Linux 5_Oracle 11g R2 설치하기_1st

드디어!! Linux 설치를 끝내고~ㅎ Oracle 11g R2를 설치하기 위한 과정에 들어갑니다 ㅎ

Winodw에서 Oracle을 설치하는 것은 간단하지만 Linux는 Winodw와 다르게 엄청나게 복잡하고 해야할게 많습니다..ㅎ

인터넷에는 보통 상세히 잘 설명이 되어 있지 않아서 Linux옵션도 좀 상세히 다루고 패키지들도 상세히 다룰까 합니다 ㅎ

여기에서 나오는 Oracle 11.2.0.2 버전은 오라클 사이트에서 받으실 수 있습니다 ㅎ 잘찾아보면요 ㅎ

그만큼 스크롤의 압박에 시달리겠지만..ㅠㅠ 이제 시작해보져 ㅎ

 

 

Step 1. Terminal로 유저 및 그룹 생성

 

이전에 저는 Linux를 설치할 때 유저를 생성하지 않았습니다 ㅎ

그 이유는 그룹을 만든후 거기에 유저가 포함이 되도록 한꺼번에 작업을 하기 위해서 인데요. 그전에 만들고 또 다시 그룹에 넣어도 상관은 없습니다 ㅎ 그럼 귀찮아서 이렇게 한거에요..ㅎ

명령어를 간단히 한번 살펴보도록 하겠습니다.

 

groupadd 명령어는 간단히 말하면 그룹의 추가 입니다. 그룹이란 여러가지 유저들을 포함하는 모임입니다.

각자 group과 user에는 gid(groupid)와 uid(userid)를 갖는데요 -g옵션은 gid를 5000을 갖게끔 만든다는 것입니다.

아래의 groupadd -g 5000 dba : gid가 5000번인 dba 그룹을 생성하라 라는 말이죠 ㅎ

 

그럼 useradd 명령어는? 그렇습니다. user를 추가하는 명렁어죠ㅎ

여기서도 -g 옵션이 있죠? 이건 gid를 말하는 것이 아니라 자신이 속할 그룹을 정해줄 수 있다는 겁니다.

useradd -g dba oracle : dba 그룹에 속하는 oracle 유저를 생성하라 라는 말입니다 ㅎ

 

passwd 명령어로 유저에 대한 비밀번호를 설정 가능한데요. passwd oracle은 oracle 유저의 비밀번호를 생성한다 라는 겁니다.

new UNIX password 로 맨처음 비밀번호를 설정하고 Retype new UNIX password 로 다시한번더 확인!

BAD Password가 뜨는건... 좋지 않은 패스워드라는 거죠 ㅎ 보통 8글자 이상 특수문자 숫자 알파벳을 포함해야 안뜹니다ㅠ

그러나! 아래에 successfully가 떴으니된거 ㅎ

 

 

 

Step 2. IP 확인

 

컴퓨터에서 각자 통신을 하기위해서 IP(Internet Protocol)이라는 것이 있습니다. 흔히 말하는 IP주소라고 하지요 ㅎ

VMware Hardware 설치할때 네트워크 어답터를 NAT라는 설정으로 했던것이 기억이 나시나요?

거기서 사용자만 들어갈 수 있다고 했는데요. 저 IP로 접속 할 수 있는건 사용자만이 가능하다는 겁니다 ㅎ

다른 PC에서는 저 IP로 접속할 수가 없어용ㅎ 이 IP를 확인 하는 이유는 좀있다가 이 IP로 파일을 옮기기 위해서 입니다.

무슨 파일이냐~ 하믄! Oracle 11g R2 설치파일이에요 ㅎ 저의 IP는 192.168.30.128 이네요 ㅎ


 

 

Step 3. WinSCP로 파일 옮기기

 

WinSCP 프로그램으로 파일을 옮길건데요!ㅎ 어찌 하느냐~ㅎ 하믄 WinSCP를 먼저 실행을 시켜주시구요

Host name에는 이름이 아닌 IP를 입력해 주세요 ㅎ 위에서 확인한 Linux의 IP를 말이죠 ㅎ

User name에는 위에서 생성한 oracle 유저로 ㅎ Password는 oracle 유저의 패스워드를 입력해주시구요 ㅎ

Protocol은 SFTP(allow SCP failback)으로 선택해 주시기 바랍니다.

그리고 Login~


 

 

 

최초 접속시에는 이렇게 Warning이 뜨는데요ㅎ 겁먹지 마시고 OK를 누르시면 됩니다 ㅎ

신뢰할 수 있는지를 묻고 cache 추가할 것인지를 묻는 메시지에요 ㅎ

 

 

Ok를 누른뒤에는! 아래처럼 WinSCP가 정상적으로 접속되어 실행이 되는데요 ㅎ

이제 파일들을 옮겨보겠습니다 ㅎ 왼쪽 화면이 저의 Host OS인 Window 7 이구요 ㅎ 오른쪽화면이 Linux화면입니다.

폴더같은경우에는 파티션을 나눌때 용량도 같이 주었죵? 오라클 압축파일의 크기가 좀 상당합니다..ㅎ

그래서 Linux의 /home/oracle에 갖다 넣습니다! 그래도 전 설치할때 용량이 부족한 그런 상황이 발생..ㅠㅠ 헐..ㅠㅠ

Linux를 다시 설치하지않고 다른 야매로 진행하는건 좀있다가 하겠습니다 ㅎ


 

 

왼쪽에 있는 오라클 설치 압축파일 7개를 드래그앤 드랍으로 오른쪽으로 옮겨주세요 ㅎ

그럼 아래의 메시지처럼 뜰텐데요 ㅎ Copy할 7개의 파일을 이 폴더로 옮길것인지를 묻네요ㅎ

옮길라고 드래그앤 드랍했지! 하면서 OK를 눌러서 전송을 시작합니다 ㅎ


 

 

핳... 제 노트북이 꾸져서인지.. 외장하드에 있는 자료를 옮기느라 느린건지.. 1시간이나 걸린다네요..ㅠㅠㅠ

괜찮습니다!! 전송하는동안 해야하는게 많으니까욤

 

 

Step 4. Oracle 권장사항 확인

 

이제 Oracle의 권장사항들을 하나하나 확인해 봅시당 ㅎ

Oracle에서는 엔진과 데이터 파일이 설치될 디렉토리의 용량과 메모리 용량에 대한 권장사항을 적어 놓았습니다 ㅎ

 

Oracle 11g R2를 설치하기 위한 RAM의 크리는 최소 1GB(1024MB)입니다.

1GB가 되지 않는 RAM을 가지고 있다면 증설해 주시기 바랍니다 ㅎ 그래서 처음에 잘 설치를 해야돼욤ㅎㅎ

또한 Swap(가상메모리)는 1.5배에서 2배정도로 설정해 주어야합니다.

 

엔진과 데이터파일 설치에 대한 권장사항은 아래와 같습니다.

엔진이 설치 될 디렉터리의 용량

 

Installation Type

Requirement for Software(GB)

32Bit

Enterprise Edition

3.95GB

Standard Edition

3.88GB

64Bit

Enterprise Edition

4.35GB

Standard Edition

3.73GB

 

데이터파일이 설치 될 디렉터리의 용량

 

Installation Type

Requirement for Software(GB)

32Bit

Enterprise Edition

1.7GB

Standard Edition

1.5GB

64Bit

Enterprise Edition

1.68GB

Standard Edition

1.48GB

 

권장사항을 확인했으니 우리는 Linux의 사항을 봐야겠죵?ㅎ

아래의 화면은 메모리에 대한 설명이 써져있는 /proc/meminfo을 연 화면입니다.

여기에서 우리가 봐야할 것은 MemTotal의 전체 RAM의 용량과 SwapTotal을 확인해야 합니다.

MemTotal이 1024MB고 SwapTotal이 2048MB인것을 볼 수가 있습니다.


 

 

일반적인 grep 명령어로 /proc/meminfo에 있는 SwapTotal의 행을 찾아서 볼 수가 있는데요.

grep 명령어는 특정문자열을 포함하는 줄을 출력해 주는 기능을 가지고 있습니다.

grep SwapTotal /proc/meminfo 라고 하면 /proc/meminfo 파일에서 SwapTotal 문자열을 포함하는 열을 출력하라는 것입니다ㅎ

그래서 SwapTotal이 2048MB 라는 것이 나옵니다 ㅎ

 

 

 

제가 딴짓하는 동안 벌써 파일이 다 옮겨져 버렸네요..하하.. 할게 아직 산더미인데 ㅎ

전송이 다 된것이 확인이 되었으면 WinSCP는 닫아줍니다 ㅎ

 

 

위에서 하던 작업 마저해야겠지요?ㅎ

메모리를 확인했으니 용량을 확인해야죠 ㅎ 디스크 권장사항중 또하나가 있는데 /tmp의 용량입니다. 권장은 1GB 이상이어야 합니다.

현재 /tmp의 용량을 확인하는 명령어가 또 나오죠!

df 명령어가 나옵니다. 디스크의 용량을 확인하는 명령어인데요! disk free 라고 보시면 됩니당ㅎ

-h 옵션은 사람이 보기 편하게 하라는 human의 약자인데요 사람이 4956316KB가 4.8GB인지 보려면 생가좀.. 곰곰이.. 해야하니까!

저런 옵션을 만들었네요 ㅎ 뒤에 /tmp를 붙여서 저기에 대한 용량만을 나타내는 거구요 ㅎ

뒤에 /tmp를 붙이지 않는다면 모든 파티션에 대한 용량이 나오게 됩니다!

현재 /tmp의 용량을 보니 사용한게 3.1GB이고 가능한게 1.4GB라고 나오네요 ㅎ 1GB를 넘으니까 권장사항이네요 ㅎ

 

 

파일이 다 전송이 됐으니 한번 리눅스에서 확인을 해볼까요?ㅎ

oracle 사용자로 변경하는것은 su 명령어를 씁니다. switch user의 약자로 유저를 변경한다는 거죵 ㅎ

oracle의 홈디렉터리로 경로를 옮겨서 ls로 확인해보니까! 다 있는것이 확인이 되네요 ㅎ

 

 

Step 5. 각종 필수 패키지 설치

 

아무래도 제가 시간이 제일 많이 걸린게 이부분이 아닐까 싶습니다. 리눅스의 패키지를 설치하는 부분인데요.

패키지라 함은 쉽게 생각하면 응용프로그램을 설치 하신다고 생각하시면 됩니다 ㅎ

제가 설치하는 아래의 패키지들은 32Bit Linux 5 기준이라는 것을 알아주세요 ㅎ

우선 권장 설치 패키지가 무엇인지 또 어떤 역할을 하는지를 말해보도록 하겠습니다. 나와있는 곳이 없더라구요..ㅎ 좀 깁니다 ㅎ

 

binutils-2.17.50.0.6 : 바이러니(2진) 유틸리티의 수집본

- binary utility의 준말

compat-libstdc++-33-3.2.3 : gcc를 위한 호환성이 있는 표준 c++ 라이브러리 포함

- compatibility library standard c++의 준말.

- 여기서 gcc란 GNU 프로젝트의 Compiler Collection의 약자로 C, Object C, 파스칼, 에이다 등의 언어들을 모은 Collection.

elfutils-libelf-0.125 : 라이브러리에서 elf 파일들을 읽고 쓰기 위한 패키지

- elf파일이란 gcc를 컴파일 했을때 나오는 파일의 확장자입니다.

elfutils-libelf-devel-0.125 : libelf를 개발 지원하기 위한 패키지

elfutils-libelf-devel-static-0.125 : libelf의 정적 아카이브

gcc-4.1.2 : gcc를 이용하기 위한 패키지

gcc-c++-4.1.2 : gcc를 위한 c++지원

glibc-2.5-24 : GNU libc 라이브러리

- glibc는 GNU C Library 의 준말입니다.

glibc-common-2.5 : glibc를 위한 일반 라이브러리들과 national language data 지원 패키지

glibc-devel-2.5 : 표준 C 라이브러리들을 사용하는 개발을 위한 Object File 패키지

glibc-headers-2.5 : 표중 C 라이브러리들을 사용하는 개발을 위한 Header File 패키지

kernel-headers-2.6.18 : glibc에 의해 사용되어지는 리눅스 커널을 위한 헤더파일

ksh-20060214 : 오리지날 ATT 콘쉘을 사용하기 위한 패키지

libaio-0.3.106 : Linux-native에서 비동기식 입출력을 하기위한 Library

libaio-devel-0.3.106 : Linux-native에서 비동기식 입출력을 위한 개발 파일들

libgcc-4.1.2 : gcc version 4.1을 공유하는 것을 지원하는 라이브러리

libgomp-4.1.2 : gcc OpenMP 2.5를 공유하는 것을 지원하는 라이브러리

- OpenMP는 프로그래밍을 함에 있어서 멀티쓰레딩을 컴파일러 차원에서 지원하는 것

libstdc++-4.1.2 : GNU 표준 C++ 라이브러리

libstdc++-devel-4.1.2 : C++을 개발하기 위한 헤더파일과 라이브러리들

make-3.81 : 유저들을 위한 설치과정을 간소화하는 GNU 툴

numactl-devel-0.9.8.i386 : numa를 사용하는 설계응용을 위한 개발 패키지

- numa(Non-Uniform Memory Access)는 메모리 관리 아키텍쳐로 간단하게 말하면 CPU와 메모리가 한 Set를 이루는 것입니다.

sysstat-7.0.2 : 모니터링 명령어(sysstat) 패키지

unixODBC-32bit-2.2.11 : ODBC API를 구현하는 오픈소스 프로젝트

unixODBC-devel-2.2.11 : ODBC를 개발하기 위한 패키지

- ODBC는 Open Data Base Connectivity 의 준말로 마이크로소프트에서 개발을 했고 데이터베이스에 접근하기 위한 소프트웨어 규격

 

핳... 좀 많습니다.. 이거 조사하고 이해하느라 좀 많이 걸렸네요.. 리눅스 rpm 명령어로 알아볼 수 있는 것들입니다.

rpm 명령어에 대해서 설명을 드리자면 옵션에 따라 여러가지로 나눌 수 있지만 제일 큰 목적은 패키지 설치, 업데이트입니다.

우선 패키지들에 대한 이름의 규칙을 간단하게 알려드리자면

numactl-devel-0.9.8.i386 을 예로 들어서 설명하겠습니다. 눈에 딱 띄어서.. 선택ㅎ

numactl-devel은 패키지 이름. 뒤에 0.9.8은 버전(주버전 : 0, 부버전 : 9, 패치버전 : 8). i386은 아키텍쳐입니다.

그외에 glibc-2.5-24 를 예로 들면 이 경우 뒤에 24는 릴리즈 번호가 됩니다.

 

rpm에 대한 옵션을 알려드리겠습니다.

-i : install의 약자로 설치하기 위한 옵션입니다.

-U : update의 약자로 업데이트 하기 위한 옵션입니다.

-v : verbose의 약자로 설치과정 중의 진행에 관련된 메시지가 보고 싶다면 쓰는 옵션입니다.

-h : hash의 약자로 설치 정도에 따라 hash(#)를 붙여서 멈췄는지 아니면 계속 설치되고 있는지를 볼 수 있는 옵션입니다.

-e : erase의 약자로 패키지를 지우기 위한 옵션입니다. 이름만 써도 무방합니다.

-q : query의 약자로 패키지 설치여부를 알기위해 쓰는 옵션입니다.

-qa : 보통은 grep와 함께 써서 불확실한 이름을 알고 있을때 쓰는 옵션입니다.

-qi : 패키지에 대한 정보를 알기 위해서 쓰는 옵션입니다. 이것을 가지고 위에 패키지들에 대한 설명을 썼습니다. 영문이에요..ㅠ

 

이제 위에서 말한 패키지들이 잘 설치가 되었나를 아래에서 살펴보도록 하겠습니다 ㅎ

rpm -qa | grep를 써서 하나하나 다 확인을 해봅시당 ㅎ 설치되어 있지 않은건 설치를 하구요!

 

 

쭉쭉쭉 설치가 되어있는 것을 확인하다가

libaio-devel은 설치가 되어있지 않은 것을 알 수가 있습니다. 여기서 우리가 Linux를 설치했을떄의 ISO 파일을 삽입후에

/media/Oracle Linux Server dvd 20110119/Server로 경로를 이동합니다.

주의해야할건 Oracle Linux 이부분을 그대로 입력하시면 안되고 그냥 Tab으로 하시는것이 좋습니당 ㅎ

이곳으로 이동하는 이유는 이곳에 패키지 파일들(rpm 파일)이 모여있기 때문입니다.


 

 

이제 패키지를 설치 해볼겁니다 ㅎ

위에서 옵션대로 rpm -ivh libaio-devel-0.3.106-5.i386.rpm 을 설치합시다 ㅎ

파일명은 find로 찾아서 입력하시는게 확실합니다 ㅎ

명령어를 분석해보면(습관들이면 공부 두번안해도 되잖아요?ㅎㅎ) ivh니까 설치를 하고 과정을 보이고 hash로 진행되는것을 보여라.

패키지는 libaio-devel의 이름을 갖는 패키지이고 버전은 0.3.106인데 주버전 0, 보조버전 3, 패치버저 106이다. 릴리즈는 5번됐고

i386에 맞는 패키지 파일이다~ 라는 것을 알 수가 있습니다 ㅎ 이렇게 공부하면 편하잖아요 ㅎㅎ 잊어버리지도 않고 ㅎ

이제 엔터를 누르면 쭈룩쭈룩 해서 설치가 완료!


 

 

이것도 똑같은 방식으로 시작합니다 ㅎ

rpm -ivh numactl-devel-0.9.8-11.9.1.el5.i386.rpm

분석!!!!ㅎ ivh니까~ㅎ 설치하고 과정을 보이고 hash로 표시!

패키지 이름 numactl-devel이고 버전은 0.9.8, 주버전 0, 보조버전 9, 패치버전 8, 11.9.1의 릴리즈,

el5가 처음 나오는데 리눅스 5를 위미하는 겁니다 ㅎ i386에서 설치되는 패키지 파일이라는 것 까지! 확인이 가능합니다 ㅎ


 

여기서도 sysstat을 설치를 합시다 ㅎ

이건.. 분석하기가 귀찮아서 패쑤..ㅠㅠ 너무 많이해도 피곤하잖아요 ㅎㅎ

sysstat을 설치합시당 ㅎ


 

 

numactl-devel과 sysstat을 설치하고 다른 패키지들도 하나하나 고이고이 다 확인을 해줍니다 ㅎ

 

 

평화롭게 지나가다가 또 없는거 발견!! unixODBC가 없네요..ㅎ

이건 그냥 unixODBC-* 해서 설치를 하면 unixODBC에 관련된 것들이 설치가 되는데요 ㅎ

총 세개! unixODBC와 unixODBC-devel, unixODBC-kde 이렇게 세개가 깔리는 것을 볼 수가 있습니다.


 

 

Step 6. Core Dump File 생성

 

보통은 디버깅을 하기 위해서 core dump를 만드는 것이 일반적입니다 ㅎ

설치를 하다가 실패했을떄, 꺼졌을때 왜 꺼졌는데 왜 실패했는지를 알기 위해서 dump file이 필요한거죠 ㅎ

Oracle Installer는 core dump file이 생성될 수 있는지 여러 파일들을 체크를 합니다.

/proc/sys/kernel/suid_dumpable, /proc/sys/fs/suid_dumpable, /proc/sys/kernel/core_setuid_ok 요렇게 세개의 파일을요 ㅎ

이 파일들에 설정값들이 1이어야 core dump file이 정상적으로 저장이 됩니다.

core dump 파일을 저장하기 위해서 아래와 같이 값을 변경해야 합니다.

 

먼저 /etc/profile을 수정!

요기 아래에 ulimit -s -c 0 > /dev/null 2 > &1

이라고 되어 있는 빨간 부분이 있죠?ㅎ 이 부분을


 

 

ulimit -s -c unlimited > /dev/null 2 > &1 로 바꾸어 줍니다 ㅎ

0이 unlimited로 바뀌게 되는거죠 ㅎ


 

 

/etc/profile을 바꾸고 나서

/etc/sysctl.conf를 수정합니다.

 

kernel.core_uses_pid = 1 은 이미 추가가 되어있고

fs,suid_dumpable = 1 을 추가합니다.


 

 

vi editor로 이 모든것을 수정합니다 ㅎ


 

 

Step 7. 설치에 필요한 그룹과 사용자 생성

 

오라클은 설치를 할때 필요한 그룹과 사용자가 필요합니다. 참 귀찮은 놈이죠?ㅎ

귀찮아도 얘가 참 쓸모가 많은 애니까.. 용서해줘야죠..

 

oinstall그룹과 oper그룹을 각각 생성을 하고! usermode명령어를 씁니다.

usermod 명령어는 사용자의 정보를 변경하는 것을 말합니다.

여기서의 옵션 g는 기본 그룹을 oinstall로 바꾸고 옵션 G는 추가적인 그룹 dba와 oper를 oracle 유저에 추가시키는 겁니다.


 

 

Step 8. 설치할 자용자의 Resource Limit 값 설정

 

Resource Limit값은 /etc/security/limits.conf에서 지정 가능합니다.

Resource Limit값은 다시 말하면 시스템의 자원을 얼마나 제한 하고 쓸 수 있는지를 말하며 사용자별로 지정해 줄 수 있습니다.

nofile, pnporc, stack으로 나눌 수 있으며 아래와 같습니다 ㅎ

의미

항목

최저값

최고값

동시에 파일을 열 수 있는 개수 지정

nofile

1024

65536

한 사용자당 사용 가능한 프로세스 개수 지정

nproc

2047

16384

한 프로세스당 사용 가능한 stack의 크기수

stack

10240KB

32768KB

 

 

oracle 유저에 관해서는 아래와 같이 지정을 해 주시면 됩니다.

soft가 최저값 hard가 최고값임을 알수가 있죵 ㅎ

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

 

요렇게 지정을 해주시고 vi로 /etc/security/limits.conf 마지막에 붙여주세요 ㅎ

갑자기 한글이죠..? 잘못 써논게 있어서 뒤늦게 수정하느라..ㅠㅠ


 

 

여기서는 다시 영문,.. 핳ㅎ..ㅎㅎ

vi로 저장한 /etc/security/limits.conf를 확인하기 위한 명령어는

ulimit 명령어입니다 ㅎ 아래그림을 보면 일정한 규칙이 있어요 ㅎ

-Sn : soft nofile, -Su : soft nproc, -Ss : soft Stack

-Hn : hard nofile, -Hu : hard nproc, -Hs : hard Stack

-Hs인 hard Stack은 위에서 최소만 정해주고 최대를 정해주지 않았으므로 제한없음이 나왔습니다 ㅎ


 

 

Step 9. 커널 파라미터 설정하기!

 

리눅스에서 커널이란 무엇일까요? 라는 질문먼저 던지고 시작하겠습니다 ㅎ

쉽게 설명을 하자면 커널이란 시스템을 관리하고 컨트롤하는 커다란 어플리케이션이라고 생각하면 쉽습니다 ㅎ

커널은 컴퓨터가 켜지는 시점부터 종료하는 시점까지 메모리를 할당하고 프로세스를 시작하는 역할을 하기 때문에 아주 중요하다고 할 수 있습니다. 커널이 없는 OS는 존재하지 않고 응용프로그램들이 존재하더라도 동작이 안되는거죠 ㅎ

커널 파라미터라는 것인 커널이 메모리를 할당하고 프로세스를 할당하기 위해 값인데요.

이번에도 뭔가가 아래에 많습니다 ㅎ 또 하나하나 다뤄야 겠죠?ㅎ

 

파라미터들을 설정하는 파일은 /etc/sysctl.conf 입니다. 아래에 열린건 vi /etc/sysctl.conf 입니다.

아래의 파라미터 값들은 /proc/sys/에 있습니다 ㅎ

proc 파일시스템은 독립적인 파일시스템으로 파일과 프로세스를 통합하는 시스템입니다.

커널은 proc 파일시스템으로 가는 것을 받아서 디렉터리와 파일 내용을 동적으로 만들어줍니다.

근데 왜 /proc에 파일시스템이 적용 되어 있느냐~ 하실텐데요 ㅎ 저만그런가요?

proc 파일시스템이 /proc에 마운트가 되어 있기 때문에 디렉터리에 가서 시스템정보가 돌아가는 것을 확인 할 수 있게끔 해놓은 겁니다 ㅎ

 

 

fs.aio-max-nr : aio라는 용어는 위에서 패키지 할때 봤습니다ㅎ asynchronous I/O 이라고 하여 비동기식 입출력이겠지요?ㅎ

앞에 fs는 file system이라는 준말입니다.

맨뒤에 nr은 현재 활동중으로 알고 있는데요. 대충 끼워맞추면 now running 정도가 될거 같아요 ㅎ 이건불확실..ㅎ

풀어서 쓰면 file system에서 현재 활동중인 최대 비동기식 입출력 값 이라고 하면 되겠습니다 ㅎ

이 파라미터가 가리키는 파일은 /proc/sys/fs/aio-max-nr 이라는 파일입니다.

아래에 입력을 하면 값을 변하게 해주는 거죠 ㅎ

 

 

fs.file-max : 어느정도 보이죠?ㅎ kernel에서 쓰이는 파일의 최대 개수를 말해주는 파라미터입니다 ㅎ

가리키는 파일은 /proc/sys/fs/file-max 파일이겠죠 ㅎ

 

 

이제 /proc/sys/kernel에서 우리가 입력해야 할 파라미터 값들을 설명할텐데요 ㅎ Oracle과 아주 밀접한 관계가 있는 부분입니다.

이 디렉터리에 있는 것들은 kernel의 핵심부분이고 정보를 볼 수 있는부분이라 정확하고 확실히 다뤄주어야 합니다.

이 부분에서 설정할 것들은 오라클의 세마포어(Semaphore)와 관련 커널 파라미터들입니다.

이것은 또다시 오라클의 SGA(System Global Area)라는 용어의 설명이 나오게 되는데요 ㅎ Oracle Administration 부분입니다.

SGA는 공유 메모리라고 해서 여러가지 프로세스가 SGA 안에서 일어나게 됩니다.

SGA는 Linux안에서 발생하는 것이기 떄문에 Linux의 커널에서부터 메모리를 할당 받아야 합니다.

그러기 위한 값들이 커널 파라미터와 Semaphore들입니다.

커널파라미터는 알겠는데 Semaphore란 무엇이냐~? 하실 수 있습니다.

Semaphore는 깃발이라는 의미로 보시면 되는데요. 어떤 자원의 현재 사용 여부를 표현하는 값입니다.

위에서 말했듯이 SGA는 공유메모리라서 하나의 메모리 블록에 여려개의 프로세스가 실행될 가능성이 있습니다.

그렇기 때문에 Semaphore를 이용해서 확인을 하는겁니다. 메모리 블록의 세마포어를 확인한 후 사용을 해야합니다.

예로 들기는 좀 그렇지만..;; 화장실에 보면 칸마다 사용중/사용가능이라는 표시를 문이 표시를 해주는 것이 있습니다.

만약 표시를 해놓지 않는다면 똑똑똑 노크를 하거나 급하게 열었다간.... 요러케 되겠지요..ㅎ

그래서 사용중/사용가능을 표현 해 주는것이 세마포어 입니다! 그래서 깃발이라고 한거에요 ㅎ

세마포어는 SET/UNSET 두가지 값을 가지고 있습니다. SET이면 대기하고 있다가 UNSET일때 사용하는 매너있는 컴퓨터 ㅎㅎ

 

세마포어의 주요한 종류에는 네가지가 있습니다. 이것들은 Unix 계열에 적용되는 것임을 먼저 말해드리겠습니다.

먼저 말을 해야할 것은 각 프로세스마다 세마포어가 존재하기 때문에 사용량이 너무 많겠죠? 수많은 프로세스가 동시에 돌리니까..ㅠ

그래서 세마포어는 하씩 사용하지 않고 여러개를 묶어서 세트로 사용하게 됩니다.

 

- SEMMSL : 이 파라미터는 하나의 세마포어 세트 당 세마포어의 최대개수를 정의합니다. 오라클은 초기화 파라미터 파일의 Process 변수의 최대값에 10을 더한 값을 사용할 것을 권장하고 기본값으로 100이상을 권장합니다.

- SEMMNI : 리눅스 전체에서 설정 가능한 세마포어 세트의 최대 개수를 의미합니다. 권장값은 100이상입니다.

- SEMMNS : 리눅스전체에서 사용 가능한 세마포어 세트의 최대 개수를 의미합니다.

- SEMOPM : 1 cell(1개의 시스템 호출)이 초당 호출가능한 최대 세마포어 개수를 의미합니다. 보통 SEMMSL과 똑같이 설정하는 것을 권장합니다.

 

 

이것은 /proc/sys/kernel/sem 파일에서 설정이 되는데요.

아래 보면 250 32000 100 128 이렇게 설정이되어 있습니다.

SEMMSL SEMMNS SEMMNI SEMOPM 이렇게 순서대로 써지는 겁니다 ㅎ

 

세마포어 이전에 나오는 커널 파라미터들을 설명드리겠습니다 ㅎ

SHMALL : 특정 시점에 시스템에서 사용 가능한 공유 메모리의 최대 크기(페이지 단위)로 디폴트는 2097152 bytes입니다.

SHMMAX : 공유메모리 세그먼트의 최대크기(바이트 단위)로 디폴트는 32MB지만 너무 모잘라서 보통 2GB로 설정합니다.

SHMMNI : 공유메모리 세그먼트의 최대개수로 디폴트는 4096입니다.

 

 

/proc/sys/kernel 디렉터리에 있는 파라미터들은 다 설명을 했습니다 ㅎ

 

이제 아래에 있는 net! /proc/sys/net에 위치를 하고 있구요 ㅎ 어렵지는 않습니다 ㅎ

net.Ipv4.Ip_local_port_range : 새로운 접속에서 사용할 수 있는 포트의 사용 가능 범위를 표기합니다. 오라클은 1024 ~ 65000 까지

범위를 권장하고 있지만 저는 9000번에서 65500 까지를 정해놓겠습니다. 사용시작포트 사용종료포트 이렇게 범위 지정하면 됩니다.

net.core.rmem_default , net.core.rmem_max : 대용량 Serving 을 위한 기본 값과 최대값을 설정하는 파라미터입니다.
net.core.wmem_default , net.core.wmem_max : 소켓 출력 큐의 기본 값과 최대 값을 설정하는 파라미터입니다.

값은 아래와 같이 주시면 됩니다!ㅎ

 


 

vi로 /etc/sysctl.conf를 위처럼 설정한 이후에 이걸 적용시켜야 겠죠?ㅎ

sysctl -p를 입력하시면 쭈루룩 적용된 것을 볼 수가 있습니다 ㅎ
에러가 나는 부분이 있다면 다시 입력후 적용시켜 주세요.

Step 10. Oracle 사용자 환경설정

길고 긴 커널 파라미터의 설명과 설정이 끝이 났습니다!ㅎ 뭔가 쀼듯..ㅎ
이제 사용자 환경설정을 해주어야 하는데요. 일반적으로 Window 7이나 Window XP의 경우 시스템변수나 환경변수를 바꾸는 것이 있을 겁니다. Linux도 설치를 위해서 사용자의 시스템 변수들을 바꾸어 줘야 하는데 각사용자의 홈디렉터리의 ./.bash_profile에서 변경해줍니다. 현재 저희는 oracle 사용자의 환경설정 변경이기 때문에 /home/oracle/.bash_profile을 수정해 주시면 됩니다.
오라클은 일반적으로 사용자의 home 디렉터리와 오라클의 home 디렉터리가 같은 것을 좋아하지 않습니다!
왜냐~ㅎ 백업과 같은 건데요 ㅎ 사용자가 날라갈 경우 오라클까지 한꺼번에 날라갈 위험이 있기 때문이기도 합니다 ㅎ
아래는 왜 설정을 하는지 보면 오라클이 설치될 곳들과 아무데서나 오라클이 실행이 될 수 있도록 하고
사용자로 접속 했을때의 언어를 선택하고 기본 에디터도 vi로 설정 하는 것을 볼 수가 있습니다.
입력하고 저장!ㅎ


 

 

PAM 모듈 중 리소스 제어 관련 모듈은 /lib/security/pam_limits.so 입니다.

모듈을 사용하기 위해 PAM 의 설정 파일 중 사용자 로그인과 관련된 login 설정파일 /etc/pam.d/login 수정해야 합니다.

session required pam_limits.so 로 추가를 해주시면 되구요!! 이건 이전에 Resource Limit 설정 한것과 연관이 됩니다.

 


Step 11. 압축풀기 & 파일이동

혹시나 했지만 역시나 용량 부족이 뜨는 오라클이라는 놈...ㅎ
그래서 다시 설치하는 것보다 이게 나을거 같아서..ㅎ 파일을 다른 곳에 풀었다가 다시 옮겨오도록 작업하겠습니다!
압축은 기본적으로 깔려있는 unzip 패키지를 이용해서 풀겠습니다 ㅎ
unzip 명령어는 기본적으로 해당 디렉터리에 압축이 풀리지만 이렇게 unzip 파일명 -d 디렉터리 하면 해당 디렉터리에 풀립니다ㅎ
아래그림은.. 이미 제가 압축 풀고 나서 한 거라..ㅎ 오타와.. 틀린게 많네요 ㅠㅠㅠ
제대로 쓰면 unzip p10098816_112020_LINUX_1of7.zip -d /app \
&& unzip p10098816_112020_LINUX_2of7.zip -d /app \
&& unzip p10098816_112020_LINUX_3of7.zip -d /app \
&& unzip p10098816_112020_LINUX_4of7.zip -d /app \
&& unzip p10098816_112020_LINUX_5of7.zip -d /app \
&& unzip p10098816_112020_LINUX_6of7.zip -d /app \
&& unzip p10098816_112020_LINUX_7of7.zip -d /app \
이렇게 해주면 unzip이 연달아서 /app 디렉터리에 파일이 풀리는 것을 볼 수가 있습니다 ㅎ

아래와 같이 이렇게 뜨면 설치가 완료가 된겁니다!


 

이제 한시간 동안 걸리며 WinSCP를 써서 옮겼던 압축파일들을 지웁니다.. 얘네때매 용량부족이 ㅠㅠ..
rm 명령어를 쓰는데요 ㅎ rm은 remove의 약자입니다 ㅎ. 자꾸 삭제 할거냐고 물어보는거 없애려면 rm -f로 하시면 돼욤 ㅎ

 

그리고 나서 이동하는 명령어는 mv! move move입니다 ㅎ
이것도 뒤늦게.. 다시하느라 이미 한글로 바뀐창이라 많이 당황하셨죠? 저도 이러고 싶지 않았지만.. 이렇게 됐네요 ㅠㅠ
아래와 같이 이것도 \와 &&를 써서 연달아 옮깁시다 ㅎ
압축풀면 생기는 디렉터리들이 client database deinstall examples gateways grid 이렇게 6개의 디렉터리입니다 ㅎ

그리고 파일이 위치해야 할 /home/oracle에서 ls명령어로 확인! 이렇게 6개의 디렉터리가 모두다 들어왔다면 성공 ㅎ


그리고 나서 권한을 줘야합니다 ㅎ root계정으로 oracle 계정에게 /home/oracle과 /app 디렉터리에 대해 권한을 주는데요

chwon -R oracle.dba /home/oracle, chwon -R oracle.dba /app 이렇게 두 문장을 입력후 엔터!

 

Step 12. 로그아웃 및 재부팅
로그아웃을 그림과 같이 해주시구욤ㅎ


Log out!


 

oracle 계정으로 접속을 하구요!


이렇게 한글로 뜨게 되면 ./.bash_profile이 정상적으로 적용이 된것이고 이제 설치하면 되는겁니다 ㅎ

다음에 드디어 오라클 설치가 들어가겠어요 ㅎ