Database 22

🟩소트 튜닝 :) 오라클 성능고도화2

1. 소트 수행원리데이터 정렬이 필요하면 오라클은 PGA안의 Sort Area를 할당하는데, 그안에서 처리 완료여부에 따라 두가지 유형으로 나뉨.메모리 소트 : 정렬 작업을 메모리 안에서 완료 Internal sort디스크 소트: sort area 내에서 완료하지 못해 디스크 공간까지 사용 external sort디스크 소트 과정에서 발생한 디스크 I/O까지 physical reads에 포함되서 증가함. sort area 내에서 데이터 정렬을 마치는게 최적이만, 양이 많으면 정렬된 중간 결과 집합을 Temp 테이블 스페이스의 Temp 세그먼트에 임시저장 ⇒ 이것을 Sort Run이라함.⇒ Sort Run 이후 다시 Merge해야 정렬된 최종 집합을 얻음.⇒ 이처럼, 정렬된 결과를 temp영역에 임시 저장..

스키마 오브젝트

✨ 스키마 오브젝트1. 스키마오브젝트 집합 → 테이블, 인덱스, 뷰, 프로시져오라클의 경우 스키마를 소유한 유저와 이름이 동일select * from dba_objects;2. 데이터 타입**varchar2** 가변 문자열 char 고정 문자열 -> 공백에 대한 공간 비효율 고려해야함**number(p,s)** 가변길이 -> p:유효자릿수 s: 소수점 자릿수 **date** 날짜및 시간, 초 단위까지**timedtamp** 날짜및 시간, 초 이하의 자릿수까지clob 대량의 문자데이터 blob 대량의 바이너리 데이터 char타입은 입력시 길이만큼 공백이 추가되는 특성이 있음CREATE TABLE TAB_CHAR (CHAR_COL CHAR(5) , VARCHAR_COL V..

Database/Oracle 2025.04.29

데이터 이관

✨ 데이터 이관CTAS & Direct insertDATA PUMPSQL LoaderExteral Table1. Direct Path 활용테이블 이관이나 기존 데이터를 이용한 테이블 생성시 사용함버퍼캐시를 거치지 않고 바로 읽음undo 와 redo생성을 최소화하여 작업 효율 높임데이터베이스가 force logging모드인 경우 주의 필요 → nologging 옵션 모드가 무시되어 이를 인지하지 못하고 작업을 할경우 아카이브 공간 부족으로 시스템 장애발생select force_logging from v$database;모니터링select trunc(value/1024/1024) as m from v$sysstat where name='redo size';select used_ublk*8 as kb from..

Database/Oracle 2025.01.21

2장 인덱스 기본

인덱스 탐색 과정은 수직적 탐색과 수평적 탐색 ! 두 단계.인덱스 잘탄다 = 인덱스 Range Scan을 잘 한다.🟩 인덱스는 큰 테이블에서 소량데이터를 검색할때 사용🟩 OLTP 시스템에 주로 사용🟩 인덱스 튜닝 방법인덱스 스캔 효율화 튜닝 : 스캔 과정에서 발생하는 비효율 줄이는 것랜덤 액세스 최소화 튜닝 : 테이블 액세스 횟수를 줄이는 것🟩 SQL 튜닝은 랜덤 I/O전쟁 1. 인덱스 구조인덱스는 정렬 이 되어있어 **범위 스캔**이 가능함.B Tree 인덱스루트, 브랜치 , 리프 블록루트와 브랜치 블록은 하위 블록에 대한 주소값 갖음리프 블록에는 레코드, ROWID ( 데이터 블록주소 DBA +로우번호) 저장되어 있음루트와 브랜치에는 키값을 갖지않는 LMC레코드가 있음자식 노드중 가장 왼쪽 끝..

1장 SQL처리과정과 I/O

💡  Table Full Scan : 시퀀셜 액세스, Multiblock I/O >> 한번의 I/O call로 수백개 블록 읽음  💡 💡  Index Range Scan: 랜덤 액세스, Singleblock I/O >>큰테이블에서 소량 읽을때 사용 !  💡  1.1 SQL 파싱과 최적화SQL 구조적 언어PL/SQL 절차적 언어, 프로그래밍구현 🟩 SQL 최적화:DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행가능한 상태로 만드는 과정SQL 파싱 → SQL 최적화 → 로우소스 생성SQL 입력받으면 SQL 파서가 파싱을 진행파싱트리생성, Syntax체크, Sementic체크SQL 최적화 : 옵티마이저가 실행 경로를 생성하고 하나를 선택로우소스 생성 :옵티마이저가 선택한 실행 결로를 실행 가능한 ..

오라클 기동과 정지/ 커넥션과 서버프로세스

🟩 오라클 기동및 정지open 데이터를 처리할수 있는상태mount 데이터 파일등에 접근 할수 있는 상태, 컨트롤 파일 읽은 상태!nomount 백그라운드 프로세스와 공유메모리 확보 상태shutdown 정지상태1. 기동정지 → NOMOUNTstart up nomount: 인스턴스 기동과 메모리 크기 알 수 있음: oracle_home과 oracle sid환경변수 토대로 초기화 파라미터 파일을 읽어서공유메모리를 확보하고 백그라운드 프로세스 생성!2.NOMOUNT → MOUNTalter database mount:초기화 파라미터에 기술된, 컨트롤 파일을 읽음:redo로그 파일이나 데이터 파일 위치 확인!3. MOUNT → OPENalter database open:백그라운드 프로세스를 기동하고 데이터베이스 ..

Database/Oracle 2024.09.23

[오라클 성능 트러블 슈팅 기초] 1장, 기본 개념 및 툴 (스냅샷,프로파일링, SQL스크립팅, 동적뷰, PL/SQL패키지)

▶ 오라클 트러블 슈팅이 어려운 이유: -필수적인 툴에 대한 사용법이 체계적으로 정립되어 있지 않아서임 -그래서, 툴들과 성능문제가 어떻게 연결되어 있는지 파악할 것!   🟨 오라클 트러블 슈팅에 필요한 기본 개념과 툴 🟨 스냅샷과 프로파일링SQL*PLUS 스크립팅딕셔너리뷰진단이벤트덤프PL/SQL패키지자바 저장 프로시저정규식oradebug 1. 스냅샷과 프로파일링트러블 슈팅하는 과정은 데이터를 체계적으로 수집하고 수집한 데이터에 기반해서 문제를 해석하고 해결책을 찾는 일련의 과정이다!   필요한 데이터를 수집하는 방법 스냅샷데이터와 프로파일링스냅샷 데이터: 특정 시점의 상태 데이터(공간적개념)Delta(차이) 값구하는것이 목표> 특정시점A와B의 어떤차이가 있는지가 핵심ex)logical read가 얼..

