最好用的数据库监控工具和数据库知识

article/2025/10/26 6:04:50

数据库监控的目的?

数据库监控的主要目标是确保数据在需要时是可用的。这听起来很简单,但实际操作却相当复杂,部分原因在于组件的数量和种类。从硬件到软件,数据库监控工具必须始终确保所有组件都是可用的,并且在正常范围内运行。如今,每个企业和组织发展都需要依赖大量的数据,数据也成为了企业最有价值的资产。为了让数据发挥最大的价值,通常我们都会采用数据库监控工具。

数据库需要监控哪些内容? 

数据库最基本的元素是它所运行的硬件。就像任何一台计算机一样,这些硬件有很多可调整的参数。例如,我们需要考虑 CPU负载、可用内存或处理器核心温度。实际上,监控数据库服务器与监控其他服务器没有什么不同。需要监控的下一个组件是底层操作系统。有些数据库运行在 Windows 上,有些运行在 Linux 或其他 Unix 发行版上。无论是什么操作系统,都有几个重要的参数需要监控,例如磁盘空间或磁盘使用情况。就像硬件一样,操作系统级别的数据库监控与其他类型的监控也没有什么不同。

最后是对实际数据库的监控。从本质上说,数据库只是运行在服务器上的另一款软件。因此,最基本的监控就是要确保这款软件一直处于运行状态。但大多数工具的意义远不止于此,有些会检查数据库的结构,有些会测量数据库的响应时间,有些甚至可以执行测试用的存储过程。

本文将为大家介绍 6 款最好用的数据库监控工具。在开始介绍这些工具之前,我们先简要介绍一下数据库监控的语句知识!

数据库会存在temp表空间(查询temp表空间和使用情况时需要单独的脚本)

select d.tablespace_name,

space "sum_space(m)",

blocks sum_blocks,

used_space "used_space(m)",

round(nvl(used_space, 0) / space * 100, 2) "used_rate(%)",

nvl(free_space, 0) "free_space(m)"

from (select tablespace_name,

round(sum(bytes) / (1024 * 1024), 2) space,

sum(blocks) blocks

from dba_temp_files

group by tablespace_name) d,

(select tablespace_name,

round(sum(bytes_used) / (1024 * 1024), 2) used_space,

round(sum(bytes_free) / (1024 * 1024), 2) free_space

from v$temp_space_header

group by tablespace_name) f

where d.tablespace_name = f.tablespace_name(+)

TABLESPACE_NAME sum_space(m) SUM_BLOCKS used_space(m) used_rate(%) free_space(m)

但这种情况并不能表示目前临时表空间的使用情况,比如某临时表空间已经使用了100%,该操作完毕后,临时表空间的HWM标志没有被回收,所以如果想知道当前的临时表空间使用,需要通过v$sort_usgae来确定:

select sum(blocks*8192)/1024/1024 from v$sort_usage;

临时表空间,请查询DBA_TEMP_FREE_SPACE

SELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS "FREE SPACE(M)"

  FROM DBA_TEMP_FREE_SPACE

WHERE TABLESPACE_NAME = '&tablespace_name';

临时表空间,请查询DBA_TEMP_FILES

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"

  FROM DBA_TEMP_FILES

WHERE TABLESPACE_NAME = '&tablespace_name';

为空间不足的表空间增加数据文件

ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' SIZE 2G;

注:如果要为临时表空间扩容,使用下面的语句

ALTER TABLESPACE &tablespace_name ADD TEMPFILE '&datafile_name' SIZE 2G;

也可以修改数据文件的大小

Oracle 查看表空间的大小及使用情况sql语句

注意存在表空间不存在于dba_free_space 中(可能是因为表空间过大已爆掉)

--1、查看表空间的名称及大小 

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 

FROM dba_tablespaces t, dba_data_files d 

WHERE t.tablespace_name = d.tablespace_name 

GROUP BY t.tablespace_name; 

--2、查看表空间物理文件的名称及大小 

SELECT tablespace_name, 

file_id, 

file_name, 

round(bytes / (1024 * 1024), 0) total_space 

FROM dba_data_files 

ORDER BY tablespace_name; 

