文档章节

记录8.0.5数据库恢复过程

我就叫你女王吧
 我就叫你女王吧
发布于 2016/05/31 16:31
字数 890
阅读 25
收藏 0

某银行需要恢复2004年磁带备份数据库 8.0.5,当时因为开发商使用begin backup命令进行热备,然后压缩到磁带上.在硬盘紧张,rman不成熟的时代,使用这样的方法备份本身没有大问题,可是因为没有备份归档日志,给现在的恢复带来了很多的问题.
尝试不完全恢复启动库

SVRMGR> startup pfile='init.ora' mount

ORACLE instance started.

Total System Global Area                        141826208 bytes

Fixed Size                                          47264 bytes

Variable Size                                   124829696 bytes

Database Buffers                                 16777216 bytes

Redo Buffers                                       172032 bytes

Database mounted.

SVRMGR> recover database using backup controlfile until cancel;

ORA-00279: change 613561556 generated at 08/21/04 22:42:48 needed for thread 1

ORA-00289: suggestion : /oracle/product/8.0.5/dbs/arch1_55329.dbf

ORA-00280: change 613561556 for thread 1 is in sequence #55329

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

SVRMGR> alter database open resetlogs;

alter database open resetlogs

*

ORA-00600: internal error code, arguments: [4146], [31400], [31370], [], [], [], [], []

这个错误是因为回滚段corruption导致,客户已经没有了一致性要求,所以解决办法是通过一些手段找出回滚段并屏蔽

屏蔽回滚段重启库

SVRMGR> shutdown abort

ORACLE instance shut down.

SVRMGR> startup  pfile='init.ora' mount

ORACLE instance started.

Total System Global Area                        141826208 bytes

Fixed Size                                          47264 bytes

Variable Size                                   124829696 bytes

Database Buffers                                 16777216 bytes

Redo Buffers                                       172032 bytes

Database mounted.

SVRMGR> alter database open;

alter database open

*

ORA-00600: internal error code, arguments: [3668], [1], [2], [55992], [55992], [4], [], []

根据ORA-00600[3668]错误的提示,因为重建控制文件,有一个数据文件因为在磁带恢复丢失,所以控制文件在上次重建的时候没有包含进去,根据经验在8.0中可以通过resetlogs解决

resetlogs重新打开数据库

SVRMGR> alter database open resetlogs;

alter database open resetlogs

*

ORA-01139: RESETLOGS option only valid after an incomplete database recovery

SVRMGR> recover datatabase using backup controlfile until cancel;

ORA-00274: illegal recovery option DATATABASE

SVRMGR> recover database using backup controlfile until cancel;

ORA-00279: change 613561558 generated at 07/30/12 09:14:49 needed for thread 1

ORA-00289: suggestion : /oracle/product/8.0.5/dbs/arch1_1.dbf

ORA-00280: change 613561558 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

SVRMGR> alter database open resetlogs;

alter database open resetlogs

*

ORA-00604: error occurred at recursive SQL level 1

ORA-01555: snapshot too old: rollback segment number  with name "" too small

根据经验可能是屏蔽了undo或者undo损坏,然后有事务可能需要读undo,无法读到对应记录,可能出现此错误,因为无trace文件,尝试推进scn解决.当然这个问题可以通过open时做10046然后深入分析也许可以找到原因.

open数据库成功
根据上面的分析,重启库,推进scn,resetlogs库解决问题

SVRMGR> shutdown immediate

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SVRMGR> startup pfile='init.ora' mount;

ORACLE instance started.

Total System Global Area                        141826208 bytes

Fixed Size                                          47264 bytes

Variable Size                                   124829696 bytes

Database Buffers                                 16777216 bytes

Redo Buffers                                       172032 bytes

Database mounted.

SVRMGR> alter database open ;

alter database open

*

ORA-00600: internal error code, arguments: [3668], [1], [2], [55994], [55994], [4], [], []

SVRMGR> recover database using backup controlfile until cancel;

ORA-00279: change 613561560 generated at 07/30/12 09:17:11 needed for thread 1

