본문 바로가기
작업/Database

Oracle ASM, Grid Infrastructure, 19c Database 구축(2)

728x90

 

Part 1에서는 Oracle 19c Database를 구축할 가상 머신과 OL7 운영체제 설치를 진행했습니다.

 

글은 총 5개의 Part로 나누어 작성했습니다.

  1. 가상 머신 및 OL7 운영체제 설치 및 작업 환경 준비
  2. Oracle Database 구축을 위한 환경 설정 및 준비
  3. ASM Configuration
  4. Install Grid Infrastructure
  5. Install Oracle Database Software

각 Part별 블로그는 아래 링크를 확인하세요.

Part 1 : https://zifmfmphantom.tistory.com/173

 

Oracle ASM, Grid Infrastructure, 19c Database 구축(1)

Oracle 19c Database 구축.Storage 관리에 ASM을 적용하고, Grid Infrastructure로 구성요소를 통합 관리한다. 글은 총 5개의 Part로 나누어 작성했습니다.가상 머신 및 OL7 운영체제 설치 및 작업 환경 준비Oracle

zifmfmphantom.tistory.com

Part 3 : https://zifmfmphantom.tistory.com/175

 

Oracle ASM, Grid Infrastructure, 19c Database 구축(3)

Part 1에서는 Oracle 19c Database를 구축할 가상 머신과 OL7 운영체제 설치를 진행했습니다.Part 2에서는 Oracle Database 19c 구축을 위해 운영체제에서 환경 설정 및 파일 준비를 했습니다. 글은 총 5개의 Par

zifmfmphantom.tistory.com

Part 4 : https://zifmfmphantom.tistory.com/176

 

Oracle ASM, Grid Infrastructure, 19c Database 구축(4)

Part 1에서는 Oracle 19c Database를 구축할 가상 머신과 OL7 운영체제 설치를 진행했습니다.Part 2에서는 Oracle 19c Database 구축을 위해 운영체제에서 환경 설정 및 파일 준비를 했습니다.Part 3에서는 Storage

zifmfmphantom.tistory.com

Part 5 : https://zifmfmphantom.tistory.com/177

 

Oracle ASM, Grid Infrastructure, 19c Database 구축(5)

Part 1에서는 Oracle 19c Database를 구축할 가상 머신과 OL7 운영체제 설치를 진행했습니다.Part 2에서는 Oracle 19c Database 구축을 위해 운영체제에서 환경 설정 및 파일 준비를 했습니다.Part 3에서는 Storage

zifmfmphantom.tistory.com

 

본 글은 Part 2인 "Oracle Database 구축을 위한 환경 설정 및 준비" 단계입니다.

Part 1에서 설치한 가상 머신과 OL7 운영체제에서 진행합니다.

MobaXterm 프로그램을 사용해 원격으로 SSH 접속을 했습니다.

 

① Hardware Information

작업 전에 하드웨어 사항을 확인해봅니다.

# 메모리 사용량 확인 명령
free -h

Swap은 RAM 공간이 부족할 때 사용되는 보조 가상 메모리이며 하드 디스크의 일부 공간을 사용합니다.

 

- total : 전체 메모리 용량

- used : 현재 사용 중인 memory

- free : 사용 중이지 않은 memory

- shared : 여러 프로세스가 공유하는 memory

- buff/cache : File Cache, Buffer 목적으로 사용하는 memory

- available : 실제로 사용할 수 있는 memory

 

 

# OS의 File System별 Disk 사용량 확인
df -h

tmpfs : Temp File System. 메모리 기반의 가상 파일시스템이며 실제 디스크 공간이 아니다.

 RAM의 특징(휘발성, 빠른 I/O)을 살린 시스템 내부 작업을 위해 생성되었다.

 

/dev/mapper/ol-root와 /dev/sda1(/boot)가 실제 디스크 공간이다.

 

# Disk Partition Information
fdisk -l

 

# Lisk Block Devices
# System에 연결된 Block Device (Disk, Partition, LVM 등)을 계층 구조로 표현.
lsblk

 

