undo数据文件丢失的恢复试验

从自己的错误中学到知识是聪明,从别人的错误中学到知识是智慧

坛子里看到一个帖子,讨论的是undo表空间对应的数据文件丢失之后的恢复问题,为了加深印象,自己模拟一下:

1.关闭数据库

2.将undotbs1对应的数据文件重命名,或者删除,随便你,(测试库,可不要在生产库上做这个实验,当然,你最好有之前的一个备份再做删除操作)

3.重新启动数据库,会报找不到数据文件错:

sys@baal> startup
ORACLE 例程已经启动。

Total System Global Area  159383552 bytes
Fixed Size                  1295608 bytes
Variable Size              92277512 bytes
Database Buffers           62914560 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 2 – 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: ‘E:\ORA10G\ORADATA\BAAL\BAAL\UNDOTBS01.DBF’

4.但此时数据库已经mount,所以可以从v$datafile中查看undo表空间的详细目录信息等。

sys@baal> select name from v$datafile;

NAME
———————————————-
E:\ORA10G\ORADATA\BAAL\BAAL\SYSTEM01.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\UNDOTBS01.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\SYSAUX01.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\USERS01.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\BAAL.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\BIGTBS.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\BAAL1.DBF
E:\ORA10G\ORADATA\BAAL\BAAL\TEST.DBF

5.将undo数据文件offline drop,随后打开数据库此操作可能导致数据库的数据不一致,因为undo表空间中可能还有要恢复的数据。

sys@baal> alter database datafile ‘E:\ORA10G\ORADATA\BAAL\BAAL\UNDOTBS01.DBF’ offline drop;

数据库已更改。

已用时间:  00: 00: 00.31
sys@baal> alter database open;

数据库已更改。

6.为系统创建新的undo表空间,并且切换

sys@baal> create undo tablespace undotbs2 datafile ‘E:\ORA10G\ORADATA\BAAL\BAAL\UNDOTBS02.DBF’ size 500m autoextend off;

表空间已创建。

已用时间:  00: 00: 12.67
sys@baal> alter system set undo_tablespace=undotbs2;

系统已更改。

7.如果你认为此时工作已经完成,那就乐观太早了,因为尝试删除undotbs1会报错,而且此时尝试查询需要恢复操作的表时也会报错。

sys@baal> drop tablespace undotbs1 including contents and datafiles;
drop tablespace undotbs1 including contents and datafiles
*
第 1 行出现错误:
ORA-01548: 已找到活动回退段 ‘_SYSSMU1$’, 终止删除表空间

8.可以查看一下回退段此时的状态,可以看到undotbs1的状态是need recovery

sys@baal> SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS           FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   OWNER  TABLESPACE_NAME                STATUS
—————————— —— —————————— —————-
SYSTEM                         SYS    SYSTEM                         ONLINE
_SYSSMU1$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU2$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU3$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU4$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU5$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU6$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU7$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU8$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU9$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU10$                     PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU11$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU12$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU13$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU14$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU15$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU16$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU17$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU18$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU19$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU20$                     PUBLIC UNDOTBS2                       ONLINE

9.此时在没有备份的情况下,可以尝试使用隐含参数将数据库打开,不过这个过程会破坏数据库的一致性,而且可能造成数据库出现逻辑错误。采用下面的方法打开数据库后,应该马上执行EXP备份,建重数据后库,再导入。

10.重新创建pfile

sys@baal> create pfile=’E:\ora10g\database\initbaal1.ora’ from spfile;

文件已创建。

11.关闭实例并且手工编辑pfile,修改或添加以下隐含参数,用修改后的pfile打开数据库。

*.undo_management=’MANUAL’
_offline_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

sys@baal> startup pfile=E:\ora10g\database\initbaal1.ora
ORACLE 例程已经启动。

Total System Global Area  159383552 bytes
Fixed Size                  1295608 bytes
Variable Size              92277512 bytes
Database Buffers           62914560 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
数据库已经打开。

12.可以先查看一下数据库中回滚段的状态,发现undotbs2的回退段也变成offline了。由于设置了隐含参数,现在可以删除这些回滚段了。

sys@baal> SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS           FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   OWNER  TABLESPACE_NAME                STATUS
—————————— —— —————————— —————-
SYSTEM                         SYS    SYSTEM                         ONLINE
_SYSSMU1$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU2$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU3$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU4$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU5$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU6$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU7$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU8$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU9$                      PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU10$                     PUBLIC UNDOTBS1                       NEEDS RECOVERY
_SYSSMU11$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU12$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU13$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU14$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU15$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU16$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU17$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU18$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU19$                     PUBLIC UNDOTBS2                       OFFLINE
_SYSSMU20$                     PUBLIC UNDOTBS2                       OFFLINE

sys@baal> drop rollback segment “_SYSSMU1$”;

回退段已删除。

。。。。。

但是undotbs2中的回退段不能删除

sys@baal> drop rollback segment “_SYSSMU11$”;
drop rollback segment “_SYSSMU11$”
*
第 1 行出现错误:
ORA-30025: 不允许删除段 ‘_SYSSMU11$’ (在还原表空间中)

13.删除undotbs1

sys@baal> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;

表空间已删除。

14.重启一下,去掉隐含参数

sys@baal> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
sys@baal> startup
ORACLE 例程已经启动。

Total System Global Area  159383552 bytes
Fixed Size                  1295608 bytes
Variable Size              92277512 bytes
Database Buffers           62914560 bytes
Redo Buffers                2895872 bytes
数据库装载完毕。
数据库已经打开。
sys@baal> show parameter undo

