본문 바로가기

오라클 백업/복구

ASM 관리



ASM 관리


ASM 관련 VIEW 들

 VIEW

 설명

 V$ASM_DISKGROUP

 디스크 그룹에 관련된 정보

 V$ASM_DISK

 디스크에 대한 정보

 V$ASM_FILE

 ASM 내부에 생성된 파일에 대한 정보

 V$ASM_TEMPLATE

 ASM 내 모든 디스크 그룹에 설정된 템플릿 정보

 V$ASM_ALIAS

 ASM 디스크 그룹의 ALIAS 정보

 V$ASM_OPERATION

 ASM 인스턴스상에서 실행되는 작업들 현황 정보

 V$ASM_CLIENT

 ASM을 사용하는 DB 인스턴스 현황



Database Instance에서 현재 연결되어있는 ASM Disk Group 정보 확인

SELECT a.name "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 ;

[예제]



ASM Instance에서도 조회 가능

SELECT group_number, name, type, state FROM v$asm_diskgroup ;



ASM Instance에서 각 디스크 그룹별 세부 상세 정보 조회

SELECT group_number, disk_number, name, mount_status, path, total_mb

FROM v$asm_disk ;



ASM Instance에서 각 디스크 그룹별 파일 내역 조회

SELECT group_number, file_number, round((bytes/1024/1024),1) MB, redundancy, type

FROM v$asm_file ;

[예제]



ASM Instance 현재 상태 조회

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 ;





※ Redundancy? 

만약의 경우를 위해 미러링 하는 정도를 의미


Disk Group에서 그중 하나 이상의 디스크가 장애날 경우 

전체 Disk Group내의 데이터를 모두 손실할 수 있기 때문에 안정성을 위해 redundancy를 설정할 수 있다.


ASM Instance 생성시 디스크 그룹을 선택할 때 생성

Normal

- 2-way mirroring, 2배의 디스크가 필요 (실제 데이터가 저장되는 공간이 100G면, 100G 디스크 2개가 필요)

High

- 3-way mirroring, 3배의 디스크 필요

External

- ASM mirroring 기능 사용하지 않음, Hardware RAID 기능으로 디스크를 보호하고 있을 경우에만 사용하길 권장





ASM Disk group에 disk 추가 및 삭제


추가한 디스크 ASM disk로 등록

*ASM disk로 등록할 디스크들은 포맷하면 안됨!!!

# /etc/init.d/oracleasm createdisk 디스크이름 경로

eg)

# /etc/init.d/oracleasm createdisk asm2 /dev/asm2/asm3

# /etc/init.d/oracleasm createdisk asm3 /dev/asm2/asm4



ASM disk중에서 사용하지 않는 것 조회 (아직 연결되지 않은 디스크 조회)

SELECT group_number, mount_status, path, total_mb

FROM v$asm_disk

WHERE mount_status='CLOSED' ;



Disk group에 새로운 Disk 추가

ALTER DISKGROUP DATA ADD DISK 'PATH대문자이름' rebalance power n ;

eg)

> alter diskgroup data add disk 'ORCL:ASM3' rebalance power 10 ;


[실습]




Disk group에 Disk 삭제

ALTER DISKGROUP DATA DROP DISK 디스크이름 ;

eg)

> alter diskgroup data drop disk asm3 ;

※ 해당 디스크 안에 데이터가 들어있으면 tablespace 지운 후 drop disk 가능



drop disk하면 나머지 디스크들에 맞게 다시 reblance 작업을 시작함

조회 방법은

SELECT * FROM v$asm_operation ;



특정 디스크 그룹 내역 확인

SELECT name, header_status, state, free_mb

FROM v$asm_disk

WHERE group_number=n ;


[실습]





Disk Group 추가 및 삭제


현재 디스크 그룹 내역 확인 

SELECT group_number, name, state FROM v$asm_diskgroup ;



디스크 그룹 추가

CREATE DISKGROUP 그룹이름 redundancy옵션 REDUNDANCY 'path이름' ;

eg) create diskgroup new_asm external redundancy disk 'ORCL:ASM3' ;



디스크 그룹 삭제

DROP DISKGROUP 그룹이름 ;