fdisk -l 명령과 lsblk 명령을 같이 비교해 보면

sda는 OS Booting에 사용하는 1번 partition인 sda1,

2번 partition인 sda2는 LVM(Logical Volume Manager)로 만들어진 ol-swap과 ol-root를 포함하고 있습니다.

 

그리고 sdb, sdc, sdd, sde Disk는 아직 partition으로 사용되지 않아 disk로만 존재하는 상태입니다.

추후 ASM Disk Group 구성 시 해당 4개의 Disk를 사용할 예정입니다.

 

# CPU Information
lscpu

 

# Operating System Version
cat /etc/os-release
cat /etc/redhat-release

 

 

 

② Package Update
sudo yum update -y

 

③ Environment Setting

지금부터 Oracle Database 19c 구축에 필요한 주요 파라미터 설정을 진행합니다.

설정 기준은 Oracle 19c 공식 가이드를 참고했습니다.

URL : https://oracle-base.com/articles/19c/oracle-db-19c-installation-on-oracle-linux-7

 

Oracle Database 19c Installation On Oracle Linux 7 (OL7)

This article describes the installation of Oracle Database 19c 64-bit on Oracle Linux 7 (OL7) 64-bit.

oracle-base.com

 

환경 설정을 진행하는 계정은 'root'이므로 현재 계정 상태를 확인합니다.

③-1 /etc/hosts

IP 주소와 Hostname을 매핑하는 파일입니다.

가상 OS의 IP와 Hostname 조합을 추가합니다.

Oracle은 설치 중에 Hostname이 IP 주소로 적절히 해석되는지 확인하고, Listener 등록에 사용할 수 있습니다.

 

OL7의 IP 주소는 ifconfig command로 확인할 수 있습니다.

ifconfig

OL7에서 사용할 IP는 '192.168.A.BB'라고 하겠습니다.

 

Hostname을 변경하고 싶다면 다음과 같이 진행합니다.

# OS의 Hostname 변경
hostnamectl set-hostname [New_Hostname]

#변경된 Hostname 확인
hostname
#또는
cat /etc/hostname

 

본 글에서는 'oracleserver'로 Hostname을 변경했습니다.

 

vi 또는 nano를 사용해 /etc/hosts 파일에 가상 OS의 IP 주소 + Hostname을 추가합니다.

nano /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#192.168.A.BB oracleserver

 

 

 

③-2 Kernel Parameter

Oracle Database는 운영 시 Kernel parameter를 참조합니다.

따라서 Oracle 공식 문서에서 권장하는 값으로 Parameter를 추가합니다.

nano /etc/sysctl.conf

#다음 파라미터 값을 복사/붙여넣기 (19c 기준)
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

 

fs.* 관련
fs.file-max
System 전체에서 열 수 있는 '최대 파일 Descriptor 수'.
Descriptor는 Unix/Linux 계열에서 Process가 File을 다룰 때 사용하는 개념이자 추상적인 값.
fs.aio-max-nr
System에서 허용하는 '최대 비동기 I/O 요청 수'.

 

kernel.* 관련
kernel.sem
Semaphore 설정값.
공유 리소스를 사용할 때 Process 간의 동기화(Synchronization)를 목적으로 자원 접근을 제어하는 카운터.

SEMMSL(250) : Semaphore Set 당 최대 Semaphore 수.
"Defines the maximum number of semaphores per semaphore set."

SEMMNS(32000) : System 전체에서 생성할 수 있는 최대 Semaphore 수.
"Defines the maximum semaphores in the system."

SEMOPM(100) : 각 Semaphore call에 대한 최대 작업 수.
"Defines the maximum number of operations for each semaphore call."

SEMMNI(128) : System 전체에서 최대 Semaphore Set 수.
"Defines the maximum number of semaphore sets in the entire system."

