对于常规数据库的运维监控来说,如何能够快速简洁的发现问题,直达问题本质并解决常见问题,是 Bethune 的安身立命之本。
简约,优雅,专业,直抵本心,这是用户对 Bethune 的评价。

Bethune X 功能强大,许多特性能够很好地解决DBA日常运维中遇到的问题,本文选取几个场景,介绍如何利用 Bethune X 为你的数据库多添一道保障!

阅读提示:

Part 1:通过空间监控功能分析 AUD$ 的空间

Part 2:通过下钻功能探查数据库深层问题

Part 3:通过SQL自定义监控实现主机日志监控

在Bethune的监控中,针对表空间的空间增长,具有一个曲线监控展示,用于显示空间都变化趋势。例如如下视图,展示了SYSTEM表空间高达 87%的空间被 AUD$ 占用:AUD$ 存储的是数据库的审计信息,已经占用了 8G 的存储空间,如果这些信息不被使用,可以考虑通过TRUNCATE清除:

SQL> select segment_name,bytes/1024/1024 MB from dba_segments where segment_name='AUD$';

SEGMENT_NAME                   MB------------------------------ ----------AUD$                     8154

SQL> truncate table sys.aud$;

Table truncated.

SQL> select segment_name,bytes/1024/1024 MB from dba_segments where segment_name='AUD$';

SEGMENT_NAME                   MB------------------------------ ----------AUD$                    .0625

这个数据库版本是 11.2.0.4 ,清理空间之后,Bethune 的空间展示变化如下图所示:Bethune ,空间展示还可以更进一步!在 Bethune 的监控预警中,当问题具有可追溯性时,在告警右侧就会有一个可点击的小图标,帮助我们进一步分析问题。下图中,系统监控发现了长事务,对于OLTP系统,长时间运行的 DML 操作是必须要要多加关注的:进一步的点击追溯,系统会呈现出详细的信息,例如用户和SQL信息等:点击SQLID,就进入了SQL和执行计划页面。一目了然的可以看到这个 DELETE 语句,因为全表扫描的执行计划而执行缓慢,极度影响性能:事实上,到这里 Bethune 就已经完成了整个问题的预警、根因追溯。接下来就应该是 DBA 们大显身手的地方了。注意:监控是发现问题的手段,而如何解决问题,解决问题的时间,则要由 DBA 来决策和抉择。DBA 可以根据数据和查询字段的选择性,来判断是否可以通过创建索引提高效率。
并且,不能在业务高峰期间进行索引创建操作,避免引发系统竞争。

SQL> select count(*) from TP_SYS_FIELDHISTORY;

  COUNT(*)----------   2430863

SQL> select count(distinct(RECORDID)) from CUST_U_ENMOTECH.TP_SYS_FIELDHISTORY;

COUNT(DISTINCT(RECORDID))-------------------------          1944293

SQL> explain plan for delete from tp_sys_fieldhistory where recordid=:"SYS_B_0"  2  ;

Explained.

SQL> set serveroutput on

SQL> select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 2894643821

------------------------------------------------------------------------------------------| Id  | Operation       | Name        | Rows  | Bytes | Cost (%CPU)| Time     |------------------------------------------------------------------------------------------|   0 | DELETE STATEMENT   |             |     1 |    42 | 10379   (1)| 00:02:05 ||   1 |  DELETE        | TP_SYS_FIELDHISTORY |   |   |        |      ||*  2 |   TABLE ACCESS FULL| TP_SYS_FIELDHISTORY |     1 |    42 | 10379   (1)| 00:02:05 |------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):---------------------------------------------------

   2 - filter("RECORDID"=:SYS_B_0)

14 rows selected.

SQL> create index idx_tpsys_fldhist_rcd on TP_SYS_FIELDHISTORY(RECORDID) compute statistics;

Index created.

SQL> explain plan for delete from tp_sys_fieldhistory where recordid=:"SYS_B_0";

Explained.

SQL> select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 3460354814

-------------------------------------------------------------------------------------------| Id  | Operation      | Name          | Rows  | Bytes | Cost (%CPU)| Time     |-------------------------------------------------------------------------------------------|   0 | DELETE STATEMENT  |              | 1 |    42 | 3   (0)| 00:00:01 ||   1 |  DELETE       | TP_SYS_FIELDHISTORY   |   |   |        |      ||*  2 |   INDEX RANGE SCAN| IDX_TPSYS_FLDHIST_RCD |    1 |    42 | 3   (0)| 00:00:01 |-------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):---------------------------------------------------

   2 - access("RECORDID"=:SYS_B_0)

