在初期恢复时出现了ORA-600 4000号错误,这个错误以前写过几个案例,一般没有好的办法,只能通过bbed修复。 不过4000号错误不一定非要用bbed修改坏块,有时候经过反复几次重新启动数据库,就可以暂时规避,尝试将数据导出。
RMAN提供VALIDATE的命令,可以用于校验备份集的有效性,常用命令如下
明确了所有的细节之后,处理起来就有底了。在现场遇到了blue_stone同学,这是意外的收获,在越来越多的场合可以遇到ITPUB里熟悉的ID,这是网络生活给我们的馈赠与惊喜。blue_stone准备好了DUL,准备在最坏的情况下进行数据抽取。而我现在越来越少使用DUL、AUL、ODUL了,因为一遇到这样的恢复就会抵触,特别是在失去SYSTEM之后的恢复。而事实上,很多情况下都还是有办法可想的。
以前分析Oracle的跟踪文件,主要靠手工阅读,最近发现ass109.awk文件是个不错的工具,在网上找到了一个,附在这里: ass109.rar
虽然expdp是Oracle 10g推荐的逻辑导出方式,但是仍然有很多人并不习惯这一方式,这与expdp的使用复杂度有关,我觉得expdp的directory方式应当简化,由参数行定义就好了,后台由数据库自动去维护。
昨晚,为一个客户的数据库做了一次临时性的备份留存,数据库的整体容量大约在1.5T左右
如果没有明显的字段可以识别,那么ora_rowscn可以作为一个参考,以下这个查询就可以通过SCN和数据识别,将后来增加的记录找出来
最近已经遇到了多次SAP备份失败导致的故障,有的甚至要求从数月之前的归档开始恢复,导致客户的业务遭受影响和损失。
Oracle在Bug 3736736修正中澄清,修正后,如果有效备份中不包含排除表空间,则备份将不保留用于恢复排除表空间的归档。
根据最近几次的恢复经验看,BBED是恢复一些棘手故障的利器,几乎无往不胜,现在还存在的问题是Fractured block的修复问题。 然后备份总是王道,做好备份,万事无忧;没有备份,心惊胆跳!
Oracle的Latch管理,对应的内核代码层位KSL层,ksl.c代码层
ASM在RAC环境中的使用已经极其广泛,但是往往由于对ASM的认识不够,很多时候在处理故障时会陷入谜团,前一段在客户环境中就遇到了一个ASM的棘手问题。
由于数据块出现了损坏,其中的数据不可避免的遭到了损失,我们可以通过BBED等工具修复数据块,虽然可以骗过数据库,强制启动数据库,但是无法骗过自己,其中的数据难免遭到损失。
在DataGuard环境中,由于备库的路径、存储、空间等问题,可能会导致文件创建失败的问题。
这是因为版本不一致导致的,在遇到包含LOB对象的表时触发,这是因为10.2.0.4中,管理LOB对象发生了变化,在字典中引入了一些新的字段,如'IFREEPOOL'. 10.2.0.3中不包含相应字段,在EXP时就出现了错误。
虽然在Mount状态,数据库并不会主动校验文件的存在性,但是会被前台进程触发,去判断文件的存在性,从而报出出错信息
这中情况通常是因为导出文件异常,当导如最后发现异常时,会回退所有操作。 回退在数据库处理是正常的,因为导出文件异常可能导致局部数据丢失,数据的一致性和完整性是无法确保的。 可是在用户环境下,数据是为了导入测试环境进行测试,而且导入据说花费了4个小时,漫长等待得到的是回退的答案,这在用户看来是不可接受的。
这里我们可以用另外一个命令:
LIST BACKUP OF ARCHIVELOG FROM SEQUENCE seq_no [THREAD thread_no];
选择一个合适的SEQuence号,接下来这个命令会将备份过的日志按照序号展现出来,非常便于观察。
对于RAC环境不同的Thread可以加上不同的Thread号。
今天做了一整天的数据导入工作,有一点点收获就是,清晰的看到了导入时临时对象的生成。 这是一个Oracle9iR2的环境,在漫长的导入过程中,系统中可以看到大量这样的临时对象,在对象创建完成之后,对象的临时属性被更改为固定.
RMAN结合Read Only、Exclude的备份策略制定,特定条件下非常有用的备份手段之一。
这个等待也就是说明数据库存在读的竞争,所以该等待事件通常和db file sequential read或db file scattered read 同时出现。
ACK (ACKnowledgment) 的意思是:TCP首部中的确认标志,对已接受到的TCP报文进行确认。Acknowledge Character,就是确认字符。在数字通信协议中,如果接受方成功的接收到数据,那么会回复一个ACK信号。通常ACK信号有自己固定的格式,长度大小,由接受方回复给发送方。其格式取决于采取的网络协议。当发送方接收到ACK信号时,就可以发送下一个数据。如果发送方没有收到信号,那么发送方可能会重发当前数据包,也可能停止传送数据。具体情况取决于所采用的网络协议。ACK信号通常是一个ASCII字符,不同的协议中ACK信号都不一样。
在处理Oracle Database 11g中,回滚段的命名规则已经和以前不同。
这个案例所用到的所有知识在我的网站上全都有详细介绍,不过要能把所有知识综合运用才能解决这次的故障,这真是圣诞节对我的一大考验!