본문 바로가기
DBMS/ORACLE

ASM DISK 사이즈 다른 경우 DATAFILE 추가 테스트

by 드바 2022. 5. 10.

버전 : ORACLE 19.3.0.0
 
ASM DISK 추가 시 동일 사이즈 LUN 추가를 권장하는 이유와
같은 DISK GROUP 다른 DISK 사이즈 상황에서 DATAFILE 추가 시 사이즈 할당이 어떻게 되는지 테스트 해 보았다.
 

요약 :
- DISK SIZE에 비례해서 할당되는 사이즈도 달라진다
 : 동일 사이즈의 LUN 추가를 권장하는 이유는 데이터 불균형이 발생 할 수 있기 때문
- ASM disk 사이즈가 다를 경우 데이터분산 불균형이 발생하므로 동일사이즈로 할당하는것을 권장
- 사이즈에 따른 성능 차이는 없으며 LUN 수가 많지 않게 하는 것을 권고(관리 오버헤드 발생)
- ASM1 5G 이고 나머지는 1G 사이즈 데이터파일 사이즈를 100MB 늘렸더니 아래와  같이 할당
 : 100/4 는 25MB 인데 ASM1을 제외한 나머지 디스크는 12M 씩 할당하고, ASM1 은 64M 할당
 : 원래 사이즈가 5배 차이라 그에 맞게 5배 많이 할당 해주는 듯

ASM DISK 사이즈
ASM01, ASM02, ASM03 : 1G
ASM1 : 5G

100M 데이터파일 추가 시 할당 된 사이즈
ASM01, ASM02, ASM03 : 12M
ASM1 : 68M 

1G 데이터파일 추가 시 할당 된 사이즈
ASM01 : 128M
ASM02 : 136M
ASM03 : 128M
ASM1 : 644M

 

-- USERS 테이블스페이스 datafile 확인
SQL> SELECT file_name, file_id, tablespace_name, bytes/1024/1024 MB
FROM DBA_DATA_FILES 
WHERE tablespace_name = 'USERS'
;

FILE_NAME					      FILE_ID TABLESPACE_NAME			     MB
-------------------------------------------------- ---------- ------------------------------ ----------
+DATA/RACDB/DATAFILE/users.263.1078741095		    7 USERS				    100


-- ASM DISK 사이즈 확인
SQL> select a.group_number, a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.mount_status,header_status, b.state
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
AND a.GROUP_number = 1 
order by b.group_number,b.name
;

GROUP_NUMBER DISKGROUP			    DISKNAME		   TOTAL_MB    USED_MB	  FREE_MB PATH				 MOUNT_S HEADER_STATU STATE
------------ ------------------------------ -------------------- ---------- ---------- ---------- ------------------------------ ------- ------------ --------
	   1 DATA			    ASM01		       1020	   588	      432 /dev/oracleasm/disks/ASM01	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM02		       1020	   588	      432 /dev/oracleasm/disks/ASM02	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM03		       1020	   576	      444 /dev/oracleasm/disks/ASM03	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM1		       5116	  2852	     2264 /dev/oracleasm/disks/ASM1	 CACHED  MEMBER       NORMAL


-- DATA DISK GROUP 확인
SQL> select group_number, name, state, type, total_mb, free_mb, required_mirror_free_mb, usable_file_mb,round((1-(free_mb/total_mb))*100,2) used_pct 
from v$asm_diskgroup 
WHERE GROUP_number = 1
;

GROUP_NUMBER NAME			    STATE	TYPE	 TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB   USED_PCT
------------ ------------------------------ ----------- ------ ---------- ---------- ----------------------- -------------- ----------
	   1 DATA			    CONNECTED	EXTERN	     8176	3572			   0	       3572	 56.31


-- 100M 데이터파일 추가
SQL> alter tablespace users add datafile '+DATA' size 100M  autoextend off ;

Tablespace altered.


-- 데이터파일 확인
SQL> SELECT file_name, file_id, tablespace_name, bytes/1024/1024 MB
FROM DBA_DATA_FILES 
WHERE tablespace_name = 'USERS'
;

