Enhanced I/O Statistics
EXEM Knowledge Base
Oracle 11g에 OS정보를 가져오는 기능이 많이 추가 되었다.
물론 Oracle 10g에서도 CPU정도는 가져올 수 있었지만 11g에서는 그것보다 더 많은 IO와 Network정보가 추가 된 것을 알 수 있다.
[편집] OS 정보
- V$OSSTAT
10g에도 있었던 뷰였지만 Network정보가 추가 되었다.
SQL>select * from v$osstat
| STAT_NAME | VALUE | OSSTAT_ID | COMMENTS | CUMULATIVE |
|---|---|---|---|---|
| NUM_CPUS | 1 | 0 | Number of active CPUs | NO |
| IDLE_TIME | 193231 | 1 | Time (centi-secs) that CPUs have been in the idle state | YES |
| BUSY_TIME | 11537 | 2 | Time (centi-secs) that CPUs have been in the busy state | YES |
| USER_TIME | 8154 | 3 | Time (centi-secs) spent in user code | YES |
| SYS_TIME | 3179 | 4 | Time (centi-secs) spent in the kernel | YES |
| IOWAIT_TIME | 4630 | 5 | Time (centi-secs) spent waiting for IO | YES |
| NICE_TIME | 0 | 6 | Time (centi-secs) spend in low-priority user code | YES |
| RSRC_MGR_CPU_WAIT_TIME | 0 | 14 | Time (centi-secs) processes spent in the runnable state waiting | YES |
| LOAD | 0 | 15 | Number of processes running or waiting on the run queue | NO |
| PHYSICAL_MEMORY_BYTES | 1051881472 | 1008 | Physical memory size in bytes | NO |
| TCP_SEND_SIZE_MIN | 4096 | 2000 | TCP Send Buffer Min Size | NO |
| TCP_SEND_SIZE_DEFAULT | 16384 | 2001 | TCP Send Buffer Default Size | NO |
| TCP_SEND_SIZE_MAX | 131072 | 2002 | TCP Send Buffer Max Size | NO |
| TCP_RECEIVE_SIZE_MIN | 4096 | 2003 | TCP Receive Buffer Min Size | NO |
| TCP_RECEIVE_SIZE_DEFAULT | 87380 | 2004 | TCP Receive Buffer Default Size | NO |
| TCP_RECEIVE_SIZE_MAX | 174760 | 2005 | TCP Receive Buffer Max Size | NO |
| GLOBAL_SEND_SIZE_MAX | 262144 | 2006 | Global send size max (net.core.wmem_max) | NO |
| GLOBAL_RECEIVE_SIZE_MAX | 262144 | 2007 | Global receive size max (net.core.rmem_max) | NO |
[편집] 디스크 I/O
오라클을 사용하는 데 있어 가장 필요한 디스크 정보는 아마도 응답 시간과 디스크 큐의 길이일 것이다.
11g에서는 이러한 정보를 consumer group, database file, database function 별로 single, multiblick read/write에 대해서 그리고 io call수와 응답시간 그리고 대기 큐의 갯수를 보여준다.
- V$IOSTAT_CONSUMER_GROUP
이 테이블은 resource manager가 활성화되어 있을 때 그리고 resource consumer group이 설정되어 있을때 resource consumer group별로 io에 대한 정보를 보여준다.
SQL> desc V$IOSTAT_CONSUMER_GROUP COLUMN_NAME DATA_TYPE DATA_LEN DENSITY NULLABLE ------------------------ --------- -------- ---------- -------- CONSUMER_GROUP_ID NUMBER 22 Y SMALL_READ_MEGABYTES NUMBER 22 Y SMALL_WRITE_MEGABYTES NUMBER 22 Y LARGE_READ_MEGABYTES NUMBER 22 Y LARGE_WRITE_MEGABYTES NUMBER 22 Y SMALL_READ_REQS NUMBER 22 Y SMALL_WRITE_REQS NUMBER 22 Y LARGE_READ_REQS NUMBER 22 Y LARGE_WRITE_REQS NUMBER 22 Y NUMBER_OF_WAITS NUMBER 22 Y WAIT_TIME NUMBER 22 Y
- V$IOSTAT_FILE
이것은 database file별로 IO정보를 보여주는 뷰이다.
SQL> desc V$IOSTAT_FILE COLUMN_NAME DATA_TYPE DATA_LEN NULLABLE ------------------------ --------- -------- -------- FILE_NO NUMBER 22 Y FILETYPE_ID NUMBER 22 Y FILETYPE_NAME VARCHAR2 28 Y SMALL_READ_MEGABYTES NUMBER 22 Y SMALL_WRITE_MEGABYTES NUMBER 22 Y LARGE_READ_MEGABYTES NUMBER 22 Y LARGE_WRITE_MEGABYTES NUMBER 22 Y SMALL_READ_REQS NUMBER 22 Y SMALL_WRITE_REQS NUMBER 22 Y SMALL_SYNC_READ_REQS NUMBER 22 Y LARGE_READ_REQS NUMBER 22 Y LARGE_WRITE_REQS NUMBER 22 Y SMALL_READ_SERVICETIME NUMBER 22 Y SMALL_WRITE_SERVICETIME NUMBER 22 Y SMALL_SYNC_READ_LATENCY NUMBER 22 Y LARGE_READ_SERVICETIME NUMBER 22 Y LARGE_WRITE_SERVICETIME NUMBER 22 Y ASYNCH_IO VARCHAR2 9 Y RETRIES_ON_ERROR NUMBER 22 Y
file type은 Control File, Flashback Log, Data Pump Dump File, Temp File, Other, Log File, Data File Incremental Backup,Archive Log Backup, Data File Copy, Archive Log, Data File Backup, Data File로 나뉘어 나타내어 준다.
- V$IOSTAT_FUNCTION
Database function별로 IO정보를 나타내어 준다. Database Function은 RMAN, XDB, Data Pump, Direct Reads, Direct Writes, Buffer Cache Reads, LGWR, ARCH, DBWR, Streams AQ, Others, Recovery로 구분되어져 있다.
SQL> desc V$IOSTAT_FUNCTION COLUMN_NAME DATA_TYPE DATA_LEN NULLABLE ------------------------ --------- -------- -------- FUNCTION_ID NUMBER 22 Y FUNCTION_NAME VARCHAR2 18 Y SMALL_READ_MEGABYTES NUMBER 22 Y SMALL_WRITE_MEGABYTES NUMBER 22 Y LARGE_READ_MEGABYTES NUMBER 22 Y LARGE_WRITE_MEGABYTES NUMBER 22 Y SMALL_READ_REQS NUMBER 22 Y SMALL_WRITE_REQS NUMBER 22 Y LARGE_READ_REQS NUMBER 22 Y LARGE_WRITE_REQS NUMBER 22 Y NUMBER_OF_WAITS NUMBER 22 Y WAIT_TIME NUMBER 22 Y
[편집] NETWORK 정보
network도 IO와 같은 방법으로 application별로 network의 응답 시간등의 정보를 보여주고 있다.
- V$IOSTAT_NETWORK
SQL> desc V$IOTAT_NETWORK
COLUMN_NAME DATA_TYPE DATA_LEN NULLABLE ----------------------- --------- -------- -------- CLIENT VARCHAR2 32 Y READS# NUMBER 22 Y WRITES# NUMBER 22 Y KBYTES_READ NUMBER 22 Y KBYTES_WRITTEN NUMBER 22 Y READ_LATENCY NUMBER 22 Y WRITE_LATENCY NUMBER 22 Y
현재 테스트 시스템의 Client는 RMAN과 PL/SQL 두가지만 있다.
이상이 oracle 11g에서 새로 추가된 OS자원에 대한 모니터링 정보이다.
버전이 올라갈 수록 Oracle은 모니터링을 할 수 있는 정보를 점점 늘려가고 있으며 그것도 DB 안으로 집중하는 모습을 보여주고 있는 것 같다. 현재까지 CPU, Memory, IO, NETWORK에 대한 정보는 제법 추가가 되어 왔다.
그러나 Memory의 부분에 있어서는 physical memory의 크기만을 보여주고 있는데 향후 swap이나 page같은 정보도 아울러 보여주게 되지 않을까 하는 생각이 든다.