Oracle Application의 IPC에 필요.
kernel.shmmni
전체 System의 최대 공유 메모리 세그먼트 수.
"Defines the maximum number of shared memory segments in the entire system."
kernel.shmall
전체 System의 총 공유 메모리.
"Defines the maximum total shared memory system-wide."
kernel.shmmax
Shared Memory Segment에 허용되는 최대 크기.
"Defines the maximum allowable size of one shared memory segment."
kernel.panic_on_oops
Kernel에서 "oops" 오류가 발생했을 경우 panic 여부.
Cluster System에서 Kernel Thread가 충돌(oops)하면 Syetem이 스스로 Reset 해야 한다.
그렇지 않으면 Cluster 전체가 멈추는 결과가 발생할 수 있다.

0 : 무시하고 계속 실행.
1 : 즉시 Kernel Panic 발생(시스템 오류 시 자동 복구 -> 재부팅)

 

net.core.* 관련 (TCP Network Buffer Tuning)
net.core.rmem_default
Receive(수신) Socket Buffer의 기본 Byte.
"Defines the default receive window size."
net.core.rmem_max
Receive Socket Buffer의 최대 Byte.
"Defines the maximum receive window size."
net.core.wmem_default
Send(송신) Socket Buffer의 기본 Byte.
"Defines the default send window size."
net.core.wmem_max
Send Socket Buffer의 최대 Byte.
"Defines the maximum send window size."

 

net.ipv4.* 관련 (Routing Filter)

URL : https://access.redhat.com/solutions/53031

 

When RHEL has multiple IPs configured, only one is reachable from a remote network. Or why does RHEL ignore packets when the rou

Why does Red Hat Enterprise Linux 6 invalidate / discard packets when the route for outbound traffic differs from the route of incoming traffic? Why does Red Hat Enterprise Linux 6 differ from Red Hat Enterprise Linux 5 in handling asymmetrically routed pa

access.redhat.com

 

net.ipv4.conf.all.rp_filter
모든 Interface에 공통으로 적용하는 RP Filter 정책.
net.ipv4.conf.default.rp_filter
새로 생성되는 Interface의 RP(Reverse Path) Filter 정책.

수신된 Packet의 Source IP가 '신뢰할 수 있는 경로(Interface)'에서 온 것인지 검사한다.
IP Spoofing 공격을 방지하기 위한 목적으로 사용한다.

0 : 비활성화. 어떠한 검증도 하지 않는다.
1 : Strict(엄격). FIB(Forward Information Base)에 포함된 최적의 응답 경로인 경우에만 패킷 허용.
2 : Loose(느슨). 어떠한 Interface든지 Source IP로 도달할 경로가 있으면 허용.
net.ipv4.ip_local_port_range
Kernel이 Application에 할당할 수 있는 port 범위.

/etc/sysctl.conf 파일에 parameter를 추가 후, sysctl command로 apply.

sudo sysctl -p

 

 

③-3 User limit(ulimit) Parameter

계정별 System Resource Limitation 설정.

Oracle Database를 관리하는 계정(oracle, grid)의 리소스 사용 권장값을 적용한다.

/etc/security/limits.conf 파일에 추가한다.

# 'oracle', 'grid'는 Oracle Database 구축 시 사용할 계정.
nano /etc/security/limits.conf


oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728


grid   soft   nofile    1024
grid   hard   nofile    65536
grid   soft   nproc    16384
grid   hard   nproc    16384
grid   soft   stack    10240
grid   hard   stack    32768
grid   hard   memlock    134217728
grid   soft   memlock    134217728

 

 

nofile : 열 수 있는 최대 파일 Descriptor 수 (파일 핸들링 수).

nproc : 생성할 수 있는 최대 프로세스 수.

stack : Stack Memory 크기 (KB 단위)

memlock : 잠글 수 있는 최대 Memory (SGA를 Memory에 고정 - Byte 단위)

 

 

④ User/Group Creation (oracle, grid)

Oracle Database를 관리할 'oracle' 계정과

Grid Infrastructure를 관리할 'grid' 계정을 생성합니다.

 

Oracle Database 내에서 역할별 권한을 구분하기 위해 그룹을 생성하며

