no image
[Oracle] AWR Report 보는 법 - Load Profile 항목은 어떻게 보는가
AWR Report에는 다양한 항목이 있다그 중 Report Summary , SQL Statistics , Advisory Statistics 이렇게를 많이 본다  볼 수 있는 항목들을 정리하자면Report Summary 로도 충분히 어느부분이 문제인지 알 수 있다. SQL statistic 에서 SQL 정보 (buffer cache Access , Disk Access 등) 확인 Advisory Statistics : 10G 이후부터는 DB가 SGA, PGA, Undo Segment 등 사이즈 조정 및 Re-Org 등 조언을 해준다 보다 자세한 정보가 필요하면 , buffer pool statistic , Dictionary Cache Statistic , Library Cache Statistic ..
2024.06.06
no image
[Oracle] AWR- report HTML 형식으로 보는 법
0. report 를 만든다 * DBA 권한이 있는 user로 접속을 한 후 * SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql 을 실행시켜주면 , report type을 선택할 수 있다. SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sqlSpecify the Report Type~~~~~~~~~~~~~~~~~~~~~~~AWR reports can be generated in the following formats. Please enter thename of the format at the prompt. Default value is 'html'.'html' HTML format (default)'text' Text format'active-htm..
2024.05.17
no image
[Oracle] AWR 이란? AWR Report 생성하는 법
AWR이란?Automatic Workload Repository시간 주기별로 DB status snapshot을 찍어서 통계치를 낸다성능 정보에 대한 내장 Repository이다 Performance Data Dictonary의 내용을 snapshot을 찍느다   AWR Script 위치$ORACLE_HOME/rdbms/admin 위치로 가면 AWR sql 파일들을  확인할 수 있다  접속DBA 권한이 있는 User로 접속한다[oracle@sua-oracle dbhome_1]$ sqlplus '/as sysdba'SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 16 02:28:10 2024Version 19.3.0.0.0Copyright (c) 1982, 2..
2024.05.16
no image
[Oracle] Wait Event - Library Cache 란?
Library Cache란?- SQL 을 수행하게 되면 , 그 SQL 에 관련된 정보를 저장하는 곳이 필요하다 , (어떤 테이블에 접근하고, 권한은 어떻게 되며, plan이 저장된 메모리 위치는 어디인지 등등  )- Storage 상에 System Tablespace에 존재하겠지만 어떤 테이블에 저장되는지 궁금하다 ..  Lirary Cache - SQL Hash-  SQL의 Hash값으로 저장되어야 할 Hash Bucket이 선정 된다 -  Hash Bucket에는 각 SQL Hash 값에 따른 SQL정보가 어디에 있는지를 알려준다 -  Hash Bucket이 가르키는 LCO로 가면 해당 SQL의 정보를 찾을 수 있다   LCO는 어떻게 구성이 되어 있을까LCO 는 Library Cache Object..
2024.05.15
no image
[Oracle] Wait Event - Log Buffer Space , Log File Switch Completion, Log File Switch란?
Log Buffer Space 란?Redo Log Buffer에 있는 데이터가 Storage로 아직 다 내려가지 않아서 , Server Process 가 기다리는 경우 이다 즉, buffer에 쌓여지는게 storage 로 내려가는것 보다 빠르게 진행 될 경DML 부하가 많을 경우 , 또는 Redo Log Buffer 크기가 작을 경우 발생할 수 있다.Redo Log Buffer를 더이상 늘릴 수 없을 경우 , LGWR 쪽 성능을 늘리는 방안을 고려해야한다  Log File Switch Completion란?( 개념. Log File 이 가득 차게 되면 다음 Redo Log Group 의 Log File 로 쓰게 된다 )Log File Switch 가 되서 다음 Log Group 의 Log File에 쓰려..
2024.05.15
no image
[Oracle] Wait Event - Log File Sync, Log File Parallel Write 란?
개념- Server Process 가 DML 작업을 하면 Redo Log Buffer에 쌓게 된다 - Commit을 수행하면 Redo Log Buffer에 있던 해당 DML은 Redo Log File에 기록이 된다  Log File Sync란 - Server Process 가 Commit을 수행하여 Redo Log Buffer에 있는 내용을 Redo Log File로 Write해달라고  LGWR한테 요청할 때 발생하는 Wait 이다-  빈번한 Commit이 발생하거나 , Redo Log File의 IO성능이 좋지 못할 경우 발생한다 (RAID-5일때 많이 발생한) Log File Parallel Write란- LGWR이 OS한테 Write를 요청할 때 발생한다 (OS쪽에서 ACK가 오면 Wait는 풀리게..
2024.05.15
no image
[Oracle] Wait event - Free Buffer Waits , db file parallel write, write complete waits
Free Buffer Waits - buffer cache의 free buffer가 나올때까지 wait하는 거다 - server process가 storage 상에 데이터를 buffer에 올려야 하는데 free buffer가 없을 경우에 발생한다 - dirty buffer를 DBWR을 사용해서 storage로 내려 재활용이 되게 해야한다  실운영에서 발생 원인 - 대량 범위의 random io Access를 하는 SQL 이 자주 호출될 경우, buffer cache를 많이 잡고 있기 때문에 다른 작업들이 wait하게 된다  - free buffer를 잡지 못한 server process는 DBWR한테 요청을 하고 대기를 하는게 "free buffer waits".   - 요청 내용은 : to.DBWR  ..
2024.05.15
no image
[Oracle] Wait Event - Buffer Cache
Oralce에서 Buffer Cache와 관련된 Wait Event를 알아본다  Oracle 주요 구성 요소별 I/O 관련 Wait Event주요 I/O 대상 구분Wait EventWait ClassDatafile I/Odb file sequential readUser I/Odb file scattered readUser I/Odirect path reads and writesUser I/OTemporaryDatafile I/Odirect path reads tempUser I/Odirect path write tempUser I/OBuffer Cache(Latch 포함)latch: cache buffer chainsConcurrencylatch: cache buffer LRU chainsConcurre..
2024.05.15
[MongoDB] Centos에서 Java로 xml데이터 insert 하기
port 확인하는 법 mongo --eval "printjson(db.serverCmdLineOpts())" 명령으로 사용하는 포트를 확인한다 [root@server mongoDBtest]# mongo --eval "printjson(db.serverCmdLineOpts())"MongoDB shell version v5.0.26connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("ab826c11-d106-4751-bbf2-91b8a17d1de9") }MongoDB server version: 5.0.26{ "argv" : [ "..
2024.05.13
no image
[MongoDB] 기본 명령어
기본 instance 구성 server아래에 여러 database가 있고 , database 마다 collection이 있는데 collection은 RDB에서 Table 로 이해하면 된다.   접속방법 : mongo# mongoMongoDB shell version v5.0.26connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("c7784ca1-105e-4a8e-8448-a1a5e0169f24") }MongoDB server version: 5.0.26================Warning: the "mongo" shell ..
2024.05.13
[Oracle] Wait Event - Latch, Enqueu, Mutex
Oracle 에서 Latch 와 Lock(Enququ)에 대해 알아봅니다  Lock(Enqueue) 란?Job들을 줄세운 뒤에 순서대로 처리한다 특징1) 요청 순서를 보장한다특징2) 줄을 관리하는 별도의 관리job이 필요하다  특징3) 단일 처리 시간이 상대적으로 오래걸린다 (관리job은 줄이 비워진걸 확인하고 다음 job을 실행하게 해줘야함) Latch란 ? Job들이 끊임없이 자원을 차지하려고 시도함 (무질서한 할인판매대 같음 - 내가 늦게왔어도 먼저 잡으면 장떙)경량화된 lock 이라 한다 특징1)  요청 순서를 보장하지 않느다 특징2) 줄을 관리하는 별도의 관리job이 필요없다  특징3) 단일 처리 시간이 매우 빠르다  (중간에 관리 job의 업무가 빠짐)- Oracle에서 접속자들은 동시에 SG..
2024.05.12
[Oracle] Wait event - Direct Path Read & Direct Path Write
Oracle IO 유형1. Conventional IO- server process 가 Data Access 할때 'Buffer Cache'로 Access  - sever process가 Data 찾을려고  Buffer Cache LRU 를 먼저 본다  - 없으면 - Disk 에서 해당 Block을 찾아서 Buffer Cache에 올린다  - server process는 Buffer Cache에 올라간 Data를 읽는다- 단점 - 대량의 Data를 읽을 경우 : 기존의 buffer cache에 pin된 Data를 out 시켜야함 + latch도 있고      2. Direct IO- buffer Cache 로 데이터를 올리지 않고 , server process가 direct로 Disk 에서 읽음  Dir..
2024.04.28
no image
[Oracle] Wait event - DB File Sequential Read & DB File Scattered Read
DB File Sequential Read  & DB File Scattered Read  DB File Scattered Read 는 DB upgrade 되면서 자주나오는 wait event는 아니다 Disk에서 cache로 데이터 가져올때 발생한다 DB File Sequential Read 자주 보이는 wait eventRandom IO 할때 발생 - 정확하게는 Single Block Storage IO를 수행할 때 발생 - Random IO는 대부분 Single Block   - Index 경유해서 table Random Access 할때 발생 (table 데이터를 순차적으로 접근하는게 아닌 random하게 접근함) 대량 발생 시 OLTP 성능 저하시키는 주 원인이 된다  - OLTP는 대부분 In..
2024.04.28
[Oracle] Wait Event
세부적인 process 처리 할 때마다 wait event가 발생한다 예를 들면 , server process가 parsing을 할 때 Library cache object를 만드는 등의 메모리 할당 같은 모든 개별적인 작업에 wait event가 발생한다. latch 할당, LRU 확인 등을 할때도 wait event 발생한다 Idle 에 따른 Wait Event 유형 Idle Wait Event Timer, Message Sending, Client data waiting등 리소스를 사용하지 않거나 클라이언트로 부터 답변 을 기다려야하는 등의Wait Event (queue에 쌓고 network응답 또는 client 응답을 기다리는 경우 ) DB 성능에 큰 영향을 미치지않는Wait Event ( 그렇다..
2024.04.19
no image
[Oracle] Data Dictionary
Oracle 구성하는 요소의 세부적인 정보를 제공한다 data dictionary로 성능을 분석할 수 있다 성능 모델의 주요 구성 요소 STAT과 WAIT은 겹치지 않으며, SQL, SESSION은 여러 요소에 영행을 줄 수 있다 1. STAT (통계지표) - buffer hit ratio , sort ratio, pga hit ratio , hard parsing, soft parsing 2. WAIT - SQL 처리 시 oracle의 여러 component 에 Access 하게 된다. Access 할때 발생하는 Event는 병목이 생길 경우 wait한다. 3. SQL - IO, wait등을 얼마나 발생시키는지 확인 4. SESSION 5. METRICS (추가적으로 만듬) 6. TIME MODEL (..
2024.04.16
no image
[Oracle]PGA- AMM (Automatic Memory Management)
10g에서 소개된 ASMM (Automatic Shared Memory Management)는 SGA내의 Component들을 자동으로 동적 최적 크기조정을 가능하게 하였고, 11g부터 소개된 AMM은 SGA뿐만 아니라 PGA 크기도 자동으로 동적 최적크기조정을 가능하게 함 SGA_MAX_SIZE까지 SGA_TARGET 이 늘어남? PGA_AGGREGATE_TARGET 도 limit (12c 기능 )까지 늘어날 수 있다 AMM은 자동으로 SGA에서 놀고 있으면 PGA를 늘리고~ 해준다 MEMORY_TARGET = SGA_TARGET + PGA_AGGREGATE_TARGET 으로 설정값으로 가이드로 하고 MAX 까지 늘어날 수 있게 한다 공간이 더 필요하다면 여유공간(MAX - TARGET ) 부터 사용한..
2024.04.15
no image
[Oracle] PGA- Cursor란?
Cursor란? 서버 프로세스내의 Private SQL area를 가리키는 일종의 Handle(Pointer)를 지칭. Cursor는 클라이언트 프로세스가 서버의 데이터를 가져오기 위해 가지는 일종의 Pointer임 1. Client에서 SQL 요청 2. DB storage 또는 buffer cache 에 있는 데이터를 Private SQL Area에 저장후에 Client에게 반환 3. Client 는 요청한 SQL 데이터가 완전히 반환 될때까지 fetch 요청 Client 에선 pl/sql은 cursor 라고 되어있고 , JDBC에선 ResultSet으로 데이터를 받는다 Client에선 Cursor point( =server process의 Memory Pointer)만 움직여서 요청하면 된다 PL/S..
2024.04.15
no image
[Oracle] PGA란?
SGA : 각 server process가 공유하는 메모리공간PGA : 각 server process별로 개별적으로 할당되는 메모리공간 사용 목적다른 server process 와 공유할 내용이 아니며 현재 세션에서만 쓰고 끝낼경우 SQL Work Area정렬, hashing 시 Disk IO를 줄이기 위해 사용 - [Sort Area] SQL이 sort by , group by 처럼 정렬이 필요할 경우 - [Hash Area] hash join Private SQL Area- Cursor & Data Fetch- SQL 바인드 변수 등  PGA를 활용한 SQL 정렬 원리  서론 : 정렬 hashing 할 데이터양이 매우 클 경우 , PGA(memory)를 많이 쓰면서, 다른 프로세스가 사용하지 못할 수..
2024.04.15
no image
[Oracle] Wait Event란? (wait event class 정리 )
오라클의 프로세스가 자원을 접근/사용할때 세부단계별로 상세한 Wait Event 가 발생한다 (자원- cpu,mem, io..) wait event 발생할 떄 마다 기록을 하면 느리지 않나? 싶지만 oracle은 wait event 부분을 굉장히 발전 시켰기에 걱정없다 성능 요소 와 자원 사용현황은 "Wait Event 발생정도"에 따라 모니터링 가능하다 프로세스가 동작할때 세분화하여 개별적인 병목구간에 wait event가 발생 SGA접근. buffer cache , write redo log 등등 oracle 의 wait event는 모두 1100가지가 넘는다 (11g 기준) 주요 wait event 2-30개만 알면 된다 유형 Event 명 내용 Disk iO dbfile Sequential Rea..
2024.03.03
[Oracle] SID vs SERVICE_NAMES vs DB_NAME vs GLOBAL_DBNAME 차이점
• SID: Instance의 고유명을 나타냄. RAC 구조에서 instance가 2개라면, 각 instance 마다 고유의 SID를 가 • SERVICE_NAMES 개념적으로 DB에서 서비스되는 Database 서비스명을 의미, 일반적으로 1개 또는 여러 개의 instance가 결합되어 서비스 가능. RAC구조에서 여러 인스턴스에 대해 service name을 하나로만 설정할 수 있다. (instance 마다 service name 이 달라야하는게 아님 ) + 한 instance에 여러 service name 이 있을 수 있다. listener 가 service 명을 확인하고, 만일 해당 service name이 여러 instance를 가리킬 경우, 부하를 계산해서 접속을 한다 (load balanci..
2024.03.03
OLTP란 Batch Process
RealTime & OLTP란? OLTP(On-Line Transaction Processing) 실시간으로 DB 데이터를 조회/갱신하는 시스템 대부분의 업무시스템 (금융/통신/ERP등조회업무, 쇼핑몰주문, 콘서트예매등) 건당 매우 빠른 수행시간이 생명 (보통0.01 ~1초이하) 빠른 수행시간을 위해 I/O Latency가 중요 실제 업무에서 - 주식거래(코스콤) . 콘서트 예매는 micro second 단위로 나와야한 Batch Processing란? 작업을 모아두었다가 한번에 대량의 데이터 처리 주로, 야간,주말,월말 등 정산/마감/통계 등 대량의 데이터를 일괄처리 대량의 데이터 처리 성능을 위해선 I/O Throughput 이 중요 Tunning 방식 - SQL tunning (70%) - Inst..
2024.02.27
no image
[DBMS] 과연 Index scan(Random Acces)가 빠른것인가? (Random Access vs Sequential Access & Index Scan vs Full Scan)
Database의 IO Access 유형으로는 Sequential , Random 이 있다. random Access는 OLTP성 DB에서 성능에 미치는 영향이 크다 Disk Access Time (Seek Time) - 데이터를 읽고 저장하기 위해. HDD head 위치를 이동시키는데 소요된 시간 Sequential Access (순차scan) - HDD에서 순서대로 검색, 스캔 방식 - table full scan 일 경우 , DB_FILE_MULTIBLOCK_READ_COUNT 설정으로 HDD 에서 한번 읽을 떄 몇개의 block을 읽을건지 정할 수 있다. 해당 파라미터값은 임계치가 있어서 크다고 좋은것이 아니다. Random Access (임의 Access) - 원하는 데이터가 산발적으로 흩어져있..
2024.02.26
no image
[Oracle] Database Block, Clustering Factor란?
DataBase Block DataBase Block 이란?- DB 데이터검색과저장의가장기본단위(8K, 16K, 32K, 64K )\- 모든 보통 DB I/O 는 DB Block 단위로 수행- Block 당 평균 수십개의 레코드가 들어갈수있는 크기로 구성- 단 하나의 레코드를 읽을 지라도 최소한1 Block은 Access 해야함  DB 성능에 가장 영향을 미치는게 IO이기에 block 설정이 중요하다  - 100byte row 2개를 insert 한다 가정하면, 한 row씩 IO가 발생한다면 너무 비효율적이다. 한번에 2 row를 IO로 내린다  OS도 block 이 있고 IO가 있는 SW는 다 block 이 있다 .   Q. 백만개의 record 가지는 두개의 테이블. 검색속도가 동일 할까?NO. re..
2024.02.26
no image
[DBMS] DB성능에 미치는 요소/ scan 방법 간단설명
문제를 내볼게요 다음중 DBMS 성능에 가장 영향을 미치는 것은? 1. CPU 2. MEMORY 3. I/O 바로 I/O이다 ( in memory DB가 아니라는 가정하에 ) 물론 cpu, memory 가 영향이 없다는 것은 아니다 . 그럼 IO를 적게 하는 방법은 뭐가 있을까? 1. Storage 쪽 IO를 적게 한다 2. IO자체를 빠르게 한다 3. IO의 형태 (Random Access, Full Scan)를 조정한다 고로 , IO 사전 지식이 필요하다 DBMS 란 - 데이터를 효과적으로 저장하고, 갱신하고 조회하기 위한 시스템이다 어떻게 저장을 해야 빠르게 저장/갱신/조회가 가능할까 ? 어떻게 저장하느냐에 따라 저장/검색 속도가 달라진다 . 1. 데이터을 임의의 공간에 보관할 경우( Random ..
2024.02.25
no image
[Oracle] Architecture(간단)
Architecture 개요 SGA SGA(System Global Area)란? - 공유메모리 - 여러개의 process들이 공유하는 메모리 영역 - 여러개의 process란? - client 가 붙으면 server process 가 생성되고 , server process는 SGA 영역을 많이 참조한다 - server process는 자신만의 memory 공간도 있다 PGA(Program Global Area) SGA 영역 종류 - Shared Pool - 주로 sql에 관한 내용 (sql plan) - Data Dictionary Cache - Database Buffer Cache - Storage 영역에 있는 데이터를 읽을 때 , Buffer cache에 올려놓는다 . (한번 읽은 데이터는 다시 ..
2024.02.25
no image
SwingBench(stresstool) 사용하기 - Order Entry 스키마/데이터 생성 및 SwingBench 구동 (oewizard.bat )
목차 Order Entry 수행하기 수행하기 앞서 , 1. Data Tablespace 증설 -> 최소 40G (미리 생성하자 ) 2. Temporary Tablespace 증설 3. user 생성을 해야한다 -> SOE_10G 4. 스키마와 데이터를 넣어야한다 -> oewizard.bat tablespace 생성 $ sqlplus '/as sysdba' SQL> CREATE BIGFILE TABLESPACE SOE_10G DATAFILE '/opt/oracle/oradata/ORCL/soe_10g_01.dbf' SIZE 60G AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M ; [oracle@sua-03 O..
2024.02.25
no image
SwingBench(stresstool) 사용하기 - 1 (디렉터리 살펴보기)
SwingBench 디렉토리 살펴보기 winbin : window 에서 사용하는 bat 프로그램 - swingbench.bat: SwingBench 실행 UI - oewizard.bat : Order Entry 데이터 생성 - tpcdswizard.bat : TPCDS 데이터 생성 - sqlbuilder: customized SQL 생성 sql - java로 만들어진 프로그램이지만 실제로직으로는 sql폴더 안에 있는 sql 구문이 실행이 된다 - package(PL/SQL)호출해서 돌아가는거 ** SOE : order entry source java 프로그램 소스코드 - PL/SQL을 호출하는 용도 lib - swingBench 는 JDBC를 사용 - 프로그램 안에 ojdbc 라는 swing bench ..
2024.02.22