CentOS 7.6 가상 머신에 Oracle 12c 데이터베이스 설치 가이드

1. 가상 머신 환경 설정

Oracle 12c 데이터베이스 설치를 위해 CentOS 7.6 가상 머신을 다음 사양으로 준비합니다.

  • 운영 체제: CentOS 7.6
  • CPU 코어: 4개
  • 메모리: 4GB
  • 저장 공간: 128GB
  • GUI 환경: 설치됨

2. Oracle 설치를 위한 사전 준비

2.1. 고정 IP 주소 설정 (root 권한)

데이터베이스 서버의 안정적인 운영을 위해 고정 IP 주소를 할당하는 것이 일반적입니다. 네트워크 인터페이스 설정 파일을 수정하여 IP 주소를 고정합니다.

# 네트워크 구성 파일을 편집합니다. (네트워크 인터페이스 이름은 시스템마다 다를 수 있습니다. 예: ens33)
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 파일 내에서 'BOOTPROTO="dhcp"'를 'BOOTPROTO="static"'으로 변경합니다.
# 그리고 다음 라인들을 추가합니다:
# IPADDR="192.168.1.100"   # 원하는 고정 IP 주소로 변경
# NETMASK="255.255.255.0"  # 서브넷 마스크
# GATEWAY="192.168.1.1"    # 게이트웨이 주소
# DNS1="8.8.8.8"           # 기본 DNS 서버 (예: Google DNS)
# ONBOOT="no"를 "yes"로 변경하여 시스템 부팅 시 네트워크 인터페이스가 활성화되도록 합니다.

# 변경된 네트워크 설정을 적용하기 위해 네트워크 서비스를 다시 시작합니다.
sudo systemctl restart network

2.2. 네트워크 연결 상태 확인 (root 권한)

고정 IP 설정 후, 인터넷 연결이 정상적인지 확인합니다.

# 공용 DNS 서버(예: Cloudflare DNS)로 ping 테스트를 수행합니다.
ping 1.1.1.1
# 도메인 이름(예: Google)으로 ping 테스트를 통해 도메인 해상도(DNS)를 확인합니다.
ping google.com

2.3. YUM 저장소 미러 변경 (root 권한)

패키지 설치 및 업데이트 속도를 개선하기 위해 YUM 저장소 미러를 국내 또는 지리적으로 가까운 곳으로 변경할 수 있습니다.

# wget 유틸리티를 설치합니다.
sudo yum install wget -y
# 현재 YUM 기본 저장소 파일을 백업합니다.
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 새로운 YUM 저장소 파일을 다운로드합니다. (예: 카카오 미러 사용)
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirror.kakao.com/centos/7/os/x86_64/CentOS-Base.repo
# YUM 캐시를 새로 생성하여 변경 사항을 적용합니다.
sudo yum makecache

2.4. Vim 편집기 설치 (root 권한)

명령줄 환경에서 파일을 편리하게 편집하기 위해 Vim을 설치합니다.

sudo yum install vim -y

2.5. Lrzsz 유틸리티 설치 (root 권한)

SSH 클라이언트(예: Xshell)를 통해 파일을 간편하게 업로드(rz)하고 다운로드(sz)할 수 있도록 lrzsz를 설치합니다.

sudo yum install lrzsz -y

2.6. 방화벽 비활성화 (root 권한)

개발 또는 테스트 환경에서는 서비스 포트 개방의 복잡성을 줄이기 위해 방화벽을 임시로 비활성화하기도 합니다. 프로덕션 환경에서는 필요한 포트만 개방하는 것이 보안상 권장됩니다.

# 방화벽 서비스의 현재 상태를 확인합니다.
sudo systemctl status firewalld
# 방화벽 서비스를 중지합니다.
sudo systemctl stop firewalld
# 시스템 부팅 시 방화벽이 자동으로 시작되지 않도록 영구적으로 비활성화합니다.
sudo systemctl disable firewalld
# 방화벽이 정상적으로 비활성화되었는지 다시 확인합니다.
sudo systemctl status firewalld

3. Oracle 데이터베이스 설치 과정

3.1. Oracle 전용 OS 사용자 및 권한 설정 (root 권한)

Oracle 데이터베이스는 일반적으로 'oracle'이라는 전용 OS 사용자 계정으로 설치 및 운영됩니다.

