当前位置: 首页 > news >正文

Oracle 可观测最佳实践

简介

Oracle 数据库是一种广泛使用的商业关系数据库管理系统(RDBMS),由甲骨文公司(Oracle Corporation)开发。它支持 SQL 语言,能够存储和管理大量数据,并提供高级数据管理功能,如数据仓库、联机事务处理(OLTP)和复杂的查询处理。

监控 Oracle 数据库的关键指标对于确保数据库的性能、稳定性和安全性至关重要。通过实时监控,可以及时发现并解决性能瓶颈、资源不足、查询效率低下等问题,从而优化数据库响应时间和处理能力。

本文主要介绍观测云采集器 DataKit 直采 Oracle 相关指标,以及如何日常故障排查。

观测云

观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全巡检,智能监控等等。

DataKit 自身提供 Oracle 指标和日志的采集,安装好 DataKit 之后,开通 Oracle 采集器,即可采集 Oracle 指标和日志到观测云。下面是在 Windows 主机中,部署 DataKit 并开通 Oracle 采集器的示例。

环境介绍

  • DataKit:v1.62.0
  • Oracle:v19c

部署 DataKit

登录观测云控制台,点击「集成」 - 「DataKit」 - 「Windows」,复制安装命令,在主机中必须以管理员运行 PowerShell 进行安装。

创建监控账号

如果是使用单 PDB 或者非 CDB 实例,一个本地用户(local user)就足够了(用 sys 管理员账号来创建并授权,避免出现权限不足等问题):

-- Create the datakit user. Replace the password placeholder with a secure password.
CREATE USER datakit IDENTIFIED BY <PASSWORD>;-- Grant access to the datakit user.
GRANT CONNECT, CREATE SESSION TO datakit;
GRANT SELECT_CATALOG_ROLE to datakit;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO datakit;
GRANT SELECT ON DBA_TABLESPACES TO datakit;
GRANT SELECT ON DBA_USERS TO datakit;
GRANT SELECT ON SYS.DBA_DATA_FILES TO datakit;
GRANT SELECT ON V_$ACTIVE_SESSION_HISTORY TO datakit;
GRANT SELECT ON V_$ARCHIVE_DEST TO datakit;
GRANT SELECT ON V_$ASM_DISKGROUP TO datakit;
GRANT SELECT ON V_$DATABASE TO datakit;
GRANT SELECT ON V_$DATAFILE TO datakit;
GRANT SELECT ON V_$INSTANCE TO datakit;
GRANT SELECT ON V_$LOG TO datakit;
GRANT SELECT ON V_$OSSTAT TO datakit;
GRANT SELECT ON V_$PGASTAT TO datakit;
GRANT SELECT ON V_$PROCESS TO datakit;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO datakit;
GRANT SELECT ON V_$RESTORE_POINT TO datakit;
GRANT SELECT ON V_$SESSION TO datakit;
GRANT SELECT ON V_$SGASTAT TO datakit;
GRANT SELECT ON V_$SYSMETRIC TO datakit;
GRANT SELECT ON V_$SYSTEM_PARAMETER TO datakit;

如果想监控来自 CDB 和所有 PDB 中的表空间(Table Spaces),需要一个有合适权限的公共用户(common user):

-- Create the datakit user. Replace the password placeholder with a secure password.
CREATE USER datakit IDENTIFIED BY <PASSWORD>;-- Grant access to the datakit user.
ALTER USER datakit SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
GRANT CONNECT, CREATE SESSION TO datakit;
GRANT SELECT_CATALOG_ROLE to datakit;
GRANT SELECT ON v_$instance TO datakit;
GRANT SELECT ON v_$database TO datakit;
GRANT SELECT ON v_$sysmetric TO datakit;
GRANT SELECT ON v_$system_parameter TO datakit;
GRANT SELECT ON v_$session TO datakit;
GRANT SELECT ON v_$recovery_file_dest TO datakit;
GRANT SELECT ON v_$active_session_history TO datakit;
GRANT SELECT ON v_$osstat TO datakit;
GRANT SELECT ON v_$restore_point TO datakit;
GRANT SELECT ON v_$process TO datakit;
GRANT SELECT ON v_$datafile TO datakit;
GRANT SELECT ON v_$pgastat TO datakit;
GRANT SELECT ON v_$sgastat TO datakit;
GRANT SELECT ON v_$log TO datakit;
GRANT SELECT ON v_$archive_dest TO datakit;
GRANT SELECT ON v_$asm_diskgroup TO datakit;
GRANT SELECT ON sys.dba_data_files TO datakit;
GRANT SELECT ON DBA_TABLESPACES TO datakit;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO datakit;
GRANT SELECT ON DBA_USERS TO datakit;

