`
哇哈哈852
  • 浏览: 92635 次
文章分类
社区版块
存档分类
最新评论

RAC下丢失undo表空间的恢复

阅读更多




测试环境:
系统:LINUX-64
数据库:10.2.0.1
二节点RAC:RACDB1,RACDB2  存储使用的ASM

(1)插入数据,不提交
RACDB1>insert into xuhm.test3 values (4,'aa');

有一个活动的事务。
RACDB1>select usn,xacts from v$rollstat;

      USN    XACTS
---------- ----------
        0        0
        1        0
        2        0
        3        0
        4        1
        5        0
        6        0
        7        0
        8        0
        9        0
      10        0

(2)关闭数据库,删除RACDB1的UNDO表空间
RACDB1>shutdown abort;
RACDB2>shutdown abort;

ASMCMD> rm UNDOTBS1.260.794232647

(3)开启数据库
RACDB1>startup
Oracle instance started.

Total System Global Area 184549376 bytes
Fixed Size                2019448 bytes
Variable Size            121638792 bytes
Database Buffers          58720256 bytes
Redo Buffers              2170880 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '+RAC_DISK/racdb/datafile/undotbs1.260.794232647'

RACDB2>startup
ORACLE instance started.

Total System Global Area 184549376 bytes
Fixed Size                2019448 bytes
Variable Size            155193224 bytes
Database Buffers          25165824 bytes
Redo Buffers              2170880 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '+RAC_DISK/racdb/datafile/undotbs1.260.794232647'

RACDB2>shutdown immediate

(4)因为这个文件丢失,所以只好把这个文件offline处理
RACDB1>alter database datafile '+RAC_DISK/racdb/datafile/undotbs1.260.794232647' offline drop;


(5)打开数据库
RACDB1>alter database open;
无法打开数据库,查看alert日志报错如下
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '+RAC_DISK/racdb/datafile/undotbs1.260.794232647'
Error 604 happened during db open, shutting down database
USER: terminating instance due to error 604
Fri Sep 28 20:32:29 2012
Errors in file /u01/app/oracle/admin/RACDB/bdump/racdb1_lms0_9732.trc:
ORA-00604: error occurred at recursive SQL level
Fri Sep 28 20:32:29 2012
Errors in file /u01/app/oracle/admin/RACDB/bdump/racdb1_lmon_9728.trc:

需要修改如下参数:注意,这里一定要使用_corrupted_rollback_segments,不能使用_offline_rollback_segments,要不然还是无法打开数据库。
修改在pfile文件中。
RACDB1.undo_management='MANUAL'
RACDB1.undo_tablespace='UNDO2'
RACDB1._corrupted_rollback_segments=('_SYSSMU1$','_SYSSMU2$','_SYSSMU3$','_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_SYSSMU8$','_SYSSMU9$','_SYSSMU10$')

RACDB1>startup pfile='/u01/pfile';
ORACLE instance started.

Total System Global Area 184549376 bytes
Fixed Size                2019448 bytes
Variable Size            121638792 bytes
Database Buffers          58720256 bytes
Redo Buffers              2170880 bytes
Database mounted.
Database opened.

(6)删除回滚段
RACDB1>SELECT segment_name,status FROM DBA_ROLLBACK_SEGS WHERE STATUS'OFFLINE';

SEGMENT_NAME                  STATUS
------------------------------ ----------------
SYSTEM                        ONLINE
_SYSSMU1$                    NEEDS RECOVERY
_SYSSMU2$                    NEEDS RECOVERY
_SYSSMU3$                    NEEDS RECOVERY
_SYSSMU4$                    NEEDS RECOVERY
_SYSSMU5$                    NEEDS RECOVERY
_SYSSMU6$                    NEEDS RECOVERY
_SYSSMU7$                    NEEDS RECOVERY
_SYSSMU8$                    NEEDS RECOVERY
_SYSSMU9$                    NEEDS RECOVERY
_SYSSMU10$                    NEEDS RECOVERY

11 rows selected.

RACDB1>drop rollback segment "_SYSSMU1$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU2$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU3$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU4$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU5$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU6$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU7$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU8$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU9$";

Rollback segment dropped.

RACDB1>drop rollback segment "_SYSSMU10$";

Rollback segment dropped.

(7)删除旧的undo表空间,创建新undo表空间
RACDB1>drop tablespace undotbs1 including contents and datafiles;

Tablespace dropped.

RACDB1>create undo tablespace undo2 ;

Tablespace created.

(8)修改spfile参数
RACDB1>shutdown immediate
RACDB1>startup mount;
RACDB1>alter system set undo_management=auto scope=spfile sid='RACDB1';
RACDB1>alter system set undo_tablespace=UNDO2 scope=spfile sid='RACDB1';
RACDB1>shutdown immediate
RACDB1>startup
RACDB1>show parameter undo

NAME                                TYPE      VALUE
------------------------------------ ----------- ------------------------------
undo_management                    string    AUTO
undo_retention                      integer    900
undo_tablespace                    string    UNDO2


(9)查看最后恢复的结果
RACDB1>select * from xuhm.test3;

      ID NA
---------- --
        4 aa
        2 xu
        3 li
--4,aa未提交的书屋被当做提交处理了。
  • 大小: 47.4 KB
分享到:
评论

相关推荐

    Oracle 表空间时点恢复(TSPITR)

    时点恢复则意味着可以选择将表空间恢复到一个特定的时间点,这通常用于处理误操作、错误的数据输入或需要撤销的数据定义语言(DDL)操作,如误删表或改变表结构。与全库级别的闪回相比,TSPITR对数据库的影响更小,...

    Oracle 10g RAC生产数据库RMAN方式恢复到异地单机数据库全程记录.doc

    【Oracle 10g RAC 数据库...在实际操作中,还应根据具体环境和需求调整某些步骤,如处理redo log、控制文件、Undo表空间等。在整个过程中,确保数据的安全性,遵循最佳实践,以确保成功恢复并最大限度地减少数据丢失。

    AIX6.1两节点的ORACLE10.2.0.5RAC恢复到单机

    ### AIX6.1两节点的ORACLE10.2.0.5RAC恢复到单机 在本文档中,我们将详细介绍如何将部署在AIX6.1系统上的两个节点组成的ORACLE10.2.0.5RAC(Real Application Clusters)数据库恢复到单一实例的过程。此文档主要...

    Oracle undo_management参数不一致错误

    3. UNDO_MANAGEMENT参数:此参数控制是否自动管理undo空间。设置为"AUTO"表示使用自动管理的undo表空间,Oracle会自动分配和管理undo段。如果设置为"MANUAL",则需要手动管理undo表空间。 4. AUTOEXTEND选项:当...

    [Oracle] 解析在没有备份的情况下undo损坏怎么办

    如果Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,不过如果没有备份,可以采用一种非常规的手段(利用Oracle的隐藏参数),如果此时undo包含未提交的事务,会造成一点点的数据丢失(一般都是可忍受...

    基于Linux的oracle 10g rac管理维护手记

    - **Redo/Undo管理**:合理配置redo日志组和undo表空间大小,以平衡性能和恢复能力。 - **归档日志与闪回配置**:确保历史数据的保留,支持数据库的快速恢复和历史查询。 - **ASM管理**:针对存储层的管理,包括...

    Oracle+11g+RAC运维培训文档

    - **管理 UNDO**:管理 UNDO 表空间以支持事务处理。 - **管理 redo log**:配置和管理 redo 日志文件。 - **在线日志**:管理在线日志文件以支持数据库事务。 - **归档日志**:配置和管理归档日志以支持备份和恢复...

    Database.10g.High.Availability.with.RAC.Flashback.and.Data.Guard

    Flashback技术则需要了解其背后的 undo 表空间和redo日志机制。Data Guard的配置则需要掌握redo传输、redo应用、角色转换等关键概念。 总的来说,Oracle 10g的高可用性解决方案结合了RAC、Flashback和Data Guard,...

    oracle drop table(表)数据恢复方法

    在没有备份的情况下,如果UNDO表空间的数据仍然可用,可能可以通过分析UNDO信息来恢复部分数据。 另外,当数据库出现物理损坏,如数据块损坏,Oracle提供了各种检查和修复工具。例如,通过`DBMS_REPAIR`包或者使用`...

    oracle 日常操作维护

    - **UNDO表空间**:UNDO表空间用于存储事务处理过程中产生的撤销数据。可以通过`ALTER DATABASE UNDO TABLESPACE`命令管理UNDO表空间。 - **TEMP表空间**:临时表空间用于存储临时对象,如排序操作期间使用的临时表...

    备份恢复概要

    - **表空间备份**:只备份指定的表空间。 - **数据文件备份**:只备份特定的数据文件。 - **控制文件备份**:备份控制文件。 - **归档日志文件备份**:备份归档日志文件,对于归档模式下的数据库至关重要。 ### 三...

    HairOracle数据库运维手册.docx

    - **UNDO表空间**:管理和配置UNDO表空间。 - **TEMP表空间**:管理和配置临时表空间。 - **重做日志文件管理** - **增加REDO日志组**:增加重做日志文件组的数量。 - **删除日志组**:删除不再需要的重做日志...

    MLDN魔乐科技_Oracle课堂5.rar

    课程会介绍如何设置事务隔离级别,理解回滚段和undo表空间的概念,以及如何处理死锁问题。 安全性是数据库系统不可忽视的一部分。Oracle提供了一套全面的安全机制,包括用户权限管理、角色分配、审计功能和数据加密...

    OCP_Oracle9i DBA基础Ⅱ学习指南1z0_032(pdg).rar

    7. **存储管理**:了解Oracle的表空间和段管理,如何创建和扩展表空间,以及如何管理临时表空间和 undo 表空间。 8. **数据库维护**:包括定期的数据库维护任务,如统计信息收集、表和索引的重组、数据库空间的监控...

    Oracle Flashback技术总结

    Oracle Flashback技术是一种强大的数据恢复机制,它可以帮助用户在遇到数据丢失或损坏的情况下恢复到之前的某个时间点。这项技术基于Undo Segment中的内容,允许用户轻松地回退数据库、表、查询等至特定的时间点,而...

    Oracle_11g日常操作与维护手册

    - **UNDO表空间**: 管理UNDO表空间,确保有足够的UNDO空间以支持事务处理。 - **TEMP表空间**: 配置临时表空间,确保它们能够在高并发操作时高效地分配临时段。 **3. 重做日志文件管理** - **增加REDO日志组**: ...

    OracleFlashback技术总结

    Oracle Flashback技术是一组强大的特性集合,旨在帮助用户在遇到数据丢失或损坏的情况下能够迅速地恢复数据。这些特性基于Oracle的Undo Segment,即撤销段中的内容,并受到`UNDO_RETENTION`参数的影响。为了充分利用...

Global site tag (gtag.js) - Google Analytics