NAME                                 TYPE        VALUE
———————————— ———– ——————————
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS2
sys@baal> SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS           FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                   OWNER  TABLESPACE_NAME                STATUS
—————————— —— —————————— —————-
SYSTEM                         SYS    SYSTEM                         ONLINE
_SYSSMU11$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU12$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU13$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU14$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU15$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU16$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU17$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU18$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU19$                     PUBLIC UNDOTBS2                       ONLINE
_SYSSMU20$                     PUBLIC UNDOTBS2                       ONLINE

已选择11行。

已用时间:  00: 00: 00.31

很郁闷的是我模拟了半天,却一直没有模拟出回滚段需要recovery needed状态。如果 哪位大侠知道请给我留言,谢谢

undo数据文件丢失的恢复相关推荐

  1. oracle 恢复学习 案例1 一个数据文件丢失 完全恢复数据库

    案例1 数据文件user01丢失 恢复背景: 数据库打开处于归档模式,首先备份数据文件user01.dbf,然后删除user01.dbf 关闭数据库 启动数据库 SQL> startup ORA ...

  2. oracle 表空间的数据文件丢失或损坏的恢复

    表空间的数据文件丢失或损坏的恢复 select ts#,file#,name from v$datafile; 查看表空间和编号 删除一个表空间文件 此时关闭数据库 再开启时发现系统提醒缺少文件 使用 ...

  3. u盘文件丢失怎么恢复数据

    在你工作或学习的时候,u盘可以随时随地帮你备份或者转移所需的数据,十分方便快捷.但使用久了,总会因为各种原因而丢失数据,如果我们遇到u盘文件丢失怎么恢复数据呢?其实丢失数据并不代表我们可以再也找不回来 ...

  4. 控制文件和数据文件丢失,有全备份恢复数据库的方法

    控制文件和数据文件丢失,有全备份恢复数据库的方法 控制文件丢失,即使有全备份也难恢复数据库,因为备份信息是存在于控制文件的. 刚看论坛精华帖,Feng讲的dbms_backup_restore包还是很 ...

  5. 剪切文件丢失如何恢复

    剪切文件丢失如何恢复?相信使用过电脑的小伙伴,都用过剪切粘贴功能.用来协助我们处理各种要移动文件,能有一个便捷的操作方法.但同时使用这个剪切功能,也会出现意外情况,特别是在剪切过程中经常会出现文件丢失 ...

  6. oracle查看数据被谁删掉了,oracle数据文件被误删恢复

    ----数据文件被误恢复方法有两种.如果发现数据文件被删除咯,此时数据库是open状态,可以直接通过句柄恢复,如果发现数据库已经宕机了,就只能用其他方式咯.具体方法,如下: 1.利用句柄恢复数据文件 ...

  7. u盘传输过程数据文件丢失如何恢复

    u盘传输过程数据文件丢失如何恢复 U盘是我们平时常用的储存文件的小助手.我们总会随身携带一个u盘,然后在公司里把一些你还未完 成的工作保存在u盘中或者有时用u盘传输些小文件给你的朋友,但是u盘有一个小 ...

  8. DOC文件丢失怎么恢复?用这7种方法找回

    在日常生活和工作中,我们经常会因为各种原因丢失重要的DOC文件,这给我们带来了不小的困扰.但是,不必担心,在本文中,我们将带大家了解一下DOC文件丢失怎么恢复. 关于DOC文件 DOC文件是指一种微软 ...

  9. wps文件丢失如何恢复?找回只需要用到一招?

    wps文件丢失如何恢复?说到wps文件或许有些小伙伴对其不明来路,但如果说到办公软件大家就都会知道了吧!没错,wps就是集所有办公软件为一体的办公套装.wps文件删除了怎么恢复?所有办公软件都包含在w ...

最新文章

  1. Comparative assessment of long-read error-correction software applied to RNA-sequencing data
  2. GDCM:gdcm::IconImageFilter的测试程序
  3. ubuntu下命令行启动vmware某个虚拟机
  4. 全国计算机等级考试题库二级C操作题100套(第79套)
  5. 回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享
  6. synchronized()_JMM(四):浅谈synchronized锁
  7. linux登录日志保存多久,Centos清除系统日志和登录记录-Linux清除系统日志和登录记录的方法-吾爱编程网...
  8. PCIE 协议分析工具
  9. 数字化时代品牌营销:体验 感知 共创
  10. Godot特效:手绘贴图+粒子系统实现风格化火焰(一)绘制火焰贴图
  11. CPC认证的常规测试项目
  12. 指数的增长和衰退问题
  13. spring的IOC类图
  14. 水准测量的各种数字考点
  15. BFC是什么?BFC可以做什么?
  16. LibreOffice Calc - 表格内部换行快捷键
  17. R语言二项分布(The Binomial Distribution)
  18. Radis缓存异常以及处理方案(雪崩击穿穿透预热降级)
  19. Asp之Cookie篇—概述Cookie原理、归纳Cookie方法属性及应用
  20. Java多个文件根据URL下载后打包zip导出

热门文章

  1. 【139】论文查重修改技巧大全
  2. nodejs实现小程序微信支付
  3. 未来已来,光伏产业将走向何方?十大趋势待揭晓!
  4. Elasticsearch 7.X Ik源码解读,及自定义远程动态词库
  5. PyQt5 “PyTuning“调试软件从0开发总结
  6. 11月最新纯净版XP系统999宝藏网GhostXP_SP3会员专用版V5.0
  7. Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分析
  8. 使用GemBox.Spreadsheet控件操作Excel文件
  9. Access中替代case when的方法
  10. 微软2012北美技术大会在奥兰多举行