oracle临时表空间过大的原因

oracle查找定位占用临时表空间较大的SQL语句方法 oracle查找定位占用临时表空间较大的SQL语句方法,包括:(1)造成临时表空间暴涨的SQL还在运行中(2)造成临时表空间暴涨的SQL已经运行过了。 立即下载

Oracle临时表空间主要是用来做查询和存放一些缓存的数据的,磁盘消耗的一个主要原因是需要对查询的结果进行排序,如果没有猜错的话,在磁盘空间的(内存)的分配上,Oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB,如果还有增长,那么依此类推,临时表空间始终保持在一个最大的上限。Oracle临时表空间暴涨的现象经过分析可能是以下几个方面的原因造成的。
        1. 没有为临时表空间设置上限,而是允许无限增长。但是如果设置了一个上限,最后可能还是会面临因为空间不够而出错的问题,临时表空间设置太小会影响性能,临时表空间过大同样会影响性能,至于需要设置为多大需要仔细的测试。
        2.查询的时候连表查询中使用的表过多造成的。我们知道在连表查询的时候,根据查询的字段和表的个数会生成一个迪斯卡尔积,这个迪斯卡尔积的大小就是一次查询需要的临时空间的大小,如果查询的字段过多和数据过大,那么就会消耗非常大的临时表空间。
       3.对查询的某些字段没有建立索引。Oracle中,如果表没有索引,那么会将所有的数据都复制到临时表空间,而如果有索引的话,一般只是将索引的数据复制到临时表空间中。
       针对以上的分析,对查询的语句和索引进行了优化,情况得到缓解,但是需要进一步测试。

       总结:
       1.SQL语句是会影响到磁盘的消耗的,不当的语句会造成磁盘暴涨。
       2.对查询语句需要仔细的规划,不要想当然的去定义一个查询语句,特别是在可以提供用户自定义查询的软件中。
       3.仔细规划表索引。

如果临时表空间是temporary的,空间不会释放,只是在sort结束后被标记为free的,如果是permanent的,由SMON负责在sort结束后释放,都不用去手工释放的。查看有哪些用户和SQL导致TEMP增长的两个重要视图:v$sort_usage和v$sort_segment对于非LMT管理方式的TEMP表空间,最简单的方法是Metalink给出的一个方法:
修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。
SQL>alter tablespace temp default storage(pctincrease 1);
SQL>alter tablespace temp default storage(pctincrease 0);

而对于LMT管理方式的TEMP表空间,需要重新建立一个新的临时表空间,将所有用户的默认临时表空间指定到新的表空间上,然后offline旧的临时表空间,并drop掉。具体步骤如下:

首先查询用户的缺省临时表空间:

