维护的一个库,最近发现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 Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - ProductionSQL>
show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 1800
undo_tablespace string UNDOTBS1SQL> SELECT autoextensible FROM dba_data_files WHERE tablespace_name = 'UNDOTBS1';AUTOEXTENSIBLE--------------YES
SQL> 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
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:UNDO表空间使用率过高-创新互联
文章位置:
http://cdkjz.cn/article/dhscjs.html