ORACLE UNDO表空间回收处理
2017-09-14 17:13
363 查看
目前有一个10g的数据库在检查时发现undo表空间异常庞大,undo表空间占了将近45G
1、首先查询当前undo表空间的使用情况,有文件使用已经达到32G
3、采取重建undo表空间的方法来,取消自动扩展
create undo tablespace undotbs2 datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS201.DBF' size 4G autoextend off;
alter tablespace undotbs2 add datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS202.DBF' size 4G autoextend off ;
alter tablespace undotbs2 add datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS203.DBF' size 4G autoextend off;
4、切换undo表空间
5、查看当前的undo1 的回滚段状态
6、由于上面的两个回滚段一直处于online状态,无法直接删除undotbs1表空间和数据文件回收空间,首先试着使用命令下线回滚段
7、查询回滚段状态,一直处于pengding offline状态
8、查找到相关的事务ID
9、根据上面的SID号查询该会话正在执行的操作
10、结束该会话
11、验证当前undotbs1 是否全部offline
12、删除掉undotbs1
1、首先查询当前undo表空间的使用情况,有文件使用已经达到32G
SQL> select file_name,bytes/1024/1024 MB,autoextensible from dba_data_files where tablespace_name like 'UNDOTBS1'; FILE_NAME MB AUT ---------------------------------------- ---------- --- D:\ORADB\ORADATA\ORCL\UNDOTBS01.DBF 32767.9844 YES D:\ORADB\ORADATA\ORCL\UNDOTBS02.DBF 8192 YES D:\ORADB\ORADATA\ORCL\UNDOTBS03.DBF 4096 YES2、查看当前undo的参数
SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1
3、采取重建undo表空间的方法来,取消自动扩展
create undo tablespace undotbs2 datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS201.DBF' size 4G autoextend off;
alter tablespace undotbs2 add datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS202.DBF' size 4G autoextend off ;
alter tablespace undotbs2 add datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS203.DBF' size 4G autoextend off;
4、切换undo表空间
SQL>alter system set undo_tablespace=undotbs2 scope=both;
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS2
5、查看当前的undo1 的回滚段状态
SQL> select segment_name,tablespace_name,status from dba_rollback_segs t where tablespace_name='UNDOTBS1' and status='OLINE'; SEGMENT_NAME TABLESPACE_NAME STATUS ------------------------------ ------------------------------ ---------------- _SYSSMU9$ UNDOTBS1 ONLINE _SYSSMU10$ UNDOTBS1 ONLINE
6、由于上面的两个回滚段一直处于online状态,无法直接删除undotbs1表空间和数据文件回收空间,首先试着使用命令下线回滚段
SQL> ALTER ROLLBACK SEGMENT "_SYSSMU9$" OFFLINE; Rollback segment altered.
7、查询回滚段状态,一直处于pengding offline状态
SQL> SELECT s.username, u.name ,r.status FROM v$transaction t, v$rollstat r, v$rollname u, v$session s WHERE s.taddr = t.addr AND t.xidusn = r.usn AND r.usn = u.usn ORDER BY s.username; USERNAME NAME STATUS --------------------------- ------------------------------ --------------- u01 _SYSSMU10$ PENDING OFFLINE u02 _SYSSMU505$ ONLINE u02 _SYSSMU501$ ONLINE u02 _SYSSMU9$ PENDING OFFLINE u02 _SYSSMU497$ ONLINE u02 _SYSSMU506$ ONLINE 6 rows selected.
8、查找到相关的事务ID
SQL> SELECT s.sid,serial#, u.name ,r.status 2 FROM v$transaction t, v$rollstat r, v$rollname u, v$session s 3 WHERE s.taddr = t.addr AND t.xidusn = r.usn AND r.usn = u.usn and r.status='PENDING OFFLINE' ; SID SERIAL# NAME STATUS ---------- ---------- ------------------------------ --------------- 3150 18393 _SYSSMU9$ PENDING OFFLINE 3175 9695 _SYSSMU10$ PENDING OFFLINE
9、根据上面的SID号查询该会话正在执行的操作
select sql_text from v$session a,v$sqltext_with_newlines b where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value and a.sid=&sid order by piece;
10、结束该会话
alter system kill session '3150,18393'; alter system kill session '3175,9695'; ALTER ROLLBACK SEGMENT "_SYSSMU9$" OFFLINE; ALTER ROLLBACK SEGMENT "_SYSSMU10$" OFFLINE;
11、验证当前undotbs1 是否全部offline
select * from dba_rollback_segs t where tablespace_name='UNDOTBS1' and status='ONLINE';
12、删除掉undotbs1
SQL> drop tablespace undotbs1 including contents and datafiles; Tablespace dropped.
SQL> SELECT tablespace_name, status, SUM (bytes) / 1024 / 1024 "Bytes(M)" 2 FROM dba_undo_extents 3 GROUP BY tablespace_name, status; TABLESPACE_NAME STATUS Bytes(M) ------------------------------ --------- ---------- UNDOTBS2 UNEXPIRED 29.8125 UNDOTBS2 EXPIRED 50.1875 UNDOTBS2 ACTIVE 3
相关文章推荐
- Oracle的临时表空间和UNDO表空间对应的文件丢失后的处理
- 如何处理Oracle的UNDO表空间所对应的数据文件过大
- Oracle undo表空间爆满的处理方法
- oracle-dba-UNDO表空间管理
- Oracle回滚表空间数据文件误删除处理
- Oracle UNDO表空间的管理
- rac环境处理undo表空间过大的问题!
- oracle temp表空间处理方法
- 如何处理Oracle中TEMP表空间满的问题
- oracle undo表空间的清理
- oracle 表空间 不足时如何处理
- Oracle undo表空间概述
- 记一次ORACLE的UNDO表空间爆满分析过程
- Oracle切换undo表空间操作步骤(转)
- Oracle 10g中UNDO数据的作用及UNDO表空间的操作详解
- Oracle回滚表空间数据文件误删除处理
- [置顶] Oracle 11g Undo 表空间切换
- Oracle 释放过度使用的Undo表空间
- Oracle undo 表空间管理
- Oracle删除大表并回收空间的过程