"오라클 ASM"의 두 판 사이의 차이
DB CAFE
(→Disk 그룹/패스 조회) |
(→ASM 이란?) |
||
1번째 줄: | 1번째 줄: | ||
== ASM 이란? == | == ASM 이란? == | ||
https://docs.oracle.com/cd/E11882_01/server.112/e18951/asm_util001.htm#OSTMG01620 | https://docs.oracle.com/cd/E11882_01/server.112/e18951/asm_util001.htm#OSTMG01620 | ||
+ | |||
+ | == ASM 을 사용하는 이유 == | ||
+ | === 효율적인 디스크 관리 === | ||
+ | # 디스크 추가/삭제 작업을 보다 쉽게 할 수 있음. | ||
+ | # 기존 방식은 디스크 추가 후 DBA가 수동으로 작업을 해야 했지만, ASM 방식은 DB 중단 없이 Oracle이 자동으로 해줌 | ||
+ | # 관리자가 ASM Disk Group에 새로운 디스크를 추가/제거하기만 하면 나머지 후속 작업은 ASM에서 자동으로 Rebalancing(재배치) 작업을 해줌. | ||
+ | |||
+ | === 디스크 I/O의 효과적인 분산 === | ||
+ | # 기존 방식은 RAID로 구현되어 있어도 디스크가 교체되거나 추가되면 기존 디스크와 신규 디스크 사이에 데이터가 균등하게 분산되지 못하고 한쪽으로 쏠리는 현상 발생. | ||
+ | # ASM은 AU(Allocation Unit) 단위로 나누어서 서로 다른 디스크에 균등하게 데이터를 분산시켜 저장 | ||
+ | # 기존 RAID의 스트라이핑 방식은 디스크 튜닝이 중요 했지만 ASM 방식은 AU로 자동 관리해 주기 때문에 디스크 I/O 성능이 아주 많이 향상 됨. | ||
+ | # 오라클에 최적화 되어 있음. | ||
+ | |||
+ | === 비용의 절감 === | ||
+ | # 기존 방식의 경우 고가의 RAID 장비를 별도로 구매해서 설치/운영 | ||
+ | # ASM을 도입하여 Oracle에서 Software적으로 RAID의 기능들을 구현하기 때문에 별도의 하드웨어나 소프트웨어 구입 비용 없이 디스크 장애 대비, I/O 분산을 통한 성능 향상. | ||
== ASMcmd 명령어 == | == ASMcmd 명령어 == |
2024년 4월 30일 (화) 18:36 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
2 ASM 을 사용하는 이유[편집]
2.1 효율적인 디스크 관리[편집]
- 디스크 추가/삭제 작업을 보다 쉽게 할 수 있음.
- 기존 방식은 디스크 추가 후 DBA가 수동으로 작업을 해야 했지만, ASM 방식은 DB 중단 없이 Oracle이 자동으로 해줌
- 관리자가 ASM Disk Group에 새로운 디스크를 추가/제거하기만 하면 나머지 후속 작업은 ASM에서 자동으로 Rebalancing(재배치) 작업을 해줌.
2.2 디스크 I/O의 효과적인 분산[편집]
- 기존 방식은 RAID로 구현되어 있어도 디스크가 교체되거나 추가되면 기존 디스크와 신규 디스크 사이에 데이터가 균등하게 분산되지 못하고 한쪽으로 쏠리는 현상 발생.
- ASM은 AU(Allocation Unit) 단위로 나누어서 서로 다른 디스크에 균등하게 데이터를 분산시켜 저장
- 기존 RAID의 스트라이핑 방식은 디스크 튜닝이 중요 했지만 ASM 방식은 AU로 자동 관리해 주기 때문에 디스크 I/O 성능이 아주 많이 향상 됨.
- 오라클에 최적화 되어 있음.
2.3 비용의 절감[편집]
- 기존 방식의 경우 고가의 RAID 장비를 별도로 구매해서 설치/운영
- ASM을 도입하여 Oracle에서 Software적으로 RAID의 기능들을 구현하기 때문에 별도의 하드웨어나 소프트웨어 구입 비용 없이 디스크 장애 대비, I/O 분산을 통한 성능 향상.
3 ASMcmd 명령어[편집]
3.1 실행명령어[편집]
asmcmd
3.2 diskgroup[편집]
ASMCMD> lsdg
3.3 disk 진행사항[편집]
ASMCMD> lsdg
3.4 ASM 작업[편집]
- 자주 사용하는 오라클 ASM 명령어 (Command)
3.4.1 sqlplus를 사용하여 디스크 그룹 생성 및 삭제[편집]
- 콘솔 로 sqlplus 접속
bash-4.1$ . oraenv
ORACLE_SID = [TEST] ? +ASM
The Oracle base remains unchanged with value /u01/app
bash-4.1$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 14 14:47:25 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic Storage Management option
SQL>
3.4.1.1 디스크 그룹 생성 (external)[편집]
SQL> create diskgroup ddgroup1 external
2 redundancy disk '/dev/rdsk/c7t4d0s6';
Diskgroup created.
3.4.1.2 디스크 그룹 삭제[편집]
SQL> drop diskgroup DDGROUP1 including contents;
Diskgroup dropped.
3.4.1.3 disk group 생성 (normal)[편집]
SQL> create diskgroup ddgrouup1 normal redundancy
2 failgroup cont1 disk '/dev/rdsk/c7t4d0s6'
3 failgroup cont2 disk '/dev/rdsk/c7t5d0s6';
Diskgroup created.
3.4.1.4 disk group 삭제[편집]
SQL> drop diskgroup DDGROUUP1 including contents;
Diskgroup dropped.
3.4.1.5 disk group 생성 (high)[편집]
SQL> create diskgroup ddgrouup1 high redundancy
2 failgroup cont1 disk '/dev/rdsk/c7t4d0s6'
3 failgroup cont2 disk '/dev/rdsk/c7t5d0s6'
4 failgroup cont3 disk '/dev/rdsk/c7t6d0s6';
Diskgroup created.
3.4.1.6 disk 그룹 삭제[편집]
-> disk group 생성 (high)
SQL> drop diskgroup ddgrouup1 including contents;
Diskgroup dropped.
3.4.1.7 디스크 그룹에 디스크 추가[편집]
SQL> alter diskgroup DATA add disk
2 '/dev/rdsk/c7t4d0s6' name DATA_0002;
Diskgroup altered.
3.4.1.8 디스크 그룹에 디스크 삭제[편집]
SQL> alter diskgroup DATA drop disk DATA_0002;
Diskgroup altered.
-> 디스크 그룹 삭제하려고 할때 삭제가 완료되기 전 undrop하여 삭제작업 취소
SQL> alter diskgroup DATA
2 drop disk DATA_0002;
Diskgroup altered.
SQL> alter diskgroup DATA undrop disks;
Diskgroup altered.
-> ASM 디스크 그룹을 만들때 속성값을 지정할 수 있다.
SQL> create diskgroup DATA2 normal redundancy
2 disk '/dev/rdsk/c7t4d0s6','/dev/rdsk/c7t5d0s6'
3 attribute 'compatible.asm'='11.2';
Diskgroup created.
SQL> drop diskgroup DATA2 including contents;
Diskgroup dropped.
3.4.1.9 sqlplus에서 메타데이터 검색 했을때쿼리[편집]
select f.type, f.redundancy, f.striped, f.modification_date,
a.system_created, a.name
from v$asm_alias a, v$asm_file f
where a.FILE_NUMBER=f.FILE_NUMBER
and a.GROUP_NUMBER=f.GROUP_NUMBER
and type='DATAFILE';
3.4.1.10 asmcmd에서 메타데이터 검색 했을때[편집]
bash-4.1$ asmcmd
Connected to an idle instance.
(주의 : 위에처럼 idle instance로 떨어지면 sql이던 asmcmd이건 잘못 접속 된 것이다.)
bash-4.1$ . oraenv
ORACLE_SID = [TEST] ? +ASM
The Oracle base remains unchanged with value /u01/app
bash-4.1$ asmcmd
ASMCMD>
ASMCMD> ls -l +DATA/TEST/datafile
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE APR 13 20:00:00 Y EXAMPLE.265.844406343
DATAFILE UNPROT COARSE APR 13 20:00:00 Y SYSAUX.257.844406197
DATAFILE UNPROT COARSE APR 13 20:00:00 Y SYSTEM.256.844406195
DATAFILE UNPROT COARSE APR 13 20:00:00 Y UNDOTBS1.258.844406197
4 ASM Disk 그룹 조회[편집]
- V$ASM_DISKGROUP
SELECT GROUP_NUMBER,NAME,STATE,TOTAL_MB,FREE_MB
FROM V$ASM_DISKGROUP;
5 ASM Disk 조회[편집]
- GV$ASM_DISK
SELECT GROUP_NUMBER
, DISK_NUMBER
, NAME
, MOUNT_STATUS
, PATH
, TOTAL_MB
FROM GV$ASM_DISK;
6 ASM File 조회[편집]
SELECT GROUP_NUMBER
, FILE_NUMBER
, ROUND ((BYTES / 1024 / 1024), 1) MB
, REDUNDANCY
, TYPE
FROM V$ASM_FILE;
7 ASM Disk 그룹/패스 조회[편집]
- V$ASM_DISK , V$ASM_DISKGROUP
SELECT G.NAME DG_NAME
, D.PATH PATH
, D.TOTAL_MB DISK_SIZE_MB
, G.DATABASE_COMPATIBILITY DB_COMPATIBILITY
, G.COMPATIBILITY ASM_COMPATIBILITY
FROM V$ASM_DISK D
, V$ASM_DISKGROUP G
WHERE G.GROUP_NUMBER = D.GROUP_NUMBER;
8 테이블 스페이스 정보 조회 SQL[편집]
- V$ASM_DISK_STAT
-- 그룹별 사용량
SELECT GROUP_NUMBER
, NAME
, TOTAL_MB
, FREE_MB
FROM V$ASM_DISK_STAT;
- V$ASM_DISKGROUP
-- col name format a10
-- col USABLE_FILE_GB format 999,999.00
-- col TOTAL_GB format 999,999.00
-- col FREE_GB format 999,999.00
-- col USABLE_CALC_GB format 999,999.00
SELECT GROUP_NUMBER "Group#"
, NAME
, TOTAL_MB / 1024 TOTAL_GB
, ROUND ((TOTAL_MB - USABLE_FILE_MB) / 1024, 2) USED_GB
, USABLE_FILE_MB / 1024 USABLE_FILE_GB
, FREE_MB / 1024 FREE_GB
, 100 - ROUND (FREE_MB / TOTAL_MB * 100) "usgae(%)"
, ((FREE_MB - REQUIRED_MIRROR_FREE_MB)) / 1024 USABLE_CALC_GB
, TYPE
, STATE
FROM V$ASM_DISKGROUP;
- V$ASM_FILE , $ASM_ALIAS , V$ASM_DISKGROUP
SELECT G.NAME "GROUP_NAME"
-- F.GROUP_NUMBER
-- , G.TOTAL_MB
, ROUND (G.FREE_MB / 1024, 1) "GROUP_FREE(GB)"
-- , F.FILE_NUMBER
, ROUND (SPACE / 1024 / 1024 / 1024, 1) "REAL_SIZE(GB)"
, ROUND (BYTES / 1024 / 1024 / 1024, 1) "USABLE_SIZE(GB)"
-- , A.ALIAS_DIRECTORY
, MAX (A.NAME) "FILE_NAME"
FROM V$ASM_FILE F, V$ASM_ALIAS A, V$ASM_DISKGROUP G
WHERE F.GROUP_NUMBER = A.GROUP_NUMBER
AND F.FILE_NUMBER = A.FILE_NUMBER
AND A.GROUP_NUMBER = G.GROUP_NUMBER
AND SYSTEM_CREATED = 'Y'
GROUP BY (G.NAME
, ROUND (G.FREE_MB / 1024, 1)
, ROUND (SPACE / 1024 / 1024 / 1024, 1)
, ROUND (BYTES / 1024 / 1024 / 1024, 1))
ORDER BY G.NAME, MAX (A.NAME);