oracle临时表空间不释放
项目报错
nested exception is java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
原因是临时表空间满了,临时表空间一直增长,未释放导致临时表空间使用率100%。
查询临时表空间使用率
--临时表空间利用率
select c.tablespace_name "临时表空间名",round(c.bytes / 1024 / 1024 / 1024, 2) "临时表空间大小(G)",round((c.bytes - d.bytes_used) / 1024 / 1024 / 1024, 2) "临时表空间剩余大小(G)",round(d.bytes_used / 1024 / 1024 / 1024, 2) "临时表空间使用大小(G)",round(d.bytes_used * 100 / c.bytes, 4) || '%' "使用率 %"from (select tablespace_name, sum(bytes) bytesfrom dba_temp_filesGROUP by tablespace_name) c,(select tablespace_name, sum(bytes_cached) bytes_usedfrom v$temp_extent_poolGROUP by tablespace_name) dwhere c.tablespace_name = d.tablespace_name;
解决办法一:
--压缩一下临时表空间
--自动将表空间的临时文件缩小到最小可能的大小
alter tablespace TEMP shrink space;
解决办法二:
查询临时表空间位置,创建新的临时表空间
-- 查询临时表空间位置
SELECT FILE_ID,TABLESPACE_NAME "临时表空间名",BYTES / 1024 / 1024 / 1024 "表空间大小(G)",FILE_NAME "文件路径"FROM DBA_TEMP_FILESorder by TABLESPACE_NAME, FILE_NAME;-- 例如查询结果如下:
-- /dev/shm/oradata/temp01.dbf
-- 创建新的临时表空间最好也放在这个目录下-- 创建临时表空间
create temporary tablespace IRFS_TEMP
tempfile '/dev/shm/oradata/irfs_temp01.dbf'
size 20g
autoextend off;
切换临时表空间为新的临时表空间,切换后删除原来的临时表空间。
-- 设置数据库的默认临时表空间,切换临时表空间
alter database default temporary tablespace IRFS_TEMP;--查询默认的临时表空间
SELECT PROPERTY_NAME, PROPERTY_VALUEFROM DATABASE_PROPERTIESWHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';-- 删除原来的临时表空间(包括文件)
drop tablespace TEMP including contents and datafiles;
解决办法三:
前两种方案,需要每隔一段时间就要去手动操作一次。
哪些情况会占用临时表空间?
1、当数据库执行如CREATE INDEX、ORDER BY、GROUP BY等操作时,如果内存中的排序区域大小不足,就会将数据放入临时表空间中进行排序。
2、操作CLOB或BLOB字段时,如果内存中的空间不足以容纳这些数据,Oracle会将这些数据放入临时表空间。
查询临时表空间占用sql
--查询临时表空间占用sql
SELECT se.username,se.sid,se.serial#,se.SQL_ID,se.sql_address,se.machine,sa.SQL_TEXT,sa.SQL_FULLTEXT,se.program,su.tablespace,su.segtype,su.contentsFROM v$session se,v$sort_usage su,v$sqlarea sa
WHERE se.saddr=su.session_addr and se.SQL_ID=sa.SQL_ID
表空间的释放通常依赖于事务提交或会话的断开。
事务的提交释放了事务占用的资源,包括临时表空间中的空间。
会话的断开也会释放该会话使用的表空间。
因此,如果临时表空间没有被释放,并不是由于自动扩展设置的原因。
在查找表空间未释放的原因时,您应该关注未提交的事务或仍然处于活动状态的会话。
对于临时表空间的释放问题,您可以继续检查未提交的事务或会话,并确保它们被正确提交或断开连接。
我的Oracle数据库版本是11gR2(11.2.0.4)
我这里是由于clob或者blob字段造成的。
具体原因是clob或者blob字段使用后会占用临时表空间,如果连接不断开就不会释放,只要想办法让连接使用后断开就行。
我使用了druid连接池,由于我的业务一天24小时都会使用,所以连接池中的连接一直处于活跃状态,没有到达配置的空闲5分钟删除掉连接,
当然也可以从空闲时间参数入手让空闲时间短点就删除掉连接,一句话就是想办法让连接断开,但是频繁的创建连接也不好那连接池也没有意义了。
解决思路,不要使用clob或者blob字段,想办法使用其它方案替代,我这里必须要用到clob,又没有找到替代方案。
我后面解决思路是,写了一个定时器,10分钟检测一次连接池,连接存活时间超过1天,就删除该连接,且一次最多删除一个连接防止把连接池清空了。该方案自行评估有无风险!
package com.study.pool;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.Connection;/*** 清理连接存活时间超过1天的连接* 由于clob和blob字段导致临时表空间不释放,需要定期清理连接* @Date: 2024/2/29 16:49*/
@Slf4j
@Component
@EnableScheduling
public class DruidPooledClear {@Autowiredprivate JdbcTemplate jdbcTemplate;// @PostConstruct@Scheduled(cron = "25 1/10 * * * ?") //10分钟一次public void clearConnection() {try {DataSource dataSource = jdbcTemplate.getDataSource();if (dataSource instanceof DruidDataSource) {DruidDataSource druidDataSource = (DruidDataSource) dataSource;clearConnection(dataSource, druidDataSource);}} catch (Exception e) {log.error(e.getMessage(), e);}}/*** 清理连接,1次只清理一个连接,防止一次性把连接池清空* @date 2024/2/29 16:59*/private void clearConnection(DataSource dataSource, DruidDataSource druidDataSource) {DruidPooledConnection druidPooledConnection = null;try {// 由于druidDataSource.getConnection()总是获取上一次使用的连接(最后一次使用的连接),无法遍历空闲连接,只有使用递归才获取所有空闲连接druidPooledConnection = druidDataSource.getConnection();// log.info("连接:" + druidPooledConnection.getConnectionHolder());// 连接创建单位:毫秒long connectedTimeMillis = druidPooledConnection.getConnectionHolder().getConnectTimeMillis();// 删除连接,连接存活时间超过1天if (System.currentTimeMillis() > connectedTimeMillis + 1000 * 60 * 60 * 24) {log.info("删除连接:" + druidPooledConnection.getConnectionHolder());// 这一步很关键,druidPooledConnection.getConnection() 取出的连接,已经不能归还给连接池了Connection connection = druidPooledConnection.getConnection();// 从连接池中移除连接DataSourceUtils.releaseConnection(connection, dataSource);} else {// int activeCount = druidDataSource.getActiveCount();//活跃连接数int poolingCount = druidDataSource.getPoolingCount();//空闲连接数// log.info("池中连接数:{},活跃连接数:{},空闲连接数:{}", activeCount + poolingCount, activeCount, poolingCount);if (poolingCount > 0) {clearConnection(dataSource, druidDataSource);}}} catch (Exception e) {log.error(e.getMessage(), e);} finally {// 归还连接给连接池DataSourceUtils.releaseConnection(druidPooledConnection, dataSource);}}
}
参考:
oracle的临时表空间无法释放!多半是blob害的。 - 墨天轮
相关文章:

