Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

42

积分

0

好友

0

主题
1#
发表于 2012-2-23 16:32:17 | 查看: 6140| 回复: 8
官方文档B14191.PDF中64页,关于CONSISTENT备份有如下描述:
Consistent :
A backup taken when the database is mounted (but not open) after a
normal shutdown. The checkpoint SCNs in the datafile headers match the
header information in the control file. None of the datafiles has changes
beyond its checkpoint. Consistent backups can be restored without
recovery.

Note: If you restore a consistent backup and open the database in
read/write mode without recovery, transactions after the backup are lost.
You still need to perform an OPEN RESETLOGS.

我的问题是NOTE里说: 如果恢复CONSISTENT 备份不做RECOVER动作,并以读写模式打开数据库,备份以后以来的TRANSACTIONS将丢失,需要做OPEN RESETLOGS

我的疑惑点是,既然我的备份是CONSISTENT的,那么我直接就能打开数据库,哪里来备份后的TRANSACTION, 因为CONSISTENT备份情况下我的库并不处于OPEN状态,怎么会有TRANSACTION?? 怎么还要OPEN RESETLOGS. 因为我恢复CONSISTENT备份就可以直接正常以读写模式OPEN啊。
2#
发表于 2012-2-23 16:42:05
我是这样理解的


consistent backup + no recover => 其实它指的是 不完全恢复 ,通过上一次shutdown 后(指数据库又打开过了)backup 的consistent backup, 直接打开数据库 , 同时使用 当前的 控制文件 , 确实是需要open resetlogs的, 且 从上一次shutdown 以后的数据变化 都会丢失了。

Oracle Database Concepts 主要面向初学者,  初学者不了解那么多 oracle的术语 和技术, 所以要 简单易懂, 但是又时候可能造成一些误解。

回复 只看该作者 道具 举报

3#
发表于 2012-2-23 17:00:13
明白,如果是这种情况,就是说我CONSISTENT备份完成后,他又打开过数据库,比如过了几分钟,他又想拿刚才的CONSISTENT来恢复到备份时的状态,他又两种选择:
1. 全部使用CONSISTENT的整个备份,包括控制文件备份,这样就无需做RECOVER和OPEN RESETLOG,数据库成功恢复,丢失后来别人打开几分钟的TRANSACTIONS.
2.使用当前的控制文件,就是不恢复CONSISTENT备份中的控制文件,而恢复其它数据文件,这时当然是要RECOVER后再OPEN RESETLOGS,这样的话应该不丢后来几分钟的数据吧? 因为RECOVER动作会根据当前的控制文件来应用后来几分钟归档的归档日志。怎么能说丢失后来的TRANSCATION呢?
3.如果全部使用CONSISTENT的备份恢复,假设备份是2点的,而他想做不完全恢复恢复到1点半,那么同样需要RECOVER和OPEN RESETLOGS,此时丢的就是1点半以后的所有数据了,当然也包括那打开后的几分了

不知我的第“2” 条理解对不对?

回复 只看该作者 道具 举报

4#
发表于 2012-2-23 17:05:25
open the database in read/write mode without recovery,   它明确说明了 不做recovery , 所以和 你说的2是不符的。

3. 备份时 2点 ,恢复到 1点半? 你指何种备份?

回复 只看该作者 道具 举报

5#
发表于 2012-2-23 17:06:01
那么第“2”条中,假设后来打开库的几分钟新TRANSACTION还未来得及归档,而是在REDO LOG里,还没有完全写入数据文件,这时我用当前控制文件(非CONSISTENT备份里的控制文件),恢复CONSISTENT备份的数据文件,这时做RECOVER再OPEN RESETLOGS,会出现什么情况?

回复 只看该作者 道具 举报

6#
发表于 2012-2-23 17:12:24
原帖由 maclean 于 2012-2-23 17:05 发表
open the database in read/write mode without recovery,   它明确说明了 不做recovery , 所以和 你说的2是不符的。

3. 备份时 2点 ,恢复到 1点半? 你指何种备份?


假设是归档模式,数据库从12点来的归档日志都在,第一次备份是14点才做的,以前未做过任何备份,这时能不能做不完全恢复恢复到13点半呢?
这块我一直没有理解。

[ 本帖最后由 javaio 于 2012-2-23 17:18 编辑 ]

回复 只看该作者 道具 举报

7#
发表于 2012-2-23 20:20:38
假设后来打开库的几分钟新TRANSACTION还未来得及归档,而是在REDO LOG里,还没有完全写入数据文件 这时我用当前控制文件(非CONSISTENT备份里的控制文件),恢复CONSISTENT备份的数据文件,这时做RECOVER再OPEN RESETLOGS,

=> 你没有丢失 redolog , 那么无需resetlogs  , 这是complete recovery


假设是归档模式,数据库从12点来的归档日志都在,第一次备份是14点才做的,以前未做过任何备份,这时能不能做不完全恢复恢复到13点半呢?
这块我一直没有理解。


=>  不能, 必须要有 13:30 前的 备份, 除非你打开了闪回数据库 , 从14:00 闪回到 13:30的状态。

回复 只看该作者 道具 举报

8#
发表于 2012-2-23 22:08:22
RMAN不备重做日志,所以当做不完全恢复时,需要open resetlogs

可以进行不完全恢复的时间点是,最早的一个数据库全备到最后的日志时间中的任意时间

回复 只看该作者 道具 举报

9#
发表于 2012-2-24 21:18:32
原帖由 teapot 于 2012-2-23 22:08 发表
RMAN不备重做日志,所以当做不完全恢复时,需要open resetlogs

可以进行不完全恢复的时间点是,最早的一个数据库全备到最后的日志时间中的任意时间


好的,理解了,多谢楼上二位,问题虽然初级,但困惑了好久,多谢,还是要多看官方文档,多做实验,多提问才行。多谢

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 02:03 , Processed in 0.055536 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569