本文主要是介绍Oracle undo表空间爆满的解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 启动SQLPLUS,并用sys登陆到数据库。 #su - oracle $>sqlplus / as sysdba 2. 查找数据库的UNDO表空间名,确定当前例程正在使用的UNDO表空间: Show parameter undo_tablespace。3. 确认UNDO表空间; SQL> select name from v$tablespace; NAME ------------------------------ UNDOTBS1 4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置; select file_name, bytes / 1024 / 1024 / 1024from dba_data_fileswhere tablespace_name like 'UNDOTBS%';5. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间(特别是生产环境)。 select s.username, u.namefrom v$transaction t, v$rollstat r, v$rollname u, v$session swhere s.taddr = t.addrand t.xidusn = r.usnand r.usn = u.usnorder by s.username;查询结果为空的话就能删除。6. 检查UNDO Segment状态; select usn,xacts,rssize / 1024 / 1024 / 1024,hwmsize / 1024 / 1024 / 1024,shrinksfrom v$rollstatorder by rssize;USN XACTS RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024 SHRINKS 8 0 0.00017547607421875 3.1152114868164
这篇关于Oracle undo表空间爆满的解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!