# 'oracle' 사용자 계정을 생성합니다.
sudo useradd oracle
# 'oracle' 사용자에게 sudo 권한을 부여하기 위해 sudo 패키지를 설치합니다.
sudo yum install sudo -y
# sudoers 파일을 수정하기 위해 쓰기 권한을 임시로 부여합니다.
sudo chmod u+w /etc/sudoers
# sudoers 파일을 편집합니다.
sudo vim /etc/sudoers
# 'root ALL=(ALL) ALL' 라인 바로 아래에 다음 라인을 추가하여 'oracle' 사용자에게 sudo 권한을 부여합니다.
# oracle ALL=(ALL) ALL
# 보안을 위해 sudoers 파일의 쓰기 권한을 다시 회수합니다.
sudo chmod u-w /etc/sudoers
# 'oracle' 사용자의 비밀번호를 설정합니다. (영문 대소문자, 숫자 포함 권장)
sudo passwd oracle

3.2. Oracle 설치 디렉토리 준비 (root 권한)

Oracle 데이터베이스의 설치 경로를 생성하고, 해당 디렉토리에 'oracle' 사용자가 접근하고 쓸 수 있도록 권한을 설정합니다.

# Oracle 설치의 표준 경로인 '/u01' 디렉토리를 생성합니다.
sudo mkdir /u01
# '/u01' 디렉토리의 소유권을 'oracle' 사용자 및 'oinstall' 그룹에 부여합니다.
# (oinstall 그룹이 없다면 'oracle:oracle'로 설정해도 무방하나, Oracle 표준은 oinstall 그룹 사용)
sudo chown -R oracle:oinstall /u01
# 필요에 따라 그룹 권한을 명시적으로 설정합니다.
sudo chgrp -R oinstall /u01

3.3. Oracle 설치 파일 업로드 (oracle 사용자)

'oracle' 사용자 계정으로 전환하여 설치 패키지를 업로드할 디렉토리를 생성하고, 설치 파일을 전송합니다.

# 'oracle' 사용자로 전환합니다.
su - oracle
# 설치 파일을 저장할 'install_files' 디렉토리를 홈 디렉토리 아래에 생성합니다.
mkdir ~/install_files
# 'install_files' 디렉토리로 이동합니다.
cd ~/install_files
# lrzsz 유틸리티를 사용하여 Oracle 설치 패키지(예: linuxx64_12201_database.zip)를 업로드합니다.
# rz -e

3.4. 설치 패키지 압축 해제

업로드된 Oracle 설치 패키지 파일을 압축 해제합니다.

# unzip 패키지가 설치되어 있지 않다면 먼저 설치합니다. (root 권한)
sudo yum install unzip -y
# 'oracle' 사용자로 Oracle 설치 파일을 압축 해제합니다.
unzip linuxx64_12201_database.zip

3.5. Oracle 설치 마법사 실행 (oracle 사용자)

압축 해제된 디렉토리로 이동하여 Oracle Universal Installer (OUI)를 실행합니다.

# 압축 해제된 'database' 디렉토리로 이동합니다.
cd database/
# runInstaller 스크립트에 실행 권한이 없는 경우, 다음 명령어로 권한을 부여합니다. (root 권한)
# sudo chmod -R 755 ./*
# Oracle 설치 마법사를 실행합니다.
./runInstaller

참고: Oracle 설치 마법사는 GUI 환경을 요구합니다. 가상 머신에 GUI가 설치되어 있거나, Xming, Xmanager와 같은 X Window System 포워딩 도구를 사용하여 실행할 수 있습니다.

4. 그래픽 설치 중 오류 보완

Oracle 설치 마법사 실행 중 시스템 사전 요구 사항 검사에서 발생할 수 있는 오류들을 해결하는 단계입니다.

# Oracle 설치 전 검사에서 요구되는 시스템 설정을 자동으로 수정하는 스크립트를 실행합니다. (root 권한)
sudo /tmp/CVU_12.2.0.1.0_oracle/runfixup.sh

또한, 설치에 필요한 일부 OS 패키지들이 누락되어 오류가 발생할 수 있습니다. 다음 패키지들을 설치합니다.

# Oracle 설치에 필수적인 패키지들을 설치합니다. (root 권한)
sudo yum install gcc-c++ ksh compat-libcap1 libaio-devel -y

최대 스택 크기(`stack soft`) 제한과 관련된 경고는 `/etc/security/limits.conf` 파일에서 확인할 수 있습니다.

# limits.conf 파일의 내용을 확인합니다.
cat /etc/security/limits.conf

사전 검사에서 해결되지 않는 경고가 계속 나타나더라도, 설치 마법사에서 해당 항목을 무시하고 진행하는 옵션을 선택하여 다음 단계로 넘어갈 수 있습니다.

5. Oracle 환경 변수 설정 (oracle 사용자)

