kswapd 进程占用过多资源导致RAC宕机 Posted by eygle at 2010-12-17 【内容摘要】系统每过一定时间就会唤醒kswapd进程,查看内存资源是否紧张,如果不紧张,则继续睡眠,在kswapd中,有2个阀值,pages_hige和 pages_low,当空闲内存页的数量低于pages_low的时候,kswapd进程就会扫描内存并且每次释放出 32个free pages,直到free page的数量到达pages_high.
Oracle数据库恢复: 存储及系统故障导致文件丢失 Posted by eygle at 2010-12-04 【内容摘要】对于数据库不太大的用户,我强烈建议用户在主机上多配备几块硬盘,将备份存放到本地,一是获得性能,二可以加快恢复,保证恢复时间。
最后客户在一块移动硬盘上找到了一份临时分离出去的备份文件,最终靠这个偶然留存的备份挽救了数据库。
数据备份,再多一份也不为过!
Oracle数据库恢复 : 存储故障导致的数据损坏 Posted by eygle at 2010-12-03 【内容摘要】最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量4TB,浪潮的存储设备,控制器损坏导致数据库故障。
故障分析:ORA-00904:invalid column name Posted by eygle at 2010-11-25 【内容摘要】今天在用户现场接触一个8i的数据库,好久未接触,差点就忘了SVRMGRL工具了。
客户数据库在导出时一直存在一个错误,问题出现在导出同义词阶段
Oracle ERP数据库恢复案例一则-备份重于一切 Posted by eygle at 2010-11-18 【内容摘要】近日,帮助某客户处理了一起Oracle ERP数据库恢复案例,恢复过程较为简单,客户拥有完整的全备份以及归档日志,可以执行安全恢复,最后遇到的问题是,中间某个归档日志损坏,Oracle无法识别,客户允许放弃几个小时的数据,这样就顺利的完成了恢复。
Oracle数据库恢复:归档日志损坏案例一则 Posted by eygle at 2010-11-16 【内容摘要】最近在帮助用户恢复数据库时遇到了一则罕见的归档日志损坏案例
Latch free竞争 - 最近的SAP测试项目小记 Posted by eygle at 2010-11-10 【内容摘要】上周在一个SAP的测试项目上折腾了几天,在BASIS方面,以Oracle数据库为后端做了大量的优化和反复测试工作。
在高压力、大并发的情况下,Oracle的种种Bug此起彼伏的跳出来,开始用的10g的版本10.2.0.4进行测试,后来遇到了一个10g中不修正的Bug,只好将数据库升级到Oracle 11gR2上来。
在这个测试中经历了非常多的异常情况,包括对于SAP系统的Debug跟踪等。
案例分析:row cache objects与pin s wait on X Posted by eygle at 2010-10-18 【内容摘要】中午从陆家嘴步行到东方明珠、正大广场,给儿子买了一个大巴车 -- 他最喜欢的,买了两个变形金刚,现在他是最喜欢车、恐龙的阶段,以前的车都是趴在地上跑的,现在变形金刚或许可以给他一个惊喜,开拓一下想象的翅膀,记得我小时候,整天为变形金刚着迷,想来这是一个时代的宠爱,到今天变形金刚的电影也是风靡不绝。
案情分析:数据库的基本情况 Posted by eygle at 2010-10-15 【内容摘要】今天又遇到了一些问题,然后又有了新的发现,从1.3G的sysstemstate dump文件中看到很多明确的线索。
继续说一下数据库的基本状况,原本是10.2.0.3的数据库,然后升级到10.2.0.4,数据库硬解析稍高
案例分析:事情的开始是这样的 Posted by eygle at 2010-10-14 【内容摘要】我喜欢看狄仁杰,不是刘德华版本的,刘德华的版本太年轻了,电视版的梁冠华成为了一个象征,我喜欢狄仁杰的一句话:事情是这样的......
然后镜头开始回放,狄仁杰的推理开始演绎。
DBA的故障诊断与此类似,当遇到疑难杂症时,就需要DBA来进行猜测推理,然后进行揣测验证,最后得出结论。
然而这个过程绝不简单。
Toad 引发的ORA-00600 17281错误 Posted by eygle at 2010-07-30 【内容摘要】Ora-00600 17281的官方解释是:Error closing all cursors for an instantiation
Oracle数据库恢复:解决ORA-600 2831错误 Posted by eygle at 2010-07-28 【内容摘要】一个数据库,不知怎样就陷入了ORA-600 2831 和 kcfofl_01错误中,表空间无法删除,频繁出现如下错误
ASM Diskgroup空间不足导致索引创建失败 Posted by eygle at 2010-07-09 【内容摘要】在这次失误中学到的教训是:要时刻牢记从不同角度看问题,要从多角度进行审核与确认。
opened cursors current 超高的数据库Bug Posted by eygle at 2010-05-12 【内容摘要】前几天在某客户现场,遇到一个opened cursors current超高的问题,当时检查发现,在某个时段,这一指标高的超乎想象(高达4295024586)
Oracle等待事件:inactive session是什么? Posted by eygle at 2010-04-21 【内容摘要】最近在一个客户的AWR报告中,发现inactive session这个等待事件出现在最前列,这是首次看到这个等待。
Java的DatabaseMetaData getPrimaryKeys调用 Posted by eygle at 2010-03-26 【内容摘要】当JAVA程序中通过DatabaseMetaData#getPrimaryKeys()调用,将会执行这个SQL,如果不及时关闭,则还可能产生严重的内存占用。
那么怎样规避这个调用,考察这个调用是否必要显得非常重要,这个SQL导致的逻辑度太过显著。
对Top SQL保持敏感是DBA的重要守则。
ORA-00600 3020 错误案例一则 Posted by eygle at 2010-03-02 【内容摘要】出现这个错误后,恢复中断,无法继续,3020错误在Metalink上的解释,主要原因是在恢复时发现Redo里面记录的信息和被恢复的数据块信息不一致,导致恢复无法继续。比如Update Some record from 3 to 2,结果发现该记录根本不是3,恢复无法继续。
ORA-00600 4000 及 4194 错误小记 Posted by eygle at 2010-02-04 【内容摘要】在初期恢复时出现了ORA-600 4000号错误,这个错误以前写过几个案例,一般没有好的办法,只能通过bbed修复。
不过4000号错误不一定非要用bbed修改坏块,有时候经过反复几次重新启动数据库,就可以暂时规避,尝试将数据导出。
DBA警示录:补丁升级需谨慎 Posted by eygle at 2010-02-02 【内容摘要】我们在很多工作中,要求都非常严格,一般都要进行工作步骤列表,制定可执行的回退方案等,有时候大家也觉得繁琐,但是繁琐的结果是可控,在穷举了可能的异常之后,我们才能胸有成竹的进行变更。
ORA-07445 cold_qerfxArrayMaxSize 的Bug Posted by eygle at 2010-01-26 【内容摘要】经过Metalink文档:386727.1 确认,这是一个Bug,仅见于HP-UX Itanium环境,在10.2.0.3中修正,一般不会带来严重影响。
SQL 共享之 ROLL_INVALID_MISMATCH 含义 Posted by eygle at 2010-01-18 【内容摘要】在10g中,缺省的使用AUTO_INVALIDATE选项时,分析对象之后,原有SQL并不会立即失效,失效时间和SQL执行有关,同时受到另外一个参数的影响:_optimizer_invalidation_period ,这个参数的缺省值是18000s(以下是Oracle 10gR2的缺省设置),当超过这个时间,SQL会重新硬解析,生成一个新的SQL,并标记与之前Cursor不能共享的原因为 ROLL_INVALID_MISMATCH
IBM小型机的内存deconfigured - 数据库之风险 Posted by eygle at 2010-01-17 【内容摘要】在《Oracle DBA手记》的第一章里,我曾经介绍过一个案例,客户的IBM小型机因为内存的故障导致了deconfigured,内存被系统卸载,导致了故障。
这个系统当时的图片,可以看到有两条1G的内存状态是System deconfigured,这就意味着这两条内存因为硬件故障被主机驱逐,属于较为严重的硬件故障,如果运气不好可能会导致数据库的崩溃会块损坏
ORA-600 kcbzpbuf_1 坏块的恢复案例一则 Posted by eygle at 2010-01-13 【内容摘要】明确了所有的细节之后,处理起来就有底了。在现场遇到了blue_stone同学,这是意外的收获,在越来越多的场合可以遇到ITPUB里熟悉的ID,这是网络生活给我们的馈赠与惊喜。blue_stone准备好了DUL,准备在最坏的情况下进行数据抽取。而我现在越来越少使用DUL、AUL、ODUL了,因为一遇到这样的恢复就会抵触,特别是在失去SYSTEM之后的恢复。而事实上,很多情况下都还是有办法可想的。
SAP系统中的Bug 5376783 dbms_space高物理读 Posted by eygle at 2009-12-11 【内容摘要】这个Bug在DBMS_SPACE.OBJECT_GROWTH_TREND进行空间分析时被触发,根本原因在于内部算法在执行空间检查时,耗费了大量的评估IO成本,导致了大量的IO资源使用
工作日志:10 亿记录表的几个索引创建时间 Posted by eygle at 2009-10-26 【内容摘要】记录一下最近完成的一个大表数据整理,在近10亿记录的表上创建了3个索引,使用NOLOGGING,COMPRESS选项。
工作记录: 2亿记录的导入及索引创建 Posted by eygle at 2009-09-29 【内容摘要】昨天做了这样一个工作,将一个2.2亿记录的分区导入一台 2 CPU (2 cores per cpu)的主机:
model name : Intel(R) Xeon(R) CPU 5130 @ 2.00GHz
这个过程大约用了15个小时的时间,非常漫长
工作日志:2亿记录的exp导出时间记录 Posted by eygle at 2009-09-26 【内容摘要】一个短信表的分区,使用direct模式导出
Exp 导出与 Expdp 的速度与时间对比 Posted by eygle at 2009-09-24 【内容摘要】虽然expdp是Oracle 10g推荐的逻辑导出方式,但是仍然有很多人并不习惯这一方式,这与expdp的使用复杂度有关,我觉得expdp的directory方式应当简化,由参数行定义就好了,后台由数据库自动去维护。
大表海量数据的转移及索引创建的记录 Posted by eygle at 2009-09-23 【内容摘要】为了减少对于生产环境的影响,我们将大表的数据分配迁移到测试机上进行处理,然后在转移回生产库。
换一种思路 - 通过导出导入进行数据整理 Posted by eygle at 2009-09-18 【内容摘要】虽然通过不断的优化,在前面客户的数据表里将数据鉴别出来仍然是不现实的。
20亿条记录,过滤用户退订部分,据估算,统计一次要46天左右,删除可能要耗时在200天左右,单块读平均每次等待时间达到8ms。
CBO的魔术 - 一个错误的索引选择会带来的后果 Posted by eygle at 2009-09-16 【内容摘要】说CBO是Oracle最为博大精深的技术一点也不为过,只是这技术越复杂越深奥出错的机会就越多了。
使用ora_rowscn识别误操作数据时间点 Posted by eygle at 2009-09-08 【内容摘要】如果没有明显的字段可以识别,那么ora_rowscn可以作为一个参考,以下这个查询就可以通过SCN和数据识别,将后来增加的记录找出来
恩墨科技为某企业SAP数据库提供紧急援助服务 Posted by eygle at 2009-09-07 【内容摘要】最近已经遇到了多次SAP备份失败导致的故障,有的甚至要求从数月之前的归档开始恢复,导致客户的业务遭受影响和损失。
并行查询的 PX Deq: reap credit 等待 Posted by eygle at 2009-09-02 【内容摘要】所以我们应该获得的经验是:在RAC环境中,应当避免频繁查询GV$全局视图。而Metalink上可以找到几则关于访问GV$SESSION视图的Bug。
使用errorstack跟踪ORA-01438错误 Posted by eygle at 2009-07-13 【内容摘要】跟踪文件中缺省的不会记录具体的SQL、绑定变量等信息,我们可以通过ErrorStack进行后台跟踪,获得更详细的信息,执行如下SQL:alter system set events='1438 trace name errorstack forever,level 10';
断电故障导致 ASM DiskGroup 故障及恢复案例 Posted by eygle at 2009-07-09 【内容摘要】ASM在RAC环境中的使用已经极其广泛,但是往往由于对ASM的认识不够,很多时候在处理故障时会陷入谜团,前一段在客户环境中就遇到了一个ASM的棘手问题。
10g临时表空间组导致递归SQL高度解析案例 Posted by eygle at 2009-06-12 【内容摘要】我们在使用Oracle的一些新特性时,一定要注意观察,看是否会引发一些新的问题,最近发现的几个Bug都和Oracle的一些新特性相关。
恩墨科技为中国国际电子商务中心提供服务 Posted by eygle at 2009-06-11 【内容摘要】熟悉的表名,熟悉的系统,而当初帮客户诊断系统是大约在2003年了,转眼6年过去,竟然又转回头,再次遇到这个系统。
见过这么高并发( logons current)的数据库么? Posted by eygle at 2009-05-11 【内容摘要】今天在客户这里,在9206 RAC的集群环境中,偶然发现数据库的Logons Current指标超高。
高得超乎寻常,可以让我们直接判断为Bug,看看以下数据。
ORA-02097 标准版里Resource Manager的Bug Posted by eygle at 2009-05-07 【内容摘要】这也是一个Bug,在10gR1里,Bug 4343398,这个Bug是为了修复另外一个Bug引入的,虽然resource manager在标准版不可用,代码里仍然执行了不必要的检查,并且触发了错误,还好也是无伤大雅的。
Oracle的to_date转换可能导致的错误SQL结果 Posted by eygle at 2009-05-05 【内容摘要】Metalink上的Bug 4156916 - Dump / wrong results from TO_DATE without a full date format mask 可能与此有关。
使用DATAPUMP导致ORA-00600 17020错误 Posted by eygle at 2009-04-09 【内容摘要】Oracle 10g 引入的数据泵(Datapump)带来了一系列的好处,比如Server端执行,不惧怕网络终端,任务可以中断和重启动,在数据库端通过队列来调度执行等等。
但是随着这些好处也引来一系列的问题,比如客户数据库又遇到如下问题:ORA-00600 17020错误。
这是由于导出时队列错误导致的(Oracle 10gr2支持自动的队列调度,但是据我观察,是存在很多问题的),Metalink的Bug 4334700 与此有关,Unix、Linux平台在Oracle 11g中得到修正
Oracle如何维护SMON_SCN_TIME表? Posted by eygle at 2009-04-09 【内容摘要】这是由于数据库内部更新smon_scn_time出现的错误,这个字典表用于维护Oracle至关重要的SCN与时间的对应关系,Flashback等重要特性也以来于此。
ORA-01114、ORA-27067错误案例一则 Posted by eygle at 2009-04-08 【内容摘要】这个问题的CTAS SQL有600多个Case When判断,SQL文本有47K,强烈用户建议改写SQL。
遭遇 ORA-7445 kkofkrproratestat 错误 Posted by eygle at 2009-03-24 【内容摘要】确定性是这个问题导致,但是在实际环境中和优化器模式无关,和一个SQL的低效、全表访问、引发大量的Buffer热点竞争有关,由这个原因导致。
ORA-00600 17182 错误案例一则 Posted by eygle at 2009-02-12 【内容摘要】Oracle检测到内存的错误,可能是因为内存块的覆盖,导致数据损坏或丢失。这个错误可能在进程heap或者SGA中出现,没有潜在的数据损失。
Oracle跨版本导出EXP-00003错误的解决 Posted by eygle at 2009-02-10 【内容摘要】"EXP-00003: no storage definition found for segment ....."错误,和Oracle的一个小Bug相关,可以通过修改一个导出相关的View来解决。
Logical Standby ORA-01425错误处理一则 Posted by eygle at 2009-02-08 【内容摘要】今天客户的Logical Standby数据库出现如下错误,这个错误出现在使用skip跳过某个表的DML事务之后。
Oracle10gR2中的Mutex竞争的案例 Posted by eygle at 2008-10-14 【内容摘要】Mutex是Oracle在Oracle10g中引入的串行机制,逐渐会用来替代一些存在性能问题的Latch。
和Latch相比,一个Mutex Get大约仅需要30~35个指令,而Latch Get则需要大约150~200个指令,同时在大小上,每个Mutex仅占用大约16 Bytes空间,而一个latch在10gR2中要占用大约112 Bytes空间
Solaris安装Oracle10g之 libCstd.so.1 问题解决 Posted by eygle at 2008-09-03 【内容摘要】在Solaris上安装Oracle10g时,遇到了如下一个错误:
Exception String: Error in invoking target 'all_no_orcl ihsodbc' of
makefile '/data1/oracle/product/rdbms/lib/ins_rdbms.mk'.
歌华经历的数据库"攻击" Posted by eygle at 2008-07-22 【内容摘要】我和客户开玩笑,这就是数据库攻击啊。
也许在客户端按一个F5,最终转嫁到数据库上的负荷就成为了灾难。
奥运期间,安保第一,要加强防范。数据库也是如此!
ORA-07445 数据库也会旧病复发 Posted by eygle at 2008-07-16 【内容摘要】上一次我在客户现场待了三天,解决问题之后稳定运行了9个月,也算是不错的业绩了,可是客户总是在问题解决之后就觉得不再需要技术人员了。这是做技术的悲哀。
Oracle中的不可见字符处理案例一则 Posted by eygle at 2008-06-25 【内容摘要】那么这个0代表什么字符呢?在ASCII编码表里我们可以看到这对应了一个不可见字符,这是数据入库时的异常导致的
Oracle诊断案例-Job任务停止执行 Posted by eygle at 2004-11-26 【内容摘要】昨天接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。.....
使用SQL_TRACE进行数据库诊断 Posted by eygle at 2004-10-31 【内容摘要】SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。
本文就SQL_TRACE的使用作简单探讨,并通过具体案例对sql_trace的使用进行说明.
如何捕获问题SQL解决过度CPU消耗问题 Posted by eygle at 2004-10-24 【内容摘要】Oracle诊断案例----如何捕获问题SQL解决过度CPU消耗问题
--使用vmstat,top等辅助解决Oracle数据库性能问题
如何诊断和解决CPU高度消耗(100%)的数据库问题 Posted by eygle at 2004-10-24 【内容摘要】很多时候我们的服务器可能会经历CPU消耗100%的性能问题. 排除系统的异常,这类问题通常都是因为系统中存在性能低下甚至存在错误的SQL语句, 消耗了大量的CPU所致...
Oracle诊断案例-SGA与Swap之一 Posted by eygle at 2004-10-07 【内容摘要】案例描述:
用户报告,服务器启动一段时间以后,无法建立数据库连接
重新启动几分钟以后,再次无法连接