热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈Oracle的前滚恢复

今天我们不探讨ORA-600[kcratr_nab_less_than_odr]错误,11.2上ORA-600问题比错误本身更有意思的是记录了对于rollingupgrade(前滚恢复)的KSTtrace。很多网友肯定要问什么是KST?KST是9i以后引入的内部诊断...Synt

今天我们不探讨ORA-600[kcratr_nab_less_than_odr]错误,11.2上ORA-600问题比错误本身更有意思的是记录了对于rolling upgrade(前滚恢复)的KST trace。很多网友肯定要问什么是KST? KST是9i以后引入的内部诊断机制Tracing Facility,每一个Oracle 进程都维护SGA中的一小块Trace buffer,并将自身的默认启用的一些event事件信息写入到Trace Buffer中(这些事件默认包括10280, 10401, 10441, 10442, 10425, 10427, 10429, 10434, 10666),可以使用内部视图x$trace观察这些信息,默认Trace Buffer不写到磁盘上,而只在SGA中维护,当Trace Buffer用完时将被重用。
  www.2cto.com  
 
了解了 KST的知识后,我们可以从容地阅读下面这段TRACE了:
 
Trace Bucket Dump Begin: default bucket for process 19 (osid: 29785)
  www.2cto.com  
TIME(*=approx):SEQ:COMPONENT:FILE@LINE:FUNCTION:SECT/DUMP: [EVENT#:PID:SID] DATA
 
以上是KST Trace的头部
COMPONENT 组件名例如 db_trace 、CACHE_RCV,这里的CACHE_RCV意为 cache recovery,实际上是我们所说的前滚rolling forward。
FILE@LINE    指oracle内核代码的文件名和行数例如:kst.c、kcv.c,这些都是oracle的核心C代码名
FUNCTION      指oracle内核函数名  例如kcvcrv()、kctrec()
[EVENT#:PID:SID]  即   EVENT ID:PID:SID
DATA      实际的操作内容
 
我们选择性地阅读KST TRACE的内容:
 
2012-02-07 13:40:52.755567 :800005B3:CACHE_RCV:kcv.c@15475:kcvcrv(): kcvcrv: Entering kcvcrv()2012-02-07 13:40:52.755609 :800005B4:KFNU:kfn.c@2200:kfnPrepareASM(): kfnPrepareASM force=0 state_kfnsg=0x7
 
2012-02-07 13:40:52.772999*:800005B5:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 1 - cpscn 0x0000.018b76b2, rsflg 0  www.2cto.com  
 
2012-02-07 13:40:52.826001*:800005B6:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 2 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:52.862014*:800005B7:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 3 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:52.909981*:800005B8:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 4 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:52.945933*:800005B9:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 5 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:52.993824*:800005BA:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 6 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:53.005829*:800005BB:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 7 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:53.041893*:800005BC:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 8 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:53.065779*:800005BD:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 9 - cpscn 0x0000.018b76b2, rsflg 0
 
2012-02-07 13:40:53.089760*:800005BE:CACHE_RCV:kcv.c@16100:kcvcrv(): kcvcrv: file 10 - cpscn 0x0000.018b76b2, rsflg 0  www.2cto.com  
 
kcvcrv需要对control file读写才能完成其必要的任务,所以它会启动一个控制文件读写事务 read-write control file transaction。通过检验控制文件中每个数据文件的记录以确认数据文件是否有被重新同步的必要。当然kcvcrv会跳过哪些OFFLINE和read-only的数据文件,因为这些文件不存在recovery的必要。
 
在确认crash recovery的必要性后,kcvcrv还会主导启动并行的恢复工作(parallel recovery),注意parallel recovery只在多CPU且参数recovery_parallelism不为零的环境下有效, kcvcrv会创建并初始化Oracle中的PQ Slave 并行子进程以便恢复实例。默认的子进程数Slave Processes等于(CPU的总数-1),这是因为需要为recovery coordinator process恢复协调进程保留一个CPU。并且需要kcvcrv分配一个recovery state object给并行恢复协调进程与其Slave子进程。
 
 
 
摘自 goodboychen的专栏

推荐阅读
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 本文探讨了21世纪中,随着数字化技术的快速发展,纸张是否会逐渐被取代的问题。文章回顾了纸张的历史及其在现代社会中的重要性,并分析了电子显示技术的进步及其对传统纸张使用的潜在影响。 ... [详细]
  • 深入浅出:Google工程师的算法学习指南
    通过Google工程师的专业视角,带你系统掌握算法的核心概念与实践技巧。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • 本文汇总了在正式宴会上常用的寒暄语句,包括欢迎词、感谢词及日常问候,适用于各种正式场合。这些语句不仅有助于提升交际礼仪,还能增进彼此之间的友好关系。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了在Android 8.x中,GMS认证新增的CTS和VTS测试,特别是如何在VTS环境下测试GSI版本。文章涵盖了详细的测试环境配置和具体操作步骤。 ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
author-avatar
手机用户2602936275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有