본문 바로가기

Database/Oracle Database

처음 사용자를 위한 Oracle Database In-Memory 사용 가이드 - #3. In-Memory Advisor

"처음 사용자를 위한 Oracle Database In-Memory 가이드" 시리즈를 통해 Swingbench의 분석 업무 스키마 ‘SH’ 데이터를 이용해서 오라클 21c Single 인스턴스 데이터베이스와 RAC 데이터베이스에서 간단한 In-memory 옵션 사용 방법을 살펴봅니다.

 

글 순서

#1. Introduction

#2. 테스트 환경 준비

#3. In-Memory Advisor

#4. In-Memory 테스트 – Single 인스턴스 DB: In-Memory 설정 & Population

#5. In-Memory 테스트 – Single 인스턴스 DB: In-Memory 수행 확인

#6. 참고. 칼럼 레벨 In-Memory 설정 및 In-Memory hybrid scan

#7. 참고. IM FastStart 수행 확인

#8. In-Memory 테스트 – RAC DB: In-Memory 설정 & Population

#9. In-Memory 테스트 – RAC DB: In-Memory 수행 확인

#10. In-Memory 테스트 – RAC DB: Auto DOP 적용 테스트

#11. In-Memory 테스트 – RAC DB: Distribute For Service 테스트

 

In-Memroy Advisor Workload Repository (AWR), Active Session History (ASH) 기타 메타 데이터를 이용해서 Database In-Memory 썼을 어떤 오브젝트에 적용했을 성능 효과가 있는지 미리 추정할 있게 준다. 오라클 데이터베이스 11.2.0.3 부터 사용할 있다. 보다 상세한 내용은 아래 MOS 문서에서 얻을 있다.

Oracle Database In-Memory Advisor (Doc ID 1965343.1)

 

In-Memory Advisor 설치

먼저 MOS 문서에서 제공되는 In-Memory Advisor 설치파일 (imadvisor.zip) 로컬 PC 다운받아, 이를 다시 데이터베이스 VM 업로드한다.

youjung@YOUJUNG-KR MINGW64 ~/Downloads
$ sftp -i C:\\Users\\youjung\\.ssh\\id_rsa opc@193.122.154.32
The authenticity of host '193.122.154.32 (193.122.154.32)' can't be established.
ECDSA key fingerprint is SHA256:fI3DC7PKG9EYLSedo7UVzDE3eg0DD88EBUHPz61GJqE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '193.122.154.32' (ECDSA) to the list of known hosts.
Connected to 193.122.154.32.
s     put imadvisor.zip
Uploading imadvisor.zip to /home/opc/imadvisor.zip
imadvisor.zip                                 100%  277KB 234.0KB/s   00:01

 

데이터베이스 VM에서 root 유저로 설치파일을 oracle 유저 소유로 변경한다.

[root@singledb opc]# hostname
singledb
[root@singledb opc]# id
uid=0(root) gid=0(root) groups=0(root)
[root@singledb opc]# mv /home/opc/imadvisor.zip /home/oracle/
[root@singledb opc]# chown oracle:oinstall /home/oracle/imadvisor.zip

 

Multitenant 환경에서 In-Memory Advisor 설치는 CDB, PDB 레벨에서 모두 가능한다. 여기서는 CDB에서 설치를 했다. CDB 설치를 하는 경우, Root Conatiner “C##IMADVISOR” 유저가 생성이 되고, PDB 또는 non-Multitenant 환경인 경우 “IMADVISOR” 유저가 생성이 된다.

먼저 oracle 유저로 설치파일의 압축을 해제한 , sys 유저로 CDB 접속하여 “instimadv.sql” 스크립트를 실행한다.

[root@singledb opc]# su - oracle
Last login: Wed Jun 23 04:25:23 UTC 2021
[oracle@singledb ~]$ unzip imadvisor.zip
Archive:  imadvisor.zip
  inflating: instimadv.sql
  inflating: imadvisor_commoncode.sql
inflating: catimadv.sql

