记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

概述

今天发现业务突然停了,查看数据库日志提示无法扩展undo空间,发现了一个很奇怪的现象,下面记录一下解决的过程。

环境:Oracle11.2.0.4 RAC


1、查看告警日志提示

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

一般看到这种就是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;

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

奇怪的现象来了,可以发现只有一个UNDOTBS2,没有UDNOTBS1,莫非是有人删除了?


3、查看默认UNDO

检查数据库默认UNDO,理论上应该UNDOTBS1的

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

可以发现默认的UNDO变成了UNDOTBS2.


4、检查undo表空间

select file_id,file_name,tablespace_name from dba_data_files;
select tablespace_name,status from dba_tablespaces;

可以看到UNDO表空间都是正常的。

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?


5、检查两个实例的UNDO情况

show parameter name;
show parameter undo;

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

可以看到也没有异常


6、查看dba_free_space情况

select distinct(tablespace_name) from dba_free_space;

发现问题了,这里可以看到RAC1 RAC2看到的内容是不一致的。

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

应该是UNDO没有空间了或者无法扩展会导致 dba_free_space看不到。


7、调整undo时间

因为之前调整为54000秒,应该是这段时间的UNDO表空间一直撑满导致,调整为5个小时看看。

SQL> ALTER SYSTEM SET undo_retention=18300 SCOPE=BOTH;

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?


8、查看undo情况

可以看到这时候可以发现UNDOTBS1了。

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?


这里主要用亲身经历告诉大家这么一个情况:存在表空间不存在于dba_free_space 中(可能是因为表空间过大已爆掉)。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

记一个很奇怪的现象:Oracle数据库undotbs1表空间莫名丢失?

相关推荐