특정 그룹에 권한을 중복으로 부여할 수도 있으므로 기호에 맞게 관리하시면 되겠습니다.

 

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba

useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmoper oracle
useradd -u 54322 -g oinstall -G dba,asmadmin,asmdba,asmoper,racdba grid

# 다른 그룹을 기존 계정에 추가하려면 아래의 예시 참고
# usermod -aG backupdba,dgdba,kmdba,racdba oracle

 

그룹명 권한 설명
oinstall Oracle Inventory Group. 소프트웨어 설치/패치 시 필수 그룹.
dba Database Administrator. DB 인스턴스 시작/중지. SYSDBA 권한.
oper SYSOPER 권한. DB 인스턴스 시작/중지만 가능하며 일부 제한된 권한 부여.
backupdba SYSBACKUP 권한. RMAN 백업/복구 작업 담당.
dgdba SYSDG 권한. Data Guard 관련 작업 권한.
kmdba SYSKM 권한. Oracle Key Vault 또는 Transparent Data Encryption 관련 작업.
asmdba SYSASM 권한. ASM 인스턴스 접속 및 ASM 디스크 그룹 관리.
asmoper SYSOPER for ASM. asmdba보다 제한된 ASM 운영 권한.
asmadmin SYSASM 권한. ASM 전용 관리자 역할.
racdba SYSRAC 권한. RAC 환경의 클러스터 리소스 및 구성 요소 관리. Grid Infrastructure 연동.

 

# 계정 생성 상태 확인
id oracle
id grid

 

 

생성된 계정에 비밀번호를 만들어야 합니다.

passwd oracle
passwd grid

 

만들어진 계정은  /etc/passwd에서도 확인할 수 있습니다.

# 계정 정보 저장 파일에서 확인
cat /etc/passwd
# 또는
tail -5 /etc/passwd

 

 

 

 

⑤ SELinux Setting

SELinux (Security-Enhanced Linux)는 MAC (Mandatory Access Control) 기반의 보안 모듈.

관리자가 정의한 보안 정책 및 권한을 통해 접근 통제.

 

Enforcing : 정책 적용. 위반 시 차단.

Permissive : 정책 위반에 대해 로그로 기록만 한다 (Debug).

Disabled : 비활성.

 

Oracle Database 초기 설치 시 Permissive를 권장하고 있습니다.

초기 상태는 Enforcing이므로 정책 변경을 진행합니다.

 

nano /etc/selinux/config
# SELINUX=enforcing을 permissive로 변경

 

 

정책 변경 후에는 재부팅(reboot)합니다.

 

SELinux 변경 전 상태 확인

 

변경 후 reboot 결과

 

 

⑥ Firewall Setting

Firewalld는 Linux System의 방화벽 관리 Daemon.

Oracle Database 설치 시 방화벽 정책으로 인해 일부 설치 오류가 발생할 수 있음을 고려하여

공식 문서에서는 설치 전에 Firewalld를 중지(stop)하고 비활성(disable) 하라고 설명합니다.

"일단은 꺼두고 설치 후에 설정하자" 느낌인 것 같습니다.

 

systemctl stop firewalld
systemctl disable firewalld

 

 

Start(active) 상태의 firewalld

 

 

 

 

Stop(inactive) 상태의 firewalld

 

 

⑦ Environment Variable Setting

Grid Infrastructure와 Oracle 19c Database 설치 및 운영에 필요한 환경 변수를 추가합니다.

사용 목적에 따라 추가되는 환경 변숫값의 종류는 다를 수 있습니다.

grid와 oracle 계정이 취급하는 환경 변수가 다르기 때문에 각 계정으로 전환 후 환경 변수를 추가해야 합니다.

 

본 글에서 추가한 환경 변수는 다음과 같습니다.

# 'grid' 계정으로 전환 후 환경 변수를 추가합니다.
su - grid

nano ~/.bash/profile

