본문 바로가기

오라클 백업/복구

ASM - Automatic Storage Management



ASM - Automatic Storage Management

오라클에서 직접 파일들이 저장되는 Storage를 관리하는 방식


File System 과 Raw Device의 장점만을 결합한 방식 

OS가 아닌 ASM에게 데이터를 저장하거나 불러오라고 요청함 

성능이나 편리성이 많이 향상됨



File System 

- OS를 통하여 데이터를 저장하고 관리하는 방식

- 사용자가 관리하기는 쉽지만, OS 성능에 따라 오라클 성능에 영향을 받는다

Raw Device 

- 오라클에서 직접 storage에 데이터를 저장하는 방식

- OS를 거치지 않고 Application이 직접 디스크에 I/O를 발생, 성능은 File System보다 좋으나 관리하기가 어렵고 불편함





장점

1) 효율적인 디스크 관리

ASM 디스크 그룹에 새로운 디스크를 추가, 제거 작업 후의 후속 작업 (추가 후 파일 이동이나 재배치같은 작업들)들은 

ASM에서 자동으로 Rebalancing 작업을 해줌


※ 디스크 그룹 (Disk Group)

ASM에서는 디스크를 여러개 묶어서 디스크 그룹으로 관리 ($asmcmd나, 설치시 설정 가능)

1개의 그룹에는 최소 디스크 2개 있어야 함

데이터가 들어올 때 AU(Allocation Unit)단위로 나누어서 각 디스크 그룹별로 분산시켜 저장

mirroring이 아니라, 똑같은 걸 분산시켜서 동시에 저장함


※ Rebalance

디스크를 추가하면 자동적으로 데이터를 균등하게 만듬



디스크 생성시 rebalance power n 으로 구성할 수 있음

eg) alter diskgroup testdb_dg1 add disk '/dev/sdf1' rebalance power 9 ;


n에는 10g -> 1~11 까지 가능 / 11g -> 1~1024 까지 가능

기본값은 1, 0을 쓰면 사용 안함

숫자가 클수록 rebalance 속도는 빨라진다. (우선순위로 작업한다는 뜻)

하지만 CPU 부하가 많이 걸리는 단점이 있으므로 상황에 맞게 숫자 조정할 것!



2) 디스크 I/O의 효과적 분산

RAID가 구현되어 있어도 디스크가 교체, 추가되면 

기존 디스크와 신규 디스크 사이에 데이터가 균등하게 분산되지 못하고 쏠림 현상이 발생함

하지만 ASM은 AU(Allocation Unit)단위로 나누어서 서로 다른 디스크에 균등하게 분산시켜 저장함

--> I/O가 효과적으로 분산되어 저장되면서 성능이 아주 많이 향상됨, 디스크 튜닝이 필요없을 정도로.. 

AU(Allocation Unit)단위-> Oracle Block 개념


3) 비용 절감

고가의 RAID 장비나 별도의 하드웨어, 소프트웨어 필요없이도 오라클에서 software 적으로 관리 가능





구조

Oracle Server처럼 Instance 와 Disk Group으로 구성되어 있음

ASM Instance가 작동하지 않으면 Database Instance가 작동하더라도 데이터의 조회나 변경이 불가능 함



ASM Instance

디스크 그룹에 대한 정보를 수집해 Database Instance에 제공

디스크 관리를 위한 instance

디스크에 있는 데이터에 대한 데이터(metadata)를 가지고 있음

DB Buffer Cahce 같은 개념

디스트 안에 있는 내용을 Caching 해놓음으로서 최대한 디스크에 안가고 바로 작업할 수 있게 함


ASMB Process

ASM Instance와 Database Instance 사이에서 정보를 교환해 주는 역할


RBAL Process

디스크가 추가, 삭제되었을 경우 디스크 그룹에 대한 Rebalance를 담당

ASM Instance의 요청이 있을 경우 디스크를 열고 닫는 프로세스 


ARBn(ARB1 ~ ARB9)

RBAL의 요청을 받아 실질적으로 작업을 수행하는 Process




Single Instance ASM: 단일 인스턴스로 구성되어 있는 여러 개의 데이터베이스들이 

ASM Instance를 통해 Storage에 접속해서 데이터를 관리

RAC ASM: 각 노드별로 ASM 인스턴스를 구성해서 Storage에 접근하는 방식





OPEN / SHUTDOWN


ASM Instance에 접속하려면 초기화 파라미터 파일이 필요

경로는 역시 $ORACLE_HOME/dbs 


주요 파라미터들

db_cache_size: metadata block 정보를 저장, ASM Instance가 사용할 cache 크기를 결정 (권장값은 64M)

shared_pool: 사용자가 원하는 정보 저장, ASM Instance를 관리하는 용도 (권장값은 128M)

large_pool: Extent Maps를 저장하는 용도 (권장값은 64M)

background_dump_dest: Alert Log가 저장되는 경로

core_dump_dest: core dump를 저장할 경로

그밖에

instance_type='asm'

asm_diskgroups='DATA','FRA'

remote_login_passwordfile='SHARED'

user_dump_dest



ASM Instance 와 Database Instance


DB 시작

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

> startup 


$ export ORACLE_SID=testdb

$ sqlplus / as sysdba

> startup 


즉, ASM Instance 시작 -> Database Instance 시작


※ ASM Instance shutdown option

FORCE: ASM Instance shutdown abort 하고 재시작

MOUNT, OPEN: ASM Instance 시작후 디스크 그룹 마운트 

MOMOUNT: ASM Instance 시작만, 디스크 그룹은 마운트 하지 않음


DB 종료

$ export ORACLE_SID=testdb

$ sqlplus / as sysdba

> shutdown immediate 


$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

> shutdown immediate 


즉, Database Instance 종료 -> ASM Instance 종료

ASM Instance 강제 종료 (shutdown abort) 되면 해당 Instance를 사용중이던 Database도 강제 종료됨


※ ASM Instance shutdown option

NORMAL: 현재 진행중인 세션이 종료될 때까지 기다렸다가 종료

TRANSACTIONAL: 현재 진행중인 트랜잭션이 끝날 때까지 기다렸다가 종료

IMMEDIATE: 현재 세션이 있어도 강제 종료, ASM Instance에 저장될 데이터가 있으면 전부 저장 후 종료됨

ABORT: 저장하지 않고 강제 종료



+ASM

+ 의 의미는 최상위 디렉토리르 뜻함

Unix 에서는 /data 

ASM 에서는 +data