注意:上述的 SQL 语句由于 Oracle 版本的原因部分可能会出现 "表不存在" 等错误,忽略即可。

DataKit 配置采集器

进入 DataKit 安装目录 C:\Program Files\datakit\conf.d\db ,复制 conf.d 目录下的配置文件并命名为 oracle.conf 。 修改配置文件中的连接信息。

[[inputs.oracle]]# host namehost = "localhost"## portport = 1521## user nameuser = "datakit"## passwordpassword = "<PASS>"## serviceservice = "XE"## intervalinterval = "10s"## connection timeoutconnect_timeout = "30s"## slow query time threshold defined. If larger than this, the executed sql will be reported.slow_query_time = "0s"## Set true to enable electionelection = true## Run a custom SQL query and collect corresponding metrics.# [[inputs.oracle.custom_queries]]#   sql = '''#     SELECT#       GROUP_ID, METRIC_NAME, VALUE#     FROM GV$SYSMETRIC#   '''#   metric = "oracle_custom"#   tags = ["GROUP_ID", "METRIC_NAME"]#   fields = ["VALUE"][inputs.oracle.tags]# some_tag = "some_value"# more_tag = "some_other_value"

配置完成后,重启 DataKit 即可。

仪表板

在观测云的「场景」 - 「新建仪表板」,搜索“Oracle”,选择 “Oracle监控视图” ,即可查看采集上来的 Oracle 指标数据。

慢查询支持

DataKit 可以将执行超过用户自定义时间的 SQL 语句报告给观测云,并在日志中显示,source 是 oracle_log 。

该功能默认情况下是关闭的,用户可以在 Oracle 的配置文件中将其打开,方法如下:

将 slow_query_time 的值从 0s 改成用户心中的阈值,最小值是 1 毫秒。 一般推荐 10 秒。

指标

以下所有数据采集,默认会追加全局选举 tag,也可以在配置中通过 [inputs.oracle.tags] 指定其它标签。

 [inputs.oracle.tags]# some_tag = "some_value"# more_tag = "some_other_value"# ...
oracle_process
指标名描述类型单位
pga_alloc_mem按进程分配的 PGA 内存floatB
pga_freeable_mem按进程释放的 PGA 内存floatB
pga_max_mem进程分配的 PGA 最大内存floatB
pga_used_mem进程使用的 PGA 内存floatB
pidOracle 进程标识符int-
oracle_tablespace
指标名描述类型单位
in_use已用空间百分比,作为最大可能表空间大小的函数float百分比
off_use表空间占用的总空间,以数据库块为单位floatB
ts_size表空间大小floatB
pga_used_mem进程使用的 PGA 内存floatB
used_space已用空间floatB
oracle_system
指标名描述类型单位
active_sessions活动会话数floatcount
buffer_cachehit_ratio缓冲区缓存命中率float百分比
cache_blocks_corrupt损坏的缓存块floatcount
cache_blocks_lost丢失缓存块floatcount
consistent_read_changes每秒一致性读取更改floatcount
consistent_read_gets每秒一致性读取获取floatcount
cursor_cachehit_ratio游标缓存命中率float百分比
database_cpu_time_ratio数据库 CPU 时间比率float百分比
database_wait_time_ratio每秒内存排序数float百分比
db_block_changes每秒数据库数据块更改数floatcount
db_block_gets数据库块每秒获取数floatcount
disk_sorts每秒磁盘排序数floatcount
enqueue_timeouts每秒排队超时floatcount
execute_without_parse在没有解析比率的情况下执行floatcount
gc_cr_block_received收到 GC CR 块floatcount
host_cpu_utilization主机 CPU 利用率 (%)float百分比
library_cachehit_ratio库缓存命中率float百分比
logical_reads每秒逻辑读取数floatcount
logons登录尝试次数floatcount
memory_sorts_ratio内存排序比率float百分比
pga_over_allocation_count过度分配 PGA 内存计数floatcount
physical_reads每秒物理读取数floatcount
physical_reads_direct每秒直接物理读取floatcount
physical_writes每秒物理写入数floatcount
redo_generated每秒生成的重做floatcount
redo_writes每秒重做写入次数floatcount
rows_per_sort每个排序的行数floatcount
service_response_time服务响应时间float
session_count会话计数floatcount
session_limit_usage会话限制使用情况float百分比
shared_pool_free共享池可用内存 %float百分比
soft_parse_ratio软解析比率float百分比
sorts_per_user_call按用户调用排序floatcount
temp_space_used已用临时空间floatB
user_rollbacks用户回滚次数floatcount

