IT기술 289

성능 고도화 1 - 03 오라클 성능관리

※ SQL 튜닝 과정 쿼리 성능에 문제가 생기면 Explain Plan 을 통해 실행계획 을 먼저 확인 (X-ray ) 한다. 그것만으로 문제점을 정확히 파악할 수 없을 때 AutoTrace 를 걸어 수행 시 실제 일량을 측정 (CT촬영) 하거나 SQL 트레이스 (MRI 촬영) 를 걸어 내부 수행 절차상 어느 단계에서 부하를 일으키는지 눈으로 확인한다. 문제점이 파악되면 쿼리를 변환하거나 옵티마이저 힌트를 사용해 튜닝 (외용약 또는 내복약 처방) 을 실시하고, 그것만으로 부족하다 판단되면 인덱스 조정 (칼을 대지 않는 시술) 을 병행한다. 그래도 성능에 만족하지 못하면 반정규화를 실시하거나 집계 테이블을 생성 (칼을 대는 절개 수술) 하도록 권고하지만 구조적 문제에 기인할 때만 사용하는 최후의 수단이다...

IT기술/Oracle 2014.01.21

성능 고도화 1 - 02 트랜잭션과 Lock

DB2, SQLServer, Sybase 등은 Lock을 통해 읽기 일관성을 구현하지만, 오라클은 Undo 데이터를 이용해 읽기 일관성을 구현한다. Undo 에 저장된 정보를 이용해 쿼리가 시작된 시점을 기준으로 일관성 있는 결과집합을 생성해낸다. 01 트랜잭션 동시성 제어 (1) 동시성 제어 다중 사용자 환경에서 발생할 수 있는 갖가지 동시성 문제에 대한 충분한 고려 없이 시스템 개발이 이루어지는 문제 동시성 제어란 동시에 실행되는 트랜잭션 수를 최대화하면서도 입력, 수정, 삭제 검색 시 데이터의 무결성이 유지될 수 있도록 노력하는 것 동시성 (Concurrency): 다중 사용자가 같은 데이터를 동시에 액세스 일관성 (Consistency): 자신이 발생시킨 변경 사항과 다른 트랜잭션의 변경사항을 포..

IT기술/Oracle 2014.01.21

성능 고도화 2 - 02 조인 원리와 활용

01 Nested Loops 조인 (1) 기본 메커니즘 (2) 힌트를 이용해 NL 조인을 제어하는 방법 ordered 힌트는 from 절에 기술된 순서대로 조인하라고 옵티마이저에게 지시할 때 사용 use_nl 힌트는 NL 방식으로 조인하라고 지시할 때 사용 10g 부터는 leading 힌트에 2개이상 테이블을 기술할 수 있도록 기능이 개선돼, from 절을 바꾸지않고도 마음껏 순서를 제어할 수 있게 되었다. (3) NL 조인 수행 과정 분석 실행계획을 해석할 때, 형제 노드 간에는 위에서 아래로, 부모 자식 노드 간에는 안쪽에서 바깥쪽으로 자식노드부터 읽는다. 각 단계를 완료하고 나서 다음 단계로 넘어가는게 아니라 한 레코드씩 순차적으로 진행한다. 단, order by 는 전체 집합을 대상으로 정렬해야 ..

IT기술/Oracle 2014.01.21

성능 고도화 2 - 01 인덱스 원리와 활용

01 인덱스 구조 (1) 범위 스캔 인덱스: 대용량 테이블에서 필요한 데이터만 빠르고 효율적으로 액세스할 목적으로 사용하는 오브젝트 범위스캔 (Range Scan): 인덱스는 키 컬럼 순으로 정렬돼 있기 때문에 특정 위치에서 스캔을 시작해 검색 조건에 일치 하지 않는 값을 만나는 순간 멈출 수 있다. (2) 인덱스 기본 구조 Root 를 포함한 Branch 블록에 저장된 엔트리에는 하위 노드 블록을 찾아가기 위한 DBA (Data Block Address) 정보를 갖고, 최말단 Leaf 블록에는 인덱스 키 컬럼과 함께 해당 테이블 레코드를 찾아가기 위한 ROWID (주소정보) 를 갖는다. * 리프 노드상의 인덱스 레코드와 테이블 레코드 간에는 1:1 관계 * 리프 노드상의 키 값과 테이블 레코드 키 값은..

IT기술/Oracle 2014.01.20

관리실무 총정리

01 Oracle Architecture1. DBMS 와 Oracle 이야기메모리에서 작업하고 디스크에 저장한다. 2. Oracle Server 의 전체 구조 살펴보기(1) Oracle Server 전체 구조인스턴스 (Instance) - 메모리 부분에 생성되는구조1) SGA (System Global Area) - Shared Pool (Library Cache, Data Dictionary Cache), Data Buffer Cache, Redo Log Buffer, Large Pool, Java Pool, Streams Pool, Fixed SGA2) Backgroud Process - DBWR, LGWR, PMON, SMON, CKPT, ETC데이터베이스 - Data files, Control f..

