개요
V$CELL_STATE 뷰는 셀 서버 네트워크 계층 정보, 스케줄링 계층 정보, 셀 서버 구성 정보와 같은 셀 서버의 주요 성능 통계를 표시합니다.
칼럼 구성은 아래와 같습니다. statistics_type 칼럼에 통계 유형, statistics_value 칼럼에 통계 값이 저장되어 있습니다. 통계 유형에 따라 상이한 XML 포맷의 통계 값이 저장되어 있습니다.
이름 널? 유형
---------------- --- --------------
CELL_NAME VARCHAR2(1024)
STATISTICS_TYPE VARCHAR2(15) -- 통계 유형
OBJECT_NAME VARCHAR2(1024)
STATISTICS_VALUE CLOB -- 통계 값(XML)
CON_ID NUMBER
통계 유형은 아래와 같습니다. 참고로 통계 유형에 대한 설명은 Expert Oracle Exadata, Second Edition을 참조했습니다.
- CAPABILITY: cell software capabilities
- CELL: similar information as in the cellsrvstat output
- CLIENTDES
- DBDES
- FLASHLOG: very detailed information about the use of the FLASHLOG feature
- IOREASON: breaks down I/O on the cell into every category imaginable
- LOCK: breaking down mutex waits per object type in the cell
- NPHYSDISKS: lists number of physical disks per cell
- OFLGROUP: offload server statistics
- OFLGRPDES: information about the various phases of a Smart Scan
- OSSCONFIG
- PHASESTAT
- PREDIO: contains information about how Exadata dealt with Smart Scans
- RCVPORT: contains detail about network traffic received
- SENDPORT: contains detail about network traffic sent
- THREAD: thread-related information about cellsrv’s worker threads
통계 값은 아래의 쿼리로 조회할 수 있습니다. V$CELL_STATE 뷰는 XML 구조가 복잡해 통계 유형에 따라 다양한 형식의 쿼리로 조회해야 합니다. XML Viewer로 XML 구조를 분석하여 쿼리를 변경하면 필요한 통계값을 조회할 수 있습니다.
value 형식
EXTRACTVALUE 함수로 단일 값을 조회합니다.
-- 1
SELECT EXTRACTVALUE(XMLTYPE (b.confval), '/cli-output/context/@cell') AS cell
, EXTRACTVALUE(XMLTYPE (a.statistics_value), '/predio_stats/stats[@type="predicateio"]/stat[@name="current_cell_cpu_utilization"]')
AS value
FROM v$cell_state a
, v$cell_config b
WHERE a.statistics_type = 'PREDIO'
AND b.cellname = a.cell_name
AND b.conftype = 'CELL'
ORDER BY cell;
CELL VALUE
-------- -----
celadm01 #
celadm02 #
...
# 행이 선택되었습니다.
name, value 형식
XMLTABLE 함수로 다중 값을 조회합니다.
-- 2
SELECT EXTRACTVALUE(XMLTYPE (b.confval), '/cli-output/context/@cell') AS cell
, c.position
, c.name
, c.value
FROM v$cell_state a
, v$cell_config b
, XMLTABLE ('/predio_stats/stats[@type="predicateio"]/stat'
PASSING XMLTYPE (a.statistics_value)
COLUMNS
position FOR ORDINALITY
, name VARCHAR2(255) PATH '@name'
, value NUMBER PATH '.') c
WHERE a.statistics_type = 'PREDIO'
AND b.cellname = a.cell_name
AND b.conftype = 'CELL'
-- AND c.name = 'current_cell_cpu_utilization'
ORDER BY cell
, c.position;
CELL POSITION NAME VALUE
-------- -------- -------------------------- -----
celadm01 1 num_active_predicate_disks #
celadm01 2 total_predicate_disks #
...
# 행이 선택되었습니다.
type, name, value 형식
2개의 XMLTABLE 함수로 2단계 다중 값을 조회합니다.
-- 3
SELECT EXTRACTVALUE(XMLTYPE (b.confval), '/cli-output/context/@cell') AS cell
, c.position AS type_position
, c.type
, d.position AS name_position
, d.name
, d.value
FROM v$cell_state a
, v$cell_config b
, XMLTABLE ('/predio_stats/stats[@type != ""]'
PASSING XMLTYPE (a.statistics_value)
COLUMNS
position FOR ORDINALITY
, type VARCHAR2(256) PATH '@type'
, value XMLTYPE PATH '.') c
, XMLTABLE ('/stats/stat'
PASSING c.value
COLUMNS
position FOR ORDINALITY
, name VARCHAR2(256) PATH '@name'
, value NUMBER PATH '.') d
WHERE a.statistics_type = 'PREDIO'
AND b.cellname = a.cell_name
AND b.conftype = 'CELL'
ORDER BY cell
, c.position
, d.position;
CELL TYPE_POSITION TYPE NAME_POSITION NAME VALUE
-------- ------------- -------------------- ------------- --------------------- -----
...
celadm01 4 storidx_global_stats 1 nm_io_saved #
celadm01 4 storidx_global_stats 2 nm_sparse_bytes_saved #
...
# 행이 선택되었습니다.
id, group, name, value 형식
3개의 XMLTABLE 함수로 3단계 다중 값을 조회합니다.
-- 4
SELECT EXTRACTVALUE(XMLTYPE (b.confval), '/cli-output/context/@cell') AS cell
, c.position AS id_position
, c.id
, d.position AS group_position
, d.group_
, e.position AS name_position
, e.name
, e.value
FROM v$cell_state a
, v$cell_config b
, XMLTABLE ('/predio_stats/stats[@type = "storidx_global_stats"]/ocl_si_stats/ocl_si_group[@id != ""]'
PASSING XMLTYPE (a.statistics_value)
COLUMNS
position FOR ORDINALITY
, id VARCHAR2(256) PATH '@id'
, value XMLTYPE PATH '.') c
, XMLTABLE ('/ocl_si_group/ocl_si_stat_group[@group != ""]'
PASSING c.value
COLUMNS
position FOR ORDINALITY
, group_ VARCHAR2(256) PATH '@group'
, value XMLTYPE PATH '.') d
, XMLTABLE ('/ocl_si_stat_group/stat'
PASSING d.value
COLUMNS
position FOR ORDINALITY
, name VARCHAR2(256) PATH '@name'
, value NUMBER PATH '.') e
WHERE a.statistics_type = 'PREDIO'
AND b.cellname = a.cell_name
AND b.conftype = 'CELL'
ORDER BY cell
, c.position
, d.position
, e.position;
CELL ID_POSITION ID GROUP_POSITION GROUP_ NAME_POSITION NAME VALUE
-------- ----------- -- -------------- ------ ------------- -------------- -----
celadm01 1 1 1 misc 1 pin_attempts #
celadm01 1 1 1 misc 2 pin_from_cache #
...
# 행이 선택되었습니다.