EXPDP:使用ESTIMATE_ONLY参数评估ESTIMATE性能 Posted by eygle at 2010-12-30 【内容摘要】在使用Expdp进行导出时,Expdp需要计算导出数据大小容量,Oracle可以通过两种方式进行容量估算,一种是通过数据块数量、一种是通过统计信息中记录的内容估算。两者在不同版本中,可能有巨大的性能差异,尤其是在Oracle 10g的早期版本中,一些Bug严重影响了性能。
Oracle数据库恢复: 存储及系统故障导致文件丢失 Posted by eygle at 2010-12-04 【内容摘要】对于数据库不太大的用户,我强烈建议用户在主机上多配备几块硬盘,将备份存放到本地,一是获得性能,二可以加快恢复,保证恢复时间。
最后客户在一块移动硬盘上找到了一份临时分离出去的备份文件,最终靠这个偶然留存的备份挽救了数据库。
数据备份,再多一份也不为过!
Oracle数据库恢复 : 存储故障导致的数据损坏 Posted by eygle at 2010-12-03 【内容摘要】最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量4TB,浪潮的存储设备,控制器损坏导致数据库故障。
Oracle数据库恢复:归档日志损坏案例一则 Posted by eygle at 2010-11-16 【内容摘要】最近在帮助用户恢复数据库时遇到了一则罕见的归档日志损坏案例
帮助用户恢复数据块损坏的海量数据库 Posted by eygle at 2010-10-23 【内容摘要】上周在上海出差时,有用户找到我们,请求帮住恢复一个因为硬盘损坏导致的数据库故障,数据库是Oracle 10g的RAC集群,存储使用的是ASM管理。
主要问题是SYSTEM表空间存在大量的坏块,DBV检查,很多关键数据块出现问题,收录一下DBV的检测输出,看一看RAID硬盘损坏类故障会导致多少故障吧
Oracle数据库恢复:解决ORA-600 2831错误 Posted by eygle at 2010-07-28 【内容摘要】一个数据库,不知怎样就陷入了ORA-600 2831 和 kcfofl_01错误中,表空间无法删除,频繁出现如下错误
Oracle数据恢复:强制Resetlogs的可能数据损失 Posted by eygle at 2010-06-30 【内容摘要】很多时候,在强制打开数据库之后,比如使用了_allow_resetlogs_corruption等隐含参数,可能会导致数据库丧失一致性,损坏部分数据,如果损失的是部分DML数据,则数据库可能仍然可以运行良好,但是如果损失的是元数据,则可能数据库会出现一些其他的异常,当时这些异常也仍然是可以修复的,只是成本或代价会比较高昂。
最近的一则案例中,恢复数据之后,用户动态创建的某些临时表出现问题,无法成功导出,这就是强制Resetlogs的后果之一。
Oracle数据恢复:格式化、ASM及字典损坏案例三则 Posted by eygle at 2010-06-28 【内容摘要】客户原系统使用的是ASM存储管理,两块硬盘组成的大约2T的存储设备,这样在恢复时,我们必须通过两块硬盘来进行数据重组,ASM缺省的AU大小是 1M,在两块磁盘之间进行均衡(Balance),存储均衡是Oracle的一项性能提升技术,然而在故障时,你会发现这一技术让人倍感折磨,通常使用文件系统,一个文件会在单个系统上存储,而ASM是分散的,这就导致哪怕是最早创建的SYSTEM表空间,也必然在两个磁盘之间跨越交替存储。
恩墨科技成功帮助某金融用户恢复ASM故障 Posted by eygle at 2010-06-17 【内容摘要】学会如何规避风险往往比解决问题更重要,因为数据库的风险太多且无处不在。
ORA-00600 kcratr1_lostwrt之解决与原理分析 Posted by eygle at 2010-05-10 【内容摘要】客户的一个数据库因为断电遇到了ORA-600 kcratr1_lostwrt错误,数据库无法启动。
错误信息类似:
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kcratr1_lostwrt], [], [], [], [], [], [], []
Current SQL statement for this session:
alter database open
这个错误不难解决,但是其具体成因有点意思
讨论: 无备份的数据库如何应对故障? Posted by eygle at 2010-03-10 【内容摘要】近期,在为一个客户的数据库制定紧急预案,这个数据库数据量大约在1.4T左右。由于客户没有额外的存储资源用于备份,所以数据库目前存在了很大的安全风险。
虽然存储级别有一定的安全防范,但是如果遇到数据损失、坏块、文件损坏等问题,将无法应对。
kcbgtcr 错误小记 Posted by eygle at 2010-03-04 【内容摘要】kcbgtcr 是Oracle数据库最重要的函数之一,其含义为:Kernal Cache Buffer GeT Cosistents Read,也就是数据库的一致性读操作,后面的代码有很多种,代表在不同的层面上出现问题。
Metalink 的 Note 415773.1 - Diagnostics and Solutions for kcbgtcr() Related Internal Errors记录了与此相关的很多问题。
ORA-00600 3020 错误案例一则 Posted by eygle at 2010-03-02 【内容摘要】出现这个错误后,恢复中断,无法继续,3020错误在Metalink上的解释,主要原因是在恢复时发现Redo里面记录的信息和被恢复的数据块信息不一致,导致恢复无法继续。比如Update Some record from 3 to 2,结果发现该记录根本不是3,恢复无法继续。
SMON: recover undo segment与事务恢复 Posted by eygle at 2010-02-23 【内容摘要】在一些系统异常之后,尤其是一场Down机之后,数据库里可能会看到类似如下的提示信息:
SMON: about to recover undo segment 23
SMON: mark undo segment 23 as available
这些信息意味着,数据库需要这些回滚段的信息去恢复一些未完成事务,多数情况下,这些事务都能够得到恢复,但是如果不幸,在异常宕机时丢失了部分 Write操作,则可能无法完成恢复,出现灾难。
Cache-low rba 与 on-disk rba - 恢复笔记 Posted by eygle at 2010-02-12 【内容摘要】我们都知道在恢复过程中,Cache-Low RBA和On-Disk RBA主导了恢复过程,Oracle的恢复从上一次成功的写出开始,也就是以Cache-Low RBA为起点,恢复至日志的最后成功记录,也就是以On-Disk RBA为终点。
ORA-00600 4000 及 4194 错误小记 Posted by eygle at 2010-02-04 【内容摘要】在初期恢复时出现了ORA-600 4000号错误,这个错误以前写过几个案例,一般没有好的办法,只能通过bbed修复。
不过4000号错误不一定非要用bbed修改坏块,有时候经过反复几次重新启动数据库,就可以暂时规避,尝试将数据导出。
使用RMAN验证备份的有效性 Posted by eygle at 2010-01-26 【内容摘要】RMAN提供VALIDATE的命令,可以用于校验备份集的有效性,常用命令如下
ORA-600 kcbzpbuf_1 坏块的恢复案例一则 Posted by eygle at 2010-01-13 【内容摘要】明确了所有的细节之后,处理起来就有底了。在现场遇到了blue_stone同学,这是意外的收获,在越来越多的场合可以遇到ITPUB里熟悉的ID,这是网络生活给我们的馈赠与惊喜。blue_stone准备好了DUL,准备在最坏的情况下进行数据抽取。而我现在越来越少使用DUL、AUL、ODUL了,因为一遇到这样的恢复就会抵触,特别是在失去SYSTEM之后的恢复。而事实上,很多情况下都还是有办法可想的。
Exp 导出与 Expdp 的速度与时间对比 Posted by eygle at 2009-09-24 【内容摘要】虽然expdp是Oracle 10g推荐的逻辑导出方式,但是仍然有很多人并不习惯这一方式,这与expdp的使用复杂度有关,我觉得expdp的directory方式应当简化,由参数行定义就好了,后台由数据库自动去维护。
一个TB级数据库的备份时间及备份记录 Posted by eygle at 2009-09-12 【内容摘要】昨晚,为一个客户的数据库做了一次临时性的备份留存,数据库的整体容量大约在1.5T左右
使用ora_rowscn识别误操作数据时间点 Posted by eygle at 2009-09-08 【内容摘要】如果没有明显的字段可以识别,那么ora_rowscn可以作为一个参考,以下这个查询就可以通过SCN和数据识别,将后来增加的记录找出来
恩墨科技为某企业SAP数据库提供紧急援助服务 Posted by eygle at 2009-09-07 【内容摘要】最近已经遇到了多次SAP备份失败导致的故障,有的甚至要求从数月之前的归档开始恢复,导致客户的业务遭受影响和损失。
RMAN排除备份 Exclude带来的Obsolete影响 Posted by eygle at 2009-09-01 【内容摘要】Oracle在Bug 3736736修正中澄清,修正后,如果有效备份中不包含排除表空间,则备份将不保留用于恢复排除表空间的归档。
恩墨科技为济南某大学提供数据恢复服务 Posted by eygle at 2009-08-23 【内容摘要】根据最近几次的恢复经验看,BBED是恢复一些棘手故障的利器,几乎无往不胜,现在还存在的问题是Fractured block的修复问题。
然后备份总是王道,做好备份,万事无忧;没有备份,心惊胆跳!
断电故障导致 ASM DiskGroup 故障及恢复案例 Posted by eygle at 2009-07-09 【内容摘要】ASM在RAC环境中的使用已经极其广泛,但是往往由于对ASM的认识不够,很多时候在处理故障时会陷入谜团,前一段在客户环境中就遇到了一个ASM的棘手问题。
恩墨科技为某企业提供紧急数据恢复服务 Posted by eygle at 2009-07-07 【内容摘要】由于数据块出现了损坏,其中的数据不可避免的遭到了损失,我们可以通过BBED等工具修复数据块,虽然可以骗过数据库,强制启动数据库,但是无法骗过自己,其中的数据难免遭到损失。
Export ORA-00904: "Ifreepool": Invalid Identifier Posted by eygle at 2009-06-08 【内容摘要】这是因为版本不一致导致的,在遇到包含LOB对象的表时触发,这是因为10.2.0.4中,管理LOB对象发生了变化,在字典中引入了一些新的字段,如'IFREEPOOL'.
10.2.0.3中不包含相应字段,在EXP时就出现了错误。
ORA-01157 - Mount状态下的文件存在性校验 Posted by eygle at 2009-06-05 【内容摘要】虽然在Mount状态,数据库并不会主动校验文件的存在性,但是会被前台进程触发,去判断文件的存在性,从而报出出错信息
IMP-00009 abnormal end of export file Posted by eygle at 2009-05-14 【内容摘要】这中情况通常是因为导出文件异常,当导如最后发现异常时,会回退所有操作。
回退在数据库处理是正常的,因为导出文件异常可能导致局部数据丢失,数据的一致性和完整性是无法确保的。
可是在用户环境下,数据是为了导入测试环境进行测试,而且导入据说花费了4个小时,漫长等待得到的是回退的答案,这在用户看来是不可接受的。
如何快速找到备份过最近、最大序号的归档日志 Posted by eygle at 2009-04-23 【内容摘要】这里我们可以用另外一个命令: LIST BACKUP OF ARCHIVELOG FROM SEQUENCE seq_no [THREAD thread_no];
选择一个合适的SEQuence号,接下来这个命令会将备份过的日志按照序号展现出来,非常便于观察。
对于RAC环境不同的Thread可以加上不同的Thread号。
RMAN结合Read Only、Exclude的备份策略 Posted by eygle at 2009-04-22 【内容摘要】RMAN结合Read Only、Exclude的备份策略制定,特定条件下非常有用的备份手段之一。
ORA-00600 [2662]错误解决过程 Posted by eygle at 2005-10-19 【内容摘要】ORA-600 [2662] "Block SCN is ahead of Current SCN",说明当前数据库的数据块的SCN早于当前的SCN,主要是和存储在UGA变量中的dependent SCN进行比较,如果当前的SCN小于它,数据库就会产生这个ORA-600 [2662]的错误了。这个错误一共有五个参数,分别代表不同的含义
数据文件SCN的一致性问题 Posted by eygle at 2005-08-06 【内容摘要】回答几个留言板上的问题
如何从备份集中恢复归档日志 Posted by eygle at 2005-07-03 【内容摘要】这一类的操作是因为丢失了所有的控制文件,而RMAN的备份信息又存储在控制文件之中。
所以只能使用DMBS_BACKUP_RESTORE从备份集中恢复数据文件、归档日志等进行恢复。
使用Oracle9i的新特性Flashback Query恢复误删除数据 Posted by eygle at 2005-06-22 【内容摘要】下午接到研发工程师的电话,说误删除了部分重要数据,并且已经提交,需要恢复。
登陆到数据库上查看,由于是Oracle9iR2,首先尝试使用flashback query闪回数据。
使用Oracle9i的blockrecover新特性修复数据库中的坏块 Posted by eygle at 2005-06-12 【内容摘要】1.备份数据库 D:\>rman target / 恢复管理器: 版本9.2.0.6.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. 连接到目标数据库: EYGLE (DBID=1365961916)...
使用dbv和RMAN检查数据文件中的坏块 Posted by eygle at 2005-06-11 【内容摘要】1.使用dbv检查 D:\oradata\eygle>dbv file=EYGLE.DBF blocksize=8192 DBVERIFY: Release 10.1.0.4.0 - Production on 星期六 6月 11 17:36:37 2005 Copyright (c) 1982, 2004, Oracle....
对即将上线的Oracle10g ASM生产数据库进行备份恢复测试 Posted by eygle at 2005-04-13 【内容摘要】新的10g ASM生产数据库即将上线,以下是上线前做的简单的备份恢复测试: 1.首先执行备份 $ rman target / @full_bak.sql Recovery Manager: Release 10.1.0.3.0 - 64bit Production Copyright (c) 1995, 2004, Oracle....
Oracle10g已经废弃log_archive_start参数 Posted by eygle at 2005-04-13 【内容摘要】在Oracle10g中,log_archive_start参数已经被废弃,只要启动数据库的归档模式,Oracle就会启用自动归档,从而避免了10g以前由于用户疏忽所带来的一系列问题
Oracle10g新增的用以简化用户管理备份的命令 Posted by eygle at 2005-04-06 【内容摘要】Oracle10g新增命令用以简化用户管理的备份,可以通过 alter database begin/end backup来进行数据库备份模式的切换。 $ sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.2.0 - Production on Wed Apr 6 22:31:33...
使用Oracle10g新特性,跨越Resetlogs时间点进行恢复 Posted by eygle at 2005-04-05 【内容摘要】在Oracle10g以前,在进行了不完全恢复使用resetlogs选项打开数据库以后,Oracle建议你要立即进行全备份。
因为日志序号会被置位,以防止后续日志被应用。resetlogs之前的备份将不能用于进行跨域resetlogs时间点的恢复。
如何把数据导入不同的表空间? Posted by eygle at 2005-04-05 【内容摘要】很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。
使用Rman进行不完全恢复 Posted by eygle at 2005-04-05 【内容摘要】1.模拟数据损失 $ sqlplus "/ as sysdba" SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 5 09:26:04 2005 Copyright (c) 1982,...
使用RMAN进行基于表空间的恢复 Posted by eygle at 2005-03-30 【内容摘要】示范案例,仅供参考: 1.察看备份文件 $ rman target / Recovery Manager: Release 10.1.0.2.0 - 64bit Production Copyright (c) 1995, 2004, Oracle. All rights...
如何从自动备份中恢复控制文件和SPFILE文件 Posted by eygle at 2005-03-30 【内容摘要】启用了自动控制文件备份功能之后,在数据库发生重要改变或备份完成之后,会自动进行控制文件备份,同时备份SPFILE文件
通过Oracle10g的flashback transaction query新特性进行事务撤销 Posted by eygle at 2005-03-30 【内容摘要】具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.
这就是flashback transaction query。flashback transaction query可以从FLASHBACK_TRANSACTION_QUERY中获得指定事务的历史信息以及Undo_SQL,通过这个UNDO_SQL,我们就可以恢复特定的事务。
Oracle10g的Flashback version Query Posted by eygle at 2005-03-30 【内容摘要】Oracle10g通过Flashback Version Query提供查看对数据库事务级改变的方法. 当闪回事务处理查询与闪回版本查询同时使用时,我们可以轻易地从用户或者应用程序错误恢复。 以下是闪回版本查询的示例: 1.执行DML操作 EYGLE on 30-MAR-05 >create table t as select username,user_id from dba_users; Table created. EYGLE...
使用Oracle10g的Flashback Query进行数据闪回 Posted by eygle at 2005-03-30 【内容摘要】Oracle10g对于闪回查询进行了增强,支持更简单的SQL操作,允许对误删除、误更新等DML操作进行闪回。 看一下以下测试: 1.原表记录 $ sqlplus eygle/eygle SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005 Copyright (c) 1982,...
使用Oracle10g提供的flashback drop 新特性 Posted by eygle at 2005-03-29 【内容摘要】为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。
而在以前的版本中,除了不完全恢复,通常没有一个好的解决办法。
Oracle 10g的flashback drop功能,允许你从当前数据库中恢复一个被drop了的对象,在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。
如何启用Oracle10g闪回数据库特性 Posted by eygle at 2005-03-29 【内容摘要】1.确认当前模式 SYS AS SYSDBA on 29-MAR-05 >select flashback_on from v$database; FLA --- NO 2.检查/修改恢复区设置 SYS AS SYSDBA on 29-MAR-05 >show...
启用Block Change Tracking-10g新特性 Posted by eygle at 2005-03-29 【内容摘要】Block chage tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
使用Oracle10g新特性简化数据库镜像COPY Posted by eygle at 2005-03-28 【内容摘要】镜像拷贝是单个数据文件、归档日志或者控制文件的额外拷贝,不以RMAN的格式存储。镜像拷贝的文件和执行操作系统级拷贝的文件一样,RMAN进行重建或者恢复操作时,可以使用镜像拷贝,当然手工操作也可以使用。
重建控制文件恢复丢失表空间一例 Posted by eygle at 2005-03-25 【内容摘要】以下案例用以说明重建控制文件的恢复机制。 案例假设在备份之后,新建表空间,然后crash丢失所有控制文件和数据文件。 拥有所有日志及归档文件进行恢复。 1.数据库状态 [oracle@standby oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Fri Mar 25 13:56:54...
使用RMAN的备份及恢复一例-丢失所有控制文件 Posted by eygle at 2005-03-09 【内容摘要】1.数据库基本信息 [oracle@standby oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Wed Mar 9 09:55:14 2005 Copyright (c)...
使用Oracle9i的自动控制文件备份功能 Posted by eygle at 2005-03-09 【内容摘要】在启用了自动备份以后,在数据库发生文件变化或备份等任务时,数据库会自动备份控制文件。
如果丢失了所有的控制文件及数据文件,我们可以尝试从自动备份中恢复控制文件及spfile文件。
如何重建UNDO TABLESPACE Posted by eygle at 2005-03-04 【内容摘要】MSN上有朋友问到,在迁移(同平台)的时候由于空间问题,他不打算要现在的UNDO文件,想要重建一个。他打算使用_corrupted_rollback_segments参数。
Oracle基于时间点的恢复 Posted by eygle at 2005-01-17 【内容摘要】Oracle基于时间点的恢复能够精确到什么样的精度? 这是一个需要关心的问题。 以下测试用于进行一点说明。 1.首先做好冷备份 2.创建测试数据 D:\>sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.6.0 - Production on Mon Jan 17 11:56:43 2005...
Rman Crosscheck删除失效归档 Posted by eygle at 2004-12-20 【内容摘要】当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。
所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常。
丢失所有文件、拥有全备份,缺少后增加的文件 Posted by eygle at 2004-10-14 【内容摘要】此案例丢失控制文件,从备份控制文件进行恢复,在进行恢复中,会向控制文件中以缺省规则增加文件,我们可以通过CREATE AS方式修改控制文件中记录.继续应用所有归档和日志文件可以完成恢复.
无文件备份、拥有所有归档的恢复 Posted by eygle at 2004-10-13 【内容摘要】此案例拥有当前控制文件,控制文件中包含了丢失文件信息,所以可以通过create datafile方式重新创建文件...
Use RMAN to Manage BackupSet Posted by eygle at 2004-10-12 【内容摘要】With Oracle 9iR2, We have a new way to let RMAN to manage backupset better.
That is CONFIGURE RETENTION POLICY command .
Oracle中模拟及修复数据块损坏 Posted by eygle at 2004-06-24 【内容摘要】通过试验模拟及解决数据块损坏...