오라클 12c DB에서 추가된 신기능들중에 Heatmap, ADO 라는 게 있습니다.
얘네들은 Database 내에서 ILM (Information Lifecycle Management) 을 가능하게 해주는 기능입니다.
ILM 이란 한글로는 "정보생애주기관리" 라고 할 수 있는데, 정보 즉 DB내의 데이터를 Lifecycle 에 따라 관리하겠다는 것입니다.
Lifecycle 이란 태어나서 죽을때까지를 말하죠.
데이터가 처음 Create/Insert 되면 태어나는 것이고, 한참 활발하게 조회되고, Update 되다가, 말년에는 거의 사용이 없죠... 가뭄에 콩나듯이 1년에 한두번 조회할까... 이게 데이터의 생애(Lifecycle)이고, 이것에 맞추어 관리를 하겠다는 의미입니다.
여기서 관리(Management)란 더이상 잘 안쓰는 오래된 데이터는 좀 저렴한 스토리지로 이동시키거나, 데이터를 압축해서 저렴하게(비용효율적으로) 시스템을 운영하겠다는 의미이죠.
위 그림에서처럼 막 Insert 가 된데이터는 Hyper Active 하게 (열라 활발하게) 사용되다가,
점점 시간이 지날 수록 Less Active (잘 구다보지 않음) 하게 되었다가,
Historical ... 아무도 구다보지 않는.. 역사에 묻히는.. 하지만 지우기는 쫌 찝찝한 상태 ...
이런 경우, 이 Historical 데이터를 그냥 계속 가지고 있으면, DB전체 사이즈가 커지니 백업받거나 복구할때 작업이 장난이 아니고, 스토리지 유지비용도 많이 들겁니다. 그래서 이 데이타를 1/10 로 압축하거나, 저렴한 스토리지에 Tablespace 를 만든다음에 그쪽으로 옮기는 행위를 하고 싶어지는 것이죠. 이게 바로 ILM 입니다.
이걸 DBA 가 뭐 빠지게 손으로 할 수도 있겠지만,
Oracle 12c 에서는 정책(Policy)만 설정해두면, 알아서 Database 가 대신 작업을 자동으로 해주는 똘똘한 기능...
이게 바로 Heatmap + ADO 가 되겠습니다. (but, 유료^^; ACO(압축) 옵션을 구매해야 합니다.)
* Heatmap
위에서 얘기한것처럼 자동으로 압축하고 Tablespace Move 하는 작업은 ADO 의 역할입니다.
근데, 이걸 자동으로 할려면, 데이터가 정말 아무도 구다보지 않는지.. 아직도 빈번하게 Access 가 발생하는지를 알아야 합니다. 이게 바로 Heatmap 의 역할입니다.
그림으로 표현하자면 위와 같습니다. 세그먼트(테이블 or 파티션) 단위로 Access가 빈번한 놈들은 빨간색, 그렇지 않은 놈들은 파란색... 이런 식으로 생각할 수 있는데...
위 그림처럼 그래픽컬하게 보려면 Oracle EM 이 있어야 합니다.
EM이 없다면 우리가 볼 수 있는 것은 이런식으로 다소 칙칙하지만... 딕셔너리에서 조회할 수 있습니다.
마지막으로 Write된 시간, Full Scan 이나 Index Scan 이 일어난 시간 정도 ...
▶▶▶ Heatmap 정보 조회 스크립트 및 Clear 하는 방법
* ADO
위에서처럼 Heatmap 정보가 있다면, 이제 남은 것은 위 Heatmap 정보를 가지고 오래된 녀석들을 옮기거나 압축하거나 하면 되겠습니다. 어느 시점에 어떤 동작을 하도록 ... 이게 바로 Policy(정책) 이라는 것인데, 이 Policy 를 만들고 동작시키는 것을 ADO (Adaptive Data Optimization) 이라고 합니다.
이때, 우리는 압축과 옮기는 ... 2가지 동작을 생각할 수 있는데, 이를 다음과 같이 부릅니다.
1) Compression Tiering
2) Storage Tiering
Tiering 이라는 용어를 쓰네요. 여러 Tier(단계) 로 관리한다는 의미?
1) Compression Tiering
Compression Tiering 은 Smart Compression 이라고도 합니다. 스마트하게 압축을 자동으로 DB가 때되면 알아서 해주니까... 물론 Policy(정책)은 사람이 만들어줘야 합니다.
위 샘플은 scott 유저의 employee 테이블에 Policy 를 걸어주는 겁니다.
"4일동안 아무 변경이 없으면 세그먼트(테이블)을 압축해라."
이때 "4일동안 변경이 없으면" 와 같은 조건절은 다음과 같이 3가지가 있습니다.
1) no access - 일정기간 접근이 없으면 실행(Trigger)
2) no modification - 일정기간 변경이 없으면 실행(Trigger)
3) creation time - 생성한지 일정기간이 지나면 실행(Trigger)
기간 지정은 Day/Month/Year 단위로 지정할 수 있습니다. Hour 단위는 안됩니다.
그리고, 위 예에서는 Segment(테이블)에 걸었기 때문에 테이블이 통째로 압축이 됩니다만,
Segment 키워드 대신에 Row 키워드를 사용하면 Row 단위로 압축이 가능합니다.
2) Storage Tiering
Storage Tiering 은 위의 Compression Tiering 과 좀 다릅니다. 이건 Tablespace 와 관련이 있습니다.
위 Compression Tiering 에서는 얼마나 접근이 없는지 그런 조건을 썼지만, Storage Tiering 은 Tablespace 가 얼마나 꽉 찼는지를 기준으로 합니다.
위에서는 TBS_PERCENT_USED 를 85 로 지정했습니다. 85% 테이블스페이스가 꽉 차면
그 아래서 지정한 scott 유저의 EMPLOYEE 테이블을 다른 테이블스페이스 TS2 로 옮기라는(move) 설정입니다.
이때 Tablespace 여유공간(free space)이 25% 확보될 때까지 지정된 테이블들에 대해 작업(move) 합니다.
하지만, 지정된 테이블이 위에서처럼 EMPLOYEE 테이블 1개 밖에 없다면 그것만 옮기고 땡~
또, EMPLOYEE 테이블이 들어있는 Tablespace 가 85% 가 되지 않으면 move 는 일어나지 않습니다.
위에서는 테이블을 지정했지만, 파티션을 지정해도 됩니다.
만약에 지정된 TS2 Tablespace 로 옮기려고 하는데, TS2 Tablespace 에 공간이 부족한 경우는 그냥 에러가 납니다.
ADO Policy 를 실행할 때 타겟 Tablespace 의 여유공간을 체크해서 실행하지는 않습니다.
▶▶▶ 오라클 Heatmap, ADO, ILM 기능 샘플 커맨드 예제
'IT관련' 카테고리의 다른 글
오라클 Heatmap, ADO, ILM 기능 샘플 커맨드 예제 (0) | 2019.07.06 |
---|---|
테이블 압축방식 체크 스크립트, Table Compression Type Check Script (0) | 2019.07.06 |
오라클 에러 정보 (ORA-48180) - OS 시스템콜(OS System Call) 작업 실패 (0) | 2019.07.02 |
오라클 에러 정보 (ORA-48181) - 로그파일 기록에 실패하는 경우 발생하는 (0) | 2019.07.02 |
오라클 에러 정보 (ORA-48121) - 12c DB에서 버그성으로 간헐적으로 발생하는 (0) | 2019.07.02 |