본문 바로가기

DB/Tibero

[Tibero 6] Tibero Database 점검하는 방법 점검 사항

728x90

 

점검 툴 

압축되어있는 경우  해제 후 실행

 

cd tbinary/tbchk
sh tbchk.sh

 

 

 

점검 사항

1. TSM Info : Shared Memory 기본 정보를 확인한다.

 

 1-1. Shared Memory Size (TSM(Tibero Shared Memory)) : 2048M

> Tibero에서 사용하는 전체 Shared Memory 크기

    TOTAL_SHM_SIZE 파라미터로 조정

   TSM == Shared Cache Size + Data Buffer Cache Size + Log Buffer Size + fixed memory Size

 

 1-2. Shared Pool Size (Shared Cache Size) : 470M

> (TSM - fixed memory - Database Buffer Cache Size - Log Buffer Size )가 Shared Cache Size로 결정된다. 

   Tibero에서 사용하는 Shared Memory로서 pp cache, dd cache 각종 용도로 사용된다.

   Shared Cache와 Library Cache의 영역 제한은 없다.

 

 1-3. DB Cache Size (Database Buffer Size) : 1365.3125M

> Database Buffer Cache 크기

   환경 파일에서 DB_CACHE_SIZE로 조정가능

 

 1-4. Log Buffer Size (Redo Log Buffer Size) : 10M

> Redo Log를 저장하는 Memory 공간의 크기

   Init parameter에서 조정 (LOG_BUFFER)

 

2. DB Performance : 데이터베이스 버퍼캐쉬의 적중률을 점검한다.

데이터베이스의 적중률이란? 사용자가 액세스한 메모리 블럭 가운데 이미 캐쉬가 되어있어 물리적
                                                I/O없이 액세스 할 수 있었던 블럭의 비율을 나타낸다.


만약, Database Buffer의 적중률이 권장 값 미만일 경우에는 할당된 Database Buffer의 크기가 너무 적거나
또는 지나치게 많은 I/O를 유발하는 애플리케이션이 존재한다는 것을 의미한다.

 

 2-1. Buffer Cache Hit Ratio (70% 이상) : 99.11

> 버퍼 캐시 적중률.

   캐시 히트 비율이 높을수록 성능 향상

 

적중률이 기준값 이하일 경우

OS상 메모리 여유량을 확인하여 메모리 부족으로 인한 OS paging swapping이 발생하지 않는
한도 내에서 tip파일의 DB_CACHE_SIZE의 값을 늘려 데이터베이스 버퍼의 크기를 증가시킬 수 있다.

그러나 현실적으로 디스크상의 모든 데이터 블럭을 캐쉬시키는 것은 불가능하므로
데이터베이스 버퍼의 증가가 최선의 해결책이 될 수는 없다.

특히, 다량의 디스크 블록을 빈번히 Full Scan하는 애플리케이션이 존재한다면 적중률을 높은 수준으로
유지하는 것이 불가능하므로 액세스 패턴이 비효율적인 애플리케이션을 추출하여
지속적인 튜닝을 수행해 주어야 한다.

여러가지 이유로  Full Table Scan을 꼭 사용해야 하는데 Full Table Scan이 일정량을 넘어가면
버퍼캐시에 올리지 말고 PGA에 올리는 기능 사용을 검토한다. 해당 기능은 $TB_SID.tip 파일에서 
_FSCAN_SMART_FETCH=Y 파라미터로 활성화한다.

 

 

 2-2. SQL Cache Hit Ratio (90% 이상) : 97.15

> 높은 히트 비율은 자주 사용되는 sql쿼리를 효과적으로 캐시함을 의미

 

 2-3. Dictionary Cache Hit Ratio (90% 이상) : 97.2

> 데이터 딕셔너리 정보를 캐쉬 시켜두는 영역

   딕셔너리 캐시 적중률을 확인한다.

   Shared Cache에서 할당한다.

  높은 히트 비율은 데이터베이스 객체 및 메타데이터에 빠르게 접근 할 수 있음을 의미

 

적중률이 기준값 이하일 경우

초기화 파라미터 TOTAL_SHM_SIZE와 DB_CACHE_SIZE의 비율을 조정하여 Shared Cache 크기를
증가하여 적중률을 높일 수 있다.

 

 2-4. Shared Cache Free Space : 69.38

> Shared Cahce 영역은 라이브러리 캐쉬, 딕셔너리 캐쉬로 구성된다.

 

   Shared Cache는 기본적으로 캐쉬를 위한 영역이므로 여유공간이 남아있는 한 계속 소모하려는 속성이 있다.

 

   따라서 라이브러리 캐쉬나 딕셔너리 캐쉬의 적중률이 양호하다면 일반적인 운영 시간대에 크기가 낮은 상태를

   유지하는것이 정상이다.

 

   오히려 항상 큰 free memory가 남아있다면 Shared Cache가 불필요하게 크게 설정되어있다는 것을 의미한다.

 

   일시적으로 갑자기 free memory가  증가하는 경우는 Fragmentation이 많이 발생하여 오브젝트가

   한꺼번에 flush된 것을 의미하므로 문제를 겪고있다는 증상일 수 있다.

 

   Shared Cache메모리의 Fragmentation을 예방하기 위헤, 사이즈가 큰 PSM 블록 사용을 자제하고

   Literal SQL문의 경우 바인드 변수를 사용하거나 Cursor Sharing 기능 사용을 검토한다.

   Cursor Sharing 기능은 $TB_SID.tip파일에서 CURSOR_SHARING=FORCE로 활성화 한다.

   

 

