Oracle日志(redo)机制探讨

来源 :数字化用户 | 被引量 : 0次 | 上传用户:ynl007
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】oracle数据库的redo机制是保障数据安全和故障恢复的至关重要的手段,也是对数据库性能影响非常巨大的关键因素。通过对oracle日志机制的探讨可以帮助数据库管理员更好的理解、维护oracle数据库。
  【关键词】redo checkpoint 事务 恢复
  一、redo原理
  计算机系统中最容易出现瓶颈的就是磁盘的I/O操作。Oracle通过批量方式将buffer cache(数据缓冲区)中发生变更的“脏”数据块写入数据文件。这样减少了低效率的离散写磁盘操作,大大减轻了磁盘I/O的压力。
  通过将buffer cache中的变更后的数据延迟写入数据文件,提升了数据库的性能,但也带来了数据丢失的风险。为了保证buffer cache中的“脏”数据块在系统发生故障时不丢失,oracle要将这些数据块的变更记录下来,并及时写入日志。即使系统发生故障,oracle通过日志中记录的redo信息可以将数据块发生的变化过程重演,这样就可以将数据库恢复到故障前的最后时刻。
  二、日志文件
  为了保证redo信息及时写入日志文件,oracle的lgwr(写日志进程)非常活跃。为了避免磁盘缓冲带来的滞后风险Lgwr采用了直接写磁盘(direct IO)的方式将redo信息直接写入文件。触发lgwr的条件很多:每3秒钟;事务提交(commit);redo log buffer(日志缓存区)1/3满或有1MB数据;dbwr(写数据文件进程)启动时发现“脏”数据库对应的redo信息未写入日志。
  Oracle的日志文件是循环使用的,所以至少要两个日志组。为保障日志文件安全,每组日志可以有多个镜像(多镜像会增加lgwr的负担)。当一个日志文件写满后,会切换到另一个日志文件(log switch)。切换日志会触发检查点(checkpoint)事件,通知dbwr进程将写满的日志文件中保护的数据块写入数据文件。在checkpoint完成之前,该日志文件是不能被覆盖重用的。因此,日志文件通常会有current(当前)、active(checkpoint未完成)、inactive(checkpoint已完成)三种状态。如果是新添加的日志文件或者数据库resetlogs(重置),日志文件的状态为unused(未使用)。
  当日志文件切换频繁时,就会发生因日志文件处于active状态而无法切换的问题,此时数据库处于“挂起”状态,等待checkpoint完成, Alert文件中会记录:checkpoint not complete。发生这种问题对系统性能影响非常大,严重的甚至会导致业务中断。通常数据库管理员会采取增加日志文件大小、增加日志组数这两种方法来应对。
  日志文件对数据库的影响是非常巨大的,尤其是current日志文件如果发生损坏,丢失数据就无法避免。日志文件越大,就意味着越多的数据有丢失的风险。因此,从保障数据安全、减少发生故障时的数据损失的角度来看,只要不发生checkpoint not complete,日志文件应越小越好。所以,采用小日志文件、多日志组的方式可以较好的解决数据库系统的安全和性能的冲突。但是日志文件的切换、归档也会消耗系统资源,小日志文件在业务高峰期会发生频繁切换,对系统性能的影响不可小觑。因此,很多情况下数据库管理员会依据业务高峰时段的日志产生量来决定日志文件的大小。但业务高峰期和空闲期的数据变更量差别非常大,满足业务高峰期的日志文件大小对业务空闲时段来说就显得太大了,会出现日志文件很长时间都不切换的现象。而不切换、归档的日志就存在着损坏的风险,时间越长风险就越大。针对此问题,笔者采用了通过设置archive_lag_target参数的手段来强制数据库进行日志切换。archive_lag_target参数设定的是日志切换时间(单位为秒),默认值为0(不启用)。启用该参数后,即使日志文件未写满,只要达到时间限制就强制切换日志。通常建议archive_lag_target参数设定不小于20分钟,但过长也失去了保护数据的意义(笔者建议不超过90分钟)。
  三、减少redo
  Redo机制保障了oracle数据库的故障恢复能力,提高了系统的稳定性。所以,在正常情况下数据库发生变更都会产生redo。但在某些特殊情况下,减少redo的产生可以极大的提高数据库的性能,对提升应用系统的工作效率具有重要意义。笔者在这里对一些常用的减少redo产生的操作方式给予简单介绍。
  (一)直接路径(direct path)批量insert数据
  在SQL语句中增加/*+append*/提示,在非归档模式下运行的oracle数据库会不产生数据块变更的redo。注意:这种方式对在归档模式下运行的数据库需要将插入数据的表的模式改为nologging才有效。
  举例insert /*+append*/ into test select * from t1
  直接路径批量插入数据只是不产生insert的redo,但如果表上加有索引,insert数据的过程中系统会及时更新索引,这个操作会产生redo。对此可以先将索引删除(drop),insert数据完成后再创建索引。如果采用nologging方式创建索引,则可以将创建索引的redo减少。
  (二) nologging创建表和索引
  创建表的同时采用直接路径append数据。例如create table test nologging as select * from t1
  创建索引的语句后面加上nologging即可。
  (三)补充
  不产生redo的操作方式如果对数据字典发生了修改仍然会产生日志,这是Oracle为了保障数据库的安全和一致性采取的必要手段。这也是在采用上述方式操作后,oracle有时仍然会产生少量日志的原因。为保障数据安全,建议对nologging操作之后立即对数据库进行数据备份(不是日志备份)。
  四、结束语
  Oracle数据库的redo机制是一个非常有特色的技术亮点,对数据库的性能也影响非常大。掌握这个机制并根据系统的实际情况加以利用对数据库管理员来说非常具有实用价值。
