【Oracle生产运维】表空间可用性告警排查处理
1 前言
在生产环境中,一般设置表空间告警阈值是90%,在接到监控报警后,并不是需要立刻对表空间进行扩容。
决定是否扩容主要看表空间最近的增量是多少,假如剩余10%的空间还能支持1个月的增量,那就不需要急着扩容。如果剩余的空间只能坚持几天,那么最好是立即扩容,以防止数据突增。
接到告警后,一般工作过程如下:
- 查看表空间利用率和剩余容量;
- 查看表空间增量;
- 扩容或者释放空间;
- 找出数据增量异常的对象。
根据下面的常用sql脚本排查。
2 处理流程
2.1 查看表空间利用率
col tablespace_name for a20
col pct_used for a10
select a.tablespace_name,a.total_mb,a.total_mb - b.free_mb used_mb,b.free_mb,case when a.total_mb <> 0 then round((a.total_mb - b.free_mb) / a.total_mb * 100,2)else null end || '%' pct_usedfrom (select ts.tablespace_name,round(sum(bytes) / 1024 / 1024,2) total_mbfrom dba_tablespaces ts,dba_data_files df  where ts.tablespace_name = df.tablespace_namegroup by ts.tablespace_name) a,(select fs.tablespace_name,round(sum(bytes) / 1024 /1024,2) free_mbfrom dba_free_space fsgroup by fs.tablespace_name) bwhere a.tablespace_name = b.tablespace_nameand a.tablespace_name = '&tsb_name'order by 1;
2.2 查看表空间增量
日增量:
set line 200
col ts_name for a30
col pct_used for a10
SELECT a.snap_id,c.tablespace_name ts_name,to_char(to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss'), 'yyyy-mm-dd hh24:mi') rtime,round(a.tablespace_size * c.block_size / 1024 / 1024, 2) ts_size_mb,round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2) ts_used_mb,round((a.tablespace_size - a.tablespace_usedsize) * c.block_size / 1024 / 1024,2) ts_free_mb,round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2) - lag(round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2),1) over(order by a.tablespace_id,to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss')) inc_mb,round(a.tablespace_usedsize / a.tablespace_size * 100, 2) || '%' pct_usedFROM dba_hist_tbspc_space_usage a, (SELECT tablespace_id,substr(rtime, 1, 10) rtime,max(snap_id) snap_idFROM dba_hist_tbspc_space_usage nbgroup by tablespace_id, substr(rtime, 1, 10)) b,dba_tablespaces c,v$tablespace dwhere a.snap_id = b.snap_idand a.tablespace_id = b.tablespace_idand a.tablespace_id=d.TS#and d.NAME=c.tablespace_name  and d.NAME = '&tbs_name'and to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') >=sysdate-30order by a.tablespace_id,to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') desc;
累计增量,根据awr保留时间而定,默认为8天:
set line 200
col ts_name for a30
col pct_used for a10
with ts as(SELECT a.snap_id,c.tablespace_name ts_name,to_char(to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss'), 'yyyy-mm-dd hh24:mi') rtime,round(a.tablespace_size * c.block_size / 1024 / 1024, 2) ts_mb,round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2) ts_used_mb,round((a.tablespace_size - a.tablespace_usedsize) * c.block_size / 1024 / 1024,2) ts_free_mb,round(a.tablespace_usedsize / a.tablespace_size * 100, 2) || '%' pct_usedFROM dba_hist_tbspc_space_usage a, (SELECT tablespace_id,substr(rtime, 1, 10) rtime,max(snap_id) snap_idFROM dba_hist_tbspc_space_usage nbgroup by tablespace_id, substr(rtime, 1, 10)) b,dba_tablespaces c,v$tablespace dwhere a.snap_id = b.snap_idand a.tablespace_id = b.tablespace_idand a.tablespace_id=d.TS#and d.NAME=c.tablespace_nameand to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') >=sysdate-30)
select f.ts_name,f.ts_mb,f.ts_used_mb begin_used_mb,f.rtime begin_time,t.ts_used_mb end_used_mb,t.rtime end_time,t.ts_used_mb - f.ts_used_mb inc_mb,round(to_date(t.rtime,'yyyy-mm-dd hh24:mi:ss') - to_date(f.rtime,'yyyy-mm-dd hh24:mi:ss'),2) inc_daysfrom (select a.*,row_number()over(partition by a.ts_name order by a.snap_id desc) rnfrom ts a) t,  (select b.*,row_number()over(partition by b.ts_name order by b.snap_id) rnfrom ts b) fwhere t.rn = 1 and f.rn = 1 and t.ts_name = f.ts_nameand t.ts_name = '&ts_name';
根据上述查出来的表空间日增量和累计增量结果,可以大概估算出剩余的空间可以坚持多久,根据实际情况决定是否扩容。
2.3 查看数据文件路径
此步骤主要是查看表空间数据文件路径,为表空间扩容添加数据文件做好环境调研。
set lines 200
set pagesize 300
col file_name for a60
col size_mb for 999999.99
select * from (select file_name,file_id,tablespace_name,round(bytes / 1024 / 1024,2) size_mb,status,autoextensiblefrom dba_data_fileswhere tablespace_name = '&ts_name'order by 2 desc)where rownum <= 10;
3 表空间扩容
表空间扩容可以选择添加数据文件,或者拓展数据文件。
3.1 添加数据文件
添加数据文件的时候一定要注意:
- 在RAC集群环境中,切记不要将数据文件创建到本地,这样就会造成集群节点间的不一致,可能会导致其他节点起不来。
- 也不要将数据文件创建到其他磁盘组中,这样不够规范。
以表空间ts_test为例:
--ASM:
SQL> alter tablespace ts_test add datafile '+DATA' size 100M;--File System:
SQL> alter tablespace ts_test datafile '/u01/app/oracle/oradata/datafile/ts_test02.dbf' size 100M;
3.2 拓展数据文件
假设原来ts_test.274.1171146701大小为100M,我们可以将其拓展到200M以达到扩容的目的:
alter database datafile'+DATA/orcl/datafile/ts_test.274.1171146701' resize 200M;
3.3 扩容后检查
扩容后需要检查表空间使用率是否下降:
col tablespace_name for a20
col pct_used for a10
select a.tablespace_name,a.total_mb,a.total_mb - b.free_mb used_mb,b.free_mb,case when a.total_mb <> 0 then round((a.total_mb - b.free_mb) / a.total_mb * 100,2)else null end || '%' pct_usedfrom (select ts.tablespace_name,round(sum(bytes) / 1024 / 1024,2) total_mbfrom dba_tablespaces ts,dba_data_files df  where ts.tablespace_name = df.tablespace_namegroup by ts.tablespace_name) a,(select fs.tablespace_name,round(sum(bytes) / 1024 /1024,2) free_mbfrom dba_free_space fsgroup by fs.tablespace_name) bwhere a.tablespace_name = b.tablespace_nameand a.tablespace_name = '&tsb_name'order by 1;
4 后续排查
如果表空间时短时间内激增,则在扩容后还需要排查,找出是哪个对象数据突增影响的。
4.1 查看snap_id
set line 200
 select distinct snap_id,
 to_char(begin_interval_time,‘yyyy-mm-dd hh24:mi:ss’) begin_interval_time,
 to_char(end_interval_time,‘yyyy-mm-dd hh24:mi:ss’) end_interval_time
 from dba_hist_snapshot
 where to_char(begin_interval_time,‘yyyy-mm-dd hh24:mi:ss’) >=
 to_char(sysdate - &day_ago,‘yyyy-mm-dd hh24:mi:ss’)
 order by snap_id desc;