监控器

点击「监控」 -「监控器」 - 「从模板新建」,添加以下两个监控器,也可以点击具体监控器进去修改对应的阈值。

Oracle 活跃会话数突变告警

Oracle 表空间不足告警

总结

通过监控 Oracle 数据库特定的指标,比如缓存命中率、表空间使用率、响应时间和数据库连接状态等,能够帮助我们优化查询效率,并进行有效的容量规划。通过综合监控这些关键指标,可以及时发现并解决潜在的性能瓶颈,从而维护 Oracle 的高效运行和稳定性。

相关文章:

Oracle 可观测最佳实践

简介 Oracle 数据库是一种广泛使用的商业关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由甲骨文公司&#xff08;Oracle Corporation&#xff09;开发。它支持 SQL 语言&#xff0c;能够存储和管理大量数据&#xff0c;并提供高级数据管理功能&#xff0c;如数…...

Ubuntu本地部署网站

目录 1.介绍 2.安装apache 3.网页升级 1.介绍 网站其实就相当于一个文件夹&#xff0c;用域名访问一个网页&#xff0c;就相当于访问了一台电脑的某一个文件夹&#xff0c;在网页中看见的视频&#xff0c;视频和音乐其实就是文件夹里面的文件。为什么网页看起来不像电脑文件夹…...

图数据库 | 18、高可用分布式设计(中)

上文我们聊了在设计高性能、高可用图数据库的时候&#xff0c;从单实例、单节点出发&#xff0c;一般有3种架构演进选项&#xff1a;主备高可用&#xff0c;今天我们具体讲讲分布式共识&#xff0c;以及大规模水平分布式。 主备高可用、分布式共识、大规模水平分布式&#xff…...

Java 读取 Windows 设备的唯一性标识及定位

在 Windows 系统中&#xff0c;获取设备唯一性标识及定位信息对设备管理、安全监控等场景意义重大。本文介绍 Java 中几种实现方法&#xff0c;如 JNA 库、WMI4Java 库及通过 JNI 结合 Windows API。 1. 使用 JNA 库读取 DEVPKEY_Device_ContainerId 在 Windows 系统中&…...

Spring boot框架下的RabbitMQ消息中间件

1. RabbitMQ 基础概念 1.1 消息处理流程与组件配合 Producer&#xff08;生产者&#xff09; 发送消息。消息先发送到 Exchange&#xff08;交换机&#xff09;&#xff0c;而不是直接到队列。Exchange&#xff08;交换机&#xff09; 接收到消息后&#xff0c;根据 Routing …...

1 行命令引发的 Go 应用崩溃

一、前言 不久前&#xff0c;阿里云 ARMS 团队、编译器团队、MSE 团队携手合作&#xff0c;共同发布并开源了 Go 语言的编译时自动插桩技术。该技术以其零侵入的特性&#xff0c;为 Go 应用提供了与 Java 监控能力相媲美的解决方案。开发者只需将 go build 替换为新编译命令 o…...

ScratchLLMStepByStep:训练自己的Tokenizer

1. 引言 分词器是每个大语言模型必不可少的组件&#xff0c;但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要组件&#xff1a; Tokenizer: 分词器的核心组件&#xff0c;定…...

G1原理—10.如何优化G1中的FGC

大纲 1.G1的FGC可以优化的点 2.一个bug导致的FGC(Kafka发送重试 subList导致List越来越大) 3.为什么G1的FGC比ParNew CMS要更严重 4.FGC的一些参数及优化思路 1.G1的FGC可以优化的点 (1)FGC的基本原理 (2)遇到FGC应该怎么处理 (3)应该如何操作来规避FGC (4)应该如何操…...

Java基础——概念和常识(语言特点、JVM、JDK、JRE、AOT/JIT等介绍)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…...

2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法