Database/Oracle 2024.08.19

[Oracle] expdp

[export/ import] 1.directory생성 #datapump는 직접 os에 I/O할수 없고 oracle에 directory라는 객체를 통해 간접 접근 가능 #그래서 미리directory가 만들어져 있어야하며 접근권한도 있어야함 --datapump directory만들기 mkdir /data/datapump sqlplus / as sysdba create or replace directory datapump as '/data/datapump'; --접근 권한 부여 grant read, write on directory datpump to oracle; grant create any directory to oracle; 2.tmp tablespace 설정 #tempoarary tablespace..

[백업복구] 복구 Restore/ Recovery (1)

Restore : 백업 파일로 부터 복원! Recovery : archive log, redo log 적용시켜서 복구! 1. data file 삭제 후 db open 상태에서 복구 -offline되는 users테이블 스페이스의 데이터파일을 삭제한 후 복구 --데이터파일 조회 SYS > select tablespaace_name, bytes/1024/1024 MB, file_name from dba_data_files; --users TBS삭제 SYS > !rm -fr /app/oracle/oradata/testdb/users01.dbf --독립형 명령어로 복구 RMAN > sql 'alter tablespace users offline immediate'; restore tablespace users; ..

[백업복구] RMAN 백업_여러 경우

1. 기본모드로 백업, 압축하면서 백업 --기본모드로 전체 datafile백업 RMAN > backup database format 'data/backup/rman/%U_%T' --압축하면서 전체 datafile백업 RMAN > backup as compressde backupset database format '/data/backup/rman/%U_%T'; --압축하면서 전체 archive log file전체 백업 RMAN > backup as compressed backupset archivelog all format '/data/backup/rman/%U_%T'; 2. 전체 데이터베이스 백업 RMAN > run { allocate channel c1 device type disk foramt 'da..