测试服务器的磁盘满了,经分析由于测试服务器经常进行大量数据清理,UNDO表空间占了太多空间,于是打算新建UNDO表空间(UNDOTBS2),把旧(UNDOTBS1)的清理掉。
删除旧空间的时候发现怎么都删不了,报错说有回滚段被占用。
于是用查看回滚段情况:
select owner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS,tablespace_name from dba_rollback_segs;
结果显示 _SYSSMU14_1571488672$,_SYSSMU16_3431913684$ 等多个在UNDOTBS1上的回滚段的STATUS显示“NEEDS RECOVERY”,即这些回滚段有错误需要修复,阻止了删除UNDOTBS1。
上网搜索相关修复方法,按实际情况拟定修复方案,最后成功修复。方案如下:
- 用实例的system账号以DBA身份登录sqlplus:
- sqlplus system/**** as sysdba
- 关闭数据库:
- shutdown immediate
- 创建pfile文件:
- create pfile 'c:/pfile.ora' from spfile
- 修改pfile文件,添加以下参数:
- *.undo_management='Manual'
- _corrupted_rollback_segments=('_SYSSMU14_1571488672$','_SYSSMU16_3431913684$')
- 启动数据库:
- startup pfile='c:/pfile.ora'
- 删除状态为needs Recovery的segment:
- drop rollback segment "_SYSSMU14_1571488672$";
- 注意是用双引号,删除会有报错信息,只要删除了就忽略出错信息吧。
- 重启数据库并删除undo表空间:
- drop tablespace UNDOTBS1 including contents and datafiles;
- 修改pfile.ora,去除之前添加的隐藏参数启动数据库:
- startup pfile='c:/pfile.ora'
- 检查数据库是否能正常工作。
- 检查正常,确认完成修复,重启服务器。
以下为修复中使用过的一些命令记录:
查询正在运行的事务的回滚段使用情况
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;查询数据文件情况
select * from dba_data_files where tablespace_name like 'UNDOTBS1';
查询回滚空间的使用情况
select usn,xacts,status,rssize/1024/1024/1024, hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
创建新的UNDO表空间
create undo tablespace undotbs2 datafile 'D:\app\Administrator\oradata\QAS\UNDOTBS02.DBF' size 10m reuse autoextend on next 100m maxsize 20g;
指定系统使用新的UNDO表空间
alter system set undo_tablespace=undotbs2 scope=both;
显示UNDO相关参数
show parameter undo;
几个参考链接:
相关推荐
Oracle 11g R2 执行export导出时空表无法导出原因及解决方法 Oracle 11g R2 版本中,在执行export导出时,可能会出现空表无法导出的问题,本文将会详细介绍这个问题的原因和解决方法。 问题原因 在 Oracle 11g R2...
3. **段**:在Oracle中,数据被组织成段(Segment),每个段属于一个特定的表空间。 4. **表空间类型**: - **系统表空间(System Tablespaces)**:存储数据库的系统信息。 - **用户表空间(User Tablespaces)**:用于...
### Oracle 11g R2 (11.2.0.4) 最新升级补丁概述 Oracle 11g Release 2 (11.2.0.4) 是 Oracle 数据库的一个重要版本,该版本提供了许多新特性和改进,以提高数据库性能、安全性和可管理性。本文将详细介绍 Oracle ...
Oracle 数据泵是 Oracle Database 10g 引入的一个功能,能够实现数据和元数据在 Oracle 数据库之间的高速批量迁移。数据泵提供了新的高速并行导出和导入工具(expdp 和 impdp)以及基于 Web 的 Oracle 企业管理器...
这个版本的驱动是Oracle 11g Release 2的一部分,它支持Java 6平台,因此被称为ojdbc6。在本文中,我们将深入探讨ojdbc6驱动的工作原理、安装与配置,以及如何在实际项目中使用。 1. **JDBC驱动概述** JDBC是Java...
### Oracle 错误代码解析 #### ORA-00001: Unique constraint violated - **解释**: 当尝试插入或更新的数据违反了唯一性约束时触发此错误。 - **解决方案**: 检查数据是否重复,并确保每个字段值都是唯一的。 ##...
当公用回滚段出错时,可以通过设置`corrupted_rollback_segments`参数使用system回滚段作为临时替代。 2. **实施数据库恢复**: - 接下来,将故障的回滚段表空间的数据文件离线并删除。这可以通过`ALTER DATABASE ...
- ROLLBACK (数据库错误恢复机制) #### 三、项目管理与执行 - **项目组织**: - **需求分析小组**:负责调研市场需求和技术可行性。 - **设计小组**:负责系统架构设计、数据库设计等。 - **开发小组**:负责...