Grafana监控Oracle数据库的表大小等信息


方案

oracledb_exporter
以及
prometheus
grafana

使用的SQL以及配置文件

[[metric]]
context = "table_sizeinfo"
labels = [ "table_nameinfo","table_tablespace"  ]
metricsdesc = { table_rownum = "table row num" , table_colnum = "table col num.", table_size = "table size num" }
request = '''
SELECT
    x.table_name AS table_nameinfo,
    x.表行数 AS table_rownum,
    x.表列数 AS table_colnum,
    y.表大小 AS table_size ,
    x.table_tablespace as table_tablespace
FROM
    (
    SELECT
        b.table_name,
        a.num_rows AS 表行数,
        b.count1 AS 表列数 ,
                                a.TABLESPACE_name as table_tablespace
    FROM
        dba_tables a
        INNER JOIN ( SELECT table_name, count( column_name ) AS count1 FROM dba_tab_columns GROUP BY table_name ) b ON a.table_name = b.table_name
    ORDER BY
        b.table_name
    ) x LEFT outer
    JOIN (
    SELECT
        sum( tablesize ) AS 表大小,
        tablename
    FROM
        (
        SELECT
            sum( C.bytes ) / 1024 / 1024 AS tablesize,
            C.table_name AS tablename
        FROM
            ( SELECT A.table_name, B.bytes FROM dba_lobs A, dba_extents B WHERE A.segment_name = B.segment_name ) C
        GROUP BY
            C.table_name UNION ALL
        SELECT
            sum( bytes ) / 1024 / 1024 AS tablesize,
            segment_name AS tablename
        FROM
            dba_extents
        WHERE
            segment_type = 'TABLE'
        GROUP BY
            segment_name
        )
    GROUP BY
        tablename
    ORDER BY
        1 DESC
    ) y ON x.table_name = y.tablename
ORDER BY
    nvl(y.表大小,0) desc FETCH NEXT 10 ROWS ONLY

grafana增加panel的处理

第一步: 新建一个dashboard 选择 Add Visualization 
第二步: 选择数据源; 选择prometheus
第三步: 保存dashboard 可以修改一个名字, 比如Oracle表信息测试. 
第四步: 点击设置. 可以增加变量, 用于实现识别prometheus的信息内容 
       注意 因为我们选用的是oracledb_exporter的组件. 所以可以使用如下方式
       host  label_values(oracledb_up,instance)
       方式为query ; 来源是prometheus ; instance 值是 oracledb_up 
       注意 值可以从 metrics 里面获取. 

第五步: 编辑panel 增加三个Query 
        根据第一步新增加的 查询 metrics 桑一般为:
        oracledb_table_sizeinfo_table_colnum
        oracledb_table_sizeinfo_table_rownum
        oracledb_table_sizeinfo_table_size
        注意命名规范为  oracledb_metricsname_metrics_desc 

        注意, 需要再 Options 处进行修改
        注意 format 选择为 table type 选择为 instant


第五步: 编辑Query旁边的Transform
       因为我们有三个指标, 所以第一个必须选择 merge 的transform

       第二个 选择Group by 组件
       注意 表空间和表名都选择 group by 的方式 
       然后三个结果 建议选择 max 如果想确保周期内的大小变化值 
    

       第三个 增加 organize fields 的组件, 可以修改列的名称 便于分析查看

第六步: 保存

这个界面暂时无法获取较早的结果值, 需要再分析一下.