oracle临时表空间不释放
项目报错 nested exception is java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP 原因是临时表空间满了,临时表空间一直增长,未释放导致临时表空间使用率100%。 查询临时表空间使用率 --临时表空间利用率…...

Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem
Chapter 13 Techniques of Design-Oriented Analysis: The Feedback Theorem 从这一章开始讲负反馈Control系统和小信号建模. 13.2 The Feedback Theorem 首先介绍 Middlebrook’s Feedback Theorem 考虑下面负反馈系统 传输函数 Guo/ui G ( s ) u o u i G ∞ T 1 T G…...

科研学习|论文解读——美国政治经济中的权力:网络分析(JASIST, 2019)
论文原题目 Power in the U.S. political economy: A network analysis 摘要 美国政治经济的许多特征产生于大型政治和经济机构之间的互动,然而我们对它们的互动性质和这些机构之间的权力分配知之甚少。在本文中,对总部设在美国的组织的网络进行了详细的…...
常用的git命令
一、常用的git命令 1. 配置 git config --local user.name "xxx" ---仅对当前Git仓库有效。配置信息将保存在当前Git仓库的 .git/config 文件中 local优先级最高,会覆盖其他范围的相同配置 git config --global user.email "xxx" ---全局…...

【AI】用iOS的ML(机器学习)创建自己的AI App
用iOS的ML(机器学习)创建自己的AI App 目录 用iOS的ML(机器学习)创建自己的AI App机器学习如同迭代过程CoreML 的使用方法?软件要求硬件开始吧!!构建管道:设计和训练网络Keras 转 CoreML将模型集成到 Xcode 中结论推荐超级课程: Docker快速入门到精通Kubernetes入门到…...
远程调用初体验笔记
远程调用初体验笔记 微服务架构通常将系统拆分成多个独立的服务单元,每个服务单元都专注于实现特定的业务功能。当一个服务需要使用另一个服务提供的功能时,就可以通过远程调用来实现。 使用步骤 1.步骤 Spring给我们提供了一个RestTemplate工具&#…...