[oracle@jumper oracle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Wed Apr 12 11:11:43 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS                                 TEMP2
SYSTEM                         TEMP2
OUTLN                           TEMP2
EYGLE                            TEMP2
CSMIG                            TEMP2
TEST                               TEMP2
REPADMIN                     TEMP2
......

13 rows selected.

SQL> select name from v$tempfile;

NAME
---------------------------------------------------------------------
/opt/oracle/oradata/conner/temp02.dbf
/opt/oracle/oradata/conner/temp03.dbf

重建新的临时表空间并进行切换:

SQL> create temporary tablespace temp tempfile '/opt/oracle/oradata/conner/temp1.dbf' size 10M;

Tablespace created.

SQL> alter tablespace temp add tempfile '/opt/oracle/oradata/conner/temp2.dbf' size 20M;

Tablespace altered.

SQL> alter database default temporary tablespace temp;

Database altered.

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS                                 TEMP
SYSTEM                         TEMP
OUTLN                           TEMP
EYGLE                            TEMP
CSMIG                           TEMP
TEST                               TEMP
REPADMIN                     TEMP
.......

13 rows selected.

如果原临时表空间无用户使用(select tablespace_name,current_users,total_blocks,used_blocks,free_blocks,free_blocks/total_blocks from v$sort_segment;),如果是文件系统可以看看文件的时间戳。

我们可以删除该表空间:(如果原临时表空间还有用户在用,你是删除不了这个表空间的!在一次生产环境的临时表空间切换中,原临时表空间始终有用户在上面,即使我关闭了前台程序,也还是有用户,新的临时表空间已经没有用户在使用了。我估计用户进程已经死在原临时表空间了。后来只有重新启动数据库才能把原来旧的临时表空间给删除。)

SQL> drop tablespace temp2;

Tablespace dropped.

SQL>
SQL> select name from v$tempfile;

NAME
---------------------------------------------------------------
/opt/oracle/oradata/conner/temp1.dbf
/opt/oracle/oradata/conner/temp2.dbf

SQL> select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible
2 from dba_temp_files
3 /

FILE_NAME                              TABLESPACE_NAME              MB AUTOEXTENSIBLE
-------------------------------------- -------------------- ---------- --------------
/opt/oracle/oradata/conner/temp2.dbf   TEMP                         20 NO
/opt/oracle/oradata/conner/temp1.dbf   TEMP                         10 NO

drop tablespace temp including contents and datafiles; --将表空间的内容和数据文件一起删除。

下面是查询在sort排序区使用的执行耗时的SQL:
Select se.username,se.sid,su.extents,su.blocks*to_number(rtrim(p.value))as    Space,tablespace,segtype,sql_text
  from v$sort_usage su,v$parameter p,v$session se,v$sql s
  where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash and s.address=su.sqladdr
  order by se.username,se.sid

或是:

Select su.username,su.Extents,tablespace,segtype,sql_text
From v$sort_usage su,v$sql s
Where su.SQL_ID = s.SQL_ID

转贴于:Oracle认证考试_考试大【责编:zj  纠错】
相机标定-张正友棋盘格标定法 (X,Y,Z)为在世界坐标系下一点的物理坐标 ( u , v ) 为该点对应的在像素坐标系下的像素坐标 引入齐次坐标的原因:引入齐次坐标的目的是为了升维,将坐标从二维坐标变为三维坐标。 2.相机成像过程 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 (1)世界坐标系(,,) 描述目标在真实世界中的位置引入的参考坐标系。 (2)相机坐标系(,,) ... 阅读详情

相关推荐

Golang面试(一)莉莉丝游戏-Golang后端开发-中台部门

莉莉丝游戏-Golang后端开发-中台部门 开场白,双方自我介绍,对方介绍这个岗位情况,erlang语言,全部转向go。 聊项目,介绍IM架构以及使用Go写的服务简介 动态扩容相关问题:平常30万,现在100万,你们现在是如何应对的? 如果让你调整架构实现动态扩容,你会怎么做?回答了kafka,是一种,应该还要使用docker和k8s以及微服务框架等 如果使用kafka,你是如何确保消息有序?回答了redis,好像没回答到那个点 消息发送失败的问题,如何做到消息不丢?回答持久化存储、拉消息和ACK 发送失

xmcy001122的专栏 3899

TEMP临时表空间过大的处理方法

#查看用户默认表临时表空间 select username,temporary_tablespace from dba_users; #查看临时表数据文件 select name from v$tempfile;   #查看哪些用户在使用临时表空间 SELECT se.username, se.SID, se.serial#, se.sql_address, se.machine, s

Fengg--Focus Oracle 3710

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区

本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。

dell8的博客 249

oracle数据占用空间过大的分析

      在优快云使用这个博客以来,一致在写一些经济书籍的读后感,在一个技术网站写这个,感觉颇为遗憾。正好最近工作中发生了一件ORACLE数据库空间占用过大的问题,拿出来和大家分享。为了有趣些,参杂了一些事情和个人感受。       事情来源一个开发的同事突然发现我们的数据库中,索引表空间占用操作系统文件大小是数据表空间的3倍。这个表结构和索引设计都是平台部门的设计,都是平台的事情,本

说 自己听 5185

Obsidian + AI 自动知识管理:手把手教程

装完后,在命令面板(Ctrl+P)搜 "Generate Summary",AI 会在当前笔记末尾追加一段摘要。你一个月前写的、现在想快速回顾的笔记长篇笔记(三千字以上)开会记录这类信息密集的内容过度自动化。有人装上插件后,所有笔记都让 AI 打标签、写摘要、找关联。最后笔记库看起来整整齐齐,但全都是 AI 的链接,你自己完全没参与。这样做的后果是什么?你写过的笔记跟你没有"真实连接"。你还是记不住。你还是不知道自己的知识库里有什么。AI 推荐,你决策。

weixin_43571227的博客 748

一文搞懂数据标注

数据标注即通过分类、画框、标注、注释等,对图片、语音、文本等数据进行处理,标记对象的特征,以作为机器学习基础素材的过程。简言之,就是需要给数据做好标注,这样机器就能知道学习哪些内容。

女王の专属领地 9940

Oracle修改表空间大小

1.通过sql plus 命令登录数据库。   在命令行下输入sqlplus “登录用户名/口令 as 登录类型”就可以登录,系统内建的用户名常用的是sys,密码是在安装oracle过程中设置的密码,清务必牢记,如果用sys帐户登录,登录类型一定要是sysdba。 2.查看各表空间分配情况。 select tablespace_name, sum(bytes) / 1024 / 1024 ...

kt431128的专栏 350

【蓝桥杯单片机组第八届省赛】— 基于单片机的电子钟程序设计与调试

1、初赛试题 1.1 基本要求 (1)使用 CT107D 单片机竞赛板, 完成“电子钟” 功能的程序设计与调试; (2)设计与调试过程中,可参考组委会提供的“资源数据包”; (3)Keil 工程文件以准考证号命名, 完成设计后, 提交完整、 可编译的 Keil工程文件到服务器。 1.2 硬件框图 1.3功能描述 1.3.1 初始化 (1)关闭蜂鸣器、继电器等无关外...

Fanjufei的博客 3661

Oracle 临时表空间过大问题解决-性能调优

查询数据库服务器时,发现数据库服务器磁盘使用空间达到了98%,分析总共的数据文件也不可能达到如此大,经过查询发现原来临时表空间的使用情况达到了 32G,导致磁盘空间使用紧张。搜索了相应的文档与资料后,查出临时表空间主要使用在:    - 索引创建或重创建。    - ORDER BY or GROUP BY (这个是‘罪魁祸首’)    - DISTINCT 操作。    - UNION & IN

johnson58的专栏 1453

2025资源从哪里来!

研究网络通信中的安全问题,如VLAN划分、路由协议(静态、动态如OSPF、BGP)、NAT转换、AAA认证、访问控制列表(ACL)等。‌Wi-Fi安全设置‌、‌密码破解原理‌(仅用于合法测试或教育目的)、‌常见Web安全问题‌如SQL注入、XSS跨站脚本攻击等的防范措施。在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不?‌防火墙配置与策略‌、‌入侵检测与防御系统(IDS/IPS)‌、‌端口扫描与漏洞扫描技术‌等。

qq_56248592的博客 1902

python基础:工作会用到的95%的基础python代码都在这了(万字详解!)

本文是一份Python编程语言的快速参考备忘单,涵盖了Python基础语法和常用数据类型。主要内容包括:Python入门指南(打印、变量声明)、内置数据类型(字符串、数值、列表、元组、集合、字典等)、控制结构(判断、循环)、函数定义、文件处理操作以及字符串操作方法(切片、循环遍历等)。这个备忘单特别适合初学者快速查阅Python基础语法,同时也提供了数据类型转换、f-string格式化字符串等实用技巧。通过简洁的代码示例展示了Python的基本语法规则和典型用法。

数据知道的博客 8160

oracle表空间默认增长大小,Oracle 用户表空间查看、修改大小、设置自增长等

分类: Oracle首先登入某个用户,查看某个用户在哪个表空间下:select username,default_tablespace from user_users;查看该用户下所有的表:select * from user_tables;查看所有表 名称、路径、是否自动增长:select tablespace_name,file_name,autoextensible from dba_dat...

weixin_39553600的博客 1687

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1672

oracle临时表空间过大的原因&&处理

oracle临时表空间过大的原因2009-05-12 11:22Oracle临时表空间主要是用来做查询和存放一些缓存的数据的,磁盘消耗的一个主要原因是需要对查询的结果进行排序,如果没有猜错的话,在磁盘空间的(内存)的分配上,Oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB,如果还有增长,那么依此类推,临时表空间始终保持在一个最大的上限。Oracle临时表空间暴涨的现象经过分析可能是以下几个方面的原因造成的。        1. 没有为临时表空间设置上限,而是允许无限增长

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 4697

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

oracle创建表空间_oracle中system、sysaux或者临时表空间占用过大一般是什么原因?...

概述 oracle表空间这个概念大家应该都很熟悉了, 这是一个逻辑概念,可以理解为在数据库中开辟的空间用来存储数据库对象。表空间相关1、表空间和数据文件的关系: 表空间由一个或多个数据文件组成;数据文件的大小和位置可以自己定义;2、表空间的分类: 永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程 临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放 UND...

weixin_39796878的博客 266

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数据库表占用空间过大_oracle中system、sysaux或者临时表空间占用过大一般是什么原因?...

概述 oracle表空间这个概念大家应该都很熟悉了, 这是一个逻辑概念,可以理解为在数据库中开辟的空间用来存储数据库对象。表空间相关1、表空间和数据文件的关系: 表空间由一个或多个数据文件组成;数据文件的大小和位置可以自己定义;2、表空间的分类: 永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程 临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放 UND...

weixin_32909875的博客 870

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

oracle temp过大,Oracle 临时表空间过大问题解决

查询Oracle数据库服务器时,发现数据库服务器磁盘使用空间达到了98%,分析总共的数据文件也不可能达到如此大,经过查询发现原来临时表空间的使用情况达到了 32G,导致磁盘空间使用紧张。搜索了相应的文档与资料后,查出临时表空间主要使用在:- 索引创建或重创建。- ORDER BY or GROUP BY (这个是‘罪魁祸首’)- DISTINCT 操作。- UNION & INTERSEC...

weixin_35725138的博客 686

ORACLE 临时表空间满了的原因解决方案

临时表空间作用 Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,t...

cuchou5321的博客 1021

Oracle临时表空间为何暴涨?---摘贴

昨天在做测试的时候发现一个非常奇怪的问题:在程序的查询模块中做查询的时候,开始速度很快,但是过了一段时间以后速度就变慢,最后干脆就报错,不工作了。在排错的过程中,发现Oracle临时表空间暴涨,达到了几十个GB,在Oracle中对Session进行跟踪,发现磁盘空间还在不停的消耗,几乎是每隔5s,临时表空间就会增长500MB左右,最后报错的原因应该是因为没有磁盘空间可以分配造成的。这是一件十分恐怖的事情。 我们知道Oracle临时表空间主要是用来做查询和存放一些缓存的数据的,磁盘消耗的一个

BubbleKitty的小園 847

Oracle临时表空间占用情况分析及解决

最近有两个项目点反馈临时表空间出现快速增长,导致系统硬盘被占满的情况。原来项目较紧张,采取定时清空临时表空间的策略暂时支撑,最近能抽出时间分析下具体原因: 首先了解下临时表空间的作用: Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。 临时表空间的主要作用:索引create或rebuild、Order by 或 gr

u014729212的博客 1万+

Oracle扩展temp表空间命令,如何在oracle中缩小临时表空间?ORA-01652无法在表空间中扩展temp...

查询临时表空间有多大:SQL> SELECT tablespace_name, file_name, bytesFROM dba_temp_files WHERE tablespace_name like 'TEMP%';TABLESPACE_NAME FILE_NAME BYTES----------------- ---...

weixin_32601635的博客 281

【转】ORACLE 临时表空间使用率过高的原因及解决方案

在数据库的日常学习中,发现公司生产数据库的默认临时表空间temp使用情况达到了30G,使用率达到了100%; 待调整为32G后,使用率还是为100%,导致磁盘空间使用紧张。根据临时表空间的主要是对临时数据进行排序和缓存临时数据等特性,待重启数据库后, temp会自动释放。于是想通过重启数据库的方式来缓解这种情况,但是重启数据库之后,发现临时表空间temp的使用率还是100%,一点没变。虽然运行 中...

weixin_30335575的博客 100

转:Oracle 临时表空间过大问题解决

转自:http://blog.chinaunix.net/u/15472/showart.php?id=306359 Oracle 临时表空间过大问题解决 今天过来查询数据库服务器时,发现数据库服务器磁盘使用空间达...

css48419的博客 149

【DB笔试面试669】在Oracle中,若临时表空间使用率过高有什么调优思路?

♣题目部分在Oracle中,若临时表空间使用率过高有什么调优思路? ♣答案部分临时表空间是Oracle数据库的重要组成部分,尤其是对于大型的频繁操作,如创建索引、...

小麦苗DBA宝典 563

oracle临时表空间删不掉,temp表空间删不掉

本帖最后由 Ashic 于 2015-10-31 16:58 编辑版本10.2.0.1客户有一个TEMP表空间‘TEMP2’ 34G了觉得太大了想要删了客户原话:“对了,今天 删除 临时表空间drop tablespace TEMP2 including contents and datafiles; 一直不动Create temporary tablespace TEMP2 tempfile '...

weixin_32339855的博客 1467

Oracle unable to extend temp segment by 128 in tablespace TEMP

Description   Error report:  SQL Error: ORA-12801: error signaled in parallel query server P010  ORA-01652: unable to extend temp segment by 128 in tablespace TEMP  12801. 00000 - "error signaled in ...

weixin_30787531的博客 228
上一篇: 表闪回操作及解决闪回表时出现的ORA-08189故障
下一篇: ORA-16038和ora-19809错误
常飞梦
常飞梦 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄21年 403粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值