Oracle 데이터베이스를 효율적으로 사용하기 위해 'oracle' 사용자의 환경 변수를 설정해야 합니다. `~/.bash_profile` 파일을 편집합니다.

# 'oracle' 사용자의 홈 디렉토리에 있는 .bash_profile 파일을 편집합니다.
vim ~/.bash_profile

다음 내용을 파일의 마지막 부분에 추가합니다:

# Oracle Database 관련 환경 변수 설정
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 # 설치된 Oracle 홈 디렉토리에 맞게 조정
export ORACLE_SID=orcl      # 설치 시 지정한 SID로 변경
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
# 변경된 환경 변수를 현재 세션에 적용합니다.
source ~/.bash_profile
# 환경 변수가 올바르게 설정되었는지 확인합니다.
echo $ORACLE_HOME

6. Oracle 설치 검증

환경 변수 설정 후, Oracle 데이터베이스 인스턴스와 리스너가 정상적으로 작동하는지 확인합니다.

# Oracle 리스너가 아직 시작되지 않았다면 시작합니다.
lsnrctl start
# SQL*Plus를 사용하여 SYSDBA 권한으로 데이터베이스에 연결합니다.
sqlplus sys as sysdba
# SQL*Plus 프롬프트에서 데이터베이스 인스턴스의 상태를 확인합니다.
SQL> select status from v$instance;

성공적으로 연결되고 인스턴스 상태가 'OPEN'으로 표시되면 Oracle 데이터베이스 설치가 완료되고 정상적으로 운영 중임을 의미합니다.

7. 새 Oracle 사용자 생성

일반적인 데이터베이스 작업에는 `SYS` 사용자를 직접 사용하지 않는 것이 보안상 권장됩니다. 응용 프로그램 또는 일반적인 데이터베이스 작업을 위한 새 사용자를 생성합니다.

7.1. CDB(Container Database) 사용자 생성

Oracle 12c의 CDB/PDB 아키텍처에서, `CONTAINER=ALL` 옵션을 사용하여 CDB 루트에서 사용자를 생성하면 모든 PDB에서 해당 사용자로 접근할 수 있습니다.

-- SQL*Plus 또는 다른 SQL 클라이언트에서 SYSDBA 권한으로 접속 후 실행
SQL> CREATE USER c##admin_cdb IDENTIFIED BY your_strong_password CONTAINER=ALL;
SQL> GRANT CONNECT, RESOURCE, DBA TO c##admin_cdb CONTAINER=ALL;
-- 필요에 따라 테이블스페이스 할당량을 부여할 수 있습니다.
-- SQL> ALTER USER c##admin_cdb QUOTA UNLIMITED ON users;

7.2. PDB(Pluggable Database) 사용자 생성

특정 PDB 내에서만 유효한 사용자를 생성하려면, 먼저 해당 PDB로 세션을 전환한 후 사용자를 생성해야 합니다.

-- 먼저 원하는 플러그인 가능한 데이터베이스(PDB)로 세션을 전환합니다. (예: orclpdb)
SQL> ALTER SESSION SET CONTAINER = orclpdb;
-- PDB 내에서 새 사용자를 생성합니다.
SQL> CREATE USER appuser_pdb IDENTIFIED BY your_strong_password;
SQL> GRANT CONNECT, RESOURCE, DBA TO appuser_pdb;
-- 필요에 따라 테이블스페이스 할당량을 부여합니다.
-- SQL> ALTER USER appuser_pdb QUOTA UNLIMITED ON users;

이제 Navicat, DBeaver 등과 같은 데이터베이스 클라이언트 도구를 사용하여 생성된 사용자로 연결을 시도하여 정상적으로 작동하는지 확인할 수 있습니다.

8. Oracle 데이터베이스 시작 및 관리

가상 머신이 재부팅된 경우 Oracle 데이터베이스 인스턴스와 리스너를 수동으로 시작해야 할 수 있습니다.

# 'oracle' 사용자로 전환합니다.
su - oracle
# SQL*Plus를 사용하여 SYSDBA 권한으로 데이터베이스에 연결합니다.
sqlplus sys as sysdba
# 데이터베이스 인스턴스를 시작합니다.
SQL> STARTUP;
# 플러그인 가능한 데이터베이스(PDB)를 엽니다. (PDB 이름은 설치 시 설정한 이름에 따름)
SQL> ALTER PLUGGABLE DATABASE orclpdb OPEN;
# Oracle 리스너를 시작합니다.
lsnrctl start

태그: CentOS Oracle Database Oracle 12c Virtual Machine database installation

9월 10일 21:02에 게시됨