[Oracle] ASM 관련 쿼리(diskgroup/disk 추가/조회, datafile 추가 등)

HYEOB KIM·2024년 1월 18일
0

Oracle

목록 보기
58/58

ASM 관련 쿼리

ASM 접속 설정

# su - oracle
$ ps -ef | grep smon

$ export ORACLE_SID=+ASM
$ export ORACLE_HOME=$GRID_HOME
$ sqlplus / as sysasm

OS에 ASM Disk 등록 및 스캔 방법

Disk 포맷 방법

# fdisk -l
...
Disk /dev/sdh: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

-- n p 1 (엔터) (엔터) w
# fdisk /dev/sdh
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x441e4240.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1): (엔터)
Using default value 1
Last cylinder, +cylinders or +size (1-652, default 652): (엔터)
Using default value 652
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.

ASM Disk 확인(OS)

# /etc/init.d/oracleasm listdisks

새로 추가한 Disk -> ASM Disk로 등록 및 스캔(OS)

# /etc/init.d/oracleasm createdisk <ASM에서 사용할 디스크 이름> /dev/sdh1

# /etc/init.d/oracleasm scandisks

새로 추가한 Disk 권한 부여(OS)
(/dev/oracleasm/ 경로 밑에 Disk 파일이 생성됩니다)

# chown -R oracle:oinstall /dev/oracleasm/

ASM Disk 상세 정보 보기(DB)

  • OS에서 scan된 모든 ASM Disk를 보여줍니다.
  • mount_stateCLOSED 인 새로 추가된 Disk를 확인합니다.
col path for a30
col name for a14

select group_number, disk_number, name, mount_status, path, total_mb, free_mb
from v$asm_disk
order by 1,3;

ASM Disk Group 생성(asmca x, 수동 생성)

새로운 Disk Group을 생성하기 위해서는 OS에서 ASM에 등록 및 스캔된 Disk가 필요합니다.

ASM Disk Group 생성

CREATE DISKGROUP <디스크그룹 이름> EXTERNAL REDUNDANCY DISK '<v$asm_disk 뷰의 path 컬럼값>';

ASM 인스턴스에 현재 연결되어 있는 Disk Group 확인

  • 새로 추가된 Disk Group의 STATEMOUNTED 인지 확인합니다.
SET LINE 200
COL GROUP_NUMBER FOR 99
COL NAME FOR A10
COL TYPE FOR A10
COL STATE FOR A10

SELECT GROUP_NUMBER, NAME, TYPE, STATE FROM V$ASM_DISKGROUP;

ASM Disk 상세 정보 보기(DB)

  • OS에서 scan된 모든 ASM Disk를 보여줍니다.
  • 새로 추가된 Disk의 mount_stateCACHED 인지 확인합니다.
col path for a30
col name for a14

select group_number, disk_number, name, mount_status, path, total_mb, free_mb
from v$asm_disk
order by 1,3;

ASM Disk Group 삭제(asmca x, 수동 삭제)

DROP DISKGROUP <디스크그룹 이름> INCLUDING CONTENTS;

ASM Disk Group에 Disk 추가

ASM 인스턴스에 현재 연결되어 있는 Disk Group 확인

SET LINE 200
COL GROUP_NUMBER FOR 99
COL NAME FOR A10
COL TYPE FOR A10
COL STATE FOR A10

SELECT GROUP_NUMBER, NAME, TYPE, STATE FROM V$ASM_DISKGROUP;

GROUP_NUMBER NAME	TYPE	   STATE
------------ ---------- ---------- ----------
	   1 CRS	NORMAL	   MOUNTED
	   2 DATA	EXTERN	   MOUNTED
	   3 FRA	EXTERN	   MOUNTED

ASM Disk 내용(DB)

SET LINE 200
COL DISK_GROUP FOR A10
COL LABEL FOR A10
COL STATE FOR A10
col path for a30
col name for a14

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
---------- ---------- ----------
CRS	   CRS_0000   MOUNTED
CRS	   CRS_0001   MOUNTED
CRS	   CRS_0002   MOUNTED
DATA	   DATA_0000  MOUNTED
FRA	   FRA_0000   MOUNTED

ASM Disk 상세 정보 보기(DB)
(OS에서 scan된 모든 ASM Disk를 보여줌)

col path for a30
col name for a14

select group_number, disk_number, name, mount_status, path, total_mb, free_mb
from v$asm_disk
order by 1,3;

GROUP_NUMBER DISK_NUMBER NAME		MOUNT_S PATH				 TOTAL_MB    FREE_MB
------------ ----------- -------------- ------- ------------------------------ ---------- ----------
	   1	       0 CRS_0000	CACHED	/dev/oracleasm/disks/CRS2	     1020	 904
	   1	       1 CRS_0001	CACHED	/dev/oracleasm/disks/CRS3	     1020	 904
	   1	       2 CRS_0002	CACHED	/dev/oracleasm/disks/CRS1	     1020	 908
	   2	       0 DATA_0000	CACHED	/dev/oracleasm/disks/DATA	    51196      45296
	   3	       0 FRA_0000	CACHED	/dev/oracleasm/disks/FRA	    20476      19740

ASM 기존 Disk Group에 새 Disk 추가

rebalance power 5의 의미는 디스크가 새로 생성될 시 리밸런싱의 속도를 정함. 0~1024 사이의 값을 가질 수 있으며, 0이면 rebalance를 비활성화하고 1024까지 갈 수록 리밸런스 속도가 빨라지지만 그만큼 I/O 오버헤드와 더 많은 프로세스가 작업을 하게되어 DB 서버의 성능 이슈가 발생할 수 있음.

ALTER DISKGROUP <디스크그룹 이름> ADD DISK '<v$asm_disk 뷰의 path 컬럼값>' REBALANCE POWER 5;

ASM rebalance power 값 확인

select * from v$asm_operation;

ASM Disk Group에서 Disk 삭제

ALTER DISKGROUP <디스크그룹 이름> DROP DISK '<v$asm_disk 뷰의 path 컬럼값>';

ASM Diskgroup에 data file 추가

ASM을 사용할 땐 data file 추가 시 생성 경로는 db_create_file_dest에 명시된 경로에 생성됩니다.
(경로는 +<data file 디스크 그룹 이름>입니다. 디스크 그룹 이름과 파라미터 값이 다를 경우 에러가 발생할 수 있습니다.)

show parameter db_create_file_dest

db_create_file_dest 파라미터 값 변경(재기동 불필요)

ALTER SYSTEM SET db_create_file_dest='+DATA';

예를 들어, `+DATA`이라면 해당 경로 아래에 ASM이 Data file을 자체적으로 관리합니다.

data file을 조회해보면 아래와 같이 `+DATA/....../<테이블스페이스이름>.<파일넘버>.<숫자>`로 생성되어 있는 것을 볼 수 있습니다.

```sql
select tablespace_name, file_name from dba_data_files;

Tablespace 생성

CREATE TABLESPACE <테이블스페이스 이름> DATAFILE SIZE 10M;

data file 추가

ALTER TABLESPACE <테이블스페이스 이름> ADD DATAFILE SIZE 10M;

참고

profile
Devops Engineer

0개의 댓글