Oracle实例恢复机制

简介: 整理自《OCP/OCA认证考试指南》 001      实例恢复不仅可以重新构成在崩溃时未被保存至数据文件的任何已提交事务,而且可以回滚已被写至数据文件的任何未提交事务。
整理自《OCP/OCA认证考试指南》

001 
    实例恢复不仅可以重新构成在崩溃时未被保存至数据文件的任何已提交事务,而且可以回滚已被写至数据文件的任何未提交事务。 这种恢复是完全自动的,我们无法随意停止实例恢复过程。如果实例恢复失败,那么唯一的可能是在实例失败的同时还存在介质失败,此时只有在使用介质恢复技术还原和恢复受损文件后才能打开数据库。介质恢复的最后一个步骤是自动的实例恢复。
002 实例恢复机制
    大体上,实例恢复只不过是使用联机日志文件的内容将数据库缓冲区缓存重新构建至崩溃之前的状态。这个重构过程将重演从崩溃时未被写至磁盘的数据块的相关重做日志中提取出的所有变更。完成上述操作之后,就能够打开数据库。此时,数据库仍然受到损坏,但是由于用户看到的 实例已被修复,因此允许用户进行连接。实例恢复的这个阶段称为前滚,该阶段将恢复所有变更(也就是针对已提交和未提交事务的数据块变更与撤销块变更)。每条重做记录都具有重新构造一个变更所需的最少信息:数据块的地址以及新值。在前滚期间,会读取每条重做记录,相应的数据块从数据文件载入数据库缓冲区缓存,并且应用相应的变更。随后,数据块会被写回磁盘。
    向前回滚结束后,崩溃看上去似乎从未发生过。不过此时数据库中还存在未提交的事务,这些事务必须被回滚,Oracle将在实例恢复的回滚阶段自动完成未提交事务的回滚操作。然而, 上述操作则发生在数据库已被打开且使用之后。如果用户在连接时遇到某些需要回滚但是尚未回滚的数据,那么不存在任何问题。 由于前滚阶段会填充保护未提交事务的撤销段,因此服务器能够以正常的方式回滚变更,从而实现读一致性。
    实例恢复是自动的、不可避免的,那么怎样才能调用实例恢复呢?答案是使用startup命令。首先,在数据库过渡到加载模式时,SMON进程会读取控制文件。随后,在数据库过渡到open模式时,SMON进程会查看所有数据文件和联机重做日志文件的文件头。此时,如果已经出现了实例失败,由于文件头没有全部同步,因此SMON进程会发现实例失败,从而进入实例恢复进程,而数据库只能在前滚阶段结束后才能被真正地打开。
    提示:如果执行了startup命令,那么绝对不会丢失任何数据。在发生任何崩溃之后,都应当执行startup命令并查看崩溃的程度。这个命令可以解决所有问题。
相关文章
|
3月前
|
负载均衡 Oracle 关系型数据库
Linux启动多个Oracle实例
Linux启动多个Oracle实例
39 0
|
SQL 运维 Oracle
Oracle 超时设置2:设置实例级参数
Oracle超时设置系列的第二篇文章,设置实例级参数
470 0
|
8月前
|
SQL Oracle 关系型数据库
Oracle 19c 启动和关闭实例保存PDB状态
十年以上 MySQL Oracle DBA从业者,MySQL 5.7 OCP, 微信号: jinjushuke
202 0
|
11月前
|
Oracle 关系型数据库
Oracle实例启动失败 ORA-27300 ORA-27301 ORA-27302 新增一个实例,信号量就不够了
我们在一个客户上进行恢复完成后,在RAC的第二个节点,Oracle实例启动失败,有下面的提示信息
|
11月前
|
Oracle 关系型数据库 数据库
Oracle实例迁移_真实场景实操
Oracle实例迁移_真实场景实操
78 0
|
11月前
|
SQL Oracle 安全
Oracle DDL+DML+DCL实例
Oracle DDL+DML+DCL实例
88 0
|
SQL Oracle 关系型数据库
Oracle启动实例(instance)、打开数据库
Oracle启动实例(instance)、打开数据库
162 0
|
SQL 存储 Oracle
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
258 0
|
SQL 存储 缓存
Oracle数据库 | Oracle备份实例
Oracle数据库 | Oracle备份实例
190 0
Oracle数据库 | Oracle备份实例
|
Oracle 关系型数据库 数据库
oracle学习36-rman备份-控制文件丢失恢复
oracle学习36-rman备份-控制文件丢失恢复
184 0
oracle学习36-rman备份-控制文件丢失恢复

推荐镜像

更多