- 作者: 三十而立
- 时间:2009年10月13日 3:11:06
- 请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“inthirties(三十而立)”和出处”http://blog.csdn.net/inthirties/archive/2009/10/13/4666459.aspx”,深入讨论可以联系inthirties@gmail.com。
你的Oracle出过错误吗, 答案应该是肯定的,没有不出错的程序,更何况是如此庞大的体系。面对错误的时候,你是什么样的心情,会有一丝兴奋吗,还是无比的恐惧,如果是前者,恭喜你,你是一个富有挑战性的DBA人员了。如果是后者,你需要好好的思考一下你对Oralce错误的认识了。 我们对待维护和管理中的Oracle的错误,不应该恐惧,害怕,应该勇敢的面对。错误固然可怕,错误固然对我们的生产造成影响,但是我们只有用充满着自信和无畏的信心,以及进行中的充分的耐心和细心以及恒心,才能征服Oracle,正如我们征服我们的爱情一样。
Oracle是个体系庞大的体系,所以错误和bug在所难免,我们在自己的数据库管理和开发的过程中,经常碰到大大小小各种各样的问题。比如经典的 3113和00600的错误,这个应该是让大家头痛也是很经典的错误问题了。
其实除开类似这样的问题,大部分的问题Oracle还是对错误的提示的处理的 相当的严谨和规范的,所以我们完全可以通过错误号和错误的提示信息,通过伟大的google查询出相似的解决方案的,如Nike的广告所说,”一切皆有可能“,我们 需要的是面对错误的勇气和解决问题的决心,耐心和恒心。
其实有很多的优秀的DBA人员,就是在不间断的自我练习和强大的面对错误的信心的下,不断的排查错误,不断的在错误中学习和归纳,最后而成为一代高手,体 验是最好的老师,Oracle也固然如此,经常有一些朋友问我,你怎么这么快就找到问题了,而且马上解决叻。我回答他们的总是一句话,我以前遇过这样的错 误,当时就是这样解决的。 所以,亲爱的DBA朋友,勇敢的面对错误,相信自己,将故障诊断进行到底。然后备份优先,这是DBA不可不信的信条。
这里我归纳了一些Oracle错误的方式
Oracle的错误分为好几种
数据库本身相关的 ORA-开头
操作系统相关的 OSD-开头
网络相关的的 TNS-开头
具体工具的 IMP-开头的
EXP-开头的
错误号为ORA-00600的,表示是ORACLE的内部错误, 这个错误之所以比一般错误棘手,是因为这个错误是Oracle的预留错误,类似于我们做开发的时候的Unknown Error。是我们不得知的错误,有的错误,可能是Oracle没有做这样的case处理,或者是没有发现这样的错误。所以我们经常有发现00600的错 误就马上反应到是Oracle的bug,也是这个道理了。如果是Bug,我们就只有在metalink里查到相关的bug号和fixed version,有的其实不是bug,是Oracle已经测试出来了,不过是没有时间或者是没有充分的测试,已经fix这个bug了,在正式的 product release的时候,不得不postpone这个问题。在小的版本里已经解决,或者是有一些隐含的参数可以避过,这样的错误,出现的时候会给出一些诊断 信息,我们有时看到的ORA-00600错误后面总是会有一些参数,这些参数就是一些提示信息,就是这样的错误,所以根据这些信息我们可以在 metalink或者是提供给ORACLE SUPPORT人员进行问题追踪。
下面也是来自于Oracle的错误有关的文档里的,
OPI Oracle Program Interface
KK Compilation Layer - Parse SQL, compile PL/SQL
KX Execution Layer - Bind and execute SQL and PL/SQL
K2 Distributed Execution Layer - 2PC handling
NPI Network Program Interface
KZ Security Layer - Validate privs
KQ Query Layer
RPI Recursive Program Interface
KA Access Layer
KD Data Layer
KT Transaction Layer
KC Cache Layer
KS Services Layer
KJ Lock Manager Layer
KG Generic Layer
KV Kernel Variables (eg. x$KVIS and X$KVII)
S or ODS Operating System Dependencies
这里的这些东东,看起来,大家也应该可以感觉的出来是Oracle里的一些模块,这是Oracle kernel里的一些系统模块,当我们出现错误的时候,他们可以告诉我们大致错误来自于哪里,对我们的问题排查也有一定的帮助。
当然,Oracle自己的开发人员都不知道有多少Bug,所以我们也不可能解决所以的问题了,要是这样的话Oracle的Serive部门也没有事情干 了,如果00600这样的错误,你可以尽量先根据其提示查询相关的升级信息和metalink饿信息。 如果别无他方,也自有求助于我们的Oracle服务人员和Service部门了。不过这时候你也不会有什么遗憾留下叻,毕竟你已经全部努力叻。你已经将你 的爱情进行到底叻。
- 如果没有那句“三十而立”,三十岁的男人正可以轻轻松松
- 专业论坛 http://www.inthirties.com
- 技术博客 http://blog.csdn.net/inthirties
- 个人站点 http://blog.inthirties.com
- Oracle Mysql技术论坛| 打造实用的Oracle Mysql技术交流园地