본문 바로가기

A3. 공모전, 세미나, 교육/A30. 학습일지

오라클 성능 분석과 튜닝 핵심 가이드

   
   
   
   
   
   
   
   
   
   

 

 

   
   
   
   
   
   
   
   
   
   

 

 

25강 SwingBench https://kosate.github.io/blog/oracle/introduce-swingbench/

https://www.dominicgiles.com/swingbench/

25 ~ 28 Oracle DB - 부하 생성 SwingBench
• sql
  OrderEntry , Stored Procedure Stub, TPCDS 부하를 발생 시키기 위해서
    생성해야만 하는 다양한 Object 와 Schema 의 DDL 와 부하 실행을 위한
    PL/SQL 스크립트를 가짐
•  winbin
 Windows 환경에서 SwingBench 실행 및 데이터 생성 UI 를 .bat 로 가짐
 swingbench.bat : SwingBench 실행 UI
 oewizard.bat : Order Entry 데이터 생성
 tpcdswizard.bat : TPCDS 데이터 생성
 sqlbuilder : customized SQL 생성
• source
 Java Source 코드
• oewizard.bat 을 구동하여 생성
• 별도의 사용자 스키마 생성 필요 : SOE_10G
• 추가 테이블 스페이스 필요 최소 40GB 이상 , 미리 생성이 더 편리
• Temporary Tablespace 증가 필요
• XE 일 경우에는 최소한으로 데이터 생성
섹션 2 퀴즈

오라클 데이터베이스 장애 발생 시, GUI 도구가 연결되지 않는 비상 상황에서 필수적으로 사용되는 커맨드 라인 도구는 무엇일까요?

A
TOAD
 
SQL*Plus
C
SQL Developer
D
Orange



일반적으로 유료이며, 스키마 브라우저를 통한 편리한 객체 관리와 다양한 모니터링 및 진단 기능을 제공하는 것으로 언급된 오라클 DB 관리 도구는 무엇일까요?

A
SQL*Plus
B
SQL Developer
C
SwingBench
 
TOAD


TOAD나 SQL Developer 같은 GUI 도구를 사용하여 데이터베이스 객체(테이블, 뷰 등)를 관리할 때, SQL*Plus 대비 주요 이점으로 꼽히는 것은 무엇일까요?

 
스키마 객체 시각적 탐색 기능
B
쉘 스크립트 통합 기능
C
배치 처리에 특화된 기능
D
데이터베이스 장애 시 연결 용이성



오라클 데이터베이스의 성능을 테스트하고, 다양한 유형의 부하(OLTP, DSS 등)를 발생시켜 병목 현상을 파악하는 데 사용되는 벤치마크/스트레스 테스트 도구는 무엇일까요?

A
TOAD
 
SwingBench
C
SQL Developer
D
SQL*Plus
해설
SwingBench는 Oracle Database에 실제와 유사한 트랜잭션 부하를 발생시켜 시스템의 반응을 테스트하고 성능 지표(TPS, TPM)를 측정하는 데 특화된 도구입니다.

SwingBench에서 부하 테스트를 설정할 때, 다양한 유형의 트랜잭션(예: 주문 생성, 고객 조회)이 전체 부하에서 차지하는 상대적인 실행 빈도를 조절하는 데 사용되는 핵심 설정은 무엇일까요?

A
Number of Users (동시 사용자 수)
 
Load Ratio (부하 비율)
C
TPS/TPM (초당/분당 트랜잭션 수)
D
JDBC Connection String (JDBC 연결 문자열)
해설
Load Ratio는 SwingBench에서 정의된 여러 트랜잭션들이 부하 테스트 중 얼마나 자주 호출될지 상대적인 가중치를 설정하는 값입니다. 이를 통해 OLTP나 DSS 등 원하는 부하 특성을 모델링할 수 있습니다.


   
   
   
   
   
   
   

 

  섹션 3. 오라클 아키텍처 개요와 DBMS 이해를 위한 필수 기반 지식
29 오라클 아키텍처 개
섹션 3 퀴즈
총 5 문항
1. 여러 서버 프로세스가 공유하여 사용하는 오라클 메모리 영역은 무엇일까요?
A
PGA
 
SGA
C
사용자 프로세스 메모리
D
백그라운드 프로세스 메모리
 
해설
SGA는 여러 사용자 요청을 처리하는 서버 프로세스들이 공유하는 메모리 영역입니다. PGA는 각 서버 프로세스에 독립적인 공간으로 사용되죠.
2. 오라클 데이터베이스에서 가장 기본적인 I/O 작업 단위는 무엇인가요?
A
레코드 (Record)
B
로우 (Row)
C
페이지 (Page)
 
데이터베이스 블록 (Database Block)
 
