Tibero Performance Repository Tibero DBMS는 DBA가 성능 문제를 진단하는데 도움을 주기 위해 다양한 종류의 통계를 제공하고 있다. Tibero Performance Repository(이하 TPR)은 이러한 통계 정보를 주기적으로 자동 수집하여 DBA가 이를 위한 작업을 따로 할 필요가 없어졌고 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제공하여 시스템 부하 분석에 도움을 줄 수 있는 기능이다. 1. 관련 파라메터 설정 (TIP file) TIBERO_PERFORMANCE_REPOSITORY 'Y'로 설정하면 스냅샷 저장 기능 활성화한다. (기본값: Y) TPR_SNAPSHOT_SAMPLING_INTERVAL 스냅샷을 추출하는 주기를 설정한다. (기본값:..
1. TM Lock Table을 보호하는 락 경합 발생시 enq:TM - contention 대기 2. TM Lock MODE 구분 모드 Ex LEVEL 2 RS(ROW Shared Table Locks), SS(Subshare Table Locks) LOCK TABLE EMP IN ROW SHARE MODE; LEVEL 3 RX(ROW Exclusive Table Locks), SX(Subexclusive Table Locks) LOCK TABLE EMP IN ROW EXCLUSIVE MODE; LEVEL 4 S(Share Table Locks), SS(Subshare Table Locks) LOCK TABLE EMP IN SHARE MODE; LEVEL 5 SRS(Share Row Exclusive ..
1. Object 변경작업시 고려해야 할 상황 사용량이 많은 Table에 column을 추가하려고 할때 ORA-0054: resource busy and acquire with NOWATI specifed 에러가 발생하거나 행이걸린 상황이 발생할 수 있다. alter 명령어는 dynamic sql로 밖에 실행을 할 수 없기 떄문에, 이 부분에서 hard parsing을 유발시킨다. Table 변경의 가장 큰 문제는 작업 테이블과 연관된 Object들이 Invaild 상태로 빠졋을 경우 recompile 해주는 작업이다. 2. Object 변경 작업 전 (dependency check) SELECT decode(name, UPPER('&&object_name'), 'REF', 'REF BY') ref, d..
1. Direct Patch I/O 일반적인 블록 I/O는 DB 버퍼 캐시를 경유한다. 읽고자 하는 블록을 먼저 버퍼캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터 변경도 버퍼캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록(Dirty Buffer Blcok)을 데이터파일에 기록한다. -> 오라클은 버퍼 캐시를 경유하지 않고 데이터블록을 읽고 쓸 수 있는 Direct I/O 기능을 제공한다. Temp Segment Block을 읽고 쓸 떄 병렬 쿼리로 Full scan을 수행할 때 Nocache 옵션을 지정한 LOB Column을 읽을 때 Direct 옵션을 지정하고 export를 수행할 때 Parleele DML을 수행할 때 Direct Path Insert를..
1. Paging 처리 정의 데이터베이스에서 읽어와 화면에 출력할 때 한꺼번에 모든 데이터를 가져오는 것보다 출력될 페이지의 데이터만 나눠서 가져오는 것을 페이징(Paging)이라고 한다. 1) 표준 패턴 var num_page_no number; exec :num_page_no :=2; -- 페이지번호 var num_page_size number; exec :num_page_size := 10; -- 한페이지출력개수(사이즈) select a,b,c from ( select x.rnum no,a,b,c from ( select rownum rnum, a,b,c from t_board t order by reg_dt desc )x where rnum < (:num_page_no * :num_page_siz..
1. V$SQL v$sql은 라이브러리 캐시에 캐싱되 있는 각 sql에 대한 수행 통계를 보여준다. v$sql은 쿼리가 수행을 마칠 때마다 갱신되며, 오랫동안 수행되는 쿼리는 5초마다 갱신이 이루어진다. select sql_id, child_number, sql_text, sql_fulltext, parsing_schema_name, loads, invalidations, parse_calls, executions, fetches, rows_processed, cpu_time, elapsed_time, buffer_gets, disk_reads, sorts, first_load_time, last_active_time from v$sql; 라이브러리 캐시에 적재된 SQL 커서 자체에 대한 정보 하드파싱 ..