从以上的测试效果来看,通过一个索引的创建,原SQL的成本降低到3,效率大大提升。Bethune 在下一个版本中,将完全实现到创建之前的所有建议,实现智能化的索引推荐。Bethune X 支持 SQL 自定义监控,通过添加一个SQL采集任务,配置告警策略来实现数据库内数据的监控。对于日志,Bethune X 已经预设了Oracle alert 日志监控:除了Oracle的alert 日志,其他日志可以通过添加Oracle 外部表的方式实现监控,以下例子就是实现了Linux 上secure 日志监控的配置过程。


第一步:必要的赋权

在root 用户下将/var/log/secure 的读权限给到Oracle 用户:

chmod 744 /var/log/secure

第二步:创建外部表登陆到 Oracle 数据库创建 directory,确保 数据库能够读取该路径下的日志:/var/log/

create or replace directory var_log as '/var/log’;

如果外部表不在sys底下创建,则需要对该目录进行赋权,例如在BP_QUERY下创建外部表,则需要将该目录读写权限赋权给BP_QUERY用户:

grant read,write on directory var_log to BP_QUERY;

以/var/log/secure 日志文件创建外部表,这个外部表只有一个字段,每行日志一行数据:

CREATE TABLE secure_log( text varchar2(4000))ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER  DEFAULT DIRECTORY var_log  ACCESS PARAMETERS    (RECORDS DELIMITED BY NEWLINE     nobadfile     nodiscardfile     nologfile    )  LOCATION ('secure') ) reject limit unlimited ;

创建好之后可以测试一下改外部表是否创建成功:

select * from secure_log where rownum<10

将该读权限赋给Bethune X 采集用户:BP_QUERY。如果这个外部表是在BP_QUERY用户下创建则不用:

grant select on secure_log to BP_QUERY;

第三步:添加SQL自定义采集任务在Bethune X 设置/采集任务配置 里面添加一个SQL类的采集任务。示例图如下:
采集任务选择Oracle,采集频率按需配置。SQL 脚本我用 instr+substr+to_date 的方式把日志里面的日期部分转成了Oracle 可以识别的日期,并做了最近一小时的限定(>sysdate-1/24)。配置好SQL脚本之后,需要选择相应的数据库进行测试,因为我们是在Enmotech 这个数据库上做的这个外部表,所以选择Enmotech 作为测试数据库,测试通过的数据库才能启动这个采集项。

第四步:创建告警策略,添加到模板,使用到目标数据库

保存好采集任务之后,在告警策略里针对这个数据采集项:「安全日志外部采集」创建告警策略。监控类型选择「数据库」—>「Oracle」—>「自定义」;SQL 自定义采集任务通过对采集SQL返回的字段进行规则配置。这儿我们返回了通过日志截取转化的时间字段「log_date」和内容字段「text」;
这儿我们对「TEXT 」字段进行规则配置,利用like 表达式做全模糊查询,包含这段关键字的日志都会触发该告警规则。告警模板的配置,需要通过变量的方式将主机名,数据名等预设变量和字段变量加入到告警模板里。字段变量需要用 ${字段名} 的方式包起来,配置方式可以数据悬停告警模板旁边的 i 展示出来。配置好告警策略后,配置到相应的模板,再把相应的库配置上该告警策略。如果触发了告警,就可以在 控制台/告警看板 里面看到该告警。也可以在「数据库详情」页面最近告警里面看到告警信息。


以上就是利用 Oracle 外部表+Bethune X 自定义 SQL 监控的方式实现主机日志监控的一个例子。总结一下:
1.通过赋权让Oracle用户有权限读取日志的权限;
2.创建外部表,让Oracle 数据库能访问该日志;
3.在Bethune X 里面创建采集任务,并保证目标数据库的采集任务能测试成功;
4.针对这个采集任务创建个告警策略,添加到模板里面,应用到数据库上。2020 ,对你的 DBA 好一点,一套 Bethune ,交个好朋友!数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨是全球化数据资产端到端解决方案提供商,致力于将数据思维带给每个组织、每个人,构建数据驱动的智能未来。我们在数据服务、运维平台、数据智能、教育培训等领域为企业和个人提供可信赖的产品、解决方案和服务,与业界厂商广泛合作,围绕用户需求,持续为客户创造价值、为行业培养人才,激发数据潜能,为成就未来数字化企业和数据人才而不懈努力。

云和恩墨坚持围绕数据时代客户面临的挑战持续创新,不断加大研发投入,持续完善贯穿业务智能、开发管控、云管平台、分布式存储和基础运维的端到端产品和服务,助力企业和个人成功。

