1、查看使用率:
set lines 2000
col USED_PER for a60
SELECT A.TABLESPACE_NAME AS TABLESPACE_NAME,
ROUND(TOTAL/1024/1024/1024,3) AS TOTAL_GB,
ROUND(FREE/1024/1024/1024,2) AS FREE_GB,
ROUND(( TOTAL - FREE )/1024/1024/1024,2) AS USED_GB,
TO_CHAR(ROUND(( TOTAL - FREE ) / TOTAL * 100, 2),'90.99')||'%' AS USED_PER
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
order by USED_PER desc;
2、查看各状态undo使用情况统计
select tablespace_name,status,sum(bytes)/1024/1024 MB from dba_undo_extents where tablespace_name like 'UNDOTBS%' group by tablespace_name,status order by 1;
3、查看数据文件是否自动扩展
select TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
经过查看,目前undo datafile 均为非自动扩展.
4、拼接sql,设置undo数据文件为自动扩展
select 'ALTER DATABASE DATAFILE '||d.file_id||' AUTOEXTEND ON MAXSIZE '||((bytes/1024/1024) +1) ||'M;' from dba_data_files d where d.tablespace_name like '%UNDO%';
5、经过几分钟,查询使用率可看到undo使用率在减小,unexpire过高的情况明显改善。
