내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
「ASM」
정의
→ 오라클 파일을 통합적으로 관리하는 것.
어렵게 얘기하면 Volumn Manager와 File System이 오라클 데이터베이스 서버로 구성된 것.
이점
1 . 효율적인 디스크 자원 관리
→ 기존의 DB관리에서는 디스크 삭제,변경,추가시 테이블 스페이스 이동이나 테이블 재편성 작업이 많음
ASM에서는 추가시 디스크 그룹내의 디스크에 골고루 배분하고, 삭제시 남아 있는 디스크에 자동으로 옳긴다.
2 . 자원의 물리적 장애에 대한 관리 향상
→ Mirroring과 Striping
3 . 디스크 I/O의 효율적 분산
→ AU(Allocation Unit) 이라는 하나의 작은 단위로 데이터를 쪼개어 물리적으로 서로 다른 디스크에 번갈아 분산하
여 기록함으로써 디스크 Hot-Spot 현상을 방지.
ASM과 OS 파일시스템의 차이
1 . 데이터베이스 설치
순서 | OS 파일시스템 | ASM |
1 | 필요한 디스크 자원의 용량산정 | 필요한 디스크 자원의 용량산정 |
2 | 폴륨메니저, 파일시스템 인스톨 및 설정 | ASM 인스톨 |
3 | I/O 분산을 위한 디스크 구성 설계 | 디스크 그룹 생성 |
4 | Logical 볼륨 생성 | 데이터베이스 인스톨 |
5 | 파일시스템 생성 | 데이터베이스 생성 |
6 | 데이터베이스 인스톨 |
|
7 | 데이터베이스 생성 |
|
2 . 디스크 추가
순서 | OS 파일시스템 | ASM |
1 | 디스크 추가 | 디스크 추가 |
2 | 볼룸매니저를 통한 볼륨그룹 생성 | 디스크 추가 SQL문 수행 |
3 | 파일시스템 생성 |
|
4 | 데이터를 추가된 공간으로 이동 |
|
5 | 데이터베이스 파일 리네임 |
|
6 | I/O 튜닝 |
|
3 . 디스크 I/O 튜닝
순서 | OS 파일시스템 | ASM |
1 | 디스크 I/O에 대한 일일 모니터링 | N/A |
2 | Hot-Spot 발견 | |
3 | Hot-Spot 을 없애기 위한 계획 수립 | |
4 | 계획된 공간으로 데이터 이동 | |
5 | 데이터베이스 파일 리네임 | |
6 | Hot-Spot 현상이 없어졌는지 검증 |
구성요소
1 . 디스크 그룹
(1) Stripe 와 AU
→ 데이터를 기록할 때 AU를 설정하여 AU단위로 데이터를 쓰게 된다. 데이터를 쓸 때 서로다른 물리적 디스
크에 나누어 기록 함으로써 Stripe 기능을 지원한다.
→ AU 의 옵션
Coarse : 1 MB
Fine Grained : 128 KB
(2) Mirroring 과 Failure 그룹
→ Mirroring 을 설정하려고 하면 Failure Group을 설정하여 서로 다른 Failure 그룹 사이의 미러링을 구성
할 수 있다.
디스크 장애시 다른 컨트롤러에 미러링된 데이터를 읽을 수 있도록 설정 할 수 있다.
(3) Disk Group 내의 Rebalance
→ 일반적으로 새로운 디스크를 추가하게 되면 디스크 I/O 를 고려하여 데이터 파일과 테이블 스페이스를 재
분배 하는데 많은 시간을 할당 한다.
Rebalance는 디스크 I/O의 집중 현상을 감소 시켜준다.
Rebalance는 다음과 같은 상황에 발생한다.
1) 디스크 추가
2) 디스크 제거
3) 디스크 그룹 Mount, UMount, Check에서 Rebalance 이벤트 발생시
4) Alter Diskgroup 그룹명 Rebalance 속도(1~11까지)
2 . 디스크
(1) Logical Unit Number ( LUN )
(2) Network-Attached File
3 . ASM Instance
→ ASM 인스턴스는 디스크 그룹에 대한 정보를 수집하고 수집된 정보를 ASMB 프로세스를 통해 데이터베이스
인스턴스에 전달하는 역할
항상 존재하는 것이 아니라 DB 인스턴스가 요구 할 때만 존재함.
4 . ASM Process
(1) ASMB
→ ASM 인스턴스와 DB 인스턴스 사이에 정보를 교환하는 역할을 함
(2) RBAL
→ 디스크 그룹에 대한 Rebalance 를 감독 및 관리하는 역할을 함
(3) ARBn ( ARB1, ARB2, ... )
→ 디스크 그룹에 대한 Rebalance 를 수행하는 역할을 함. RBAL의 관리하에 수행.
시작 및 종료
1 . ASM 인스턴스 시작
2 . Diskgroup Mount
3 . DB 인스턴스 시작
4 . DB 인스턴스 종료
5 . ASM 인스턴스 종료
→ Startup 옵션
옵션 | 설명 |
Force | 이전 프로세스를 Abort로 Shutdown 하고 인스턴스 재시작 |
Mount, Open | ASM 인스턴스 시작, 디스크 그룹 마운트 |
Nomount | ASM 인스턴스 시작, 디스크 그룹 노마운트 |
→ Shutdown 옵션
옵션 | 설명 |
Normal | DB와 상동 |
Immediate, Transactional | |
Abort |
생성
1 . dd 명령어를 이용해 Block Device 생성 ( root 계정 )
→ dd if = /dev/zero of = /u03/asm_disk/disk1 bs=1024k count=400;
dd if = /dev/zero of = /u03/asm_disk/disk2 bs=1024k count=400;
2 . losetup 명령어를 이용해 Block Device 를 독립된 Device 로 인식
→ losetup /dev/loop1 /u01/asm_disk/disk1;
losetup /dev/loop2 /u01/asm_disk/disk2;
3 . raw 명령어를 이용해 물리적 Device 와 Block Device 를 연결
→ raw /dev/raw/raw1 /dev/loop1;
bound to major 7, minor 1 (실행메세지)
raw /dev/raw/raw2 /dev/loop2;
bound to major 7, minor 1 (실행메세지)
4 . DBCA 를 이용해 ASM 디스크 그룹과 인스턴스 생성
ASM 파라미터
1 . Instance_Type = ASM
2 . ASM_Power_Limit = 0 ~ 11
→ Rebalancing 속도 옵션, 속도가 높을수록 디스크 I/O 많이 소비
3 . ASM_Diskstring
4 . ASM_Diskgroups
디스크 그룹 생성
1 . 디스크 그룹 옵션
(1) Nomal Redundancy
→ Mirroring : 2 | 3 | Unprotect
(2) High Redundancy
→ Mirroring : 3
(3) External Redundancy
→ Mirroring : Unprotect
2 . 디스크 그룹 생성
(1) Create Diskgroup 그룹명1 Normal Redundancy
Failure Group Fail그룹명1 Disk '경로/디스크명', '경로/디스크명', ...
Failure Group Fail그룹명2 Disk '경로/디스크명', '경로/디스크명', ... ;
→ 디스크 그룹 1개 > Failure 그룹 2개 > Fail 그룹당 디스크 2개로 생성
(2) Create Diskgroup 그룹명2 Normal Redundancy
Failure Group Fail그룹명3 Disk '경로/디스크명', '경로/디스크명', ...
Failure Group Fail그룹명4 Disk '경로/디스크명', '경로/디스크명', ... ;
→ 디스크 그룹 1개 > Failure 그룹 2개 > Fail 그룹당 디스크 2개로 생성
※ 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 관리와 모니터링
1 . 디스크 그룹 변경과 관리
(1) 디스크 추가
→ Alter Diskgroup 그룹명 Add Disk '경로/디스크명' [Rebalance power n];
(2) 디스크 삭제
→ Alter Diskgroup 그룹명 Drop Disk '경로/디스크명' [Rebalance power n];
(3) 디스크 삭제 중일때 취소 작업 (삭제 종료시 취소 불가)
→ Alter Diskgroup 그룹명 Undrop Disks;
(4) 디스크 그룹 Mount와 Unmount
→ Alter Diskgroup [All | 그룹명] [Mount | Dismount];
(5) 디스크 그룹 정합성 체크 (Mount 상태에 실행)
→ Alter Diskgroup 그룹명 Check All;
2 . 디렉토리 생성 및 관리
(1) 디렉토리 생성 ( '+' 기호는 ASM 내부 디렉토리라는 의미로 사용 )
→ Alter Diskgroup 그룹명 Add Directory '+그룹명/디렉토리명';
(2) 디렉토리 Rename
→ Alter Diskgroup 그룹명 Rename Directory '+그룹명/디렉토리명' To '+그룹명/디렉토리명';
(3) 디렉토리 삭제
→ Alter Diskgroup 그룹명 Drop Directory '+그룹명/디렉토리명' [Force To '+그룹명/디렉토리명'];
3 . 파일 템플릿과 파일 생성
→ 지원 형식
File Type | 지원여부 | 템플릿명 |
컨트롤 파일 | Yes | Controlfile |
데이타 파일 | Yes | Datafile |
리두로그 파일 | Yes | Onlinelog |
아카이브로그 파일 | Yes | Archivelog |
트레이스 파일 | No |
|
Temporary 파일 | Yes | Tempfile |
Datafile Backup Pieces | Yes | Backupset |
Datafile incremental Backup Pieces | Yes | Backupset |
Archive log Backup Pieces | Yes | Backupset |
Datafile Copy | Yes | Datafile |
Persistent initialization Parameter 파일(SPFILE) | Yes | Parameterfile |
Disaster Recovery configurations | Yes | Dataguardconfig |
Flashback logs | Yes | Flashback |
Change Tracking 파일 | Yes | Changetracking |
Data Pump dumpset | Yes | Dumpset |
Automatically Generated Control File Backup | Yes | Autobackup |
→ 기록 방식
Template Name | Striping | Normal | High | External |
Archivelog | Coarse | Mirror | High | Unprotected |
Tempfile | Coarse | Mirror | High | Unprotected |
Backupset | Coarse | Mirror | High | Unprotected |
Parameterfile | Coarse | Mirror | High | Unprotected |
Dataguardconfig | Coarse | Mirror | High | Unprotected |
Flashback | Fine | Mirror | High | Unprotected |
Changetracking | Coarse | Mirror | High | Unprotected |
Dumpset | Coarse | Mirror | High | Unprotected |
Xtransport | Coarse | Mirror | High | Unprotected |
Autobackup | Coarse | Mirror | High | Unprotected |
Datafile | Coarse | Mirror | High | Unprotected |
Controlfile | Fine | High | High | Unprotected |
Onlinelog | Fine | Mirror | High | Unprotected |
→ Alter Diskgroup 그룹명 Add Template 템플릿명 Attributes [Mirror Fine]
변경시 위와같이 해주어야 함.
4 . Tablespace 생성
→ Create Tablespace TS명 '디렉토리(템플릿명)';
5 . Redolog 생성
(1) Init 파라미터 설정
→ DB_Create_Online_Log_Dest1 = '+경로'
DB_Create_Online_Log_Dest2 = '+경로'
(2) 설정 후
→ Alter Database Add Logfile;
6 . ASM 모니터링
(1) ASMCMD (ASM Command Line Interface)
→ 이동 : cd +경로
→ 리스트 : ls -al
→ 용량 : du
(2) 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 인스턴스 정보 |
참고
1 . Raw Device 를 생성하는 이유
→ 테이블 스페이스가 파일시스템에 데이터를 저장하는 것이 일반적이라면 일부 DBMS는 Raw Device로 불리는
OS Device로 구성하여 운영체제 파일이스템의 오버헤드를 없애고 더 빠른 성능을 제공한다.
모든 환경(OLTP, DW 등..)에서 Raw Device가 좋은 성능을 제공하는 것은 아니므로 File system별로 퍼보먼스
를 체크하여 가장 사용 환경에 알맞는 File System을 선택하는 것이 중요함.
2 . dd ( 파티션 전체를 백업하고 복구하기 위한 Tool )
→ dd if=/dev/zero of=asm_disk1 bs=1024k count=500
* zero를 이용해 asm_disk1을 생성하며 이 파일에는 1,024 KB의 용량으로 5000번의 I/O 카운트를 수행한다.
위 명령을 실행하면 zero(실제 존재하지만 아무 내용도 없는 것) 장치를 이용하여 500 MB 크기의 아무것도
없는 파일로 생성하게 된다.
3 . Loop Device
→ losetup /dev/loop1 asm_disk1
* Loop Device는 /dev/loop0 ~ loop7 까지 생성되어 있다. 위에서 생성한 asm_disk1을 Block 단위로 I/O
가 가능하게 해주기 위해서는 Loop Device에 매핑을 해주어야 한다.
4 . Raw Device 생성
→ Raw /dev/raw/raw1 /dev/loop0
* Loop0 Device를 Raw1 에 Mount 한다.
asm_disk1은 Linux의 File System을 벗어나 Raw Device로 독립적인 I/O가 가능하게 된다.
Mount가 된 후 Raw Device에 대한 소유권을 조정해 줘야 일반 유저가 사용가능 하다.
참조: https://hayleyfish.tistory.com/114 [DB네 생선가게]
'ORACLE > Admin' 카테고리의 다른 글
로그마이너 log miner 사용법 (0) | 2017.05.31 |
---|---|
oracle glogin.sql 설정 (0) | 2017.01.11 |
12c R2 샤딩 (Sharding) 관련 링크 (0) | 2016.11.25 |
12c R2 추가된 기능 youtube (0) | 2016.11.25 |
12c R2 멀티테넌트 업그레이드 된 기능 pdb 지원수 상향 (0) | 2016.11.25 |