题目来源&#xff1a;攻防世界supersqli 目录 一、打开靶机&#xff0c;整理已知信息 二、sqlmap解题 step 1&#xff1a;爆数据库 step 2&#xff1a;爆表 二、手工注入解题 step 1&#xff1a;判断注入类型 step 2&#xff1a;判断字段数 step 3&#xff1a;查询数据…...

浅谈计算机网络03 | 现代网络组成

现代网络组成 一 、网络生态体系1.1网络生态系统的多元主体1.2 网络接入设施的多样类型 二、现代网络的典型体系结构解析三、高速网络技术3.1 以太网技术3.2 Wi-Fi技术的深度剖析3.2.1 应用场景的多元覆盖3.2.2 标准升级与性能提升 3.3 4G/5G蜂窝网的技术演进3.3.1 蜂窝技术的代…...

Red Hat8:搭建FTP服务器

目录 一、匿名FTP访问 1、新建挂载文件 2、挂载 3、关闭防火墙 4、搭建yum源 5、安装VSFTPD 6、 打开配置文件 7、设置配置文件如下几个参数 8、重启vsftpd服务 9、进入图形化界面配置网络 10、查看IP地址 11、安装ftp服务 12、遇到拒绝连接 13、测试 二、本地…...

EWM 批次管理 / Batch Management

目录 1 简介 2 业务数据 2.1 基于 PO&#xff0c;创建 ERP LE - Delivery 内向交货单&#xff0c;同时同步到 EWM 内向交货单 2.2 在 EWM 内向交货单&#xff0c;创建批次。EWM 批次创建的前提条件来自于物料主数据批次分类&#xff08;023&#xff09;。SAP 提供的标准条件…...

Java 面试题 - ArrayList 和 LinkedList 的区别,哪个集合是线程安全的?

Java 面试题 - ArrayList 和 LinkedList 的区别&#xff0c;哪个集合是线程安全的&#xff1f; 在 Java 开发中&#xff0c;ArrayList和LinkedList是两个常用的集合类&#xff0c;它们在数据结构和性能上有诸多不同&#xff0c;同时线程安全性也各有特点。深入理解这些差异&am…...

初学SpringBoot

目录 什么是SpringBoot 使用 Spring Boot有什么好处 Spring Boot 特点 在线构建 IntelliJ IDEA在线模板构建 IntelliJ IDEA 通maven项目构建 SpringBoot的常用配置 入口类和相关注解 定制Banner 修改banner图标 关闭banner 常规属性修改 tomcat端口号修改 常规属性…...

【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论和实操解析

文章目录 14.1 选择题解题思路和参考答案14.2 理论题解题思路和参考答案14.3 实操题解题思路和参考答案思科&#xff08;Cisco&#xff09;设备华为&#xff08;Huawei&#xff09;设备小米/锐捷&#xff08;或其他支持标准CLI命令的设备&#xff09;通过网络管理工具注意事项 …...

AWS S3 跨账户访问 Cross Account Access

进入S3对应的存储桶&#xff0c;上面选项选权限&#xff0c;存储桶策略 -- 编辑&#xff0c;输入对应的policy。 完全控制&#xff0c;包含上传删除权限&#xff0c;policy如下&#xff1a; {"Version": "2012-10-17","Statement": [{"Si…...

Ubuntu20.4和docker终端指令、安装Go环境、安装搜狗输入法、安装WPS2019:保姆级图文详解

目录 前言1、docker、node、curl版本查看终端命令1.1、查看docker版本1.2、查看node.js版本1.3、查看curl版本1.4、Ubuntu安装curl1.5、Ubuntu终端保存命令 2、安装docker-compose、Go语言2.1、安装docker-compose2.2、go语言安装步骤2.3、git版本查看 3、Ubuntu20.4安装搜狗输…...

Kotlin语言的正则表达式

Kotlin语言中的正则表达式 引言 正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种用于匹配字符串中字符组合的工具。在数据处理、文本解析等领域&#xff0c;正则表达式以其强大的字符串处理能力得到了广泛的应用。而Kotlin作为一种现代的编…...

npm的包管理

从哪里下载包 国外有一家 IT 公司&#xff0c;叫做 npm,Inc.这家公司旗下有一个非常著名的网站: https://www.npmjs.com/&#xff0c;它是全球最大的包共享平台&#xff0c;你可以从这个网站上搜索到任何你需要的包&#xff0c;只要你有足够的耐心!到目前位置&#xff0c;全球约…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...