表空间研究---Undo Tablespace(一)---监控和块分配逻辑

最近在梳理巡检和监控项,涉及到表空间的监控,本文主要讨论undo监控脚本和块分配过程。

1. undo怎么监控?

select status,sum(bytes)/1024/1024 size_m from dba_undo_extents group by status;

2. 为什么?

undo是一个可以重用的表空间,其中ACTIVE状态的空间是当前正在使用的,所以理论上我们只监控这部分空间使用即可,形象点可以看下图:

UNDO表空间

回到问题本身,为什么普通的表空间使用率脚本不适用UNDO?,因为v$filespace_usage 和dba_tablespace_usage_metrics 统计的都包含了active+unexpired数据所以理论上使用率经常会高于实际active的使用率。

3. 如何判断Undo非Active空间是否可用?

要明确一定,active的undo段肯定是不能重用,那么剩余的非active(expired+unexpired)正常情况都可以重用,这里就要注意了,如果出现不能重用那么有可能是两种原因(这里未讨论Retention Guarantee的情况,Retention Guarantee下的Unexpired Extents不能重用):

新的DML申请undo块草图,图太难看了,自己有点看不下去了,不过没找到合适方法表达,先贴上来便于理解吧。


新DML申请undo块

已发起DML申请undo块草图


已发起DML申请undo块


目前还没介绍ORA-01555,下一篇文章介绍。

参考文章:DBA_TABLESPACE_USAGE_METRICS and expired undo extents (Doc ID 1615851.1)

https://blog.toadworld.com/how-does-oracle-reuse-expired-and-unexpired-undo-extents

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。