ORACLE 11G 回滚表空间undo满了处理方法

摘要:
如果可以保证,oracle将强制在保留时间内保留内容。此时,如果可用空间和过期空间不足,则新事物将失败。)过期:oracle希望将与提交的事务对应的undo表空间的undo段中的区段保留一段时间。未过期区域早于undo_状态将在保留设置的时间更改为已过期。Expired是一个可重复使用的撤消空间。原则上,过期区域不会免费发布。与一般用户表空间不同,undo表空间不能通过dba_free_Space来确定实际使用情况。除活动状态外,无法覆盖撤消表空间。如果撤消资源耗尽,事务可能会失败。

一.加大undo表空间:

  扩展数据文件大小

show parameter undo                                            --查看默认回滚表空间名(需在命令行下执行)
select tablespace_name,bytes/1024/1024,file_name from dba_data_files;      --查看表空间及对应的数据文件大小
alter database datafile '+DATA/rac/datafile/undotbs1.dbf' resize 30720M;    --修改数据文件大小

  增加数据文件

show parameter undo                                --查看默认回滚表空间名(需在命令行下执行)
select tablespace_name,bytes/1024/1024,file_name from dba_data_files; --查看表空间及对应的数据文件大小
alter tablespace undotbs1 add datafile '+DATA/rac/datafile/undotbs1_2.dbf' size 30G;   --增加数据文件

二.切换undo表空间:

  查看默认回滚表空间名(需在命令行下执行)

              ORACLE 11G 回滚表空间undo满了处理方法第1张

select name from v$datafile 

  创建undotbs11并将默认回滚表空间切换到undotbs11

create undo tablespace undotbs11 datafile '+DATA/rac/datafile/undotbs11_1.dbf' size 30G;
alter system set undo_tablespace=undotbs11 scope=both;

  查看是否已切换

show parameter undo

  查看正在使用的回滚表空间

select t.segment_name, t.tablespace_name, t.segment_id, t.status from dba_rollback_segs t;

  生成参数文件

create pfile from spfile;

  查看UNDOTBS1是否还在使用,当UNDOTBS1ONLINE时删除UNDOTBS1

select t.segment_name, t.tablespace_name, t.segment_id, t.status from dba_rollback_segs t where t.tablespace_name='UNDOTBS1' and t.status='ONLINE';
drop tablespace undotbs1 including contents and datafiles;

  查看正在使用回滚段的用户:

select s.username, u.name
  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;

三.查看undo段中区的状态:

select tablespace_name, status, sum(bytes) / 1024 / 1024 MB
  from dba_undo_extents
 group by tablespace_name, status;

select TABLESPACE_NAME,STATUS,CONTENTS,SEGMENT_SPACE_MANAGEMENT,RETENTION from dba_tablespaces where CONTENTS='UNDO';

free:     区未分配给任何一个段
active:   已经被分配给段,并且这个段被事务所使用,且事务没有提交,不能覆盖。 (区被未提交的事务使用)   
unexpired:事务已经提交,但是区还在段中,还没有被覆盖且未达到undo_retention设定的时间。
       (nogurantee的情况下,原则上oracle尽量的不覆盖unexpired的区,但是如果undo空间压力及较大,oracle也会去覆盖。如果是guarantee,oracle强制保留retention时间内的内容,这时候free和expired空间不足的话,新事物将失败。)
expired:  oracle希望已经提交的事务对应的undo表空间中的undo段中的区再保留一段时间。保留的时间就是undo_retention。
        unexpired的区存在时间超过undo_retention设定的时间,状态就会变为expired。expired为可重用undo空间(如果undo表空间100%,但是expired的空间还有,就不要紧),原则上expired的区一般不会释放成free。
 
PS:生产中没有人会将UNDOTBS的retention设置成GUARANTEE这是很危险的。
 

与一般的用户表空间不同,undo表空间不能通过dba_free_spaces来确定实际的使用情况,undo表空间除了active状态的extent不能被覆盖外。其他状态的extent都是可以空间复用的。

如果active的extent总大小很大,说明系统中存在大事务。如果undo资源耗尽(ACTIVE接近undotbs的总大小),可能导致事务失败。

免责声明:文章转载自《ORACLE 11G 回滚表空间undo满了处理方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.Net Core 3.1 解决数据大小限制Maven远程仓库的各种配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql死锁问题分析

https://blog.csdn.net/BaiHuaXiu123/article/details/54015279 SHOW GLOBAL VARIABLES LIKE 'innodb_deadlock_detect';SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';SHOW GLOBAL V...

oracle undo表空间异常激增排查

1.查看undo表空间使用大于98% 2.查看视图v$undostat,确认MAXQUERYID 占用undo最大的sql,TUNED_UNDORETENTION和预设的show parameter undo undo_retention是否一致,理想是一致的。 select * from v$undostat;    MAXQUERYID : SQL...

Oracle基础 索引

一、索引   索引是一种快速访问数据的途径,可提高数据库性能。索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据,就像书的目录,可以快速查找所需的信息,无须阅读整本书。   (一)索引的分类   逻辑分类:单列索引、组合索引、唯一索引、非唯一索引,函数索引。   物理分类:区分索引、非分区索引、B树索引、正向索引、反向索引,位图索引。   ...

SVN回滚版本

From http://keenwon.com/1072.html SVN是一个版本管理工具,在工作中经常使用,尤其是多人合作开发的时候,版本管理显得更加重要。需要使用回退的场景往往都比较“紧急”,今天就记录一下在使用SVN的时候怎么回退到指定的版本,方便以后随时查看。 方法一 右击文件(也可以是文件夹),TortoiseSVN – show log,右击...

oracle传输表空间

https://blog.csdn.net/ch7543658/article/details/39271135/ Oracle expdp/impdp常用性能优化方法 1、查看操作系统endianness格式 col platform_name for a40SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY...

oracle出现未选定行

初学oracle,在SQLplus输入查询命令 出现了以下情况。。  后来了解到oracle的SQL语句其中有些词必须大写才会有效。 在这个语句中将username后面的值改为大写就可以了。 还有一种就是查询的属性不对,在查询所创建的表空间的file_name时,我将这个表空间当做了永久的,所以出现了 当想起之前所创建表空间是临时的时,才改正。。。 粗心的...