3. Space Usage

 

 3-1. Tablespace Free Space (20% 이상) : 정상

> 테이블 스페이스의 여유 공간

 

 3-2. Undo Segment Usage ("cannot extents" 발생 여부) : 정상

> 롤백 세그먼트의 사용량을 확인한다.

   Undo Tablespace가 가득 찬 경우 재 사용 가능한 extent가 있는 경우 재사용을 한다.

 

4. DISK I/O

 

 4-1. File I/O Contention (특정 Disk에 I/O 집중 여부) : 정상

> 특정 디스크에 대한 파일 I/O 집중 여부 확인 (Read(%), Write(%))

   

 4-2. Online Redo Log Switch Count (특정 시간대 log switch 집중 여부) : 정상

> 시간별 Onlinr Redo Log Switch의 횟수를 확인한다.

 

I/O가 많이 발생하는 데이터 파일은 하나의 Device에 몰리지 않도록 분산시킨다.

 

Database I/O Tuning 지침

파일을 여러 디스크와 컨트롤러로 분산하여 Disk I/O를 최소화 한다.

파일 분산 
Datafile과 Redo Logfile은 별도의 디스크에 위치
Redo Logfile과 Archivelog파일은 각각 별도의 디스크에 위치
Redo Log그룹의 멤버들은 별도의 디스크로 분리

테이블스페이스 사용
시스템 테이블스페이스에는 데이터 딕셔너리 정보만 저장
테이블과 인덱스를 별도의  테이블스페이스로 분리

 

 

5. Current Session Info 

 

 5-1. Current Session Count ( Total / Max ) (Total session count의 80% 이하) : 5%

> 현재 데이터베이스에 연결된 사용자 세션의 수 

   80% 이하로 유지되는지 확인

 

6. System Resource Usage

 

6-1. Current CPU Usage (30% 이하): 57%

> CPU사용량

 

위 같은 오류 발생 시

select TO_CHAR(sysdate, 'yyyy/mm/dd hh24:mi:ss') "Current Time"
                             , "PGA" || ' K' as "PGA (KB)"
                             , "WPM" || ' K' as "WPM (KB)"
                  , CASE WHEN "PGA" < "WPM" then 'Good'
               ELSE 'Not Good'
        END as "Status"
from (Select ROUND(sum(PGA_USED_MEM)/1024, 2) as "PGA"
                    from v$session where TYPE='WTHR') a
      , (SELECT round((to_number(vt.value) - s.total)/1024,0) AS WPM
                    FROM v$sga s, _vt_parameter vt
                 WHERE vt.NAME = 'MEMORY_TARGET' AND s.name = 'SHARED MEMORY') b;

 

해당 sql문으로 조회

 

6-2. Current Memory Usage ( pga사용량 < WPM ) : 정상

> WPM(Working Process Memory) : Tibero에서 사용할 수 있는 Physical Memory의 총 크기

                                                          init parameter 에서 조정(EX_MEMORY_HARD_LIMIT)

 

6-3. WTHR(워커 스레드) Count (WTHR_PROC_CNT 일치 여부) : 정상

> 일치하지 않은 경우 데이터베이스가 설정한 프로세스 수를 충족시키지 못해

   성능 이슈가 발생할 수 있다. 

 

7. File System Check

 

7-1. Home Directory ( Free - 20% 이상 유지) : 정상

> 홈 디렉토리 여유 공간이 20% 이상으로 유지되는지 확인

7-2. Datafile Directory ( Free - 20% 이상 유지) : 정상

> 데이터 파일 디렉토리  여유 공간이 20% 이상으로 유지되는지 확인

7-3. Archive Log Dest ( Free - 20% 이상 유지) : 정상

> 아카이브 로그 디렉토리 여유 공간이 20% 이상으로 유지되는지 확인

 

8. Backup 

데이터베이스의 주기적인 백업 수행여부

8-1. Backup Check (백업 수행 여부) : 정상

정상 기준 1) 백업이 완료된 최근 일자 (7~10일 이내)                 2) STATUS : NOT ACTIVE

select file#, status, change#, to_char(time, 'YYYY/MM/DD HH24:MI:SS') from v$backup;

 

 

callstack ? 현재 실행중인 서브루틴에 대한 정보들을 담아두는 스택구조의 메모리영역

cd $TB_HOME/instance/$TB_SID
ls -alrt