IT기술/Oracle 2014.01.17

백업복구 총정리

01 No Archive log mode 와 Archive log modeno archive log mode - redo log file 을 덮어쓰는 경우archive log mode - online redo log file 을 손실없이 지키는 방법 Archive log 를 만드는 시점은 log switch 가 발생하면 즉시 archiving 작업이 시작되며 이 작업을 하는 백그라운드 프로세스가 archiver(arch) 이다. 주의사항1. 별도의 저장공간 필요하다.2. 공간이 가득 찰 경우 DB가 중단된다.3. 관리가 까다롭다. archive redo log mode 로 변경하기DB 종료 → Parameter File 수정 → DB Mount 로 시작 → Mode 변경 → DB OpenSQL> shut..

IT기술/Oracle 2014.01.17

01 튜닝 방법론 및 SQL 처리 구조

1. SQL 튜닝을 위한 선결 과제(물리적인 환경)1) 업무에 적당한 H/W(시스템 설계자)구현될 업무가 운영되기에 충분한 용량의 서버 용량 산정 및 환경 구축CPU, Memory, Network 등2) 오라클 서버 튜닝(데이터베이스 관리자)SQL 특성에 맞도록 오라클 서버튜닝데이터 베이스 메모리 및 I/O 튜닝3) 운영 체제 튜닝(운영 체제 관리자)오라클 서버가 운용되는 데 필요한 기본적인 리소스 파라미터 튜닝 (설계 중의 과제)4) 업무 기능 분석(업무 분석가)목표로 하는 업무의 범위 선정명확한 업무 분석 및 설계5) 데이터 모델 설계(설계자)업무를 가장 잘 표현하는 단순 명료한 데이터 모델 필요- 명확한 업무 분석이 선결 과제- 업무의 범위의 명확한 구분 2. SQL 튜닝 기술이 필요한 사람1) 설..

IT기술/Oracle 2014.01.15

성능 고도화 1 - 01 오라클 아키텍처

DBMS 내부 아키텍처와 SQL 옵티마이저의 원리를 이해하지 않고서는 고성능의 DB 애플리케이션을 구축하기 어렵다. 01 기본 아키텍처 SGA 는 많은 프로세스가 동시에 데이터를 액세스 하기 때문에 사용자 데이터를 보호하는 Lock 은 물론 공유 메모리 영역인 SGA 상에 위치한 데이터 구조에 대한 액세스를 직렬화 하기 위한 LOCK 매커니즘 (Latch) 도 필요해진다. 오라클 접속 과정 1. 연결 요청 사용자 → LISTENER 2. 프로세스 생성 연결 요청 상속 LISTENER → SERVER 3. 메모리 생성 SERVER → PGA 4. RESEND 패킷 전송 SERVER → 사용자 5. 연결 사용자 → SERVER 리스너에 연결 요청을 하는 순간 하나의 프로세스를 띄우고 PGA 메모리를 할당한다..

IT기술/Oracle 2014.01.14

00 SQL 실행 계획 확인

요약 - recursive call 을 줄여라 - hard parse 를 줄이고, soft parse 를 유도 = db block gets 나만볼 수 있음 = consistent gets 모든 사람이 봄 = physical reads 디스크에서 읽음 실행계획 순서 가장 오른쪽으로 들여쓰기 된 놈부터 위로 차례대로 가다가 같은 depth가 있으면 확인 후 더 낮은 depth 가 있으면 거기로 고 다시 차례로 실행 SQL 실행 계획 확인 방법 • SQL 튜닝을 위한 기본적인 툴 • SQL Plus의 Autotrace 기능 – 가장 일반적인 방법 – 실행 결과, 실행 계획, 통계 정보 • Oracle Enterprise Manager – SQL 스크래치 패드(GUI 환경) • EXPLAIN PLAN 명령어 사..

IT기술/Oracle 2014.01.09

05 RAC 백업 복구 (RAW DEVICE 기반) 2 논리적 장애

Case 12. Drop table 삭제 복구하기- 무정지 상태에서 즉시 복구하기 – clone db / exp / imp 사용함* 사용자의 장애로 drop 된 특정 테이블을 삭제되기 전 상태로 복구해야만 합니다.중요한 것은 현재 서비스는 중단되어서는 안 된다는 것입니다. 테이블 삭제 시간은 알고 있는 것으로 가정합니다. * 실제 작업 순서Step 1. 현재 상태 백업 (Begin backup)Step 2. 테스트 테이블 생성 후 데이터 입력 – 최종 데이터 커밋 후 시간 확보할 것Step 3. Drop table 장애 발생Step 4. Rac1 노드에서 clone db 생성 작업 Step 5. Rac1 노드에서 clone db로 복구한 테이블을 exp 후 imp 해서 복구 완료함 Step 1. 현재 상..

IT기술/Oracle 2014.01.08