[oracle@singledb ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jun 23 04:42:45 2021
Version 21.1.0.0.0

SQL> @instimadv.sql

 

In-Memory Advisor 유저 “C##IMADVISOR” 사용할 테이블스페이스와 템프 테이블스페이스를 지정하면 설치가 끝난다.


User C##IMADVISOR requires both a permanent and temporary tablespace.
Available tablespaces:
 
TABLESPACE_NAME
------------------------------
SYSAUX
SYSTEM (default permanent tablespace)
TEMP (default temporary tablespace)
UNDOTBS1
USERS
 
Enter value for permanent_tablespace: SYSTEM
Permanent tablespace to be used with C##IMADVISOR: SYSTEM
 
Enter value for temporary_tablespace: TEMP
Temporary tablespace to be used with C##IMADVISOR: TEMP
 
No errors.
No errors.
No errors.

All done!
 
DBMS_INMEMORY_ADVISOR installation successful.
 
Users who will use the DBMS_INMEMORY_ADVISOR package must be granted
the ADVISOR privilege.
 
DBMS_INMEMORY_ADVISOR installation and setup complete.
 
To uninstall:
 
SQL> @catnoimadv.sql
 
Disconnected from Oracle Database 21c EE Extreme Perf Release 21.0.0.0.0 - Production
Version 21.1.0.0.0

 

In-Memory Advisor 실행

이제 In-Memory Advisor 실행하여, In-Memory 영역 사이즈에 대한 권고치, 리포트를 생성해 본다. CDB sys 유저로 접속하여 imadvisor_recommendations.sql” 스크립트를 수행한다. , 스크립트 프롬프트에서 PDB 이름을 입력하게 되어 있으므로 미리 확인하고 스크립트를 수행한다.

[oracle@singledb ~]$ sqlplus "/as sysdba"

SQL> show pdbs
 
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DB0621_PDB1                    READ WRITE NO
SQL> @imadvisor_recommendations.sql
 
This script creates and runs an In-Memory Advisor task that analyzes
your workload to determine an optimal In-Memory configuration.

 

Advisor 작업을 수행한 타스크 이름을 입력한다. 입력하지 않으면 오라클이 생성한 이름을 사용한다. 또한 분석하고자하는 PDB 명을 입력한다. 여기서는 “DB0621_PDB1”으로 입력했다.


Default task_name (new task): im_advisor_task_20210623045712
Enter value for task_name: my_task1
 
Advisor task name specified: my_task1
 
New Advisor task will be named: my_task1...
 
Analyzing and reporting on a live workload on this database (DBID=1823495188)...
Enter value for pdb_name: DB0621_PDB1
 
DB0621_PDB1

 

분석하고자하는 In-Memory 사이즈를 입력한다. 별도 입력없이 <ENTER> 치면 특정 메모리 사이즈가 아닌 Advisor 분석한 성능 개선 추정치를 보여준다.


If you already know the specific In-Memory size you wish, please enter
the value now.  Format: nnnnnnn[KB|MB|GB|TB]
 
Or press <ENTER> to get performance estimates first.
Enter value for inmemory_size: <ENTER>
 
The In-Memory Advisor will display performance benefit estimates after analysis.

 

분석 구간을 설정한다. 여기서는 시작 시간을 SYSDATE 부터 240 전으로 지정했다. Duration 엔터를 쳐서 디폴트(SYSDATE-begin_time) 적용했다


Default begin time: -60
Enter value for begin_time: -240
 
Report begin time specified: -240
 
Enter duration in minutes starting from begin time:
(defaults to SYSDATE - begin_time)
 
Enter value for duration: <ENTER>
 
Report duration specified:
 
Using 2021-JUN-23 01:01:26.000000000 as report begin time
Using 2021-JUN-23 05:02:07.000000000 as report end time

 

분석 대상 오브젝트를 지정한다. 여기서는 SH 스키마 전체에 대해 분석을 것이므로 “SH.%” 입력했다. 별도 입력없이 <ENTER> 치면 모든 오브젝트가 분석 대상이 된다.


You may optionally specify a comma separated list of object owner
and name patterns to be considered for In Memory Placement.
Example:
 
GEEK_SUMMARY.%,%.GEEK_%
Press ENTER to consider all objects.
 
Enter value for consider_objects_like: SH.%
Considering only objects matching these patterns for In Memory placement:
 
SH.%
 
In-Memory Advisor: Adding statistics...
In-Memory Advisor: Finished adding statistics.
In-Memory Advisor: Analyzing statistics...
In-Memory Advisor: Finished analyzing statistics.

 

분석이 완료되면 아래와 같은 In-Memory Column Store 사이즈별 성능 기대 효과를 확인할 있다.


________________________________________________________________________
|                                                                      |
|                                    ESTIMATED      ESTIMATED          |
|                                    ANALYTICS      ANALYTICS          |
|                                    PROCESSING    PROCESSING          |
|                    PERCENTAGE         TIME       PERFORMANCE         |
|         IN-MEMORY  OF MAXIMUM      REDUCTION     IMPROVEMENT         |
|           SIZE      SGA SIZE       (SECONDS)*      FACTOR*           |
|         ---------  ----------  ----------------  -----------         |
|           3.159GB       23           5501          3.4X              |
|           3.001GB       22           5494          3.4X              |
|           2.843GB       21           5494          3.4X              |
|           2.686GB       20           5494          3.4X              |
|           2.528GB       19           5494          3.4X              |
|           2.370GB       18           5494          3.4X              |
|           2.212GB       16           2246          1.4X              |
|           2.054GB       15           2246          1.4X              |
|           1.896GB       14           2246          1.4X              |
|           1.738GB       13           2246          1.4X              |
|           1.580GB       12           2246          1.4X              |
|           1.422GB       11           2246          1.4X              |
|           1.264GB       9            2246          1.4X              |
|           1.106GB       8            2246          1.4X              |
|           970.6MB       7            2246          1.4X              |
|           808.8MB       6            2246          1.4X              |
|           647.1MB       5            138           1.0X              |
|           485.3MB       4            138           1.0X              |
|           323.5MB       2            138           1.0X              |
|           161.8MB       1            138           1.0X              |
|                                                                      |
| *Estimates: The In-Memory Advisor's estimates are useful for making  |
|  In-Memory decisions.  But they are not precise.  Due to performance |
|  variations caused by workload diversity, the Advisor's performance  |
|  estimates are conservatively limited to no more than 10.0X          |
|  faster.                                                             |
|                                                                      |
|______________________________________________________________________|

 

끝으로 최적화하고자하는In-Memory 사이즈를 지정할 있다. 여기서 지정된 값을 기준으로 리포트가 생성된다. 여기서는 엔터를 쳐서 디폴트 값을 적용했다. 스크립트 실행이 끝나면, 앞서 지정한 타스크명을 포함하는 Html 리포트 파일과 DDL SQL 파일이 생성되어 있다.

Choose the In-Memory size you wish for optimization (default=3.159GB): <ENTER>
 
The Advisor is optimizing for an In-Memory size of 3.159GB...
Fetching recommendation files for task: my_task1
Placing recommendation files in: the current working directory
 
Fetched file: imadvisor_my_task1.html
Purpose:      recommendation report primary html page
 
Fetched file: imadvisor_my_task1.sql
Purpose:      recommendation DDL sqlplus script
 
You can re-run this task with this script and specify a different an In-Memory
size.  Re-running a task to optimize for a different In-Memory size is faster
than creatng and running a new task from scratch.
SQL> !ls imadvisor_my_task1*
imadvisor_my_task1.html  imadvisor_my_task1.sql

 

생성된 리포트는 아래와 같은 형태로 되어 있다. 아래는 리포트의 일부 내용들을 발췌한 스크린샷이다. SQL파일은 리포트 하단에서 권고한 압축 방식 변경 등을 실행하는 DDL문을 포함하고 있다.

 

 

 

 

 

<END>