undo表空间修复小结(2)

4,试图创建发现报错,真正工作中可以从这里来判断到底是那种情况,第一种情况是可以重新建立的。
 必须先禁止继续使用旧的回滚段和回滚空间: 

SQL>create pfile=/oracle/app/pfile.ora  from spfile
 

file created 

SQL>shutdown  immediate ;

在pfile中添加并修改以下内容:

*.undo_management='manual'  ###手动管理,才可以删除回滚段

*._offline_rollback_segments=('_SYSSMU154_3691636531$','_SYSSMU155_3686385895$','_SYSSMU156_3796802683$','_SYSSMU157_2723916652$','_SYSSMU158_1435464080$')      ###这样才能删除这些回滚段

*.undo_tablespace='undo2'    ###这样就会让以后的事务不在用旧的回滚段和undo表空间,

5.创建成spfile  然后启动数据库。

SQL>create spfile  from pfile;
 

spfile created 

SQL>startup 

6,删除旧的回滚段和回滚表空间:

SQL>drop rollbackup segment  '_SYSSMU154_3691636531$'  ;

'

'

'

'

把need recovery 的回滚段全部删除后,

SQL>drop undo tablespace undo1 including  contents;  ###因为已经丢失,就不必要添加数据文件了(and datafiles 选项了)

7,创建一个新的undo表空间,然后启动数据库,再修改undo_management 为自动。

注意这样后,所有未提交的事务都当做提交处理了。

总结:要是undo出现问题,你可以先把数据文件offline,然后修改undo_management 为manual,之后查出状态need recover 的回滚段,修改隐含参数 *._offline_rollback_segments ,把需要删除的(状态为need recover 的回滚段)添加进来,然后删除他们。重新创建undo表空间,然后undo_tablespace=新创建的表空间,打开数据库,最后把undo_management =auto ,即可。

--------------------------------------------------------------------------------

RMAN备份与恢复之undo表空间丢失

关于Oracle 释放过度使用的undo表空间

Oracle undo的一些理解

Oracle undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(undo)

Linux-6-64下安装Oracle 12C笔记

CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

--------------------------------------------------------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a4b678d69f32c4c0e9fea7212730a6bc.html