ORACLE_SID=+ASM
ORACLE_BASE=/app/grid
ORACLE_HOME=$ORACLE_BASE/product/19c/grid_home
TNS_ADMIN=$ORACLE_HOME/network/admin
ORACLE_TERM=xterm

PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin:$JAVA_HOME/bin

export ORACLE_SID
export ORACLE_BASE
export ORACLE_HOME
export TNS_ADMIN
export ORACLE_TERM
export PATH
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

# 환경 변수 추가 후 반영
source ~/.bash_profile

 

# 'oracle' 계정으로 전환 후 환경 변수 추가
su - oracle

nano ~/.bash_profile

ORACLE_BASE=/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/19c/db_home
ORACLE_SID=ORADB
TNS_ADMIN=$ORACLE_HOME/network/admin
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin

# Shared Library Path
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib

# Java Class Path
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export ORACLE_BASE
export ORACLE_HOME
export ORACLE_SID
export TNS_ADMIN
export PATH
export LD_LIBRARY_PATH
export CLASSPATH
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

# 환경 변수 추가 후 반영
source ~/.bash_profile

 

 

⑧ Oracle Software 설치를 위한 Directory 구성

Grid Infrastructure Software와 19c Database Software를 둘 Directory를 생성합니다.

각 Directory는 grid 계정과 oracle 계정이 관리할 수 있도록 권한을 부여합니다.

 

root 계정에서 Directory를 생성하고 grid 계정과 oracle 계정에 권한을 부여합니다.

mkdir -p /app/oracle/product/19c/db_home
mkdir -p /app/grid/product/19c/grid_home
mkdir -p /app/oraInventory
chown -R grid:oinstall /app/oraInventory
chown -R grid:oinstall /app/grid
chown -R oracle:oinstall /app/oracle
chmod -R 775 /app

 

command 결과를 확인합니다.

ls -alp /app

 

 

⑨ Software Download

ASM Configuration에 필요한 Library.

Grid Infrastructure Software.

Oracle 19c Database Software.

이 3가지의 파일을 다운로드 받습니다.

 

ASMLib & ASM support Library

ASMLib URL : https://www.oracle.com/linux/downloads/linux-asmlib-v7-downloads.html

 

Oracle ASMLib Downloads for Oracle Linux 7

Oracle ASMLib Downloads for Oracle Linux 7 Note: All ASMLib installations require the oracleasmlib and oracleasm-support packages appropriate for their machine. The oracleasm-support package can be downloaded from the Unbreakable Linux Network (ULN) if you

www.oracle.com

 

ASMLib Support URL : https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html

 

Oracle ASMLib Downloads for Red Hat Enterprise Linux 7

Oracle ASMLib Downloads for Red Hat Enterprise Linux 7 Note: All ASMLib installations require the oracleasmliband oracleasm-supportpackages appropriate for their machine. The 'oracleasmlib' and 'oracleasm-support' packages are available for download at the

www.oracle.com

ASMLib Support URL에서는 'oracleasm-support' rpm 파일만 다운로드 받습니다.

 

 

Grid Infrastructure & 19c Database

URL : https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

 

Oracle Database 19c Download for Linux x86-64

Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64 Contains the Grid Infrastructure Software including Oracle Clusterware, Automated Storage Management (ASM), and ASM Cluster File System. Download and install prior to installing Oracle Real Ap

www.oracle.com

 

Grid와 Database는 'zip' 파일로 다운로드 받습니다.

 

 

 

다운받은 2개의 rpm 파일, 2개의 zip 파일을 MobaXterm을 통해 가상 환경으로 복사합니다.

복사 경로는 /tmp로 합니다.

Grid와 Database zip 파일은 'grid_home.zip', 'db_home.zip'으로 이름을 변경했습니다.

 

 

 

 

여기까지 해서 "Oracle Database 구축을 위한 환경 설정 및 준비" 과정을 마치겠습니다.

Part 3에서는 ASMLib를 설치하며 ASM Disk를 만드는 과정을 정리하겠습니다.

 

읽어주셔서 감사드립니다.

 

-끝-

 

728x90