오라클 백업 및 복구(ASM에서의 복구)

1. ASM(Automatic Storage Management)의 개념 ASM은 데이터베이스 커널에 내장된 파일시스템과 볼륨 관리자로 전통적인 방식의 Raw device 방식과 File system 방식의 장점을 취합한 것이다. ASM은 File system 방식의 관리의 용이함과 Raw Device의 빠른속도를 보장한다.
Automatic Storage Management는 데이터베이스 커널에 내장된 파일시스템과 볼륨 관리자로, 수천개의 디스크 드라이브를 24X7의 가용성을 보장하면서 운영할 수 있도록 한다. 이것은, Oracle Real Application Clusters (RAC) 클러스터내의 여러 노드를 위한 관리 방안을 제시 할 뿐 아니라 단일 SMP 장비로 구성된 환경에서도 사용 가능하다. 모든 가용 디스크 드라이브에 대해 병렬 방식으로 load balancing을 자동으로 제공하며 hot spot이 발생하는 것을 예방하고, 성능을 최대화 시킨다. 특히 데이터 사용 량이 급격히 변화는 환경에서도 효과적인 관리를 해 준다. 조각 발생을 방지하여, 공간 확보를 위해 데이터를 재 배치할 필요가 없어 진다. 데이터는 모든 디스크에 균형있게 striping 된다. 스토리지 용량의 순차적인 증설이나, 축소가 발생할 경우, 자동으로 온라인 디스크 공간의 재구성 작업도 수행한다. 출처 : oracle.com
2. ASM의 구조 가. ASM Instance : 디스크 그룹에 대한 정보를 수집해서 Database Instance에게 전달해준다. 나. ASMB process : ASM Instance와 Database Instance 사이에서 정보를 중개한다. 다. RBAL process : 디스크의 추가 밋 제거시 디스크 그룹의 Rebalance 담당 ASM Instance 요청 시 디스크를 열고 닫음 라. ARBn process : RBAL Process의 요청에따라 실질적인 작업을 수행하는 프로세서 3. ASM 모니터링 및 관리 가. ASM 디스크 내용확인 $ export ORACLE_SID=+ASM $ sqlplus / as sysdba
select a.name as disk_group, d.name "label", a.state
from v$asm_disk d, v$asm_diskgroup a
where d.group_number=a.group_number
order by 2;

DISK_GROUP           label                STATE
-------------------- -------------------- ----------------------
DATA                 ASM1                 MOUNTED
FRA                  FRA1                 MOUNTED
나. 각 디스크 그룹별 세부내용 확인
select group_number, disk_number, name, mount_status, path, total_mb
from v$asm_disk;

GROUP_NUMBER DISK_NUMBER NAME       MOUNT_STATUS   PATH              TOTAL_MB
------------ ----------- ---------- -------------- --------------- ----------
           1           0 ASM1       CACHED         ORCL:ASM1             7680
           2           0 FRA1       CACHED         ORCL:FRA1             2460
다. 각 디스크 그룹별 파일 내역
select group_number, file_number, round(bytes/1024/1024) mb, redundancy, type
from v$asm_file;

GROUP_NUMBER FILE_NUMBER         MB REDUNDANCY   TYPE
------------ ----------- ---------- ------------ ---------------
           1         256          7 UNPROT       CONTROLFILE
           1         257         50 UNPROT       ONLINELOG
           1         258         50 UNPROT       ONLINELOG
           1         259         50 UNPROT       ONLINELOG
           1         260        300 UNPROT       DATAFILE
           1         261        200 UNPROT       DATAFILE
           1         262        120 UNPROT       DATAFILE
           1         263         20 UNPROT       TEMPFILE
           1         264          5 UNPROT       DATAFILE
           1         265          0 UNPROT       PARAMETERFILE
           2         256          7 UNPROT       CONTROLFILE
           2         257         50 UNPROT       ONLINELOG
           2         258         50 UNPROT       ONLINELOG
           2         259         50 UNPROT       ONLINELOG

14 rows selected.
라. 디스크 추가 <과정요약>
서버에 디스크 장착 -> pvcreate -> vgcreate -> lvcreate -> oracleasm createdisk 수행 -> ASM SQL 명령문 수행
# fdisk /dev/sdb n -> p -> 1 -> 엔터 -> 엔터 -> t -> 8e -> w # pvcreate /dev/sdb1 # vgcreate asm2 /dev/sdb1 # lvcreate -L 19G -n asm3 asm2 # /etc/init.d/oracleasm createdisk asm2 /dev/asm2/asm3 # su – oracle $ export ORACLE_SID=+ASM $ sqlplus / as sysdba
select group_number, mount_status, path, total_mb
from v$asm_disk
where mount_status='CLOSED';