反无人机电子护栏:原理、算法及简单实现
随着无人机技术的快速发展,其在航拍、农业、物流等领域的应用日益广泛。然而,无人机的不规范使用也带来了安全隐患,如侵犯隐私、干扰航空秩序等。为了有效管理无人机,反无人机电子护栏技术应运而生。 目录 一、反无人机电子护栏…...
Java项目利用Redisson实现真正生产可用高并发秒杀功能 支持分布式高并发秒杀
Java中的高并发秒杀场景下我们可以使用redisson来实现高并发秒杀功能, 以下就是一个可用于生产环境的高并发秒杀示例代码: pom依赖 <!-- https://mavenlibs.com/maven/dependency/org.redisson/redisson --><dependency><groupId>org.redisson</groupId&…...
0104行列式的性质-行列式-线性代数
记 D ∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋯ ⋯ ⋯ a n 1 a n 2 ⋯ a n n ∣ D\begin{vmatrix}a_{11}&a_{12}&\cdots &a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\cdots&\cdots&&\cdots\\a_{n1}&a_{n2}&\cdots&a_{nn}\en…...
k8s HPA 自动伸缩机制 (配置,资源限制,)
目录 一、概念 核心概念 工作原理 HPA 的配置关键参数 关键组件 使用场景 注意事项 如何确保程序稳定和服务连续 二、metrics-server 部署 metrics-server 准备 metrics-server 镜像: 使用 Helm 安装 metrics-server: 配置 metrics-server: 安装 metrics-server: …...

vulhub中GIT-SHELL 沙盒绕过漏洞复现(CVE-2017-8386)
GIT-SHELL 沙盒绕过(CVE-2017-8386)导致任意文件读取、可能的任意命令执行漏洞。 测试环境 为了不和docker母机的ssh端口冲突,将容器的ssh端口设置成3322。本目录下我生成了一个id_rsa,这是ssh的私钥,连接的时候请指…...

SpringBoot+vue3打造企业级一体化SaaS系统
SpringBootvue3打造企业级一体化SaaS系统 简介: 全面提升前后端技术水平,独立完成全栈项目开发能力,快速进击全栈工程师,最终在面试中脱颖而出。整合后端主流技术(Spring Boot、物理数据库隔离、加载动态权限、多…...

探讨TCP的可靠性以及三次握手的奥秘
🌟 欢迎来到 我的博客! 🌈 💡 探索未知, 分享知识 !💫 本文目录 1. TCP的可靠性机制1.2可靠性的基础上,尽可能得提高效率 2. TCP三次握手过程3. 为何不是四次握手? 在互联网的复杂世界中,TCP&am…...
openai常见的两个错误:BadRequestError和OpenAIError
错误1:openai.OpenAIError: The api_key client option must be set either by passing api_key..... 在通过openai创建客户端必须要设置api key,如果你事先已经在本机的环境中设置未起效可以手动设置,注意手动设置时不要用下面的形式 import openai f…...

2核4g服务器够用吗?
2核4G服务器够用吗?够用。阿腾云以2核4G5M服务器搭建网站为例,5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10&am…...

数据仓库数据分层详解
数据仓库中的数据分层是一种重要的数据组织方式,其目的是为了在管理数据时能够对数据有一个更加清晰的掌控。以下是数据仓库中的数据分层详解: 原始数据层(Raw Data Layer):这是数仓中最底层的层级,用于存…...

unity内存优化之AB包篇(微信小游戏)
1.搭建资源服务器使用(HFS软件(https://www.pianshen.com/article/54621708008/)) using System.Collections; using System.Collections.Generic; using UnityEngine;using System;public class Singleton<T> where T : class, new() {private static readonly Lazy<…...

白话模电:3.三极管(考研面试与笔试常考问题)
一、三极管的简单判断 1.判断三极 1)给了图 左边是b,有箭头是e,剩下是c 2)给了电位 b:中间值,e:较近值(离中间值),c:较远值(离中间值) 2.判断流向 bc同向(共同流向“|”或共同流离“|”),e与bc反向 3.判断材料 4.判断类型 5.判断能否构…...
LeetCode 395. 至少有K个重复字符的最长子串
解题思路 一道滑动窗口题型,不过滑动窗口的长度是不同种类元素的个数。 这里需要定义两个变量 cnt,overk。overk表示的是满足大于k的字符数, cnt表示的是该窗口中不同元素的个数且cnt>1&&cnt<26。 相关代码 class Solution {public int longestSub…...

C#重新认识笔记_ FixUpdate + Update
C#重新认识笔记_ FixUpdate Update Update: 刷新频率不一致,非物理对象的移动,简单的刷新可用, FixedUpdate: 刷新频率一致,按照固定频率刷新,一般调用FixedUpdate之后,会立即进入必要的物理计算中,因此,任何影响刚…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...