--3、查看回滚段名称及大小 

SELECT segment_name, 

tablespace_name, 

r.status, 

(initial_extent / 1024) initialextent, 

(next_extent / 1024) nextextent, 

max_extents, 

v.curext curextent 

FROM dba_rollback_segs r, v$rollstat v 

WHERE r.segment_id = v.usn(+) 

ORDER BY segment_name; 

--4、查看控制文件 

SELECT NAME FROM v$controlfile; 

--5、查看日志文件 

SELECT MEMBER FROM v$logfile; 

--6、查看表空间的使用情况 

SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 

FROM dba_free_space 

GROUP BY tablespace_name; 

SELECT a.tablespace_name, 

a.bytes total, 

b.bytes used, 

c.bytes free, 

(b.bytes * 100) / a.bytes "% USED ", 

(c.bytes * 100) / a.bytes "% FREE " 

FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 

WHERE a.tablespace_name = b.tablespace_name 

AND a.tablespace_name = c.tablespace_name; 

--7、查看数据库库对象 

SELECT owner, object_type, status, COUNT(*) count# 

FROM all_objects 

GROUP BY owner, object_type, status; 

--8、查看数据库的版本  

SELECT version 

FROM product_component_version 

WHERE substr(product, 1, 6) = 'Oracle'; 

--9、查看数据库的创建日期和归档方式 

SELECT created, log_mode, log_mode FROM v$database; 

--1G=1024MB 

--1M=1024KB 

--1K=1024Bytes 

--1M=11048576Bytes 

--1G=1024*11048576Bytes=11313741824Bytes 

SELECT a.tablespace_name "表空间名", 

total "表空间大小", 

free "表空间剩余大小", 

(total - free) "表空间使用大小", 

total / (1024 * 1024 * 1024) "表空间大小(G)", 

free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 

