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

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

999

积分

1

好友

942

主题
1#
发表于 2017-4-17 16:26:40 | 查看: 3007| 回复: 2

在oracle9。2下模拟正在使用的在线日志丢失的数据恢复情况:
步骤如下:
1、insert 某空表几条记录,然后commit;
2、select * from v$log 查看是redo02.log是当前日志
3、shutdown abort
4、删除redo2.log
5、添加_allow_resetlogs_corruption=true参数
6、startup mount
7、recover database until cancel
8、alter database open resetlogs
9、检查刚才insert的那几条记录,已经不见了。


请问:既然我已经commit了,可是为什么会丢失呢???
commit后,insert动作别记录到日志文件,那么在什么时候将会被记录到数据文件中去呢? 这样是不是会出现问题,如果一个在线日志为500M,将会记录很多数据操作。如果数据库崩溃,丢失了当前这个500M的日志(假设全部丢失,日志没有mirror),那么损失不是很大吗?
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
2#
发表于 2017-4-26 12:01:45
因为你已经做了 _allow_resetlogs_corruption=true  这条等于是 允许丢失日志内的事务了

回复 只看该作者 道具 举报

3#
发表于 2017-8-3 16:09:51
本帖最后由 biotwang 于 2017-8-3 16:10 编辑

这里你将checkpoint的概念和commit的概念搞混了。
你的case说明commit的时候,数据还未写入磁盘。

什么是检查点?


所谓检查点(checkpoint)是一种对被修改更新的数据块从缓存中清出至磁盘的动作。通常,当你要对某数据块进行更改时,数据块首先会被拷贝至内存中,然后再被你更改,因此你的改动在内存中。当你commit这个块,它还没有写到数据文件中,但它已经在REDO LOG中进行了记录,因此我们可以在数据库实例发生事故失败后“replay”这些变更事务。最终,系统会将你修改的块checkpoint到你的磁盘数据文件中。

检查点号即当时所有脏的buffer块被写入磁盘时的SCN号。检查点可以是 对象/表空间/数据文件/数据库 级别的。

一个成功的检查点保证了所有数据库变更到了检查点SCN,且已经都记录在数据文件中。那么如果需要实例恢复,那也仅是对其检查点之后的变更进行前滚应用。

检查点的目标是将脏buffer块从SGA安全写入到磁盘。

哪些事件会触发checkpoint:
  ● 当需要DBWR将Oracle SGA中的所有脏缓冲块写入数据文件
  ● 当redo log发生切换时
  ● 当到LOG_CHECKPOINT_TIMEOUT时间时
  ● 当发出'alter system switch logfile'或'alter system checkpoint'命令时

当触发检查点时,checkpoint process会对控制文件进行更新。请记住检查点操作会将所有变更的(脏)块写入磁盘。通过在控制文件中记录下实际情况,Oracle知道在实例失败后,哪些redo日志需要被应用。进行实例恢复时,Oracle需要应用所有在最后记录的检查点之后生成的redo。

DBWR会将脏块从内存缓冲写入磁盘,但这个操作的发生和你是否"commit"没有关系。commit时调用到的是LOGR。

当log buffer达到1M,满1/3,或每3秒,或每次commit时,都会触发redo写。
DBWR <---> checkpoint
LGWR <---> commit

注意:
  ● Log switch会发生checkpoint,但checkpoint不会引起log switch.
  ● 当checkpoint完成,redo日志中那些checkpoint之前的记录数据在实例恢复时就不再需要了。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-5-17 19:20 , Processed in 0.047679 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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