데이터베이스 연구실.log

ASM과 Oracle Restart 단일 인스턴스 구성

단일 서버에 Grid Infrastructure(Oracle Restart)와 ASM 디스크 그룹을 만들고 그 위에 CDB를 생성하는 구성의 개념과 핵심 명령

ASMGrid InfrastructureOracle RestartoracleasmasmcaCDB

#핵심 요약

목표 구조: 단일 서버에 ASM 인스턴스 1개(+ASM), DB 인스턴스 1개, CDB 1개, PDB 1개 이상

파일시스템과 ASM 중 무엇을 고를지는 설치 사전 준비의 "저장 방식 선택"에 있음

순서: OS 환경 준비, ASM 라이브러리 구성, 디스크 파티션과 ASM 디스크 생성, Grid 설치, asmca로 디스크 그룹 생성, DB 소프트웨어 설치와 CDB 생성, 리스너와 접속 확인

설치가 꼬이면 OS를 다시 설치하지 않고 deconfig로 원복함

#개념과 동작 원리

개념도개념 도식조회만 함
Linux 서버
├─ Grid Infrastructure
│  ├─ Oracle Restart
│  └─ ASM 인스턴스 +ASM
│     ├─ +DATA
│     └─ +FRA (예시에서는 RECO 디스크로 생성)
└─ Oracle Database
   └─ ORCL 인스턴스
      └─ ORCL CDB
         ├─ CDB$ROOT
         ├─ PDB$SEED
         └─ ORCLPDB

실습의 디스크 구성: CRS용 3개(각 1GB), DATA용 20GB(최소 20GB), RECO용 20GB

#주요 용어와 구성 요소

용어 설명
Grid Infrastructure, Oracle Restart ASM과 리스너 등 리소스를 관리하는 소프트웨어
실습에서는 단일 서버에 구성
ASMLIB(oracleasm) ASM 디스크를 만들고 관리하는 도구
실습에서는 oracleasm configure -i로 소유자 oracle, 그룹 asmadmin을 지정
asmadmin, asmdba, asmoper ASM 관리용 OS 그룹
GRID_HOME 실습에서는 /app/grid
환경변수 grid_env와 db_env 별칭으로 전환
asmca ASM 디스크 그룹을 만드는 GUI 도구
gridSetup.sh Grid 설치 시작 스크립트(대문자 S)

#필수 명령어 또는 SQL

#OS 환경 준비 (root)

셸 (root)객체 또는 설정을 변경함
# 이름 서버를 추가해야 하면 조직의 DNS 정책을 확인한다.
vi /etc/hosts
hostnamectl set-hostname <HOST>
yum -y install oracle-database-preinstall-19c

결과 해석:

실습의 SELinux와 방화벽 비활성화 단계(/etc/selinux/config를 SELINUX=disabled로, systemctl stop firewalld, reboot)와 공개 DNS 추가는 설치 사전 준비에서 필수 절차가 아니라고 정리한 항목임
수업 자료에는 SELINUX=disable로 적힌 줄이 있고 설명에서는 disabled로 변경한다고 되어 있어 표기가 다름

Oracle Linux 문서에 기재된 비활성화 값은 disabled임
수업 자료의 disable과 다르므로 SELINUX=disable을 설정값으로 사용하지 않음
이 표기 확인은 ASM 설치에 SELinux 비활성화가 필수라는 뜻은 아님
Oracle Linux 7의 비활성화 예시는 재부팅을 포함함
Oracle Linux 8.9에서는 설정 파일의 SELINUX=disabled만으로 완전히 비활성화하는 방식이 deprecated이며 완전 비활성화는 커널의 selinux=0으로 구분함
다른 OS 버전에 이 실습의 설정 방식을 그대로 적용하지 않음

ASM 패키지 설치

셸 (root)객체 또는 설정을 변경함
yum install -y oraclelinux-release-el7
yum install -y oracleasm-support oracleasmlib oracleasm
# oracleasmlib가 없으면 ol7_addons 저장소를 활성화
yum-config-manager --enable ol7_addons
yum install -y oracleasm-support oracleasmlib
rpm -qa | grep -i asm

결과 해석:

ASM용 그룹과 디렉터리

셸 (root)객체 또는 설정을 변경함
groupadd asmadmin
groupadd asmdba
groupadd asmoper
usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba,asmoper oracle

mkdir -p /app/grid
chown -R oracle:oinstall /app
chmod -R 775 /app

결과 해석: 개별 실행 출력은 기재 없음

#ASM 라이브러리 구성 (root)

셸 (root)객체 또는 설정을 변경함
oracleasm configure -i
# Default user to own the driver interface []: oracle
# Default group to own the driver interface []: asmadmin
# Start Oracle ASM library driver on boot (y/n) [n]: y
# Scan for Oracle ASM disks on boot (y/n) [y]: y

oracleasm init
oracleasm status
oracleasm configure

결과 해석: 개별 실행 출력은 기재 없음

#디스크 파티션과 ASM 디스크 (root)

가상 디스크를 추가한 뒤(실습은 sdb부터 sdf까지 5개, OS는 sda에 설치됨) 각각 파티션을 만듦
sda와 sda1, sda2는 OS 영역이므로 건드리지 않음

