楼主: it_horse

[精华] 我想问一下:Recovery through resetlogs 的内部机理是什莫?

[复制链接]
论坛徽章:
16
2010数据库技术大会纪念徽章
日期:2010-05-13 10:04:27ITPUB技术丛书作者
日期:2010-09-26 15:24:562011新春纪念徽章
日期:2011-01-25 15:41:01管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:18马自达
日期:2014-01-27 11:47:11
21#
发表于 2003-4-9 11:24 | 只看该作者
楼上的你可以自己做个试验试试就全部都明白了,看再多的书也比不上自己动手的。

使用道具 举报

回复
论坛徽章:
295
ITPUB元老
日期:2005-07-25 16:09:42授权会员
日期:2005-10-30 17:05:33生肖徽章:牛
日期:2006-09-06 21:17:03生肖徽章2007版:牛
日期:2008-05-06 11:05:47生肖徽章2007版:牛
日期:2008-11-27 11:35:13生肖徽章2007版:牛
日期:2009-02-19 20:40:13生肖徽章2007版:马
日期:2009-02-25 21:19:48生肖徽章2007版:猴
日期:2009-02-27 01:40:13生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:牛
日期:2009-03-10 21:33:00
22#
 楼主| 发表于 2003-4-9 11:39 | 只看该作者

这个过程做起来应该不会很复杂,我只是不明白oracle怎末自动应用resetlogs后的归档日

最初由 coolyl 发布
[B]楼上的你可以自己做个试验试试就全部都明白了,看再多的书也比不上自己动手的。 [/B]

使用道具 举报

回复
论坛徽章:
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
23#
发表于 2003-4-9 11:43 | 只看该作者

Re: 这个过程做起来应该不会很复杂,我只是不明白oracle怎末自动应用resetlogs后的归

最初由 it_horse 发布
[B] [/B]


你看看这个过程
换了控制文件呀

使用道具 举报

回复
论坛徽章:
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
24#
发表于 2003-4-9 12:01 | 只看该作者

Re: 这个过程做起来应该不会很复杂,我只是不明白oracle怎末自动应用resetlogs后的归

最初由 it_horse 发布
[B] [/B]


你看看这个过程
换了控制文件呀

使用道具 举报

回复
论坛徽章:
295
ITPUB元老
日期:2005-07-25 16:09:42授权会员
日期:2005-10-30 17:05:33生肖徽章:牛
日期:2006-09-06 21:17:03生肖徽章2007版:牛
日期:2008-05-06 11:05:47生肖徽章2007版:牛
日期:2008-11-27 11:35:13生肖徽章2007版:牛
日期:2009-02-19 20:40:13生肖徽章2007版:马
日期:2009-02-25 21:19:48生肖徽章2007版:猴
日期:2009-02-27 01:40:13生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:牛
日期:2009-03-10 21:33:00
25#
 楼主| 发表于 2003-4-9 14:13 | 只看该作者

操作实例!再问biti、coolyl高手:

Oracle 应该在控制文件里存储了应用归档的信息书上说可能是resetlog SCN!只要是在resetlogs打开数据库之前刚刚作的备份,就可以恢复!但是为什莫在resetlogs打开数据库之前打开过数据库就不可以恢复了呢?????

SVRMGR> archive log list;
数据库记录模式  存档模式
自动存档    已启用
存档路径    D:\Oracle\oradata\ASIA\archive
最旧的联机日志顺序    609
要存档的下一个记录顺序  613
当前记录顺序     613
------------
SVRMGR>shutdown immediate
已关闭数据库。
已卸下数据库。
已关闭 ORACLE 实例。
SVRMGR>exit
-----------
--操作系统备份
-----------
SVRMGR> startup mount
已启动 ORACLE 实例。
系统全局区域合计有                         36214812个字节
Fixed Size                                          75804个字节
Variable Size                                    19283968个字节
Database Buffers                                 16777216个字节
Redo Buffers                                        77824个字节
已装入数据库。
SVRMGR> recover database until cancel
完成介质的恢复。
SVRMGR> alter database open resetlogs
     2> ;