해당 디스크 그룹에 데이터 파일이 있을 경우 삭제 안됨

해당 데이터 파일 전부 지우고 삭제가능, 아니면 including contents 옵션 사용해서 데이터 파일까지 함께 지우기

하지만 마운트 되어있는 디스크 그룹은 지워지지 않으니까 DISMOUNT 시키고 작업

강제로 DISMOUNT는 뒤에 옵션 FORCE를 붙여서 가능



디스크그룹 mount/unmount

ALTER DISKGROUP 그룹이름 MOUNT ;

ALTER DISKGROUP 그룹이름 DISMOUNT ;


[실습]



Disk Group 유지 보수를 하기 위해서 restrict 옵션이 있음

ALTER DISKGROUP 그룹이름 MOUNT RESTRICT ;

이 옵션으로 Disk Group 마운트 할 경우 일반 사용자는 접속할 수 없어 유지 관리 성능을 향상 시킬 수 있음

유지 보수작업이 끝나면 dismount 한 후 mount 시키기




Tablespace / Datafile 관리


(database instance에서 작업해야함)


Tablespace 생성

SELECT tablespace_name, bytes/1024/1024 MB, file_name

FROM dba_data_files ;

--> 이렇게 datafile 경로 지정안하면 db_create_file_dest 파라미터에 저장된 경로로 datafile 생성됨

db_create_file_dest 확인하려면 show parameter db_create_file_dest



Data file 추가

ALTER TABLESPACE T/S명 ADD DATAFILE SIZE * ;

eg) 

> alter tablespace ts_new add datafile size 5M ;



Tablespace, Data file 정보 조회는

SELECT tablespace_name, bytes/1024/1024 MB, file_name FROM dba_data_files ;


[실습]



offline 되는 데이터 파일 이동

해당 테이블스페이스 offline -> RMAN으로 데이터파일 복사 -> rename -> 테이블스페이스 online

eg)

> alter tablespace ts_new offline ;


RMAN> copy datafile '+DATA/testdb/datafile/ts_new.266.808244713' to '+FRA' ;


> alter database rename file '+DATA/testdb/datafile/ts_new.266.808244713' 

   to '+FRA/testdb/datafile/ts_new.260.808245773' ;


> alter tablespace ts_new online ;


[실습]



offline 안되는 데이터 파일 이동

DB 종료 -> DB MOUNT -> RMAN으로 복사 -> rename -> DB OPEN 

eg)

> shutdown immediate ;

> startup mount ;


RMAN> copy datafile '+DATA/testdb/datafile/system.260.808019543' to '+FRA' ;


> alter database rename file '+DATA/testdb/datafile/system.260.808019543'

   to '+FRA/testdb/datafile/system.262.808248611' ;


> alter database open ;


[실습]


RMAN에서 작업형 명령어로 작업 가능


RMAN> run {

2> shutdown immediate ;

3> startup mount ;

4> copy datafile '+FRA/testdb/datafile/system.262.808248611' to '+DATA' ;

5> }


RMAN> run {

2> sql "alter database rename file ''+FRA/testdb/datafile/system.262.808248611''

3> to ''+DATA/testdb/datafile/system.266.808250305''" ;

4> alter database open ;

5> }


[실습]





asmcmd로 ASM 관리

asmcmd는 ASM 관리 방법 중 한가지로 유닉스 명령어와 유사한 명령어들로 구성되어 있음


$ asmcmd


ASMCMD> help << 자세한 옵션, 명령어들을 알 수 있음


몇가지만 알아보자면

$ asmcmd -p -> prompt에 현재 위치를 보여줌


> cd -> 디렉토리 변경

> du -> 사용 용량 확인

> find -> 특정 파일 찾기

> ls -> 디렉토리나 파일 목록 보기

> lsdg -> disk group 정보 보여주기


그 밖에도

mkdir, pwd rm


11g ASM부터 지원하는 명령어

cp: OS ASM, ASM ASM 간 파일 복사 기능

lsdsk: ASM 디스크 헤더를 읽어서 요약 정보를 보여줌

remap: ASM disk 장애 났을 경우 다른 디스크로 remapping 시키고 기존 장애 디스크를 unusable로 변경