4.2 查看某个表空间下增量最多的对象
set lines 200
 col object_name for a30
 select * from
 (select obj.owner,obj.object_name,sum(hs.db_block_changes_delta) db_block_changes_delta,
 round(sum(hs.space_used_delta) / 1024 / 1024,2) space_delta_mb
 from dba_hist_seg_stat hs,
 v$tablespace ts,
 dba_objects obj,
 dba_hist_snapshot sn
 where hs.ts# = ts.ts#
 and hs.snap_id = sn.snap_id
 and hs.obj# = obj.object_id
 and ts.name = ‘&tbs_name’
 and sn.begin_interval_time >= sysdate - &day_ago
 group by obj.owner,obj.object_name
 order by space_delta_mb desc)
 where rownum <= 10;
相关文章:
【Oracle生产运维】表空间可用性告警排查处理
1 前言 在生产环境中,一般设置表空间告警阈值是90%,在接到监控报警后,并不是需要立刻对表空间进行扩容。 决定是否扩容主要看表空间最近的增量是多少,假如剩余10%的空间还能支持1个月的增量,那就不需要急着扩容。如果…...
 
mac Network: use --host to expose
本地启动无法访问,这个不是权限问题是mac 主机端口安全策略,现在我们只需要开启端口自动检测就可以 npm run dev --host 网络:未暴露 方案一 1、执行 npm run dev -- --host 方案二 1、请在 vite.config.js server: {host: true } 1…...
 
ChatGPT-4o体验demo
OpenAI 最近推出了其最新的人工智能语言模型——GPT-4O。该模型是在原有 GPT-4 的基础上进行优化而成,旨在提升生成质量和响应速度。GPT-4O 采用了更加高效的架构设计,使其在处理复杂文本时表现出更快的速度和更高的准确性。GPT-4O 在训练过程中融入了最…...
 
FPGA SPI采集ADC7606数据
一,SPI总线的构成及信号类型 SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯: 1)MOSI – Master数据输出,Slave数据输入 2)MISO – Master数据输入,Slave数据输出 3)SCK – 时钟信号,由Master产生 4)/CS – Slave使能信号,由Master控制。 在一个SPI时…...
 