语句已处理。
------------
--系统运行,处理事务。
------------
SQLPLUS>connect scott/tiger
SQLPLUS>create table t_test(name char(10),note char(10));
SQLPLUS>insert into t_test values('1','11111');
SQLPLUS>insert into t_test values('2','22222');
SQLPLUS>insert into t_test values('3','33333');
SQLPLUS>insert into t_test values('4','44444');
SQLPLUS>insert into t_test values('5','55555');
SQLPLUS>commit;
SQLPLUS>select * from t_test;
NAME       NOTE
---------- ------------
1          11111
2          22222
3          33333
4          44444
5          555555
已选择5行。
------------
--产生归档日志 D:\ORACLE\ORADATA\ASIA\ARCHIVE\ASIAT001S00001.ARC
------------
--系统崩溃
------------
SVRMGR> shutdown immediate
已关闭数据库。
已卸下数据库。
已关闭 ORACLE 实例。
------------
--重建备份(数据文件),
--注意:控制文件不能重建,必须是最新的,否则不能恢复!
------------
SVRMGR> startup mount
已启动 ORACLE 实例。
系统全局区域合计有                         36214812个字节
Fixed Size                                          75804个字节
Variable Size                                    19283968个字节
Database Buffers                                 16777216个字节
Redo Buffers                                        77824个字节
已装入数据库。
-----------
--设置自动归档
-----------
SVRMGR> set autorecovery on
自动恢复                  ON
-----------
--恢复数据库
-----------
SVRMGR> recover database
ORA-00279: ?? 5940616 (? 04/09/2003 13:34:05 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORADATA\ASIA\ARCHIVE\ASIAT001S00001.ARC
ORA-00280: ?? 5940616 ???? 1 ???? # 1 ???
应用的记录。
完成介质的恢复。
-----------
--打开数据库
-----------
SVRMGR> alter database open;
语句已处理。
SVRMGR>select * from scott.t_test;
NAME       NOTE
---------- ------------
1          11111
2          22222
3          33333
4          44444
5          555555
已选择5行。
----------
--数据没有丢失
----------
SVRMGR> archive log list;
数据库记录模式  存档模式
自动存档    已启用
存档路径    D:\Oracle\oradata\ASIA\archive
最旧的联机日志顺序    2
要存档的下一个记录顺序  6
当前记录顺序     6
----------
--log number 改变
----------

使用道具 举报

回复
论坛徽章:
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
26#
发表于 2003-4-9 14:35 | 只看该作者

SVRMGR> recover database until cancel

你做这一步的时候不这样做?

不要CANCEL
而是指定时间或者SCN
然后  open   resetlogs

……

等到重新执行恢复的时候,仍然恢复到 这个时间点或者SCN,再用新的控制文件和归档日志来恢复  ,  其实这个过程,也就是模拟 "只要是在resetlogs打开数据库之前刚刚作的备份",你用cancel ,在2次恢复过程中却是不一样的过程,因为第一次恢复的时候l 实际上也可能应用到 online  log ,但open  resetlogs 的时候讲online  log清空了,第二次做恢复的时候就没有办法保持一致了,这样就造成 SCN的不连续

第二次恢复也不能是 auto 来做,是先恢复到第一次恢复的SCN or 时间点,然后再换 控制文件用新的归档日志

使用道具 举报

回复
论坛徽章:
295
ITPUB元老
日期:2005-07-25 16:09:42授权会员
日期:2005-10-30 17:05:33生肖徽章:牛
日期:2006-09-06 21:17:03生肖徽章2007版:牛
日期:2008-05-06 11:05:47生肖徽章2007版:牛
日期:2008-11-27 11:35:13生肖徽章2007版:牛
日期:2009-02-19 20:40:13生肖徽章2007版:马
日期:2009-02-25 21:19:48生肖徽章2007版:猴
日期:2009-02-27 01:40:13生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:牛
日期:2009-03-10 21:33:00
27#
 楼主| 发表于 2003-4-9 14:36 | 只看该作者

这是resetlogs 前后归档日志里的信息!

--resetlogs前
Thread 0001, Seq# 0000000002, SCN 0x0000005aa685-0x0000005aa686
Thread 0001, Seq# 0000000003, SCN 0x0000005aa686-0x0000005aa687
Thread 0001, Seq# 0000000004, SCN 0x0000005aa687-0x0000005aa688
--resetlogs 后
Thread 0001, Seq# 0000000005, SCN 0x0000005aa688-0x0000005aa689
Thread 0001, Seq# 0000000006, SCN 0x0000005aa689-0x0000005aa68a
Thread 0001, Seq# 0000000007, SCN 0x0000005aa68a-0x0000005aa68b
Thread 0001, Seq# 0000000008, SCN 0x0000005aa68b-0x0000005aa68c

看出SCN没有改变,Oracle恢复也是正常的!

但在全备份之后,resetlogs 打开数据库之前打开数据库就不能恢复了!

这中间发生什莫变化了呢?

使用道具 举报

回复
论坛徽章:
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
28#
发表于 2003-4-9 14:46 | 只看该作者

resetlogs 打开数据库之前打开数据库

你在做恢复的时候分2个步骤
仔细看Cp的恢复过程

然后结合你的例子来做?

也就是在resetlogs打开之前是根据 SCN 或者 时间点来做恢复的,这样记录下这个SCn或者时间,再以后的恢复中使用这个 记录 先做第一次恢复来  模拟  数据库open  resetlogs 前的状态

使用道具 举报

回复
论坛徽章:
295
ITPUB元老
日期:2005-07-25 16:09:42授权会员
日期:2005-10-30 17:05:33生肖徽章:牛
日期:2006-09-06 21:17:03生肖徽章2007版:牛
日期:2008-05-06 11:05:47生肖徽章2007版:牛
日期:2008-11-27 11:35:13生肖徽章2007版:牛
日期:2009-02-19 20:40:13生肖徽章2007版:马
日期:2009-02-25 21:19:48生肖徽章2007版:猴
日期:2009-02-27 01:40:13生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:牛
日期:2009-03-10 21:33:00
29#
 楼主| 发表于 2003-4-9 15:05 | 只看该作者

谢谢!看了你的解释我明白CP为什莫那样做了!

最初由 biti_rainy 发布
[B]你在做恢复的时候分2个步骤
仔细看Cp的恢复过程

然后结合你的例子来做?

也就是在resetlogs打开之前是根据 SCN 或者 时间点来做恢复的,这样记录下这个SCn或者时间,再以后的恢复中使用这个 记录 先做第一次恢复来  模拟  数据库open  resetlogs 前的状态 [/B]


CP是在全备份之后,resetlogs 打开数据库之前有新的事务!

所以必需分两步用两个控制文件恢复!必须用

resetlogs之前和之后的归档日志,才不丢数据!

而我没有,所以一步就可以!

直接用resetlogs后的归档日志就可以了!

也就是说,全备份不能应用 resetlogs 前的归档日志了!

因为在resetlogs 后,控制文件改变了!

使用道具 举报

回复
论坛徽章:
295
ITPUB元老
日期:2005-07-25 16:09:42授权会员
日期:2005-10-30 17:05:33生肖徽章:牛
日期:2006-09-06 21:17:03生肖徽章2007版:牛
日期:2008-05-06 11:05:47生肖徽章2007版:牛
日期:2008-11-27 11:35:13生肖徽章2007版:牛
日期:2009-02-19 20:40:13生肖徽章2007版:马
日期:2009-02-25 21:19:48生肖徽章2007版:猴
日期:2009-02-27 01:40:13生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:牛
日期:2009-03-10 21:33:00
30#
 楼主| 发表于 2003-4-9 15:13 | 只看该作者

就是说!

在全备份之后,

resetlogs 打开数据库之前打开数据库有新的数据也能恢复!

谢谢biti ,谢谢cp!

使用道具 举报

回复

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

本版积分规则 发表回复

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