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 【内容摘要】案例描述:
用户报告,服务器启动一段时间以后,无法建立数据库连接
重新启动几分钟以后,再次无法连接