ORA-00289: suggestion : /oracle/product/8.0.5/dbs/arch1_1.dbf

ORA-00280: change 613561560 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

cancel

Media recovery cancelled.

SVRMGR> alter database open resetlogs;

Statement processed.

这次恢复比较幸运,在备份到磁带过程中被覆盖的一个同名的数据文件,因为是index,通过查询dba_extents,然后删除并重建相关index,s数据库算恢复完全.有些时候,对数据库多一份备份,可能成为最后的救命稻草,哪怕是一份不是十分完整的备份.再次重复:对dba而言,数据库备份重于一切

 

更多Oracle精彩内容请关注我:

 

© 著作权归作者所有

我就叫你女王吧
粉丝 3
博文 34
码字总数 25430
作品 0
海淀
私信 提问
加载中

评论(1)

我就叫你女王吧
我就叫你女王吧
啊擦擦29
Apache Tomcat 8.0.5 (beta) 发布

Apache Tomcat 8.0.5 包含很多 bug 修复和改进,值得关注的有: 更新 Eclipse JDT 编译器以完全支持 JSP 中的 Java 8 更新默认数据库连接池 DBCP 2.0 版本 新的体验式的基于 NIO2 的 HTTP 和...

红薯
2014/03/29
1K
7
Drupal 8.0.5 发布,内容管理系统(CMS)

Drupal 8.0.5 发布了,Drupal是一个开源的内容管理系统(CMS) 平台,它是用PHP写成的。主要用于构造提供多种功能和服务的动态网站,这些功能包括用户管理(UserAdministration)、发布工作流 (P...

oschina
2016/03/05
1K
4
添加PaloAlto 8.0到EVE-NG

本教程主要是介绍如何将OVA格式的PaloAlto 8.0.5到EVE-NG 参考链接:http://www.eve-ng.net/documentation/howto-s/69-howto-add-palo-alto-vm-100 1.准备工作 FTP工具:WinSCP或FileZilla P......

robin_key
2018/06/17
0
0
PgSQL · 特性分析 · 数据库崩溃恢复(上)

背景 为了合并I/O提高性能,PostgreSQL数据库引入了共享缓冲区,当数据库非正常关闭,比如服务器断电时,共享缓冲区即内存中的数据就会丢失,这个时候数据库操作系统重启时就需要从非正常状态...

阿里云RDS-数据库内核组
2017/05/04
0
0
PostgreSQL 如何从崩溃状态恢复(上)

背景 为了合并I/O提高性能,PostgreSQL数据库引入了共享缓冲区,当数据库非正常关闭,比如服务器断电时,共享缓冲区即内存中的数据就会丢失,这个时候数据库操作系统重启时就需要从非正常状态...

卓刀
2018/07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Tedis:基于 TiKV 构建的 NoSQL 数据库

作者介绍: 陈东明,饿了么北京技术中心架构组负责人,负责饿了么的产品线架构设计以及饿了么基础架构研发工作。曾任百度架构师,负责百度即时通讯产品的架构设计。具有丰富的大规模系统构 ...

TiDB
16分钟前
0
0
linux命令

ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件...

WinkJie
23分钟前
0
0
你需要的物流运输类报表,这里都有

你需要的物流运输类报表,都在这里 葡萄城报表模板库是一款免费的报表制作、学习和参考工具,包含了超过 200 张高质量报表模板,涵盖了 16 大行业和 50 多种报表类型,为 30 余万报表开发者提...

葡萄城技术团队
30分钟前
1
0
像Java SE一样编写Java EE(ddd探索)

今天主要改写昨天的组合模式成Web系统。 容器接口为 public interface TreeProduct { /** * 展示所有产品 * @return */ List<TreeProduct> allProducts();...

算法之名
32分钟前
0
0
Django Model 模型建立

Django Model 模型 Django Model层是Django的数据模型层,每一个Model类就是数据库中的一张表; 我们需要注意下面几点: model一般都是定义在不同的APP的models.py模块文件中,可以是一个,也...

彩色泡泡糖
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部