其他文献
【摘 要】进入新世纪以来,我国在计算机程序方面的取得的成就是非常巨大的。学生的计算方面的思维能力如何在计算机程序设计课程教学中得到充分的培养,是当代的计算机基础教学的一项主要的责任。笔者结合自身的计算机程序设计课程教学,简要的探讨了计算机程序设计课程中学生思维能力的培养,供各位计算机教育教学的同仁们参考,以共同提高我国的计算机设计程序课程的教育教学的质量。  【关键词】算机 程序设计 课程 思维能
期刊
【摘 要】我国的铁路运输越来越发达,铁路以其安全系数高、乘坐价格低、运行速度快等优势因素成为人们首选的出行方式。随着铁路运输的不断发展,铁路的管理水平也得到了质的飞越。目前铁路管理工作中最高的技术应用即是全电子微机联锁系统信号管理技术。该技术历经了三次质的飞越,最终形成了现在的应用方式。笔者结合大量的理论数据分析,和实际的操作经验,对全电子微机联锁系统信号的解锁模块进行了分析和介绍,希望通过该项技
期刊
【摘 要】计算机安全问题的日益突出,对入侵检测系统提出了更高的要求。本文探讨了基于数据挖掘的数据库入侵检测系统,对数据库内数据的入侵行为的进行快速的识别,提高入侵检测系统规则挖掘速度。  【关键词】入侵检测 数据挖掘 异常检测  一、数据挖掘定义  数据挖掘的定义就是从大量的、真实的、模糊的、含有噪声的、不完全的、随机的数据源中,提取出新颖的、有用的隐含在其中不为人们所知的知识或信息的过程。根据需
期刊
【摘 要】随着我国科学技术的发展,计算机信息技术也处于高速发展状态下,计算机科学技术逐渐进入到人们的生活中,并且发挥着重要的作用,当前我们的生活过程中,计算机科学技术已经普遍应用于生活和工作的各个方面,计算机科学技术对于促进我国经济增长,社会发展以及方便人们方面都发挥了不可阻挡的重要作用,下面本文通过对计算机科学技术的发展水平及其发展过程中存在的问题进行分析,进一步提出促进计算机科学技术的未来发展
期刊
【摘 要】伴随着计算机硬件技术的迭代更新,其维护工作的要求标准不断提高。为了能够适应计算机系统的高速发展,结合计算机硬件维护原则及方法两个方面着手分析,对计算机的软件与硬件系统使用相应的维护方法,有利于提升计算机系统的工作效果,为人们的工作与生活带来更多便捷之处。  【关键词】计算机硬件 维护 原则 方法  一、引言  伴随着现阶段社会的高速发展,计算机系统在人们日常生活中的作用不断体现出来。即使
期刊
【摘 要】IPTV技术以计算机网络技术为基础,集多媒体点播,信息浏览,通信娱乐为一体,为用户提供较好的体验,本文主要讨论了IPTV的相关技术以及典型架构,并引用一个实例进行阐述,具有较好的工程意义。  【关键词】IPTV 流媒体 VOD 系统架构  基于宽带网技术的以多媒体为主的系统,主要为用户提供娱乐、信息浏览和交互方面的应用。目前,IPTV主要以DSL和LAN为主要接入方式,以个人电脑、智能手
期刊
【摘 要】本文主要的研究主体是个体软件过程的互动案例,使学生通过这一主体的案例学习,提高学生的程序开发水平,改进他们的学习方式,完善自我的设计方法,培养学生追踪和评价自己工作的习惯,逐渐提高学生的编程能力。  【关键词】个体软件过程 学生 编程能力  随着软件工程知识的普及,社会对软件开发的需求也逐渐增多,软件的开发技术也随之不断变化。软件规模增大,没有软件开发思想和理论指导的软件开发成本和进度难
期刊
【摘 要】随着信息技术的发展,计算机应用进入各个领域。计算机专业的人才就业路子更加宽广,适应性也越来越强。而事实证明,随着经济技术的越来越发达,社会的进步,数字化对于各行各业都是大势所趋。计算机行业包括软件和硬件两大部分,硬件部分属于支撑部分,而软件属于运行部分,二者协调处理,组成计算机系统。本文从计算机原理入手,分析计算机未来的应用。  【关键词】计算机系统 原理 应用  计算机技术的快速发展,
期刊
【摘 要】对于种类较多但形状基本相同的系列的回转零件,在数控车床编程中,可基于宏程序用一个程序来完成系列回转零件的所有数控车床的加工程序,包括粗车、精车及多次装夹等。  【关键词】宏程序 数控车削 编程应用  如今宏程序在数控铣床加工编程中得到广泛应用。但是在数控车床加工很少应用,经过长期不断地研究和试验。成功地总结在数控车削加工中的编程方法。并获得了成功,收到良好的效果。  一、基于宏程序对系列
期刊
【摘 要】Android系统的发展,智能手机的普及,使得我们可以方便的随时随地浏览页面,同时也会在web登陆过程中留下大量的个人信息,这就使得在web服务中有自动清除个人信息的功能变的不可缺少,本文就从sql层面探讨这方面的应用。  【关键词】android,sql 周期任务  一、情景设定  客户端为android手机,登录后希望保存其在线状态(server端),并且对于每一个在线用户都有一个相
期刊