셸 (root)조회만 함
ls /dev/sd*
lsblk
셸 (root)데이터 또는 파일을 삭제함, 되돌릴 수 없음
fdisk /dev/sdb
# n, p, 1, Enter, Enter, w  (sdb부터 sdf까지 같은 방식으로 반복)

결과 해석:

셸 (root)객체 또는 설정을 변경함
oracleasm createdisk crs1 /dev/sdb1
oracleasm createdisk crs2 /dev/sdc1
oracleasm createdisk crs3 /dev/sdd1
oracleasm createdisk data /dev/sde1
oracleasm createdisk reco /dev/sdf1

oracleasm scandisks
oracleasm listdisks
ls -l /dev/oracleasm/disks/

결과 해석: 개별 실행 출력은 기재 없음

#압축 해제와 Grid 설치 (oracle)

셸 (oracle)객체 또는 설정을 변경함
cd /app/grid
unzip LINUX.X64_193000_grid_home.zip

echo $DISPLAY
./gridSetup.sh

결과 해석:

실습의 .bash_profile에는 ORACLE_BASE, ORACLE_HOME, GRID_HOME, ORACLE_SID와 다음 별칭이 있음

셸 (oracle)현재 세션 설정만 변경함
alias grid_env='export ORACLE_HOME=$GRID_HOME; export ORACLE_SID=+ASM; export PATH=$GRID_HOME/bin:$PATH'
alias db_env='export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1; export ORACLE_SID=orcl'

결과 해석:

설치 중 CV_ASSUME_DISTID를 지정하고(RHEL7.6) 로캘을 영어로 맞추는 값이 수업 자료에 있음

#디스크 그룹 생성

셸 (oracle)객체 또는 설정을 변경함
grid_env
asmca
# 20G 디스크를 DATA, RECO 디스크 그룹으로 각각 생성

결과 해석: 개별 실행 출력은 기재 없음

#설치 확인

셸 (oracle)조회만 함
crsctl stat res -t

결과 해석:

실습의 정상 기준: ora.CRS.dg, ora.DATA.dg, ora.RECO.dg, ora.LISTENER.lsnr, ora.asm이 ONLINE이고 ora.cssd, ora.evmd가 ONLINE
ora.ons와 ora.diskmon은 OFFLINE이었음

#DB 소프트웨어 설치와 접속

셸 (oracle)객체 또는 설정을 변경함
db_env
mkdir -p $ORACLE_HOME
mv LINUX.X64_193000_db_home.zip $ORACLE_HOME
cd $ORACLE_HOME
unzip -q LINUX.X64_193000_db_home.zip
./runInstaller

결과 해석:

설치 화면에서 컨테이너 데이터베이스를 선택하고 저장소는 ASM 디스크 그룹을 지정했음

셸 (oracle)조회만 함
ps -ef | grep pmon
. oraenv
# ORACLE_SID = [orcl] ? orcl
sqlplus <USERNAME>/<PASSWORD> as sysdba
lsnrctl status
SQL*Plus (SYSDBA)조회만 함
select instance_name, status from v$instance;
show con_name

결과 해석:

리스너 HOST 수정과 방화벽 포트

셸 (oracle)인스턴스 또는 서비스 중단이 필요함
cd /app/grid/network/admin/
vi listener.ora
# ADDRESS = (PROTOCOL = TCP)(HOST = <IP>)(PORT = 1521)
lsnrctl stop
lsnrctl start
lsnrctl status

결과 해석:

실습에서는 이 listener.ora를 $ORACLE_HOME/network/admin/에 복사하지 말라고 표시했음
Grid 홈의 listener.ora를 쓰는 구성이기 때문으로 보이나 이유는 수업 자료에 설명이 없음

셸 (root)객체 또는 설정을 변경함
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload

결과 해석:

원격 접속 확인은 sqlplus <USERNAME>/<PASSWORD>@<IP>/orcl as sysdba 형식으로 했음

#재설치가 필요할 때 (deconfig)

셸 (root)데이터 또는 파일을 삭제함, 되돌릴 수 없음
<GRID_HOME>/crs/install/roothas.sh -deconfig -force
<GRID_HOME>/deinstall/deinstall
rm -rf <GRID_HOME>/*

결과 해석:

ASM 디스크 헤더까지 지울 때

셸 (root)데이터 또는 파일을 삭제함, 되돌릴 수 없음
oracleasm deletedisk CRS1
dd if=/dev/zero of=/dev/sdb1 bs=1M count=100

결과 해석:

#구문과 옵션 설명

구문 의미 바꿀 입력값
oracleasm configure -i ASM 라이브러리 소유자, 그룹, 부팅 시 구동과 스캔 설정 소유자, 그룹
oracleasm createdisk <이름> <장치> 파티션을 ASM 디스크로 표시 이름, 파티션
oracleasm scandisks, listdisks ASM 디스크 스캔과 목록
crsctl stat res -t 리소스 상태
roothas.sh -deconfig -force Oracle Restart 구성 해제 강제 해제(-force)

#사용 조건과 주의사항

실습의 환경은 OL 7 계열(OracleLinux-R7-U9)과 Oracle 19c, 가상 디스크 구성이며 다른 OS에서는 oracleasm 패키지와 설치 방식이 다를 수 있음(확인 불가)

실습의 sqlplus sys/<PASSWORD>@<IP>/orcl 형태처럼 비밀번호를 명령행에 쓰면 셸 히스토리에 남음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기