Oracle 19c 설치 사전 준비
Linux에 Oracle 19c 소프트웨어를 설치하기 전에 OS와 버전 조합을 확인하고, preinstall RPM, 그룹, 커널 파라미터, 디렉터리, 환경변수를 준비하는 순서
#핵심 요약
설치 전에 OS 메이저 버전, 커널, DB 버전, RU 버전, 필수 패키지의 조합을 모두 확인해야 함
OS 버전만으로는 부족함
Oracle Linux에서는 oracle-database-preinstall-19c RPM이 필수 패키지, oracle 계정과 oinstall, dba 그룹, 커널 파라미터, 리소스 한도를 자동으로 준비함
설치 경로는 ORACLE_BASE, ORACLE_HOME, oraInventory 세 가지로 나누어 만듦
GUI 설치(runInstaller)를 쓸 때만 X11 포워딩 확인(xclock)이 필요함
#개념과 동작 원리
#OS와 DB 버전 조합 확인
실습에서는 OS가 최신인데 DB가 구버전이면 설치가 순조롭지 않을 수 있다고 설명하고, 대표 원인으로 glibc 버전 불일치, 커널 파라미터 요구사항 차이, gcc 라이브러리 충돌, preinstall RPM 미지원, opatch 오류를 듦
#보충 설명: 19c의 Oracle Linux 지원
적용 버전은 19c임
| OS | 공식 문서의 최소 조건(요약) |
|---|---|
| Oracle Linux 7 | 7.4 + UEK4 4.1.12-124.19.2 이상, 7.4 + UEK5 4.14.35-1818.1.6 이상, 7.7 + UEK6 5.4.17-2011.4.4 이상, 7.5 + RHCK 3.10.0-862.11.6 이상 19c는 OL7에서 계속 지원되지만 Oracle은 OL8 이상으로 업그레이드할 것을 강하게 권고함 |
| Oracle Linux 9 | Database 19c Release 19.19부터 지원 UEK7 5.15.0-1.43.4.2.el9uek 이상, RHCK 5.14.0-70.22.1.0.2.el9_0 이상 19.32부터는 OL 9.6 + UEK8 6.12.0-1.23.3.2.el9uek 이상도 지원 |
Oracle Linux 8, RHEL 계열의 조건은 확인하지 않았음
아래 표 값과 문서 내용이 다를 때는 공식 문서와 My Oracle Support 인증 매트릭스를 최종 기준으로 삼아야 함
#저장 방식 선택: 파일시스템과 ASM
| 구분 | 파일시스템 | ASM |
|---|---|---|
| 데이터 파일 위치 예 | /u01/app/oracle/oradata/ORCL/system01.dbf |
+DATA/ORCL/DATAFILE/... (디스크 그룹 안) |
| 추가로 설치할 것 | 없음 | Grid Infrastructure(단일 서버는 Oracle Restart), ASM 디스크 |
| 관련 글 | 소프트웨어 설치, 수동 CDB 생성 | ASM과 Oracle Restart 단일 인스턴스 구성 |
실습에서는 ASM이 저장 방식이고 멀티테넌트(CDB와 PDB)는 데이터베이스 내부 구조라서 서로 종속된 선택이 아니라고 설명함
단일 인스턴스는 하나의 DB 인스턴스가 하나의 데이터베이스를 관리하는 구성이며, RAC처럼 여러 인스턴스가 같은 DB를 공동 관리하지 않음
저장 방식별 성능, 운영 기준 같은 선택 근거는 기재 없음
#oracle-database-preinstall-19c RPM이 하는 일
필수 패키지(GCC, libstdc++, glibc 등)와 의존성을 한 번에 설치함
커널 파라미터를 Oracle 권장값으로 설정함
세마포어(SEMMSL, SEMMNS, SEMOPM, SEMMNI)와 공유 메모리(shmmax, shmall, shmmni) 등이 대상임
oracle 사용자와 oinstall, dba 등의 그룹을 만들고 /etc/security/limits 계열 파일에 리소스 한도를 넣음
설치 시 사전 점검(Prerequisite Checks)에서 경고가 줄어듦
#그룹의 역할
oinstall: Oracle Inventory 관리용 기본 그룹
여기에 속해야 설치 권한이 있음
dba: SYSDBA 운영체제 인증 그룹
oper, backupdba, dgdba, kmdba, racdba: 업무와 권한을 분리할 때 추가하는 선택 그룹임
단일 인스턴스 교육용 설치의 공통 필수 그룹은 아님
#세 가지 경로
| 이름 | 예시 경로 | 의미 |
|---|---|---|
ORACLE_BASE |
/u01/app/oracle |
Oracle 소프트웨어, 진단 파일, 관리 파일의 최상위 기준 경로 |
ORACLE_HOME |
/u01/app/oracle/product/19.3.0/dbhome_1 |
특정 버전의 실행 파일, 라이브러리, network/admin이 있는 경로버전마다 다른 경로를 씀 |
oraInventory |
/u01/app/oraInventory |
서버에 설치된 Oracle Home과 패치 정보를 관리하는 중앙 인벤토리opatch와 제거에 쓰임 |
설치 경로명 19.3.0과 실제 RU는 다를 수 있음
패치 수준은 opatch lsinventory 또는 DB 생성 후 DBA_REGISTRY_SQLPATCH로 확인함
#주요 용어와 구성 요소
| 용어 | 설명 |
|---|---|
| preinstall RPM | oracle-database-preinstall-19cOracle Linux의 설치 전 준비 패키지 |
| OUI | Oracle Universal InstallerrunInstaller로 실행하는 설치 프로그램 |
| X11 포워딩 | 서버의 GUI를 로컬 PC 화면에 표시하는 기능DISPLAY, XAUTHORITY 환경변수와 연관 |
.Xauthority |
X11 포워딩이 켜진 SSH 세션을 열 때 만들어지는 인증 파일 미리 만들어 두는 파일이 아님 |
#필수 명령어 또는 SQL
#OS와 자원 확인
cat /etc/oracle-release
uname -r
uname -m
free -h
df -h /tmp /u01
swapon --show
df -hT /dev/shm결과 해석:
확인 기준: 아키텍처 x86_64, 메모리 최소 1GB(2GB 이상 권장), /tmp 최소 1GB 여유, Oracle 소프트웨어 최소 7.2GB, /dev/shm은 tmpfs이며 rw와 exec 가능, GUI 설치는 해상도 1024 x 768 이상
실습에서는 이 표를 최소 설치 기준으로 보고 운영 서버는 워크로드, 패치와 백업 정책에 따라 따로 산정하라고 적었음
Swap 기준: RAM이 1GB 초과 2GB 미만이면 RAM의 1.5배, 2GB 이상 16GB 이하이면 RAM과 동일, 16GB 초과이면 16GB
#호스트명과 이름 해석
hostnamectl set-hostname <HOST>
vi /etc/hosts
# 추가할 줄: <IP> <HOST>getent hosts <HOST>
hostname -f
ping -c 2 <HOST>결과 해석:
실습에서는 수업 예시 IP를 그대로 복사하지 말고 현재 서버의 주소(ip -4 addr show)를 입력하라고 했음
DNS를 쓰는 환경은 조직의 DNS 정책이 우선임
#preinstall RPM 설치와 확인
yum info oracle-database-preinstall-19c
yum install -y oracle-database-preinstall-19crpm -q oracle-database-preinstall-19c
id oracle
getent group oinstall
getent group dba
find /var/log/oracle-database-preinstall-19c -name orakernel.log -type f -print결과 해석:
oracle 계정의 기본 그룹이 oinstall이 아니면 수정함
실습의 수업 문서는 기본 그룹이 oracle로 잡혀 있어 아래처럼 바꿨음
usermod -g oinstall -G dba oracle
# 역할 분리 그룹을 실제로 쓸 때만:
usermod -aG oper,backupdba,dgdba,kmdba,racdba oracle결과 해석: 개별 실행 출력은 기재 없음
#커널 파라미터와 리소스 한도 확인
sysctl fs.file-max fs.aio-max-nr kernel.sem kernel.shmmax kernel.shmall kernel.shmmni net.ipv4.ip_local_port_range
grep -Ev '^#|^$' /etc/sysctl.d/*oracle*
su - oracle -c 'ulimit -Sn; ulimit -Hn'
su - oracle -c 'ulimit -Su; ulimit -Hu'
su - oracle -c 'ulimit -Ss; ulimit -Hs'결과 해석:
실습의 대표 최소 기준
| 항목 | Soft | Hard |
|---|---|---|
| nofile | 1024 이상 | 65536 이상 |
| nproc | 2047 이상 | 16384 이상 |
| stack | 10240KB 이상 | 10240KB 이상, 32768KB 이하 |
#디렉터리 생성
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app결과 해석: 개별 실행 출력은 기재 없음
#oracle 계정의 환경변수
# ~/.bash_profile 에 추가
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH결과 해석: 개별 실행 출력은 기재 없음
#X11 포워딩 확인 (GUI 설치를 쓸 때만)
yum install -y xorg-x11-appsecho $DISPLAY
echo $XAUTHORITY
xclock결과 해석:
DISPLAY에 localhost:10.0과 비슷한 값이 보이고 xclock 창이 로컬 PC에 뜨면 정상임
창을 닫은 뒤에 runInstaller를 실행함
#구문과 옵션 설명
| 구문 | 의미 | 바꿀 입력값 | 결과 해석 |
|---|---|---|---|
hostnamectl set-hostname |
호스트명 설정 | 호스트명 | hostnamectl status에서 Static hostname 확인 |
yum install -y oracle-database-preinstall-19c |
설치 전 준비 일괄 수행 | 없음 | 성공하면 oracle 계정, oinstall, dba 그룹, 커널 파라미터, limits가 준비됨 |
usermod -g oinstall -G dba oracle |
기본 그룹과 보조 그룹 지정 | 그룹 목록 | id oracle의 gid가 oinstall이어야 설치 가능 |
chown -R oracle:oinstall, chmod -R 775 |
소유자와 권한 지정 | 경로 | 소유자 oracle, 그룹 oinstall |
xclock |
X11 동작 확인 | 없음 | 창이 뜨면 runInstaller 사용 가능 |
#사용 조건과 주의사항
실습의 지원 매트릭스 표는 정리 시점의 요약이며, 실제 도입 시 최종 기준은 Oracle 설치 문서와 My Oracle Support 인증 매트릭스라고 수업 자료가 적었음