해설
데이터베이스는 I/O를 레코드 단위가 아닌 블록 단위로 수행합니다. 블록은 디스크에서 데이터를 읽고 쓰는 최소 단위입니다.
3. 데이터 양이 매우 많은 테이블에서 특정 값에 해당하는 로우 수가 많을 경우, 인덱스를 사용하는 접근 방식보다 더 효율적일 수 있는 방식은 무엇일까요?
A
랜덤 액세스 (Random Access)
 
테이블 전체 스캔 (Table Full Scan)
C
로우 체이닝 (Row Chaining)
D
클러스터링 팩터 기반 액세스 (Clustering Factor based access)
 
해설
데이터가 특정 값으로 인해 많이 분산된 경우, 인덱스 사용 시 랜덤 I/O가 많아져 전체 스캔이 빠를 수 있습니다.
4. OLTP 시스템에서 가장 중요하게 고려되는 성능 지표는 무엇일까요?
A
처리량 (Throughput)
 
지연 시간 (Latency)
C
일괄 처리 속도 (Batch Processing Speed)
D
디스크 공간 활용률 (Disk Space Utilization)
 
해설
OLTP는 실시간 사용자 요청 처리가 중요하므로, 응답 시간(지연 시간) 최소화가 핵심 목표입니다. 배치 처리는 처리량을 중시하죠.
5. 데이터베이스 성능 문제의 가장 큰 부분을 차지하며, 튜닝 시 가장 먼저 고려해야 할 영역은 무엇일까요?
A
인스턴스 튜닝 (Instance Tuning)
 
SQL 튜닝 (SQL Tuning)
C
스토리지 튜닝 (Storage Tuning)
D
네트워크 튜닝 (Network Tuning)
 
해설
대부분의 데이터베이스 성능 문제는 비효율적인 SQL 때문에 발생합니다. 따라서 SQL 튜닝이 전체 성능 향상에 가장 크게 기여합니다.
   
섹션 4 퀴즈
총 5 문항
1. 오라클 데이터 사전 뷰 중, 현재 접속한 사용자가 소유한 객체 정보만을 보여주는 것은 무엇일까요?
A
ALL_TABLES
 
USER_TABLES
C
DBA_TABLES
D
V$_SESSION
 
해설
USER_TABLES는 접속 사용자 소유 객체만, ALL_TABLES는 권한 있는 객체 모두, DBA_TABLES는 모든 객체를 보여줘요. V$ 뷰는 성능 관련 동적 정보입니다.
2. 오라클에서 인스턴스와 데이터베이스를 구분하는 가장 큰 특징은 무엇일까요?
 
데이터 파일과 메모리 구조
B
데이터베이스 이름과 서비스 이름
C
SID와 글로벌 데이터베이스 이름
D
테이블과 인덱스 세그먼트
 
해설
인스턴스는 SGA 메모리 영역과 백그라운드 프로세스이고, 데이터베이스는 실제 데이터가 저장된 파일 집합입니다. 오퍼레이셔널 데이터베이스는 인스턴스와 데이터 파일의 조합입니다.
3. 오라클에서 클라이언트가 데이터베이스에 접속할 때, SID 대신 서비스 이름을 사용하는 주된 장점은 무엇일까요?
A
항상 특정 인스턴스에만 접속 가능
 
리스너를 통한 부하 분산 및 고가용성 지원
C
데이터 파일 경로를 직접 지정
D
데이터 사전 정보를 더 빠르게 조회
 
해설
서비스 이름 사용 시 리스너가 여러 인스턴스 간 연결 부하를 분산하거나 실패 시 다른 인스턴스로 재연결시켜 고가용성을 높여요. SID는 특정 인스턴스에 고정 접속됩니다.
4. 오라클 웨이트 이벤트(Wait Event)를 분석하는 가장 중요한 목적은 무엇일까요?
A
데이터 파일 구조 변경
B
SQL 문법 오류 수정
 
성능 병목 지점 식별
D
사용자 계정 생성 및 관리
 
해설
웨이트 이벤트는 데이터베이스 세션이 어떤 자원을 기다리는지를 보여주며, 이를 통해 성능 저하의 원인(병목 지점)을 정확히 파악할 수 있습니다. 성능 진단 도구의 기초입니다.
5. B-Tree 인덱스에서 인덱스 키 값과 해당 테이블 레코드의 위치(Row ID) 정보가 저장되는 블록 유형은 무엇일까요?
A
루트 블록
B
브랜치 블록
 
리프 블록
D
헤더 블록
 
해설
B-Tree 인덱스의 리프 블록에 인덱스 키 값과 그 값이 속한 테이블 행의 물리적 위치인 Row ID가 저장되어 실제 데이터 접근에 사용돼요. 브랜치는 다음 리프/브랜치 블록 주소를 가집니다.