html three.js 引入.stl模型示例
1.新建一个模块用于放置模型 <div id"chart_map" style"width:800px;height:500px"></div> 2. 引入代码根据需求更改 <!-- 在head或body标签内加入以下链接 --> <script src"https://cdn.jsdelivr.net/npm/three0.137/build/t…...
从零手写实现 nginx-11-文件处理逻辑与 range 范围查询合并
前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...
Java算法-力扣leetcode-167. 两数之和 II - 输入有序数组
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 ****非递减顺序排列 ** ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 < index1 < index2 < n…...
 
实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)
导读 本文主要介绍如何使用YOLOv10在自定义数据集训练实现车牌检测 (数据集训练预测 保姆级教程)。 YOLOv10简介 YOLOv10是清华大学研究人员在Ultralytics Python包的基础上,引入了一种新的实时目标检测方法,解决了YOLO以前版本在后处理和模型架构方面…...
 
自定义类型:结构体+结构体内存对齐+结构体实现位段
结构体内存对齐实现位段 一.结构体1.结构体的声明2.结构体变量成员访问操作符3.结构体传参4.匿名结构体5.结构的自引用 二.结构体内存对齐1.对齐规则2.为什么存在内存对齐?3.修改默认对齐数 三.结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段…...
0109__strip(1) command
strip(1) command_linux strip-CSDN博客...
 
英码科技推出鸿蒙边缘计算盒子:提升国产化水平,增强AI应用效能,保障数据安全
当前,随着国产化替代趋势的加强,鸿蒙系统Harmony OS也日趋成熟和完善,各行各业都在积极拥抱鸿蒙;那么,边缘计算要加快实现全面国产化,基于鸿蒙系统开发AI应用势在必行。 关于鸿蒙系统及其优势 鸿蒙系统是华…...
 
从军事角度理解“战略与战术”
战略与战术,均源于军事术语。 战略(Strategy),源自希腊语词汇“strategos(将军)”和“strategia(军事指挥部,即将军的办公室和技能)”。指的是指挥全局性作战规划的谋略…...
 
最短路径——迪杰斯特拉与弗洛伊德算法
一.迪杰斯特拉算法 首先对于最短路径来说:从vi-vj的最短路径,不用非要经过所有的顶点,只需要找到路径最短的路径即可; 那么迪杰斯特拉的算法:其实也就与最小生成树的思想类似,找到较小的,然后…...
6.7.11 一种新的迁移学习方法可提高乳房 X 线摄影筛查中乳腺癌的诊断率
分割是一种将图像分割成离散区域的技术,以便将感兴趣的对象与周围环境分开。为了制定治疗计划,分割可以帮助医生测量乳房中的组织量。 二元分类问题的目的是将输入数据分为两组互斥的数据。在这种情况下,训练数据根据要解决的问题以二进制格…...
 
【Proteus8.16】Proteus8.16.SP3.exe的安装包,安装方法
下载: 链接:https://pan.baidu.com/s/14ZlETF7g4Owh8djLaHwBOw?pwd2bo3 提取码:2bo3 管理员打开proteus8.16.SP3.exe一路装就行了,许可证选Licence2.lxk,点安装后关闭,然后继续装完。 然后打开Patch-Proteus-8.16-…...
 
17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波
1、创建信号 1)创建正余弦信号、噪声信号和混合信号 原始正余弦信号公式:Signal1 sin(2*pi*20* t) sin(2*pi*40* t) sin(2*pi*60* t) 高斯分布的白噪声:NoiseGauss [randn(1,2000)] 均匀分布的白噪声:[rand(1,2000)] 正余弦…...
 
【Autopilot】没有自动添加本地管理员的问题处理
【问题】某公司选用了D记的笔记本电脑,约定出厂就预配置好Autopilot,当时向D记提供了三个信息: 1. M365的租户ID 2. 公司域名信息 3. Group Tag (某公司为跨国公司,通过Group Tag来区分国家,比如CHN-中国,L…...
 
【C#学习笔记】属性和字段
文章目录 前言属性和字段的区别字段访问修饰符和关键字定义变量类型的定义变量命名变量的赋值 属性 不同的使用情况 前言 最近在工作的过程中常常会觉得自己在程序设计方面的能力还是有欠缺。例如一直对于变量的声明感到不足,在工作中为了图方便总是直接public定义…...
 
最佳实践的实践 - API 不应将 HTTP 重定向到 HTTPS
原文:jviide - 2024.05.23 TL;DR: 与其将 API 调用从 HTTP 重定向到 HTTPS,不如让失败显而易见。要么完全禁用 HTTP 接口,要么返回明确的 HTTP 错误响应,并撤销通过未加密连接发送的 API 密钥。遗憾的是,许多知名的 A…...
 
四种跨域解决方案
文章目录 1.引出跨域1.基本介绍2.具体演示1.启动之前学习过的springboot-furn项目2.浏览器直接访问 [localhost:8081/furns](http://localhost:8081/furns) 可以显示信息3.启动前端项目,取消请求拦截器,这样设置,就会出现跨域4.跨域原因 2.跨…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
 
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
 
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
 
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
 
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
 
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
 
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
Git 命令全流程总结
以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结,按操作场景分类整理: 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...
 
RKNN开发环境搭建2-RKNN Model Zoo 环境搭建
目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程. 本…...