(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 

round((total - free) / total, 4) * 100 "使用率 %" 

FROM (SELECT tablespace_name, SUM(bytes) free 

FROM dba_free_space 

GROUP BY tablespace_name) a, 

(SELECT tablespace_name, SUM(bytes) total 

FROM dba_data_files 

GROUP BY tablespace_name) b 

WHERE a.tablespace_name = b.tablespace_name 

我们找到了目前市场上最好用的数据库监控工具,这些产品中大多数都是付费产品,但也有免费试用版。

  1. PIGOSS的BSM数据库监控软件

 PIGOSS的BSM监控管理工具中的数据库模块,提供了几乎涵盖所有类型数据库的监控工具,同时支持部分国产数据库,这个工具的界面十分易用,可以帮你快速、轻松地查找问题。可以在主屏幕上查看数据库实例、等待时间、CPU(带有警告和关键警告)、内存、磁盘和会话、RAC实例以及ASM磁盘等信息。

点进去还能查看特定数据库的趋势仪表盘,仪表盘以图形的形式显示用户的空间情况。在这张图表中,每个图型代表一个单独的SQL 语句空间获取,十分直观。

 PIGOSS提供了足够多的功能,以下是一些比较重要的特性。

单点监控所有数据库

PIGOSS可与微软 SQL 服务器以及大多数主要产品(包括 Oracle、SQL Server、MySQL等)配合使用。它还支持物理和本地服务器、虚拟机(在 VMware 或 Hyper-V 中运行)和基于云的数据库。

易操作的高数量级扩展

PIGOSS允许你根据需要监控任意数量的数据库实例。只需升级许可证,就可以轻松地从一个实例扩展到一千个实例。

主动监控所有活跃会话情况

PIGOSS的自动化轮询引擎记录了数据库实例中发生的所有状态,不会对数据库本身带来额外的负载,也不需要安装本地监控代理,从而降低(如果不是消除)PIGOSS可能会对数据库性能产生的影响。

实时监控和分析数据库组件状态

PIGOSS可以关联查询、用户、文件、计划、对象、等待时间、存储和日期 / 时间 / 小时 / 分钟,以便即时发现和诊断问题。

PIGOSS是一款商用软件,计费方式根据要监控的数据库实例的数量和类型而有所不同。如果你想在购买之前试用该产品,可以使用功能齐全的 14 天试用版。也可以使用厂商的在线体验云环境进行体验,申请试用与体验的入口在该软件公司的官网中。

2. Paessler PRTG

Paessler Router Traffic Grapher(PRTG)可以监控 IT 基础设施的所有系统、设备、流量和应用程序。它是一个包罗万象的软件包,由于它在集成方面的特点,比很多网络监控工具更快、更容易安装。Paessler 声称可以在 2 分钟内开始进入监控状态。PRTG 提供了几种用户界面。你可以选择 Windows 企业控制台或基于 Ajax 的 Web 界面,以及适用于 Android、iOS 和Windows Phone 的移动应用程序。

 自动发现系统是 PRTG 提供的最好用的功能之一。它会扫描网段,并自动识别各种设备和系统,根据预定义的设备模板创建传感器。它提供了一个 map 功能,可以使用监控数据创建自定义 map,作为一种独特的数据显示方式。在警报方面,它们具有很高的灵活性,并且高度可定制。客户端应用程序可以直接接收推送通知,你还可以通过电子邮件或短信接收通知。它还提供了一组功能强大的 API,可让你编写自己的通知脚本。

这个程序可以监控很多数据库,如 Microsoft SQL、MySQL、Oracle 和 PostgreSQL。它通过使用预先配置的内置数据库传感器来实现监控。你可以使用这个工具来监控 SQL 查询的执行时间。它会测量从建立连接到连接结束所花费的时间,可以让你清楚地看到数据库在压力下的性能表现。

PRTG 的定价结构相对简单。它提供了一个免费版本,功能齐全,但最多只能监控 100 个传感器。一个参数算作一个传感器。监控 48 端口交换机的带宽需要 48 个传感器。同样,每个数据库实例都需要一个 SQL 传感器。如果传感器多于 100 个,你需要购买许可证。根据传感器数量的不同,价格从 1600 美元 500 个传感器到 14500 美元无限个传感器不等。它还提供了一个30 天的试用版,不限传感器数量,但一旦试用期结束,将恢复到 100 个传感器的免费版本。

3. Idera Diagnostic Manager for SQL Server

Idera Diagnostic Manager for SQL Server(IDM)监控物理和虚拟环境中 SQL 数据库的性能。这个工具提供来自物理服务器、虚拟机及其底层主机硬件的性能统计信息、指标和警报。它监视多个操作参数,如 CPU、内存、硬盘使用情况和空间,以及网络使用情况。该产品还提供了对 SQL 查询的主动监控以及事务 SQL 监控。它还可以为 SQL 数据库的健康状况提供建议。

 IDM 提供了基于 Web 的界面和适用于 Android、iOS 手机、平板电脑以及黑莓的移动应用程序。它提供了 SQL 服务器实例的实时和历史数据,允许管理员通过手机应用程序动态修改配置。虽然手机应用程序不如 Web 控制台功能丰富,但仍然可以执行多种管理任务,如查看和终止进程、根据需要启动和停止作业,以及运行查询来解决问题。

IDM 的其他功能包括使用 Management Pack 插件与 SCOM 集成、一个可以避免错误警报的预测警报系统,以及一个查询性能监控功能,该功能可以精确定位效率不高、性能不佳的查询。

IDM 的价格为每个数据库实例 1996 美元起,并提供了一个功能齐全的 14 天试用版。

4. SQL Power Tools

来自 SQL Power 公司的 SQL Power Tools 是一种无代理数据库性能分析解决方案。SQL Power 声称它对服务器的影响非常小,给数据库带来的负载不会超过 1%。这意味着你不需要在服务器上安装任何监控组件。此外,该产品不会往数据库中插入任何表或存储过程。所有的分析都是在远程完成的。它也不会通过数百万个查询来给数据库增加负载,因为这些查询可能会严重影响服务器的性能。

 这个工具提供了仪表盘和性能热图视图,可以在浏览器中或移动设备上查看。它会分析每日 SQL 等待时间、性能计数器和作业运行时间。它还会比较服务器和时间段之间的 SQL 和 I/O 等待时间、性能计数器和作业运行时间。你可以进一步查看性能低下的 SQL 查询的 SQL 等待时间,帮你查明导致 SQL 查询不能及时完成的资源争用问题。

SQL Power Tools 的价格在每个数据库 750 美元到 2000 美元之间,如果购买的许可越多,价格就会越低。如果你想要试用该产品,可以联系 SQL Power 获得一个为期 3 周的评估版本。

5. SQL Sentry

来自 SentryOne 的 SQL Sentry 是一种流行的数据库性能监控解决方案。它收集和显示性能指标和警报,并以日历样式显示必要的事件。除了监控之外,还可以直接在仪表盘上运行详细分析来快速解决问题。该产品的性能仪表盘(提供了一个独家的专利存储性能视图)显示了关键查询的详细分析结果。

 SQL Sentry 仪表盘有时候会因其过时的外观而受到批评,但它以一种巧妙的方式显示所有关键的 SQL 组件和服务,帮你管理SQL 数据库实例并确保其可用性。该工具还可以选择查看服务器的历史数据,并将其与当前实时数据进行比较。这些功能有助于生成基线和优化数据库实例和服务器。

SQL Sentry 的价格为每实例 2495 美元,另加每年 499 美元的维护费。如果你选择了订阅方式,价格为每月 125 美元。它还提供了为期 15 天的免费试用。

6. SQL Monitor

SQL Monitor 是 Red Gate 公司提供的一组工具的一个组成部分,你可以使用它来监控、管理、更改、操作和优化 SQL 数据库。你可以用它在问题变得更加严重之前发现它们。这个产品提供了很多功能。其中,它为管理员提供了 SQL Server 集群的概览。它还具有强大的警报功能,让你在问题产生显著影响之前知道它们的存在。报告是该产品的另一个重要特性,它会创建关于服务器健康状况的报告。该工具的性能分析功能将很快让你看到哪些因素对系统的影响最大。在诊断问题时,它可以帮你发现障碍并找到问题的根源。

你可以在 SQL Monitor 的仪表盘上查看所有数据库实例,可以通过客户端在几秒钟内直接访问它们,而无需使用 VPN 或其他方法进行远程连接。仪表盘支持下钻功能,可以在几次单击后显示数据库更详细的统计信息,如等待时间、CPU 使用情况和磁盘 I/O,等等。


http://chatgpt.dhexx.cn/article/xsUBmUky.shtml

相关文章

数据库监控工具及相关知识

数据库运行状态监控,是对数据库各种运行指标进行全方位实时监控。使之能够提前发现和识别数据库异常以及潜在的性能问题,并及时将数据库异常报告给管理员,通过针对各项运行指标的统计分析报表,帮助管理员、运维人员、决策者多视角…

十大开源云监控工具

监控和测试工具分为实时数据库、度量采集者、可视化工具、意见反馈工具、日志记录器等等。在过去的几年里,开源产品和商业监控应用程序发生了爆炸式增长,下面是其中10个最受欢迎的开源云监控工具。 Prometheus Prometheus是一个领先的开源云监控解决方案…

MySQL 内置的监控工具介绍及使用篇

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

MySQL | 六个最常用的 MySQL 数据库监控工

1 概述 MySQL 是企业广泛采用开源 DBMS 之一。如何对数据库的运行情况进行监视,发现数据库中的潜在问题,日益变得重要。面对市面上层出不穷的数据库监控软件,如何选择却称了一个头痛问题。 本文罗列了六个最常的 MySQL 数据库监控工具&…

推荐 5 款数据库性能监控软件,附下载

点击蓝色“有关SQL”关注我哟 加个“星标”,天天与10000人一起快乐成长 图 | L 今天要介绍的是 5 款数据库监控软件。 初听“数据库监控”,我知道很多小白,肯定要和黑客联系起来: "哇,那多牛皮,居然可以监控数据库…

BCD码简介及其与十进制数字字符串之间的转换

在ASCII码中,0到10的二进制分别表示如下。 而BCD码中,0-9的每位仍用一个字节(8位)来表示。因此,因此规则的重合,在数据存储上,BCD码仅用字符串存储即可,即数字12存储为字符串“12”。…

浅谈BCD码同二进制转换

浅谈BCD码同二进制转换 一、BCD码1、BCD码概述2、BCD分类1、有权码2、无权码 3、BCD运算问题 二、二进制BCD码1、原理实现2、模块划分3、仿真调试4、仿真验证 三、BCD码转二进制1、原理实现2、模块划分3、仿真验证 一、BCD码 1、BCD码概述 BCD码(Binary-Coded Dec…

BCD格式及与十进制/十六进制的转换

本文框架 前言1. BCD码是什么?2. 不同进制与BCD码之间的转换2.1 十进制与BCD码的转换2.1.1 十进制转换为BCD码2.1.2 BCD码转换为十进制 2.2 十六进制与BCD码的转换 前言 本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实…

BCD码详解

BCD码的种类 BCD码可分为有权码和无权码两类:有权BCD码有8421码、2421码、5421码,其中8421码是最常用的;无权BCD码有余3码、格雷码等。 8421 BCD码 8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位…

二进制码转BCD码

在单片机里面,如:显示个温度值,这时,要取一个数的个位、十位、百位,可以用/和 %(求商和求余)来解决。 但是,在FPGA里面用求商和求余将会非常消耗资源,这样就必须用到二进…

【C语言】BCD码、十进制互相转换

目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1302时钟芯片程序的时候遇到的问题 时间显示是这个样的 0 1…

什么是 BCD(二进制编码的十进制)

BCD 是一位十进制数,由代表 0 到 9 的四位二进制数字表示。 当寄存器值以十六进制表示时,可以原样读取为十进制数,这对于处理十进制数的函数来说非常方便。 二进制数的 4 位可以表示为 0 到 15,但只有低 10 位被视为有效数字。 …

十进制转8421_BCD码

目录 一、BCD码简介 二、十进制转8421BCD码转换思路 三、程序编写 四、仿真验证 总结 一、BCD码简介 BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,常…

十进制数转换BCD码

有必要仔细阐述这一节,目前就是用在数码管显示,在单片机使用时,我们通常是将十进制数字进行/和%运算,得到每个位置的十进制数字,在这里可能是为了节省使用存储器的量,运用的是加三移位法具体其实就是将每个…

C语言:十进制、BCD码互换

目录 1、复杂版 2、简易版 最近写单片机 RTC 日期、时间配置,需要实现十进制、BCD码互换,将示例Demo分享给各位朋友: BCD是指用二进制来表示十进制数的编码,即:用4位二进制来表示一位十进制数,因此4位二进…

BCD码转化为十进制数

2019独角兽企业重金招聘Python工程师标准>>> 什么是BCD码:用4位二进制数来标识十进制数中的0-9这十个数的编码形式,简称为BCD码。BCD码优点:这种编码形式使二进制和十进制之间的转换能够快捷进行。采用BCD码,既可保存数…

BCD码以及各进制之间的相互转换

目录 前言 一、BCD码 二、进制互转 1、任意进制转十进制:系数X基数 ^ 权值(累加) 2、任意进制转二进制 前言 主要学习什么是BCD码,以及二进制、八进制、十进制、十六进制之间的相互转换 一、BCD码 BCD码就是以四位二进制数为一…

BCD码与十进制数间转换

一、前言: 这几天在项目协议对接的时候有一部分功能是获取系统时间功能与校时功能。小马哥获取到时间后打印了一下 2020-5-26 20:06:32,一看时间是对的,然后美滋滋的组装协议发送平台测试了。测试的时候发现月、日、时分秒数据都正常&#x…

黑马Python笔记3

输入时,占位符在引号里面,而要接受的变量在引号外面eg:"…%d"%player) expected an indented block:缩进错误。if对缩进有要求,python对缩进要求严格 if表判断 双等号一定要记住!!! i…

2021-03-30 黑马Python学习笔记

操作系统OS(Operation System) 操作系统作用 1、直接操作硬件 2、把操作硬件的代码封装成系统调用,供其他成员间接操作硬件 没有安装操作系统的计算机被称为裸机 如果想在裸机上运行程序,必须用机器语言书写程序 如果计算机上…