ASM과 디스크 그룹
ASM과 DB 인스턴스 및 Oracle Restart의 관계, ASMLib 디스크와 디스크 그룹 구성 및 상태 확인
#핵심 요약
ASM은 Oracle 데이터베이스 파일을 Linux 파일 시스템 대신 ASM 디스크 그룹에 저장하는 방식임
파일 경로가 /u01/.../system01.dbf 같은 파일 시스템 경로가 아니라 +DATA/ORCL/DATAFILE/... 같은 디스크 그룹 경로가 됨
실습 단일 서버 구성은 Grid Infrastructure(Oracle Restart와 ASM 인스턴스 +ASM) 위에 DB 인스턴스 하나와 CDB 하나를 두고, 디스크 그룹으로 +DATA와 회복 영역용 그룹을 씀
ASM과 멀티테넌트는 서로 종속되지 않음
ASM은 저장 방식이고 멀티테넌트는 데이터베이스 내부 구조임
실습에서는 디스크 그룹이 Grid의 리소스(ora.DATA.dg 등)로 등록되어 crsctl stat res -t에서 ONLINE으로 보이는지 확인했음
#개념과 동작 원리
Linux 서버
├─ Grid Infrastructure
│ ├─ Oracle Restart
│ └─ ASM 인스턴스 +ASM
│ ├─ +DATA
│ └─ +FRA
└─ Oracle Database
└─ ORCL 인스턴스
└─ ORCL CDB (CDB$ROOT, PDB$SEED, ORCLPDB)위 그림은 실습의 최종 목표 구조임
실습에서 실제로 만든 디스크 그룹 이름은 CRS, DATA, RECO이며 그림의 +FRA와 이름이 다름
| 실습 디스크 | 크기 | 용도 |
|---|---|---|
| crs1, crs2, crs3 | 각 1GB | ASM 파일용, Grid 설치 때 CRS 디스크 그룹 |
| data | 최소 20GB | 데이터베이스용, DATA 디스크 그룹 |
| reco | 20GB | 회복 영역용, RECO 디스크 그룹 |
실습에서는 OS 그룹으로 asmadmin, asmdba, asmoper를 만들고 ASM 디스크 장치를 oracle 사용자와 asmadmin 그룹이 소유하도록 설정했음
실습은 Grid와 DB를 같은 oracle 사용자로 설치했고, 환경 변수 별칭으로 ASM(+ASM, Grid 홈)과 DB(orcl, DB 홈)를 바꿔 가며 썼음
#필수 명령어 또는 SQL
#ASMLib 드라이버 구성
oracleasm configure -i
oracleasm init
oracleasm status
oracleasm configure결과 해석: 대화형 설정에서 드라이버 소유 사용자 oracle, 그룹 asmadmin, 부팅 시 시작과 디스크 검색을 y로 답했음oracleasm status에서 ASM 로드와 /dev/oracleasm 마운트가 모두 yes, oracleasm configure에서 ORACLEASM_ENABLED=true, ORACLEASM_UID=oracle, ORACLEASM_GID=asmadmin이 보이면 됨
ASMLib 패키지(oracleasm-support, oracleasmlib)는 저장소에서 설치하고, 저장소에 없으면 실습에서는 addons 저장소를 켜거나 rpm을 직접 받았음
#ASM 디스크 만들기
lsblk
fdisk /dev/sdb
oracleasm createdisk crs1 /dev/sdb1
oracleasm createdisk data /dev/sde1
oracleasm scandisks
oracleasm listdisks
ls -l /dev/oracleasm/disks/결과 해석: VM에 디스크를 추가한 뒤 디스크마다 파티션을 하나 만들고(n, p, 1, 기본값, w) ASM 디스크로 표시함
실습에서는 crs1~3, data, reco 다섯 개를 같은 방식으로 만들었고 listdisks에 CRS1, CRS2, CRS3, DATA, RECO가 나왔음
마지막 명령으로 장치 소유권을 확인함
파티션 작업과 디스크 헤더 기록은 그 디스크의 기존 내용을 지움
#디스크 그룹 만들기와 상태 확인
grid_env
asmca결과 해석: CRS 디스크 그룹은 Grid 설치 화면에서 만들고, asmca로 20GB 디스크 두 개를 각각 DATA와 RECO 디스크 그룹으로 만들었음grid_env는 실습 .bash_profile의 별칭으로 ORACLE_HOME을 Grid 홈, ORACLE_SID를 +ASM으로 바꿈asmca 화면 선택값은 이미지에만 있어 확인 불가(중복도, 할당 단위 등)
crsctl stat res -t결과 해석: 실습 결과에서 ora.CRS.dg, ora.DATA.dg, ora.RECO.dg, ora.asm, ora.LISTENER.lsnr가 ONLINE/STABLE이고, 클러스터 리소스 ora.cssd, ora.evmd가 ONLINE이었음ora.ons와 ora.diskmon은 OFFLINE이었음
단일 서버 Oracle Restart에서 이 두 리소스가 OFFLINE인 것이 정상인지는 수업 자료에 설명이 없음
ps -ef | grep pmon
lsnrctl status결과 해석: ASM과 DB 인스턴스의 pmon 프로세스가 각각 보이고, 리스너 상태에 ASM과 DB 서비스가 함께 나오면 됨
DB 접속 확인은 v$instance에서 STATUS OPEN임
#사용 조건과 주의사항
실습 리스너 설정은 Grid 홈의 listener.ora를 쓰며, 실습에서는 이 파일을 DB 홈으로 복사하면 안 된다고 적었음
이유는 기재 없음
실습 사전 준비 절의 제목은 "방화벽 해제"이지만 내용은 SELinux 설정이고, 값을 disable로 적은 줄과 disabled로 바꾸라는 설명이 함께 있음
실습 .bash_profile의 인벤토리 경로 변수 값은 오타로 보이는 철자가 있음
ASM 파일의 백업과 복구는 ASM 백업과 복구, RAC에서 ASM이 Clusterware와 맺는 관계는 고가용성 분야에서 다룸