summaryrefslogtreecommitdiffstats
path: root/collectors/python.d.plugin/oracledb/oracledb.chart.py
diff options
context:
space:
mode:
Diffstat (limited to 'collectors/python.d.plugin/oracledb/oracledb.chart.py')
-rw-r--r--collectors/python.d.plugin/oracledb/oracledb.chart.py846
1 files changed, 0 insertions, 846 deletions
diff --git a/collectors/python.d.plugin/oracledb/oracledb.chart.py b/collectors/python.d.plugin/oracledb/oracledb.chart.py
deleted file mode 100644
index 455cf270e..000000000
--- a/collectors/python.d.plugin/oracledb/oracledb.chart.py
+++ /dev/null
@@ -1,846 +0,0 @@
-# -*- coding: utf-8 -*-
-# Description: oracledb netdata python.d module
-# Author: ilyam8 (Ilya Mashchenko)
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-from copy import deepcopy
-
-from bases.FrameworkServices.SimpleService import SimpleService
-
-try:
- import oracledb as cx_Oracle
-
- HAS_ORACLE_NEW = True
- HAS_ORACLE_OLD = False
-except ImportError:
- HAS_ORACLE_NEW = False
- try:
- import cx_Oracle
-
- HAS_ORACLE_OLD = True
- except ImportError:
- HAS_ORACLE_OLD = False
-
-ORDER = [
- 'session_count',
- 'session_limit_usage',
- 'logons',
- 'physical_disk_read_write',
- 'sorts_on_disk',
- 'full_table_scans',
- 'database_wait_time_ratio',
- 'shared_pool_free_memory',
- 'in_memory_sorts_ratio',
- 'sql_service_response_time',
- 'user_rollbacks',
- 'enqueue_timeouts',
- 'cache_hit_ratio',
- 'global_cache_blocks',
- 'activity',
- 'wait_time',
- 'tablespace_size',
- 'tablespace_usage',
- 'tablespace_usage_in_percent',
- 'allocated_size',
- 'allocated_usage',
- 'allocated_usage_in_percent',
-]
-
-CHARTS = {
- 'session_count': {
- 'options': [None, 'Session Count', 'sessions', 'session activity', 'oracledb.session_count', 'line'],
- 'lines': [
- ['session_count', 'total', 'absolute', 1, 1000],
- ['average_active_sessions', 'active', 'absolute', 1, 1000],
- ]
- },
- 'session_limit_usage': {
- 'options': [None, 'Session Limit Usage', '%', 'session activity', 'oracledb.session_limit_usage', 'area'],
- 'lines': [
- ['session_limit_percent', 'usage', 'absolute', 1, 1000],
- ]
- },
- 'logons': {
- 'options': [None, 'Logons', 'events/s', 'session activity', 'oracledb.logons', 'area'],
- 'lines': [
- ['logons_per_sec', 'logons', 'absolute', 1, 1000],
- ]
- },
- 'physical_disk_read_write': {
- 'options': [None, 'Physical Disk Reads/Writes', 'events/s', 'disk activity',
- 'oracledb.physical_disk_read_writes', 'area'],
- 'lines': [
- ['physical_reads_per_sec', 'reads', 'absolute', 1, 1000],
- ['physical_writes_per_sec', 'writes', 'absolute', -1, 1000],
- ]
- },
- 'sorts_on_disk': {
- 'options': [None, 'Sorts On Disk', 'events/s', 'disk activity', 'oracledb.sorts_on_disks', 'line'],
- 'lines': [
- ['disk_sort_per_sec', 'sorts', 'absolute', 1, 1000],
- ]
- },
- 'full_table_scans': {
- 'options': [None, 'Full Table Scans', 'events/s', 'disk activity', 'oracledb.full_table_scans', 'line'],
- 'lines': [
- ['long_table_scans_per_sec', 'full table scans', 'absolute', 1, 1000],
- ]
- },
- 'database_wait_time_ratio': {
- 'options': [None, 'Database Wait Time Ratio', '%', 'database and buffer activity',
- 'oracledb.database_wait_time_ratio', 'line'],
- 'lines': [
- ['database_wait_time_ratio', 'wait time ratio', 'absolute', 1, 1000],
- ]
- },
- 'shared_pool_free_memory': {
- 'options': [None, 'Shared Pool Free Memory', '%', 'database and buffer activity',
- 'oracledb.shared_pool_free_memory', 'line'],
- 'lines': [
- ['shared_pool_free_percent', 'free memory', 'absolute', 1, 1000],
- ]
- },
- 'in_memory_sorts_ratio': {
- 'options': [None, 'In-Memory Sorts Ratio', '%', 'database and buffer activity',
- 'oracledb.in_memory_sorts_ratio', 'line'],
- 'lines': [
- ['memory_sorts_ratio', 'in-memory sorts', 'absolute', 1, 1000],
- ]
- },
- 'sql_service_response_time': {
- 'options': [None, 'SQL Service Response Time', 'seconds', 'database and buffer activity',
- 'oracledb.sql_service_response_time', 'line'],
- 'lines': [
- ['sql_service_response_time', 'time', 'absolute', 1, 1000],
- ]
- },
- 'user_rollbacks': {
- 'options': [None, 'User Rollbacks', 'events/s', 'database and buffer activity',
- 'oracledb.user_rollbacks', 'line'],
- 'lines': [
- ['user_rollbacks_per_sec', 'rollbacks', 'absolute', 1, 1000],
- ]
- },
- 'enqueue_timeouts': {
- 'options': [None, 'Enqueue Timeouts', 'events/s', 'database and buffer activity',
- 'oracledb.enqueue_timeouts', 'line'],
- 'lines': [
- ['enqueue_timeouts_per_sec', 'enqueue timeouts', 'absolute', 1, 1000],
- ]
- },
- 'cache_hit_ratio': {
- 'options': [None, 'Cache Hit Ratio', '%', 'cache', 'oracledb.cache_hit_ration', 'stacked'],
- 'lines': [
- ['buffer_cache_hit_ratio', 'buffer', 'absolute', 1, 1000],
- ['cursor_cache_hit_ratio', 'cursor', 'absolute', 1, 1000],
- ['library_cache_hit_ratio', 'library', 'absolute', 1, 1000],
- ['row_cache_hit_ratio', 'row', 'absolute', 1, 1000],
- ]
- },
- 'global_cache_blocks': {
- 'options': [None, 'Global Cache Blocks Events', 'events/s', 'cache', 'oracledb.global_cache_blocks', 'area'],
- 'lines': [
- ['global_cache_blocks_corrupted', 'corrupted', 'incremental', 1, 1000],
- ['global_cache_blocks_lost', 'lost', 'incremental', 1, 1000],
- ]
- },
- 'activity': {
- 'options': [None, 'Activities', 'events/s', 'activities', 'oracledb.activity', 'stacked'],
- 'lines': [
- ['activity_parse_count_total', 'parse count', 'incremental', 1, 1000],
- ['activity_execute_count', 'execute count', 'incremental', 1, 1000],
- ['activity_user_commits', 'user commits', 'incremental', 1, 1000],
- ['activity_user_rollbacks', 'user rollbacks', 'incremental', 1, 1000],
- ]
- },
- 'wait_time': {
- 'options': [None, 'Wait Time', 'ms', 'wait time', 'oracledb.wait_time', 'stacked'],
- 'lines': [
- ['wait_time_application', 'application', 'absolute', 1, 1000],
- ['wait_time_configuration', 'configuration', 'absolute', 1, 1000],
- ['wait_time_administrative', 'administrative', 'absolute', 1, 1000],
- ['wait_time_concurrency', 'concurrency', 'absolute', 1, 1000],
- ['wait_time_commit', 'commit', 'absolute', 1, 1000],
- ['wait_time_network', 'network', 'absolute', 1, 1000],
- ['wait_time_user_io', 'user I/O', 'absolute', 1, 1000],
- ['wait_time_system_io', 'system I/O', 'absolute', 1, 1000],
- ['wait_time_scheduler', 'scheduler', 'absolute', 1, 1000],
- ['wait_time_other', 'other', 'absolute', 1, 1000],
- ]
- },
- 'tablespace_size': {
- 'options': [None, 'Size', 'KiB', 'tablespace', 'oracledb.tablespace_size', 'line'],
- 'lines': [],
- },
- 'tablespace_usage': {
- 'options': [None, 'Usage', 'KiB', 'tablespace', 'oracledb.tablespace_usage', 'line'],
- 'lines': [],
- },
- 'tablespace_usage_in_percent': {
- 'options': [None, 'Usage', '%', 'tablespace', 'oracledb.tablespace_usage_in_percent', 'line'],
- 'lines': [],
- },
- 'allocated_size': {
- 'options': [None, 'Size', 'B', 'tablespace', 'oracledb.allocated_size', 'line'],
- 'lines': [],
- },
- 'allocated_usage': {
- 'options': [None, 'Usage', 'B', 'tablespace', 'oracledb.allocated_usage', 'line'],
- 'lines': [],
- },
- 'allocated_usage_in_percent': {
- 'options': [None, 'Usage', '%', 'tablespace', 'oracledb.allocated_usage_in_percent', 'line'],
- 'lines': [],
- },
-}
-
-CX_CONNECT_STRING_OLD = "{0}/{1}@//{2}/{3}"
-
-QUERY_SYSTEM = '''
-SELECT
- metric_name,
- value
-FROM
- gv$sysmetric
-ORDER BY
- begin_time
-'''
-QUERY_TABLESPACE = '''
-SELECT
- m.tablespace_name,
- m.used_space * t.block_size AS used_bytes,
- m.tablespace_size * t.block_size AS max_bytes,
- m.used_percent
-FROM
- dba_tablespace_usage_metrics m
- JOIN dba_tablespaces t ON m.tablespace_name = t.tablespace_name
-'''
-QUERY_ALLOCATED = '''
-SELECT
- nvl(b.tablespace_name,nvl(a.tablespace_name,'UNKNOWN')) tablespace_name,
- bytes_alloc used_bytes,
- bytes_alloc-nvl(bytes_free,0) max_bytes,
- ((bytes_alloc-nvl(bytes_free,0))/ bytes_alloc)*100 used_percent
-FROM
- (SELECT
- sum(bytes) bytes_free,
- tablespace_name
- FROM sys.dba_free_space
- GROUP BY tablespace_name
- ) a,
- (SELECT
- sum(bytes) bytes_alloc,
- tablespace_name
- FROM sys.dba_data_files
- GROUP BY tablespace_name
- ) b
-WHERE a.tablespace_name (+) = b.tablespace_name
-'''
-QUERY_ACTIVITIES_COUNT = '''
-SELECT
- name,
- value
-FROM
- v$sysstat
-WHERE
- name IN (
- 'parse count (total)',
- 'execute count',
- 'user commits',
- 'user rollbacks'
- )
-'''
-QUERY_WAIT_TIME = '''
-SELECT
- n.wait_class,
- round(m.time_waited / m.INTSIZE_CSEC, 3)
-FROM
- v$waitclassmetric m,
- v$system_wait_class n
-WHERE
- m.wait_class_id = n.wait_class_id
- AND n.wait_class != 'Idle'
-'''
-# QUERY_SESSION_COUNT = '''
-# SELECT
-# status,
-# type
-# FROM
-# v$session
-# GROUP BY
-# status,
-# type
-# '''
-# QUERY_PROCESSES_COUNT = '''
-# SELECT
-# COUNT(*)
-# FROM
-# v$process
-# '''
-# QUERY_PROCESS = '''
-# SELECT
-# program,
-# pga_used_mem,
-# pga_alloc_mem,
-# pga_freeable_mem,
-# pga_max_mem
-# FROM
-# gv$process
-# '''
-
-# PROCESS_METRICS = [
-# 'pga_used_memory',
-# 'pga_allocated_memory',
-# 'pga_freeable_memory',
-# 'pga_maximum_memory',
-# ]
-
-
-SYS_METRICS = {
- 'Average Active Sessions': 'average_active_sessions',
- 'Session Count': 'session_count',
- 'Session Limit %': 'session_limit_percent',
- 'Logons Per Sec': 'logons_per_sec',
- 'Physical Reads Per Sec': 'physical_reads_per_sec',
- 'Physical Writes Per Sec': 'physical_writes_per_sec',
- 'Disk Sort Per Sec': 'disk_sort_per_sec',
- 'Long Table Scans Per Sec': 'long_table_scans_per_sec',
- 'Database Wait Time Ratio': 'database_wait_time_ratio',
- 'Shared Pool Free %': 'shared_pool_free_percent',
- 'Memory Sorts Ratio': 'memory_sorts_ratio',
- 'SQL Service Response Time': 'sql_service_response_time',
- 'User Rollbacks Per Sec': 'user_rollbacks_per_sec',
- 'Enqueue Timeouts Per Sec': 'enqueue_timeouts_per_sec',
- 'Buffer Cache Hit Ratio': 'buffer_cache_hit_ratio',
- 'Cursor Cache Hit Ratio': 'cursor_cache_hit_ratio',
- 'Library Cache Hit Ratio': 'library_cache_hit_ratio',
- 'Row Cache Hit Ratio': 'row_cache_hit_ratio',
- 'Global Cache Blocks Corrupted': 'global_cache_blocks_corrupted',
- 'Global Cache Blocks Lost': 'global_cache_blocks_lost',
-}
-
-
-class Service(SimpleService):
- def __init__(self, configuration=None, name=None):
- SimpleService.__init__(self, configuration=configuration, name=name)
- self.order = ORDER
- self.definitions = deepcopy(CHARTS)
- self.user = configuration.get('user')
- self.password = configuration.get('password')
- self.server = configuration.get('server')
- self.service = configuration.get('service')
- self.protocol = configuration.get('protocol', 'tcps')
- self.alive = False
- self.conn = None
- self.active_tablespaces = set()
-
- def connect(self):
- if self.conn:
- self.conn.close()
- self.conn = None
- if HAS_ORACLE_NEW:
- try:
- self.conn = cx_Oracle.connect(
- f'{self.user}/{self.password}@{self.protocol}://{self.server}/{self.service}')
- except cx_Oracle.DatabaseError as error:
- self.error(error)
- return False
- else:
- try:
- self.conn = cx_Oracle.connect(
- CX_CONNECT_STRING_OLD.format(
- self.user,
- self.password,
- self.server,
- self.service,
- ))
- except cx_Oracle.DatabaseError as error:
- self.error(error)
- return False
-
- self.alive = True
- return True
-
- def reconnect(self):
- return self.connect()
-
- def check(self):
- if not HAS_ORACLE_NEW and not HAS_ORACLE_OLD:
- self.error("'oracledb' package is needed to use oracledb module")
- return False
-
- if not all([
- self.user,
- self.password,
- self.server,
- self.service
- ]):
- self.error("one of these parameters is not specified: user, password, server, service")
- return False
-
- if not self.connect():
- return False
-
- return bool(self.get_data())
-
- def get_data(self):
- if not self.alive and not self.reconnect():
- return None
-
- data = dict()
-
- # SYSTEM
- try:
- rv = self.gather_system_metrics()
- except cx_Oracle.Error as error:
- self.error(error)
- self.alive = False
- return None
- else:
- for name, value in rv:
- if name not in SYS_METRICS:
- continue
- data[SYS_METRICS[name]] = int(float(value) * 1000)
-
- # ACTIVITIES COUNT
- try:
- rv = self.gather_activities_count()
- except cx_Oracle.Error as error:
- self.error(error)
- self.alive = False
- return None
- else:
- for name, amount in rv:
- cleaned = name.replace(' ', '_').replace('(', '').replace(')', '')
- new_name = 'activity_{0}'.format(cleaned)
- data[new_name] = int(float(amount) * 1000)
-
- # WAIT TIME
- try:
- rv = self.gather_wait_time_metrics()
- except cx_Oracle.Error as error:
- self.error(error)
- self.alive = False
- return None
- else:
- for name, amount in rv:
- cleaned = name.replace(' ', '_').replace('/', '').lower()
- new_name = 'wait_time_{0}'.format(cleaned)
- data[new_name] = amount
-
- # TABLESPACE
- try:
- rv = self.gather_tablespace_metrics()
- except cx_Oracle.Error as error:
- self.error(error)
- self.alive = False
- return None
- else:
- for name, offline, size, used, used_in_percent in rv:
- # TODO: skip offline?
- if not (not offline and self.charts):
- continue
- # TODO: remove inactive?
- if name not in self.active_tablespaces:
- self.active_tablespaces.add(name)
- self.add_tablespace_to_charts(name)
- data['{0}_tablespace_size'.format(name)] = int(size * 1000)
- data['{0}_tablespace_used'.format(name)] = int(used * 1000)
- data['{0}_tablespace_used_in_percent'.format(name)] = int(used_in_percent * 1000)
-
- # ALLOCATED SPACE
- try:
- rv = self.gather_allocated_metrics()
- except cx_Oracle.Error as error:
- self.error(error)
- self.alive = False
- return None
- else:
- for name, offline, size, used, used_in_percent in rv:
- # TODO: skip offline?
- if not (not offline and self.charts):
- continue
- # TODO: remove inactive?
- if name not in self.active_tablespaces:
- self.active_tablespaces.add(name)
- self.add_tablespace_to_charts(name)
- data['{0}_allocated_size'.format(name)] = int(size * 1000)
- data['{0}_allocated_used'.format(name)] = int(used * 1000)
- data['{0}_allocated_used_in_percent'.format(name)] = int(used_in_percent * 1000)
-
- return data or None
-
- def gather_system_metrics(self):
-
- """
- :return:
-
- [['Buffer Cache Hit Ratio', 100],
- ['Memory Sorts Ratio', 100],
- ['Redo Allocation Hit Ratio', 100],
- ['User Transaction Per Sec', 0],
- ['Physical Reads Per Sec', 0],
- ['Physical Reads Per Txn', 0],
- ['Physical Writes Per Sec', 0],
- ['Physical Writes Per Txn', 0],
- ['Physical Reads Direct Per Sec', 0],
- ['Physical Reads Direct Per Txn', 0],
- ['Physical Writes Direct Per Sec', 0],
- ['Physical Writes Direct Per Txn', 0],
- ['Physical Reads Direct Lobs Per Sec', 0],
- ['Physical Reads Direct Lobs Per Txn', 0],
- ['Physical Writes Direct Lobs Per Sec', 0],
- ['Physical Writes Direct Lobs Per Txn', 0],
- ['Redo Generated Per Sec', Decimal('4.66666666666667')],
- ['Redo Generated Per Txn', 280],
- ['Logons Per Sec', Decimal('0.0166666666666667')],
- ['Logons Per Txn', 1],
- ['Open Cursors Per Sec', 0.35],
- ['Open Cursors Per Txn', 21],
- ['User Commits Per Sec', 0],
- ['User Commits Percentage', 0],
- ['User Rollbacks Per Sec', 0],
- ['User Rollbacks Percentage', 0],
- ['User Calls Per Sec', Decimal('0.0333333333333333')],
- ['User Calls Per Txn', 2],
- ['Recursive Calls Per Sec', 14.15],
- ['Recursive Calls Per Txn', 849],
- ['Logical Reads Per Sec', Decimal('0.683333333333333')],
- ['Logical Reads Per Txn', 41],
- ['DBWR Checkpoints Per Sec', 0],
- ['Background Checkpoints Per Sec', 0],
- ['Redo Writes Per Sec', Decimal('0.0333333333333333')],
- ['Redo Writes Per Txn', 2],
- ['Long Table Scans Per Sec', 0],
- ['Long Table Scans Per Txn', 0],
- ['Total Table Scans Per Sec', Decimal('0.0166666666666667')],
- ['Total Table Scans Per Txn', 1],
- ['Full Index Scans Per Sec', 0],
- ['Full Index Scans Per Txn', 0],
- ['Total Index Scans Per Sec', Decimal('0.216666666666667')],
- ['Total Index Scans Per Txn', 13],
- ['Total Parse Count Per Sec', 0.35],
- ['Total Parse Count Per Txn', 21],
- ['Hard Parse Count Per Sec', 0],
- ['Hard Parse Count Per Txn', 0],
- ['Parse Failure Count Per Sec', 0],
- ['Parse Failure Count Per Txn', 0],
- ['Cursor Cache Hit Ratio', Decimal('52.3809523809524')],
- ['Disk Sort Per Sec', 0],
- ['Disk Sort Per Txn', 0],
- ['Rows Per Sort', 8.6],
- ['Execute Without Parse Ratio', Decimal('27.5862068965517')],
- ['Soft Parse Ratio', 100],
- ['User Calls Ratio', Decimal('0.235017626321974')],
- ['Host CPU Utilization (%)', Decimal('0.124311845142959')],
- ['Network Traffic Volume Per Sec', 0],
- ['Enqueue Timeouts Per Sec', 0],
- ['Enqueue Timeouts Per Txn', 0],
- ['Enqueue Waits Per Sec', 0],
- ['Enqueue Waits Per Txn', 0],
- ['Enqueue Deadlocks Per Sec', 0],
- ['Enqueue Deadlocks Per Txn', 0],
- ['Enqueue Requests Per Sec', Decimal('216.683333333333')],
- ['Enqueue Requests Per Txn', 13001],
- ['DB Block Gets Per Sec', 0],
- ['DB Block Gets Per Txn', 0],
- ['Consistent Read Gets Per Sec', Decimal('0.683333333333333')],
- ['Consistent Read Gets Per Txn', 41],
- ['DB Block Changes Per Sec', 0],
- ['DB Block Changes Per Txn', 0],
- ['Consistent Read Changes Per Sec', 0],
- ['Consistent Read Changes Per Txn', 0],
- ['CPU Usage Per Sec', 0],
- ['CPU Usage Per Txn', 0],
- ['CR Blocks Created Per Sec', 0],
- ['CR Blocks Created Per Txn', 0],
- ['CR Undo Records Applied Per Sec', 0],
- ['CR Undo Records Applied Per Txn', 0],
- ['User Rollback UndoRec Applied Per Sec', 0],
- ['User Rollback Undo Records Applied Per Txn', 0],
- ['Leaf Node Splits Per Sec', 0],
- ['Leaf Node Splits Per Txn', 0],
- ['Branch Node Splits Per Sec', 0],
- ['Branch Node Splits Per Txn', 0],
- ['PX downgraded 1 to 25% Per Sec', 0],
- ['PX downgraded 25 to 50% Per Sec', 0],
- ['PX downgraded 50 to 75% Per Sec', 0],
- ['PX downgraded 75 to 99% Per Sec', 0],
- ['PX downgraded to serial Per Sec', 0],
- ['Physical Read Total IO Requests Per Sec', Decimal('2.16666666666667')],
- ['Physical Read Total Bytes Per Sec', Decimal('35498.6666666667')],
- ['GC CR Block Received Per Second', 0],
- ['GC CR Block Received Per Txn', 0],
- ['GC Current Block Received Per Second', 0],
- ['GC Current Block Received Per Txn', 0],
- ['Global Cache Average CR Get Time', 0],
- ['Global Cache Average Current Get Time', 0],
- ['Physical Write Total IO Requests Per Sec', Decimal('0.966666666666667')],
- ['Global Cache Blocks Corrupted', 0],
- ['Global Cache Blocks Lost', 0],
- ['Current Logons Count', 49],
- ['Current Open Cursors Count', 64],
- ['User Limit %', Decimal('0.00000114087015416959')],
- ['SQL Service Response Time', 0],
- ['Database Wait Time Ratio', 0],
- ['Database CPU Time Ratio', 0],
- ['Response Time Per Txn', 0],
- ['Row Cache Hit Ratio', 100],
- ['Row Cache Miss Ratio', 0],
- ['Library Cache Hit Ratio', 100],
- ['Library Cache Miss Ratio', 0],
- ['Shared Pool Free %', Decimal('7.82380268491548')],
- ['PGA Cache Hit %', Decimal('98.0399767109115')],
- ['Process Limit %', Decimal('17.6666666666667')],
- ['Session Limit %', Decimal('15.2542372881356')],
- ['Executions Per Txn', 29],
- ['Executions Per Sec', Decimal('0.483333333333333')],
- ['Txns Per Logon', 0],
- ['Database Time Per Sec', 0],
- ['Physical Write Total Bytes Per Sec', 15308.8],
- ['Physical Read IO Requests Per Sec', 0],
- ['Physical Read Bytes Per Sec', 0],
- ['Physical Write IO Requests Per Sec', 0],
- ['Physical Write Bytes Per Sec', 0],
- ['DB Block Changes Per User Call', 0],
- ['DB Block Gets Per User Call', 0],
- ['Executions Per User Call', 14.5],
- ['Logical Reads Per User Call', 20.5],
- ['Total Sorts Per User Call', 2.5],
- ['Total Table Scans Per User Call', 0.5],
- ['Current OS Load', 0.0390625],
- ['Streams Pool Usage Percentage', 0],
- ['PQ QC Session Count', 0],
- ['PQ Slave Session Count', 0],
- ['Queries parallelized Per Sec', 0],
- ['DML statements parallelized Per Sec', 0],
- ['DDL statements parallelized Per Sec', 0],
- ['PX operations not downgraded Per Sec', 0],
- ['Session Count', 72],
- ['Average Synchronous Single-Block Read Latency', 0],
- ['I/O Megabytes per Second', 0.05],
- ['I/O Requests per Second', Decimal('3.13333333333333')],
- ['Average Active Sessions', 0],
- ['Active Serial Sessions', 1],
- ['Active Parallel Sessions', 0],
- ['Captured user calls', 0],
- ['Replayed user calls', 0],
- ['Workload Capture and Replay status', 0],
- ['Background CPU Usage Per Sec', Decimal('1.22578833333333')],
- ['Background Time Per Sec', 0.0147551],
- ['Host CPU Usage Per Sec', Decimal('0.116666666666667')],
- ['Cell Physical IO Interconnect Bytes', 3048448],
- ['Temp Space Used', 0],
- ['Total PGA Allocated', 200657920],
- ['Total PGA Used by SQL Workareas', 0],
- ['Run Queue Per Sec', 0],
- ['VM in bytes Per Sec', 0],
- ['VM out bytes Per Sec', 0]]
- """
-
- metrics = list()
- with self.conn.cursor() as cursor:
- cursor.execute(QUERY_SYSTEM)
- for metric_name, value in cursor.fetchall():
- metrics.append([metric_name, value])
- return metrics
-
- def gather_tablespace_metrics(self):
- """
- :return:
-
- [['SYSTEM', 874250240.0, 3233169408.0, 27.040038107400033, 0],
- ['SYSAUX', 498860032.0, 3233169408.0, 15.429443033997678, 0],
- ['TEMP', 0.0, 3233177600.0, 0.0, 0],
- ['USERS', 1048576.0, 3233169408.0, 0.03243182981397305, 0]]
- """
- metrics = list()
- with self.conn.cursor() as cursor:
- cursor.execute(QUERY_TABLESPACE)
- for tablespace_name, used_bytes, max_bytes, used_percent in cursor.fetchall():
- if used_bytes is None:
- offline = True
- used = 0
- else:
- offline = False
- used = float(used_bytes)
- if max_bytes is None:
- size = 0
- else:
- size = float(max_bytes)
- if used_percent is None:
- used_percent = 0
- else:
- used_percent = float(used_percent)
- metrics.append(
- [
- tablespace_name,
- offline,
- size,
- used,
- used_percent,
- ]
- )
- return metrics
-
- def gather_allocated_metrics(self):
- """
- :return:
-
- [['SYSTEM', 874250240.0, 3233169408.0, 27.040038107400033, 0],
- ['SYSAUX', 498860032.0, 3233169408.0, 15.429443033997678, 0],
- ['TEMP', 0.0, 3233177600.0, 0.0, 0],
- ['USERS', 1048576.0, 3233169408.0, 0.03243182981397305, 0]]
- """
- metrics = list()
- with self.conn.cursor() as cursor:
- cursor.execute(QUERY_ALLOCATED)
- for tablespace_name, used_bytes, max_bytes, used_percent in cursor.fetchall():
- if used_bytes is None:
- offline = True
- used = 0
- else:
- offline = False
- used = float(used_bytes)
- if max_bytes is None:
- size = 0
- else:
- size = float(max_bytes)
- if used_percent is None:
- used_percent = 0
- else:
- used_percent = float(used_percent)
- metrics.append(
- [
- tablespace_name,
- offline,
- size,
- used,
- used_percent,
- ]
- )
- return metrics
-
- def gather_wait_time_metrics(self):
- """
- :return:
-
- [['Other', 0],
- ['Application', 0],
- ['Configuration', 0],
- ['Administrative', 0],
- ['Concurrency', 0],
- ['Commit', 0],
- ['Network', 0],
- ['User I/O', 0],
- ['System I/O', 0.002],
- ['Scheduler', 0]]
- """
- metrics = list()
- with self.conn.cursor() as cursor:
- cursor.execute(QUERY_WAIT_TIME)
- for wait_class_name, value in cursor.fetchall():
- metrics.append([wait_class_name, value])
- return metrics
-
- def gather_activities_count(self):
- """
- :return:
-
- [('user commits', 9104),
- ('user rollbacks', 17),
- ('parse count (total)', 483695),
- ('execute count', 2020356)]
- """
- with self.conn.cursor() as cursor:
- cursor.execute(QUERY_ACTIVITIES_COUNT)
- return cursor.fetchall()
-
- # def gather_process_metrics(self):
- # """
- # :return:
- #
- # [['PSEUDO', 'pga_used_memory', 0],
- # ['PSEUDO', 'pga_allocated_memory', 0],
- # ['PSEUDO', 'pga_freeable_memory', 0],
- # ['PSEUDO', 'pga_maximum_memory', 0],
- # ['oracle@localhost.localdomain (PMON)', 'pga_used_memory', 1793827],
- # ['oracle@localhost.localdomain (PMON)', 'pga_allocated_memory', 1888651],
- # ['oracle@localhost.localdomain (PMON)', 'pga_freeable_memory', 0],
- # ['oracle@localhost.localdomain (PMON)', 'pga_maximum_memory', 1888651],
- # ...
- # ...
- # """
- #
- # metrics = list()
- # with self.conn.cursor() as cursor:
- # cursor.execute(QUERY_PROCESS)
- # for row in cursor.fetchall():
- # for i, name in enumerate(PROCESS_METRICS, 1):
- # metrics.append([row[0], name, row[i]])
- # return metrics
-
- # def gather_processes_count(self):
- # with self.conn.cursor() as cursor:
- # cursor.execute(QUERY_PROCESSES_COUNT)
- # return cursor.fetchone()[0] # 53
-
- # def gather_sessions_count(self):
- # with self.conn.cursor() as cursor:
- # cursor.execute(QUERY_SESSION_COUNT)
- # total, active, inactive = 0, 0, 0
- # for status, _ in cursor.fetchall():
- # total += 1
- # active += status == 'ACTIVE'
- # inactive += status == 'INACTIVE'
- # return [total, active, inactive]
-
- def add_tablespace_to_charts(self, name):
- self.charts['tablespace_size'].add_dimension(
- [
- '{0}_tablespace_size'.format(name),
- name,
- 'absolute',
- 1,
- 1024 * 1000,
- ])
- self.charts['tablespace_usage'].add_dimension(
- [
- '{0}_tablespace_used'.format(name),
- name,
- 'absolute',
- 1,
- 1024 * 1000,
- ])
- self.charts['tablespace_usage_in_percent'].add_dimension(
- [
- '{0}_tablespace_used_in_percent'.format(name),
- name,
- 'absolute',
- 1,
- 1000,
- ])
- self.charts['allocated_size'].add_dimension(
- [
- '{0}_allocated_size'.format(name),
- name,
- 'absolute',
- 1,
- 1000,
- ])
- self.charts['allocated_usage'].add_dimension(
- [
- '{0}_allocated_used'.format(name),
- name,
- 'absolute',
- 1,
- 1000,
- ])
- self.charts['allocated_usage_in_percent'].add_dimension(
- [
- '{0}_allocated_used_in_percent'.format(name),
- name,
- 'absolute',
- 1,
- 1000,
- ])