[Oracle]undo表空间使用量为100%
在Toad中发现undo表空间undotbs1使用量已经达到100%,但是奇怪的是数据库并没有hang住,依然可以正常运转

通过Oracle提供的EM查看undotbs1表空间的使用,也达到了78.8

在上一篇文章中,我们介绍了undo表空间中区的3种状态:ACTIVE、EXPIRED、UNEXPIRED。在对其概念理解后,个人认为在未设置undo表空间retention guarantee的情况下,只要ACTIVE状态的区未达到100%,皆不会造成数据库hang住。
那么Toad中undotbs1为什么使用率达到100%,而EM为78.8呢?
通过追踪Toad及EM的对应SQL语句,发现Toad把3种状态都计算在计算在内了,而EM则计算了ACTIVE和EXPIRED两种状态。
通过查询状态为ACTIVE的区,发现数量为0:
SQL> select * from dba_undo_extents where status = 'ACTIVE';
OWNER SEGMENT_NAME TABLESPACE_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO COMMIT_JTIME COMMIT_WTIME STATUS
----- ------------- ---------------- ---------- ---------- ---------- ---------- ---------- ------------ ------------ -------------------- ---------
所以,可以认为:
1.Toad统计的undo表空间的使用率是不准确的;
2.EM统计了2种状态,个人认为在未设置undo表空间retention guarantee的情况下,只要统计ACTIVE状态的区即可,统计undo表空间使用率的SQL语句如下:
--统计ACTIVE状态的区占用率多少undo表空间
WITH DF AS
(SELECT
TABLESPACE_NAME,
SUM(BYTES) BYTES,
COUNT(*) CNT, --每个表空间数据文件的个数
DECODE(SUM(DECODE(AUTOEXTENSIBLE, 'NO', 0, 1)), 0, 'NO', 'YES') AUTOEXT --是否自动扩展
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) SELECT
D.TABLESPACE_NAME,
round(NVL(A.BYTES / 1024 / 1024 / 1024, 0),1) all_tablespace_gb,
round(NVL(U.BYTES, 0) / 1024 / 1024 / 1024 ,1) undo_tablespace_used_gb,
round(NVL(A.BYTES - NVL(U.BYTES, 0), 0) / 1024 / 1024 / 1024,1) undo_tablespace_free_gb,
round(NVL(U.BYTES / A.BYTES * 100, 0),1) "undo_tablespace_used_per %",
A.AUTOEXT,
D.STATUS,
A.CNT datafile_cnt,
D.CONTENTS
FROM
DBA_TABLESPACES D,
DF A,
(SELECT
TABLESPACE_NAME,
SUM(BYTES) BYTES --记录不可使用的undo segment:包括状态为active的区,不包括unexpired和expired
FROM DBA_UNDO_EXTENTS
WHERE STATUS IN ('ACTIVE') --如果使用了retention guarantee特性,则还需统计状态为unexpired的区:WHERE STATUS IN (‘ACTIVE’,’UNEXPIRED’)
GROUP BY TABLESPACE_NAME) U
WHERE
D.TABLESPACE_NAME = A.TABLESPACE_NAME(+) --左外连接(left join)
AND
D.TABLESPACE_NAME = U.TABLESPACE_NAME(+)
AND
D.CONTENTS = 'UNDO'
ORDER BY 1
通过这种方法,我们可以统计出实际使用的undo表空间(extent状态为ACTIVE的部分),可以发现undotbs1表空间很空闲。

[Oracle]undo表空间使用量为100%的更多相关文章
- 监控和管理Oracle UNDO表空间的使用
对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DM ...
- Oracle undo 表空间管理 (摘DAVID)
Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...
- Oracle undo 表空间不可用
由于某次不小心操作,在切换表空间时没有成功,由于把undo的配置参数 undo_management值设置为MANUAL所以在启动数据库时没有报任何错误,但是给表插入数据时报错了,回滚段不可用的错误. ...
- oracle undo表空间
查询undo表空间状态 "Bytes(M)" FROM dba_undo_extents GROUP BY tablespace_name, status; Undo表空间的状态( ...
- oracle undo表空间大小修改
redhat:清空回收站 rm -rf /home/登录用户名/.Trash 例子:rm -rf /home/.Trash-root df命令可以显示目前所有文件系统的可用空间及使用情形: 例子:d ...
- Oracle 11gR2 Database UNDO表空间使用率居高不下-转载
客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的 ...
- Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)
UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...
- oracle 11g 表空间使用率
Oracle数据库表空间使用量查询: select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum ...
- 记一次ORACLE的UNDO表空间爆满分析过程
这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...
随机推荐
- js复制内容到剪贴板
我们web上的复制,有时候尽管可以用鼠标选中,然后复制,但是某些时候,文字不方便选中.因此,我们自定义一个复制按钮,然后通过点击它,把想要的内容复制到剪贴板上.我归纳总结了几种方法: 1.ZeroCl ...
- assert断言检测
assert 是宏,非函数,包含在assert.h 头文件中. 如果其后面括号里的值为假,则程序终止运行,并提示出错.这个 宏只在 Debug 版本上起作用,而在 Release 版本被编译器完全优化 ...
- celery学习之入门
Celery 简介 Celery 是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具.它是一个专注于实时处理的任务队列,同时也支持任务调度. broker:一个消息 ...
- Unity3D打包 将发布的exe文件打包成一个Windows安装文件(自解压文件)
Unity打包Standalone时 会出现一个exe文件和一个data文件夹 可是我们平常见过的软件 基本没有这种像这种结构的 一般都是一个安装文件,然后点击安装,选择路径,生成快捷方式- 本篇博客 ...
- modal verbs(一)
什么是modal verb?翻译成中文就是情态动词. modal的意思是模式的,情态的,形式的.Bootstrap中的模态框就是这个词modal. 情态动词翻译挺准确的,就是表达说话人的情绪,态度或语 ...
- paho.mqtt.c打印日志
mqtt中自身就带有日志系统Log.h和Log.c,这些日志文件是在客户端调用MQTTClient_create函数是初始化的,MQTTClient_create源码如下: int MQTTClien ...
- python 对模块的应用你还得练点这些
1.有如下字符串:n = "路飞学城"(编程题) - 将字符串转换成utf-8的字符编码的字节,再将转换的字节重新转换为utf-8的字符编码的字符串 - 将字符串转换成gbk的字符 ...
- poj-1131-(大数)八进制转化成十进制
Description Fractions in octal (base 8) notation can be expressed exactly in decimal notation. For e ...
- Algorithm --> 最长回文子串
1.中心扩展 中心扩展就是把给定的字符串的每一个字母当做中心,向两边扩展,这样来找最长的子回文串.算法复杂度为O(N^2). 但是要考虑两种情况: 1.像aba,这样长度为奇数. 2.想abba,这样 ...
- 使用selenium时提示:ImportError:No module named selenium
问题分析: 用的是mac系统,已经通过sudo pip install -U selenium安装好了selenium, 但是无论用命令行还是用sublime导入selenium都会提示错误. 于是查 ...