10gR2버전에서는 자동으로 수행하지만 그 이전 버전에서는 수동으로 통계정보를 수집해야 한다. 대부분 비업무시간에 동작하도록 Cron을 이용하여 통계정보를 수집한다. 수집 방법 - ANALYZE 명령 - DBMS_STATS 패키지 - 데이터 분포와 Histogram 통계 대상 인덱스 통계 - 인덱스 레벨 (정확) - Leaf 블록 수 - Distinct Key 수 - Key 당 평균 Leaf 블록수 - Key 당 평균 데이터 블록수 - 인덱스 항목 수 - Clustering Factor - 마지막의 ANALYZE 날짜 및 SAMPLE 크기 DBA_INDEXES ALL_INDEXES USER_INDEXES 테이블 통계 - 행 수 - 사용된 블록 수(정확) - 빈 블록수 (정확) - 블록 내의 평균 사용 가..
RBO CBO 의도적인 Optimizer 동작조정 옵티마이저(최적기)는 SQL의 실행계획을 만들어주는 역활을 한다. 이 옵티마이저의 기술은 모든 RDBMS가 다르며 이 옵티마이저의 성능으로 Query 의 성능이 달라진다. 이런 옵티마이저에도 두가지가 있는데 RBO 와 CBO 두개의 옵티마이저 타입으로 나뉘게 된다. RBO(Rule Based Optimizer) : 규칙 기반 CBO (Cost Based Optimizer) : 비용 기반 간략히 RBO는 규칙기반이라고 하며 여러개의 규칙을 정해 놓고 부합되는 규칙중 가장 비용이 적은 규칙을 선택하여 실행계획을 생성한다. 하지만 그 비용이라는 것이 실제 SQL을 실행하여 발생하는 비용이 아닌 규칙 자체의 비용이므로 유연하지 못하다. 그래서 CBO는 이러한 R..
쉽게 튜닝은 원하는 성능을 얻기위한 작업이다. Oracle 의 성능을 최대한 끌어내기 위해서는 Database 의 성격을 파악하여 올바른 설계와 효율적인 SQL 등을 작성하여 사용해야 한다. 튜닝 구분 크게 하드웨어적과 소프트웨어적인 튜닝을 고려할 수 있다. CPU 의 연산능력이 떨어진다거나 메모리의 양이 적다면 H/W 업그레이드하면 효과를 볼 수 있다. 하지만 그렇지 않는 경우(올바르지 않은 설계, 비효율적인 Query 등등)즉, 비효율적인 자원의 사용에서는 H/W 튜닝으로는 원인을 해결하지 못한다. H/W 처음부터 시스템이 운영될 수 있는 성능의 H/W로 구축이 되어 있어야 한다(하지만 일반적으로 저러한 검토보다 예산에 맞게 구축하는게 현실이다.). 성능이 나오지 않는다고 처음부터 H/W 튜닝을 고려..
의미 Block Corruption은 데이터파일의 특정 Block이 망가지는 것을 의미한다. 원인 정전이나 Shutdown Abort 등 예기치 못한 종료로 발생한다. 그림으로 보면 데이터 파일에 아래와 같은 형태로 블록들이 존재할때 'L' 블록이 Corruption이 되면 오라클은 에러를 출력한다. 그리고 M,N.O,... 블록에 대해서는 이상유무에 대해서는 관계없이 읽지 않는다. Oracle에는 손상된 블록을 감지하는데 두가지 Parameter가 있다 DB_BLOCK_CHECKSUM(Default true) 이것은 디스크 또는 I/O 시스템에 의해 발생한 손상을 감지한다. 시스템이 손상을 감지하기 위해 블록의 헤더에 체크섬을 사용하여, 성능에 미치는 영향을 최소화하고 있다. - 10g R1 이하 tr..
두개의 Node가 존재하는 RAC 환경에서의 Redo Log 를 조회해 보면 두개의 node에서 RedoLog를 같이 사용한다. select a.group#, a.thread#, a.sequence#,b.member, a.bytes/1024/1024 "MB", a.status , b.status, a.archived from v$log a , v$logfile b where a.group# = b.group# GROUP# THREAD# SEQUENCE# MEMBER MB STATUS STATUS ARCHIV --------- ---------- ---------- ---------- ---------- --------------- ----------- ------ 4 2 10 /dev/raw/raw13 ..
Redo Log 상태 조회 Redo Log 상태 select a.group#, a.thread#, a.sequence#,b.member, a.bytes/1024/1024, a.status , b.status, a.archived from v$log a , v$logfile b where a.group# = b.group#