ASM 접속 설정
# su - oracle
$ ps -ef | grep smon
$ export ORACLE_SID=+ASM
$ export ORACLE_HOME=$GRID_HOME
$ sqlplus / as sysasm
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)
mount_state
가 CLOSED
인 새로 추가된 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;
새로운 Disk Group을 생성하기 위해서는 OS에서 ASM에 등록 및 스캔된 Disk가 필요합니다.
ASM Disk Group 생성
CREATE DISKGROUP <디스크그룹 이름> EXTERNAL REDUNDANCY DISK '<v$asm_disk 뷰의 path 컬럼값>';
ASM 인스턴스에 현재 연결되어 있는 Disk Group 확인
STATE
가 MOUNTED
인지 확인합니다.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)
mount_state
가 CACHED
인지 확인합니다.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;
DROP DISKGROUP <디스크그룹 이름> INCLUDING CONTENTS;
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;
ALTER DISKGROUP <디스크그룹 이름> DROP DISK '<v$asm_disk 뷰의 path 컬럼값>';
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;
참고