记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?
概述
今天发现业务突然停了,查看数据库日志提示无法扩展undo空间,发现了一个很奇怪的现象,下面记录一下解决的过程。
环境:Oracle11.2.0.4 RAC
1、查看告警日志提示
一般看到这种就是UNDO空间不够了,但是为什么会不够呢?我给的UNDO也有60G了,这种情况直接加UNDO不太现实,下面继续看下
2、观察数据库表空间情况
--查看表空间使用情况 SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(G)", free / (1024 * 1024 * 1024) "表空间剩余大小(G)", (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", round((total - free) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
奇怪的现象来了,可以发现只有一个UNDOTBS2,没有UDNOTBS1,莫非是有人删除了?
3、查看默认UNDO
检查数据库默认UNDO,理论上应该UNDOTBS1的
可以发现默认的UNDO变成了UNDOTBS2.
4、检查undo表空间
select file_id,file_name,tablespace_name from dba_data_files; select tablespace_name,status from dba_tablespaces;
可以看到UNDO表空间都是正常的。
5、检查两个实例的UNDO情况
show parameter name; show parameter undo;
可以看到也没有异常
6、查看dba_free_space情况
select distinct(tablespace_name) from dba_free_space;
发现问题了,这里可以看到RAC1 RAC2看到的内容是不一致的。
应该是UNDO没有空间了或者无法扩展会导致 dba_free_space看不到。
7、调整undo时间
因为之前调整为54000秒,应该是这段时间的UNDO表空间一直撑满导致,调整为5个小时看看。
SQL> ALTER SYSTEM SET undo_retention=18300 SCOPE=BOTH;
8、查看undo情况
可以看到这时候可以发现UNDOTBS1了。
这里主要用亲身经历告诉大家这么一个情况:存在表空间不存在于dba_free_space 中(可能是因为表空间过大已爆掉)。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
相关推荐
bfcady 2020-08-16
Hody 2020-08-16
FightFourEggs 2020-08-16
流云追风 2020-07-04
dataminer 2020-06-25
zhangchaoming 2020-06-04
FightFourEggs 2020-05-28
spurity 2020-11-10
赵继业 2020-08-17
lidongliang 2020-08-16
Kele0 2020-06-13
一次次尝试 2020-06-13
warden00 2020-06-11
阿亮 2020-06-10
FightFourEggs 2020-06-02
Carlos 2020-05-31
cyhgogogo 2020-05-27
大慧 2020-05-27