实例失败是实例的无序关闭,通常称为崩溃(crash)。断电,关闭或重启服务器以及
许多至关重要的硬件问题都会导致实例失败。
在一个Oracle后台进程可能失败的某些情况下,也会触发即时的实例失败。从功能上看,无论何种原因,实例失败的结果都与执行shutdown abort命令的结果相同。
实例失败后,数据库可能丢失已提交的事务和存储未提交的事务。这就是所谓的受损或不一致数据库。导致这种情况的原因是服务器进程在内存中进行工作,这些进程更新了数据库缓冲区缓存内德数据块和撤销快。最后,DBWn进程将更改后的数据块写至数据文件。
commit命令与数据文件的写操作不存在任何联系。当然,被应用于数据块和撤销快的所有变更都已经存在于重做日志中。
在执行commit命令时,LGWR进程会将日志缓冲区的内容写到当前的联机重做日志文件。DBWn进程与commit命令毫无关系。因此,考虑到性能因素,DBWn进程写入的内容尽可能少,频率尽可能低。这意味着数据库总是过期的。LGWR进程尽可能实时的进行写操作,并且在执行commit命令时确实会完成实时写操作。这正是实例恢复的关键。
实例失败后Oracle数据库将受到损坏,但是磁盘上的重装过日志流中始终存在着修正损坏所需的足够信息。
许多至关重要的硬件问题都会导致实例失败。
在一个Oracle后台进程可能失败的某些情况下,也会触发即时的实例失败。从功能上看,无论何种原因,实例失败的结果都与执行shutdown abort命令的结果相同。
实例失败后,数据库可能丢失已提交的事务和存储未提交的事务。这就是所谓的受损或不一致数据库。导致这种情况的原因是服务器进程在内存中进行工作,这些进程更新了数据库缓冲区缓存内德数据块和撤销快。最后,DBWn进程将更改后的数据块写至数据文件。
commit命令与数据文件的写操作不存在任何联系。当然,被应用于数据块和撤销快的所有变更都已经存在于重做日志中。
在执行commit命令时,LGWR进程会将日志缓冲区的内容写到当前的联机重做日志文件。DBWn进程与commit命令毫无关系。因此,考虑到性能因素,DBWn进程写入的内容尽可能少,频率尽可能低。这意味着数据库总是过期的。LGWR进程尽可能实时的进行写操作,并且在执行commit命令时确实会完成实时写操作。这正是实例恢复的关键。
实例失败后Oracle数据库将受到损坏,但是磁盘上的重装过日志流中始终存在着修正损坏所需的足够信息。