楼主: it_horse

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

[复制链接]
论坛徽章:
3
授权会员
日期:2005-11-10 08:36:21ITPUB元老
日期:2005-11-10 08:36:01会员2006贡献徽章
日期:2006-04-17 13:46:34
31#
发表于 2003-4-9 16:47 | 只看该作者
按照CP的做法,在最后一步时出错

2.jpg (97.11 KB, 下载次数: 518)

2.jpg

使用道具 举报

回复
论坛徽章:
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
32#
 楼主| 发表于 2003-4-9 17:22 | 只看该作者

如果是这样!

那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
33#
 楼主| 发表于 2003-4-9 19:08 | 只看该作者

我也没有恢复!

我在操作时也出现这个错误!

是我太笨了?还是CP的方法真的不行?

大家有试过的吗?

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-11-10 08:36:21ITPUB元老
日期:2005-11-10 08:36:01会员2006贡献徽章
日期:2006-04-17 13:46:34
34#
发表于 2003-4-9 19:38 | 只看该作者
我在*****看到的解答,一起来参考下
"我想你可能是前后B'(RESETLOG)点不正确。

RESETLOG B’点是你后来要恢复到的点,然后再更换最新控制文件。
虽然你恢复的时间点都是09-APR-03 11:38:24
按理说,前后恢复过程都应该应用同样的归档日志,但后一次我没有看到应用。"

使用道具 举报

回复
论坛徽章:
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-4-10 15:03 | 只看该作者

关于这个问题

coolyl  做了一个例子,已经成功
据说RMAN 下他做的就是有问题
而直接 冷备份的则成功
等会等他的例子整理了贴出来  

使用道具 举报

回复
论坛徽章:
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
36#
发表于 2003-4-10 16:27 | 只看该作者
Recovery through resetlogs 的例子
刚刚重新又做了一次,用冷备份实现的,不知道为什么用rman做的备份就有错误,奇怪,希望大家一起讨论讨论。

过程如下:
1。关闭数据库
SQL> conn / as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

2。接着做一个冷备份,全备的,包括数据文件,控制文件。

3。启动数据库
15:44:27 SQL> startup
ORACLE 例程已经启动。

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 62914560 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
4。创建一个表
时间A
15:45:18 SQL> create table test as select * from dba_users;

表已创建。

已用时间: 00: 00: 01.01
15:46:19 SQL> select count(*) from test;

COUNT(*)
----------
5

已用时间: 00: 00: 00.00
15:46:36 SQL> alter system switch logfile;

系统已更改。

已用时间: 00: 00: 00.06
15:46:47 SQL> /

系统已更改。

已用时间: 00: 00: 00.06
15:46:49 SQL> /

系统已更改。

已用时间: 00: 00: 05.08
15:46:56 SQL> /

系统已更改。

已用时间: 00: 00: 00.08

5。数据库意外中断,用冷备份恢复后恢复到时间A
15:46:59 SQL> shutdown abort
ORACLE 例程已经关闭。
拷贝冷备文件回来,做不完全恢复。
15:47:41 SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 62914560 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
15:56:54 SQL> recover database until time '2003-04-10 15:45:18';
完成介质恢复。
15:58:17 SQL> alter database open resetlogs;

数据库已更改。

已用时间: 00: 00: 11.02

查看test表已经不在了
15:58:38 SQL> select * from test;
select * from test
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在

已用时间: 00: 00: 00.00

重新建立test表
15:59:35 SQL> create table test as select * from dba_users;

表已创建。

已用时间: 00: 00: 01.00

让数据库意外中止
16:00:18 SQL> shutdown abort
ORACLE 例程已经关闭。

6。拷贝开始的冷备回来,并要先备份当前的控制文件
然后恢复到开始恢复的那个时刻,是在resetlog之前。

16:01:10 SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 62914560 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
16:09:48 SQL> recover database until time '2003-04-10 15:45:18';
完成介质恢复。

7。关闭数据库,拷贝6中备份的控制文件回来。
16:09:53 SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。

8。启动数据库。
16:10:02 SQL> startup
ORACLE 例程已经启动。

Total System Global Area 89201304 bytes
Fixed Size 453272 bytes
Variable Size 62914560 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01190: 控制文件或数据文件1来自于最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ORCL9\SYSTEM01.DBF'

然后做完全恢复,然后打开数据库。
recover database;
alter database open;

查询数据发现test表存在。
select count(*) from test;

COUNT(*)
----------
5
证明恢复成功。
当然如果用scn做恢复也可以,这个我也试验过了。
欢迎大家讨论研究。

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:332008新春纪念徽章
日期:2008-02-13 12:43:03
37#
发表于 2003-4-10 16:59 | 只看该作者
应用 RMAN 的话 ,
需使用 CATALOG ,
并且在从事第8步恢复的时候
要 RESET CATALOG TO INCARTION ..

使用道具 举报

回复
论坛徽章:
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
38#
发表于 2003-4-10 17:30 | 只看该作者
最初由 ahyan 发布
[B]应用 RMAN 的话 ,
需使用 CATALOG ,
并且在从事第8步恢复的时候
要 RESET CATALOG TO INCARTION .. [/B]


可是我用rman的时候是备份了控制文件的,不用catalog也无所谓啊。

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:332008新春纪念徽章
日期:2008-02-13 12:43:03
39#
发表于 2003-4-10 18:28 | 只看该作者
第六步的备份的 control file E 包含在 15:59:35 创建的test 表信息 ,

生成相应的日志文件 archive log E

控制文件已经被resetlogs , log number 由 0 开始 重新循环

第七步的做完的recover database  until time ,,, 把数据库还原到 15:45:18

此时控制文件 control file  F , log number 被还原到 15:45:18 的 xxxx ,

实际上是没有 test 表的信息 , 对吧 ?

然后 使用 第六步的control file    E 来取代现在的 control file   F

报错误 ,  startup

ORA-01190: 控制文件或数据文件1来自于最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ORCL9\SYSTEM01.DBF'

然后把 数据库恢复 recover database ,

既把 在 15:59:35 创建的表信息从 archive log E 找到

如果 Rman 的话, 不使用 Catalog , 相关的 备份信息保存在当前的 control file 里面 ,
这样备份的控制文件是没有任何用的 ,  因为 当使用 Rman 去做恢复的话 ,
它必须要去读现在的control file ,
而如果要想恢复备份的控制文件 则需要 startup nomount
( 但是这时没有记录的备份信息 ,就无从恢复了)

不知道这样理解对不对  ?

最初由 coolyl 发布
[B]

可是我用rman的时候是备份了控制文件的,不用catalog也无所谓啊。 [/B]

使用道具 举报

回复
论坛徽章:
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
40#
发表于 2003-4-10 19:12 | 只看该作者
最初由 ahyan 发布
[B]

如果 Rman 的话, 不使用 Catalog , 相关的 备份信息保存在当前的 control file 里面 ,
这样备份的控制文件是没有任何用的 ,  因为 当使用 Rman 去做恢复的话 ,
它必须要去读现在的control file ,
而如果要想恢复备份的控制文件 则需要 startup nomount
( 但是这时没有记录的备份信息 ,就无从恢复了)

不知道这样理解对不对  ?

[/B]


前面的理解没错,用rman备份的时候,我也同时备份当时的控制文件啊,我每次恢复的时候都先恢复控制文件的,然后用恢复的控制文件做的rman的恢复啊。

使用道具 举报

回复

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

本版积分规则 发表回复

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