楼主: biti_rainy

[精华] 所有控制文件损坏,掉电(shutdown abort),无归档,无备份的成功恢复

[复制链接]
论坛徽章:
0
31#
发表于 2003-6-25 10:15 | 只看该作者
不错

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
32#
 楼主| 发表于 2003-6-25 10:20 | 只看该作者

我们假设日志顺序使用为

1,2,3,4
假设 4是 current
假定2正在归档过程中未完成,但是2中的检查点已经完成
假定3中的检查点已经完成或者没有完成都可以,也未归档

这时发生日志文件2损坏的例子

这个时候如果我们尝试通过备份来恢复,归档日志正好截止到 日志文件1的归档
而2的还没有
那么会尝试在 联机日志中使用日志2,结果发现日志2已经损坏,无法继续进行下去,不能越过2而使用3

但是如果我们控制文件损坏了,重建可控制文件,不通过备份恢复
而尝试根据现有数据文件的基础上,进行恢复,则只要从 日志3(假如检查点没有完成)或者日志4(假如日志3检查点已经完成)开始就可以了

这时可以clear or  drop 日志2所在的日志组

使用道具 举报

回复
论坛徽章:
1
33#
发表于 2003-6-25 11:46 | 只看该作者
謝謝biti_rainy,現在我大概能理解啦。但是如果剛好日志2中的某些數據還未被寫入數據文件﹐這時候不知會如何做﹖我想這種情況是有可能的。
如﹕我的database buffer很大時﹐當處理的事務很多﹐我下了commit后﹐LGWR會把LOG BUFFERK 中的數據寫入log file﹐并發生了日志切換(假如由日志2切換成日志3)﹐然后更改文件頭的SCN﹐可DBWR并沒有把數據寫入數據文件,在日志2歸檔時﹐發生錯誤。

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-11-28 09:50:23会员2006贡献徽章
日期:2006-04-17 13:46:34BLOG每日发帖之星
日期:2009-05-20 01:01:05
34#
发表于 2003-7-2 16:34 | 只看该作者

请问??

如果是current  logfile损坏呢,根据原理应该是可以进行不完全恢复的,可是最近我遇到一个问题,数据库控制文件重建后,进行数据库的不完全恢复,最后RESETLOGS打开时,报错:
SQL> RECOVER USING BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: ?? 1163339 (? 07/02/2003 15:37:14 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORA92\RDBMS\ARC00011.001
ORA-00280: ?? 1163339 ???? 1 ???? # 11 ???
ARC00010是最后一个生成的归档日志文件,现在该应用current  logfile了,可是current  logfile损坏
于是:
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
ORA-01547: ??: RECOVER ??? OPEN RESETLOGS ???????
ORA-01194: ??1?????????????
ORA-01110: ???? 1: 'D:\ORACLE\ORADATA\ORA9\SYSTEM01.DBF'
QL> ALTER DATABASE OPEN RESETLOGS;
LTER DATABASE OPEN RESETLOGS

RROR 位于第 1 行:
RA-01194: ??1?????????????
RA-01110: ???? 1: 'D:\ORACLE\ORADATA\ORA9\SYSTEM01.DBF'

biti_rainy:到这步了该这么进行???

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
35#
 楼主| 发表于 2003-7-2 16:49 | 只看该作者

这属于检查点未完成的情况

最初由 bin_huhj 发布
[B]謝謝biti_rainy,現在我大概能理解啦。但是如果剛好日志2中的某些數據還未被寫入數據文件﹐這時候不知會如何做﹖我想這種情況是有可能的。
如﹕我的database buffer很大時﹐當處理的事務很多﹐我下了commit后﹐LGWR會把LOG BUFFERK 中的數據寫入log file﹐并發生了日志切換(假如由日志2切換成日志3)﹐然后更改文件頭的SCN﹐可DBWR并沒有把數據寫入數據文件,在日志2歸檔時﹐發生錯誤。 [/B]


如果没有备份这个时候只能使用 _ALLOW_RESETLOGS_CORRUPTION =  true
startup mount
recover database until cancel;
cancel
alter database open resetlogs; 如果返回600错误
shutdown
startup

建议exp后重建数据库

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
36#
 楼主| 发表于 2003-7-2 16:54 | 只看该作者

Re: 请问??

最初由 crpp0902 发布
[B]如果是current  logfile损坏呢,根据原理应该是可以进行不完全恢复的,可是最近我遇到一个问题,数据库控制文件重建后,进行数据库的不完全恢复,最后RESETLOGS打开时,报错:
SQL> RECOVER USING BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: ?? 1163339 (? 07/02/2003 15:37:14 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORA92\RDBMS\ARC00011.001
ORA-00280: ?? 1163339 ???? 1 ???? # 11 ???
ARC00010是最后一个生成的归档日志文件,现在该应用current  logfile了,可是current  logfile损坏
于是:
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
ORA-01547: ??: RECOVER ??? OPEN RESETLOGS ???????
ORA-01194: ??1?????????????
ORA-01110: ???? 1: 'D:\ORACLE\ORADATA\ORA9\SYSTEM01.DBF'
QL> ALTER DATABASE OPEN RESETLOGS;
LTER DATABASE OPEN RESETLOGS

RROR 位于第 1 行:
RA-01194: ??1?????????????
RA-01110: ???? 1: 'D:\ORACLE\ORADATA\ORA9\SYSTEM01.DBF'

biti_rainy:到这步了该这么进行??? [/B]


不完全恢复!你的数据文件都是从备份中拷贝回来的吗?
如果不是怎么叫不完全恢复?
那就应该参考 上面 的  使用保留参数的用法

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-11-28 09:50:23会员2006贡献徽章
日期:2006-04-17 13:46:34BLOG每日发帖之星
日期:2009-05-20 01:01:05
37#
发表于 2003-7-2 17:34 | 只看该作者

THANKS

多谢,又学了一招
使用保留参数的用法

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2005-11-28 09:50:23会员2006贡献徽章
日期:2006-04-17 13:46:34BLOG每日发帖之星
日期:2009-05-20 01:01:05
38#
发表于 2003-7-2 17:37 | 只看该作者
alter database open ; 返回600错误 ???

不过好象没有

使用道具 举报

回复
论坛徽章:
0
39#
发表于 2003-7-9 14:40 | 只看该作者
不错

使用道具 举报

回复
论坛徽章:
62
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:田径
日期:2011-02-17 18:03:352011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010广州亚运会纪念徽章:三项全能
日期:2010-11-15 13:36:51ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02
40#
发表于 2003-7-9 17:00 | 只看该作者
如果控制文件丢失,但是所有的redo log,archived  log都在,可以完全恢复
如果控制文件,redo log丢失,上次热备后的归档还有,可以正常作不完全恢复
如果控制文件,redo log丢失,上次热备后的归档也没有,无法正常恢复,也不能做open resetlogs
需要通过隐含参数来恢复,可以参考
http://www.*****.org/bin/ut/topi ... p;bpg=1&age=100
使用rman也有这个问题,需要备份热备期间的所有归档日志。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表