ORACLE2016. 4. 26. 09:57

Space Manager를 이용하여 Tablespace, Datafile, ASM Disk의 사용량 정보를 한눈에 볼수 있도록 만들었습니다.

이 화면을 만들면서 dba_free_space에서 recyclebin 조회로 성능이 지연되는 것도 한가지 더 배울수 있었네요.




Posted by Tiwaz
ORACLE2016. 3. 17. 14:25

성능 모니터링 툴의 테이블스페이스 사용량을 보여주는 기능 구현 후 테스트를 진행하다 발견한 현상입니다. 모니터링 툴에는 모래시계가 돌며 전체 프로그램은 느려지며 결과는 안나오고.... 

구현이 잘 못 되었는지 다시 보아도 이상은 없었습니다.

그래서 열심히 검색을 해보니 쿼리기반의 SQL 편집 툴에서도 종종 발생한다고 하여 더 자세히 알아보니 10g 부터 추가된 휴지통 기능이 원인을 제공하고 있었습니다.


테이블스페이스의 여유 공간을 알아보기 위해 DBA_FREE_SPACE를 조회하였는데 응답시간이 느려지면서 모니터링 툴까지 영향을 받고 있었습니다.


메타링크 확인 결과 원인은 2가지로

1. 10g 부터 추가된 휴지통 기능으로 DBA_FREE_SPACE뷰에서 삭제된(버려진) 테이블들의 크기를 조회하기 위해 sys.recyclebin$과 JOIN하는 부분 때문입니다.


SQL> select text from dba_views where view_name='DBA_FREE_SPACE';

TEXT

--------------------------------------------------------------------------------

select ts.name, fi.file#, f.block#,

       f.length * ts.blocksize, f.length, f.file#

from sys.ts$ ts, sys.fet$ f, sys.file$ fi

where ts.ts# = f.ts#

  and f.ts# = fi.ts#

  and f.file# = fi.relfile#

  and ts.bitmapped = 0

union all

select /*+ ordered use_nl(f) use_nl(fi) */

       ts.name, fi.file#, f.ktfbfebno,

       f.ktfbfeblks * ts.blocksize, f.ktfbfeblks, f.ktfbfefno

from sys.ts$ ts, sys.x$ktfbfe f, sys.file$ fi

where ts.ts# = f.ktfbfetsn

  and f.ktfbfetsn = fi.ts#

  and f.ktfbfefno = fi.relfile#

  and ts.bitmapped <> 0 and ts.online$ in (1,4) and ts.contents$ = 0

union all

select /*+ ordered use_nl(u) use_nl(fi) */

       ts.name, fi.file#, u.ktfbuebno,

       u.ktfbueblks * ts.blocksize, u.ktfbueblks, u.ktfbuefno

from sys.recyclebin$ rb, sys.ts$ ts, sys.x$ktfbue u, sys.file$ fi

where ts.ts# = rb.ts#

  and rb.ts# = fi.ts#

  and rb.file# = fi.relfile#

  and u.ktfbuesegtsn = rb.ts#

  and u.ktfbuesegfno = rb.file#

  and u.ktfbuesegbno = rb.block#

  and ts.bitmapped <> 0 and ts.online$ in (1,4) and ts.contents$ = 0

union all

select ts.name, fi.file#, u.block#,

       u.length * ts.blocksize, u.length, u.file#

from sys.ts$ ts, sys.uet$ u, sys.file$ fi, sys.recyclebin$ rb

where ts.ts# = u.ts#

  and u.ts# = fi.ts#

  and u.segfile# = fi.relfile#

  and u.ts# = rb.ts#

  and u.segfile# = rb.file#

  and u.segblock# = rb.block#

  and ts.bitmapped = 0


2. sys.recyclebin$에 삭제된 데이터가 있을 경우.

제 테스트 환경(12.1.0.2.0)에서는 단 2건의 데이터가 있었지만 10초 이상 응답시간이 없었습니다. 



해결 방법은 휴지통을 비우거나 휴지통 기능을 사용 안하는 방법이 있습니다.

1. 휴지통 비우는 방법

사용 방법

SQL> purge recyclebin;


또는 SYSDBA로 전체 휴지통을 비우는 방법이 있습니다.

SQL> purge dba_recyclebin;


2. 휴지통 기능을 사용 안하는 방법(Default : recyclebin = ON)

세션 레벨 : 

SQL> ALTER SESSION SET recyclebin = OFF;

시스템 레벨 : 

SQL> ALTER SYSTEM SET recyclebin = OFF;




참조 : Queries on DBA_FREE_SPACE are Slow (Doc ID 271169.1)

       10g Recyclebin Features and How to Disable it (Doc ID 265253.1)



Posted by Tiwaz
ORACLE2016. 3. 4. 14:19

앞전에 올렸던 ASH Viewer와 연계되어 있던 Plan Viewer의 기능을 대폭 향상하여 Plan Viewer에 대한 데모영상 다시 올립니다.

기존 Plan Viewer의 경우 단순 Tree 형의 Plan만 보여주었지만 이번엔 튜닝을 고려하여 다양한 정보를 볼 수 있도록~

지인께서 고생을 하여주셨습니다.

그래서 Plan Viewer를 이용한 실행계획과 Predicate 정보 등 확인 가능하며, SQL의 시간대별 수행 횟수 및 자원 사용현황 까지~ 한눈에 최대한 볼수 있게 수정되었습니다.

* 실제 운영 서버가 아닌 환경에서 녹화되어 정보가 미흡하지만, 양해 바랍니다~




Posted by Tiwaz
ORACLE2016. 2. 26. 17:42

오라클 AWR의 ASH 기능을 이용한 성능 분석 데모입니다.

개인PC의 DB다 보니 부하가 많이 발생하거나 하지 않아 수집된 데이터 량이 적네요.

시간대별 각 wait_class에 대한 부하를 확인한 후 특정 시간을 설정하면 세션별 SQL 추적을 할 수 있습니다.

각 SQL이 특정 시간 범위에서 차지하는 비율을 확인할 수 있으며 어떤 SQL인지 확인하여 실행계획 확인 후 튜닝을 할 수 있습니다.

(PLAN 뷰어는 아직 개발 중이여서 보여지는 부분이 적지만 추후 다시 올리도록 하겠습니다.)

AWR 보관 주기에 해당하는 날짜를 선택할 경우 선택된 날짜의 ASH 정보 확인을 할 수 있습니다.



Posted by Tiwaz
ORACLE2016. 2. 19. 14:47

로컬PC에 설치된 Virtualbox를 이용하여 6개의 DBMS를 시작한 후 CPU 사용량 및 세션 상태를 확인하는 테스트입니다.

임계치에 따라 신호등과 유사하게 동작하도록 구현되어 있으며 DBMS 장애시 3개의 점멸등이 동시에 켜지게 되어 있습니다.

(테스트에 사용된 로컬PC가 저사양으로 속도는 조금 느립니다.)



## 테스트 서버 사양

▶ 장애 발생 유발 DB

OS : RedHat 6.5 (64bit)

RAM : 1024m

DB : 10g / SID : PERF10

1차 장애 : 유저 프로세스 KILL

2차 장애 : 리스너 & 유저 프로세스 KILL


▶ 일시적 부하 DB

OS : RedHat 6.5 (64bit)

RAM : 1024m

DB : 11g / SID : PERF


▶ 기타 모니터링 대상 DB

OS : CentOS 7 (64bit)

RAM : 1024m

DB : 12c / SID : cdb1, pdb1


OS : Windwos 10 (64bit)

RAM : 8196m

DB : 12c / SID : corcl, orcl

Posted by Tiwaz