老师说的:
redo->已递交的事务,实例恢复时要写到数据文件去的
undo->未递交的事务.断电的时候先undo然后再redo呢?个人感觉只需要redo一次就够了吧,把未commit的数据写入data files不就行了吗?
redo->已递交的事务,实例恢复时要写到数据文件去的
undo->未递交的事务.断电的时候先undo然后再redo呢?个人感觉只需要redo一次就够了吧,把未commit的数据写入data files不就行了吗?
每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件
undo,记录更改前的一份copy,但你/系统rollback时, 把这份copy重新覆盖到原来的数据
我看参考书这样写:
1.禁止建立新的连接,并且不允许连接到数据上的用户执行新的事务;
2.立即终止sql语句的执行
3.不回退所有正执行的事务
4.数据库高速缓存的内存不会写到数据文件中
5.重做日志缓存不会写到重做日志文件中;
6.oracle断开所有连接
嗯,那断电之后数据库从新启动的时候,redo以及undo如何做呢?
没有错,这是oracle数据库的数据一致性所需要做的工作,一致性指的就是数据文件、日志文件、控制文件。只有这样做了,三个文件的SCN号才能保持一致。关于SCN的解释请参考http://hi.baidu.com/h_sn999/blog/item/d15430ce755f3639b700c82f.html