千家信息网

UNDO表空间使用率过高

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,维护的一个库,最近发现undo表空间的使用率已经到了95%。让undo表空间的自动扩展,或新建undo表空间进行切换都可以解决这个问题。undo表空间自动扩展,可能会导致undo不释放,undo表空间
千家信息网最后更新 2025年02月07日UNDO表空间使用率过高

维护的一个库,最近发现undo表空间的使用率已经到了95%。
让undo表空间的自动扩展,或新建undo表空间进行切换都可以解决这个问题。
undo表空间自动扩展,可能会导致undo不释放,undo表空间的增大,浪费存储空间。
新建undo表空间进行切换,也需要人工干预。
能不能让Oracle自动进行undo表空间的收缩呢?查了MOS,找到一种方法。

设置undo表空间为自动扩展,并设置数据文件自动扩展的最大值MAXSIZE。
这样可以不用调整undo_retention,在最大限度满足闪回的同时,
也可以避免undo表空间使用率过高,不释放的问题。

SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - ProductionCORE 11.2.0.3.0 ProductionTNS for Linux: Version 11.2.0.3.0 - ProductionNLSRTL Version 11.2.0.3.0 - Production
SQL> show parameter undoNAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 1800undo_tablespace string UNDOTBS1
SQL> SELECT autoextensible FROM dba_data_files WHERE tablespace_name = 'UNDOTBS1';AUTOEXTENSIBLE--------------YESSQL> SELECT (sum(blocks) * 8) / 1024, status2 FROM dba_undo_extents group by status;(SUM(BLOCKS)*8)/1024 STATUS-------------------- ---------------------6648.375 UNEXPIRED504.625 EXPIRED

设置undo表空间为自动扩展,并设置数据文件自动扩展的最大值MAXSIZE

SQL>ALTER DATABASE DATAFILE '/opt/ora11g/datafile/LiangWei/undotbs01.dbf' AUTOEXTEND ON NEXT 1M MAXSIZE 8192M

经过大约5到10分钟后,查看undo表空间使用率

SQL>SELECT ((SELECT (NVL(SUM(bytes), 0))FROM dba_undo_extentsWHERE tablespace_name = 'UNDOTBS1'AND status IN ('ACTIVE', 'UNEXPIRED')) * 100) /(SELECT SUM(bytes)FROM dba_data_filesWHERE tablespace_name = 'UNDOTBS1') PCT_INUSEFROM dual;PCT_INUSE----------5.50333658


0