FILE_NAME					      FILE_ID TABLESPACE_NAME			     MB
-------------------------------------------------- ---------- ------------------------------ ----------
+DATA/RACDB/DATAFILE/users.263.1078741095		    7 USERS				    100
+DATA/RACDB/DATAFILE/users.274.1104320455		    2 USERS				    100


-- DG 사이즈 확인
SQL> select group_number, name, state, type, total_mb, free_mb, required_mirror_free_mb, usable_file_mb,round((1-(free_mb/total_mb))*100,2) used_pct 
from v$asm_diskgroup 
WHERE GROUP_number = 1
;
  
GROUP_NUMBER NAME			    STATE	TYPE	 TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB   USED_PCT
------------ ------------------------------ ----------- ------ ---------- ---------- ----------------------- -------------- ----------
	   1 DATA			    CONNECTED	EXTERN	     8176	3468			   0	       3468	 57.58


-- DISK 사이즈 확인
SQL> select a.group_number, a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.mount_status,header_status, b.state
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
AND a.GROUP_number = 1
order by b.group_number,b.name
;

GROUP_NUMBER DISKGROUP			    DISKNAME		   TOTAL_MB    USED_MB	  FREE_MB PATH				 MOUNT_S HEADER_STATU STATE
------------ ------------------------------ -------------------- ---------- ---------- ---------- ------------------------------ ------- ------------ --------
	   1 DATA			    ASM01		       1020	   600	      420 /dev/oracleasm/disks/ASM01	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM02		       1020	   600	      420 /dev/oracleasm/disks/ASM02	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM03		       1020	   588	      432 /dev/oracleasm/disks/ASM03	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM1		       5116	  2920	     2196 /dev/oracleasm/disks/ASM1	 CACHED  MEMBER       NORMAL


-- 1G 데이터파일 추가
SQL> alter tablespace users add datafile '+DATA' size 1G  autoextend off ;

Tablespace altered.


-- 데이터파일 확인
SQL> SELECT file_name, file_id, tablespace_name, bytes/1024/1024 MB
FROM DBA_DATA_FILES 
WHERE tablespace_name = 'USERS'
;
  
FILE_NAME					      FILE_ID TABLESPACE_NAME			     MB
-------------------------------------------------- ---------- ------------------------------ ----------
+DATA/RACDB/DATAFILE/users.263.1078741095		    7 USERS				    100
+DATA/RACDB/DATAFILE/users.274.1104320455		    2 USERS				    100
+DATA/RACDB/DATAFILE/users.275.1104320531		    8 USERS				   1024


-- DG 사이즈 확인
SQL> select group_number, name, state, type, total_mb, free_mb, required_mirror_free_mb, usable_file_mb,round((1-(free_mb/total_mb))*100,2) used_pct 
from v$asm_diskgroup 
WHERE GROUP_number = 1
;

GROUP_NUMBER NAME			    STATE	TYPE	 TOTAL_MB    FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB   USED_PCT
------------ ------------------------------ ----------- ------ ---------- ---------- ----------------------- -------------- ----------
	   1 DATA			    CONNECTED	EXTERN	     8176	2436			   0	       2436	 70.21


-- DISK 사이즈 확인
SQL> select a.group_number, a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.mount_status,header_status, b.state
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
AND a.GROUP_number = 1
order by b.group_number,b.name
;

GROUP_NUMBER DISKGROUP			    DISKNAME		   TOTAL_MB    USED_MB	  FREE_MB PATH				 MOUNT_S HEADER_STATU STATE
------------ ------------------------------ -------------------- ---------- ---------- ---------- ------------------------------ ------- ------------ --------
	   1 DATA			    ASM01		       1020	   728	      292 /dev/oracleasm/disks/ASM01	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM02		       1020	   732	      288 /dev/oracleasm/disks/ASM02	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM03		       1020	   716	      304 /dev/oracleasm/disks/ASM03	 CACHED  MEMBER       NORMAL
	   1 DATA			    ASM1		       5116	  3564	     1552 /dev/oracleasm/disks/ASM1	 CACHED  MEMBER       NORMAL

SQL>

 

ASM DISK 추가/삭제 성능 테스트(신규추가, 기존삭제)

ASM DISK 추가/일시중지/재개 시 상태 변화

AFD disk 추가/삭제


 
 

 

댓글