打开数据库_打开这份指南,数据库运维也能优雅、简单!相关推荐

  1. 超大Sql文件_超大文件_mysql数据导入到mycat数据库_亲测好用---Linux运维工作笔记053

    对于mycat数据导入,最近一直在研究,因为有个客户的mysql数据库中,单表数据已经30多个GB, 存了上亿条的数据. 查询速度远远跟不上需求了,这个时候,我做了一个mycat集群,用了22台cen ...

  2. mysql 新增从数据库_从零开始学 MySQL - 创建数据库并插入数据

    目录 1.实验内容 2.实验知识点 3.开发准备 4.实验总结 1.实验内容 本次课程将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识.本节实验将创建一个名为 mysql_s ...

  3. python如何收集数据库_利用Python操作mysql数据库

    本文主要讲解如何利用python中的pymysql库来对mysql数据库进行操作 大家在转行项目中也可以加入这一步操作,提高逼格的同时还能简化流程 正文开始: 先看一下最常见的操作:从数据库中sele ...

  4. RMAN备份数据库_为长期存储做数据库备份(归档备份,Archival Backup)

    1.归档备份的目的 可以使用BACKUP - KEEP来创建一个包含所有的(all-inclusive)和不受备份保留策略约束的备份. 备份是包含所有的,因为每个需要还原和恢复数据库的文件都备份到一个 ...

  5. wordpress 数据库_在WordPress中使用数据库

    wordpress 数据库 Out of the box, WordPress provides tons of functions that can be used to interact with ...

  6. 将sql数据导入mysql数据库_将sql导入mysql数据库

    MYSQL导入导出.sql文件 MYSQL导入导出.sql文件 一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=": ...

  7. toad创建mysql数据库_利用Toad管理本地数据库

    利用Toad管理本地数据库,相对于使用sqlplus来说,要更加直观和方便,而且,更容易操作一些,对于某些大的表格,查询结果一目了然 利用Toad管理本地数据库,相对于使用sqlplus来说,要更加直 ...

  8. 怎么用python写数据库_如何使用python对数据库(mysql)进行操作

    一.数据库基本操作 1. 想允许在数据库写中文,可在创建数据库时用下面命令create database zcl charset utf8; 2. 查看students表结构desc students ...

  9. jdbc连接云数据库mysql数据库_使用jdbc连接mysql数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. Cookies工作原理
  2. linux数组删除数据,JavaScript在数组的循环中删除元素
  3. docker网络集群
  4. 从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码)
  5. python 窗口 网页 访问_同事用Python操控浏览器运行,引的妹子围观不止!
  6. 别人叫我程序猿,我称自己攻城狮。没日没夜写代码,不知何日涨工资?
  7. php计划任务 框架,计划任务的使用 ThinkCMF内容管理框架,做最简约的ThinkPHP开源软件...
  8. spring 多数据源 总结
  9. 中国开放教育资源协会_教育中的开放数据开始显示出真正的吸引力
  10. php array 删除末尾,PHP array_pop():删除数组末尾的元素
  11. 计算机主机箱的拆卸步骤,一种方便拆卸的计算机主机箱的制作方法
  12. 权限数据库设计(Sql Server)
  13. 重写弹幕射击游戏的记录
  14. 国内银行CNAPS CODE 查询
  15. 两个小米路由器mini无线桥接
  16. Matlab学习1-图像处理灰度
  17. 网络邻居没有查看工作组计算机,解决Windows 10 系统看不到网上邻居工作组里的其他计算机-win7网上邻居...
  18. UIkit之滚动监听+动画特效
  19. python ip地址处理_Python学习笔记-IP地址处理模块Ipy
  20. 如何注册和设置 zoom Background

热门文章

  1. python socketio_python3--socketIO_client 摸索怕坑指南
  2. 计算机无法播放,如果无法播放计算机mp4文件怎么办?
  3. linux python2.7 scipy_scipy.sparse.linalg.sp为Linux系统上的大型稀疏矩阵解决了令人惊讶的行为...
  4. [转载] Java字符串分割方法
  5. osi模型:七层模型介绍_联网| OSI模型能力问题和解答 套装1
  6. linux查看磁盘io带宽,[Linux] 磁盘IO性能查看和优化以及iostat命令
  7. webapi随机调用_BeetleX之webapi验证插件JWT集成
  8. 计算机应用基础专2020春,计算机应用基础(专)(专,2020春)(20200831130023).pdf
  9. linux定位哪个进程出发重启,定位Linux下定位进程被谁KILL
  10. 40 个 SpringBoot 常用注解:让生产力爆表!