master
go 58 lines 1.1 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package oracledb
4
5 import (
6 "fmt"
7 "strconv"
8 )
9
10 const querySysStat = `
11 SELECT
12 name,
13 value
14 FROM
15 v$sysstat
16 WHERE
17 name IN (
18 'enqueue timeouts',
19 'table scans (long tables)',
20 'table scans (short tables)',
21 'sorts (disk)',
22 'sorts (memory)',
23 'physical write bytes',
24 'physical read bytes',
25 'physical writes',
26 'physical reads',
27 'logons cumulative',
28 'logons current',
29 'parse count (total)',
30 'execute count',
31 'user commits',
32 'user rollbacks'
33 )
34 `
35
36 func (c *Collector) collectSysStat(mx map[string]int64) error {
37 q := querySysStat
38 c.Debugf("executing query: %s", q)
39
40 var name, val string
41
42 return c.doQuery(q, func(column, value string, lineEnd bool) error {
43 switch column {
44 case "NAME":
45 name = value
46 case "VALUE":
47 val = value
48 }
49 if lineEnd {
50 v, err := strconv.ParseInt(val, 10, 64)
51 if err != nil {
52 return fmt.Errorf("could not parse activity '%s' value '%s': %w", name, val, err)
53 }
54 mx[name] = v
55 }
56 return nil
57 })
58 }