GROUP_NUMBER MOUNT_STATUS   PATH              TOTAL_MB
------------ -------------- --------------- ----------
           0 CLOSED         ORCL:ASM2            19456


-- 디스크 추가
alter diskgroup data add disk 'ORCL:ASM2' rebalance power 5;


select group_number, mount_status, path, total_mb
from v$asm_disk;

GROUP_NUMBER MOUNT_STATUS   PATH              TOTAL_MB
------------ -------------- --------------- ----------
           1 CACHED         ORCL:ASM1             7680
           2 CACHED         ORCL:FRA1             2460
           1 CACHED         ORCL:ASM2            19456
마. 디스크 삭제
select b.name as group_name, a.name as disk_name, a.header_status,
a.state, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number=b.group_number;

GROUP_NAME      DISK_NAME       HEADER_STA STATE         FREE_MB
--------------- --------------- ---------- ---------- ----------
DATA            ASM1            MEMBER     NORMAL           7429
FRA             FRA1            MEMBER     NORMAL           2233
DATA            ASM2            MEMBER     NORMAL          18824


-- 디스크 삭제(asm2)
alter diskgroup data drop disk asm2;


select b.name as group_name, a.name as disk_name, a.header_status,
a.state, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number=b.group_number;

GROUP_NAME      DISK_NAME       HEADER_STA STATE         FREE_MB
--------------- --------------- ---------- ---------- ----------
DATA            ASM1            MEMBER     NORMAL           6799
FRA             FRA1            MEMBER     NORMAL           2233
바. 디스크 그룹 추가/삭제
select group_number, name, state from v$asm_diskgroup;

GROUP_NUMBER NAME       STATE
------------ ---------- ----------
           1 DATA       MOUNTED
           2 FRA        MOUNTED


select name, path, state from v$asm_disk;

NAME       PATH            STATE
---------- --------------- ----------
           ORCL:ASM2       NORMAL
ASM1       ORCL:ASM1       NORMAL
FRA1       ORCL:FRA1       NORMAL


-- 디스크 그룹 추가(new_asm)
create diskgroup new_asm external redundancy
disk 'ORCL:ASM2';


select group_number, name, state from v$asm_diskgroup;

GROUP_NUMBER NAME       STATE
------------ ---------- ----------
           1 DATA       MOUNTED
           2 FRA        MOUNTED
           3 NEW_ASM    MOUNTED


select name, path, state from v$asm_disk;

NAME       PATH            STATE
---------- --------------- ----------
ASM1       ORCL:ASM1       NORMAL
FRA1       ORCL:FRA1       NORMAL
ASM2       ORCL:ASM2       NORMAL


-- 디스크 그룹 unmount (new_asm)
alter diskgroup new_asm dismount;


select group_number, name, state from v$asm_diskgroup;

GROUP_NUMBER NAME       STATE
------------ ---------- ----------
           1 DATA       MOUNTED
           2 FRA        MOUNTED
           0 NEW_ASM    DISMOUNTED


-- 디스크 그룹 mount (new_asm)
alter diskgroup new_asm mount;


-- 디스크 그룹 삭제
drop diskgroup new_asm;
참고 : ASM 관련 뷰 – v$asm_diskgroup : 디스크 그룹과 관련된 정보 – v$asm_disk : 디스크에 대한 정보 – v$asm_file : ASM내부에 생성된 파일에 대한 정보 – v$asm_template : 디스크 그룹에 설정된 템플릿 정보 – v$asm_alias : 그룹의 alias 정보 – v$asm_operation : ASM 인스턴스상에서 실행되는 작업의 현황 – v$asm_client : ASM을 사용하는 DB 인스턴스 현황
4. asmcmd 로 asm 관리 $ export ORACLE_SID=+ASM $ asmcmd
ASMCMD> help asmcmd [-p] [command] The environment variables ORACLE_HOME and ORACLE_SID determine the instance to which the program connects, and ASMCMD establishes a bequeath connection to it, in the same manner as a SQLPLUS / AS SYSDBA. The user must be a member of the SYSDBA group. Specifying the -p option allows the current directory to be displayed in the command prompt, like so: ASMCMD [+DATAFILE/ORCL/CONTROLFILE] > [command] specifies one of the following commands, along with its parameters. Type “help [command]” to get help on a specific ASMCMD command. commands: ——– cd : 디렉토리 이동 du : 사용용량 확인 find : 특정 파일 찾기 help ls : 파일목록 보기 lsct lsdg mkalias mkdir : 디렉토리생성 pwd rm rmalias
참고 : 11g 이후 버전에서 지원하는 asmcmd 명령 cp : OS <—-> ASM 간의 파일 복사기능 lsdsk : ASM 디스크 헤더를 읽어 요약정보 표시 remap : ASM 디스크에 장애가 발생했을 때 다른 디스크로 remapping 시켜주고, 기존 디스크를 unusable로 변경

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다