我大概了解了下 无论使用者修改的数据有没有被提交都会有一个LGWR的进程将之前DML矢量写入重做日志文件中,然后通过这个日志可以还原没有提交的数据。重做日志文件写满的话会切换下一个重做日志文件,一共三个这么轮流,此时会将前一个日志文件写入归档日志文件中。那非归档模式的话是不是指在日志切换的时候没有写入归档日志文件的这个动作?
如果是这样的话在非归档模式下数据库还原没有被提交的数据是怎么办到的?
如果是这样的话在非归档模式下数据库还原没有被提交的数据是怎么办到的?
解决方案 »
- 今天的oracle面试题2
- 多对多关系怎么写sql语句
- PL/SQl怎么测试一个sql语句的性能?
- oracle dataguard :standby库在mount状态时,主库怎么传送日志?
- oracle 触发器 插入一条数据 调用了两次触发器
- 用LIST建好的分区了,在给分区加索引时提示无效的表分区方法
- 安装 oracle9i过程中怎么不能创建数据库,安装失败?
- 救命:最简单的一条update语句,如何优化?
- 急救,懂ORACLE和jsp的各位大哥进来看看
- RedHat8.0,装Jsdk1.4.1_01已经成功(可做Java程序了),但装Oracle时,提示:P/bin/jre下找不到Java Runtime Envrionment
- 如何select出两个表的内容放在一起?
- 我的代码错在哪??创建插入雇员的存储过程INSERT_EMP,并将雇员编号等作为参数。
如果是这样的话在非归档模式下数据库还原没有被提交的数据是怎么办……
还原未提交的数据,好像只有个闪回事务的查询,这个是利用的是撤销表空间的撤销段中的数据。
和撤销表空间的可用大小和undo_retendtion有关。
不管是归档模式还是非归档模式,还原未被提交的数据都是使用回滚段的rollback命令,与日志是否被归档无关。
所谓归档,是redolog被覆盖前会被保留一份归档,redolog里记录的数据库中所有的改变操作。
所以都是有在重做日志中有记录的 所以放心写入磁盘。
希望详解..而且我写的是一般...
一版事务提交后 日志进程先把日志缓冲区的日志条目写入重做日志
然后 发小心给DBWR进程写数据。。当然DBWR还在缓冲区需要存放新的磁盘的数据的时候 主动的去写脏数据到磁盘
那我不提交 关闭数据库 我的这个被修改过的数据怎么还原呢 日志
在线重做日志是吧,这个日志会不停的轮流覆盖写,他会不会把我之前的操作覆盖了? archvielog 这个是归档模式下的吧? 那非归档模式呢? ??????