ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事务流程与介质恢复

2022-08-30 01:02:08  阅读:123  来源: 互联网

标签:事务 -- 流程 介质 写入 缓冲区 日志 数据 重做


事务生命周期 -->获取排他锁 -->重做数据存入PGA(进程程序的全局区) -->获取复制锁和重做分配锁 -->获取重做日志分配空间 -->释放重做分配锁 -->重做日志缓冲区同步重做日志 -->释放重做复制锁 -->LGWR将重做日志缓冲区写入磁盘(注意:数据没有写入磁盘) -->LGWR将重做日志缓冲区写入ORL(注意:事务写入磁盘但未提交) -->到检查点时间,数据库缓冲区写入磁盘   在DBWR进程将数据库缓冲区写入磁盘前,LGWR进程必须将重做缓冲区写入磁盘。这个顺序由写前日志记录协议强制执行,协议要求:未记录到重做日志中的更改不能写入数据文件,该协议可保证:事务提交前如果出现故障可以撤销事务 事务提交时会分配一个SCN,并经历上述事务流程,commit是一个事务的结束   写后日志记录 写前日志记录的唯一例外是使用直接路径写入:直接路径加载或执行create table as select...语句 这些事务不是来自缓冲区,需要使用写后日志记录协议。但会生成重做数据,可以恢复 当移动高水位线的重做数据提交后,可以看到数据 在执行直接路径写入操作时可结合UNRECOVERABLE选项,实现无日志的需求。 缺陷 使用UNRECOVERABLE选项不会为事务生成重做数据,但会伟数据库字典表生成重做数据,并生成少量数据用于定义无效范围(开始快地址、SCN) 虽然这样有利于加载大量数据,但在dg环境有缺陷:当介质恢复遇到无效范围数据时,由于没有重做数据,数据块被标为soft-corrupt。备库会报错,如果执行介质恢复,主库会报相同错误 0 解决方案 主库:对UNRECOVERABLE模式加载的表空间文件进行查询 0 备库:检查无日志操作,如检测到可以执行托管恢复 0 托管恢复 备库 方式                  命令 -->停止重做数据            recover managed standby database cancel -->对受影响的无日志文件脱机操作    alter database datafile 数据文件名 offline drop -->重新应用重做数据          recover managed standby database disconnect   主库 -->用RMAN备份受影响的数据文件 -->停止应用重做数据          recover managed standby database cancel -->对脱机的数据文件重新联机      alter database datafile 数据文件名 online -->重新应用重做数据          recover managed standby database disconnect

标签:事务,--,流程,介质,写入,缓冲区,日志,数据,重做
来源: https://www.cnblogs.com/lijin543/p/16637923.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有