eygle.com   eygle.com
eygle.com eygle
eygle.com  
 
   
 

FAQ

 

SQL相关

 

高可用性

 

诊断案例

 

内部分析

 

新技术

 

技术专题

 

Unix及其他

 

文档下载

 

图书信息

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

数据恢复及高可用性

  • Oracle数据库中 MISSING 文件名称的出现和处理 May 17, 2017
    在数据库中,异常情况下,你可能会看到某些文件带有MISSING的名称,这是如何出现的?又可以怎样处理呢?

  • 不以规矩不成方圆:Digital Ocean也删除了他们的数据库 April 18, 2017
    上周(2017-04-05),位于纽约的云服务商 Digital Ocean 遭遇了一次长达4小时56分钟的停机事故,事故的原因竟然是:主数据库被删除了(primary database had been deleted)。

  • 如何转储数据文件和Buffer Cache中的数据块 April 7, 2017
    在《Oracle性能优化与诊断案例精选》一书中有一个测试案例,读者提出异议,我做了一个更详细的测试供读者参考。书中内容并无问题,但是过程省略了一些细节,导致读者的困惑,作为主编,我要表示歉意。

  • ADAPTIVE LOG FILE SYNC 引起的高Log File Sync警示 March 27, 2017
    在Oracle 11.2.0.3 版本中,Oracle 将隐含参数 _use_adaptive_log_file_sync 的初始值设置为 TRUE,由此带来了很多 Log File Sync 等待异常的情况,这个问题虽然由来已久,但是仍然有很多Oracle的用户并不知情。所以我写下这个条目,希望让更多的朋友可以看到。

  • Oracle 12c 多租户:PDB 支持 abort 关闭么? December 1, 2016
    对于PDB来说,不存在ABORT模式,如果ABORT了PDB,那么Redo或者归档必须几乎无限期保留,以确保下次启动可以完成PDB的介质恢复,这是不可接受的。

  • ORA-600 kghstack_underflow_internal_2 错误及BUG提示 June 28, 2016
    ORA-600 kghstack_underflow_internal_2 错误及BUG提示

  • Oracle DataGuard对跨平台数据迁移的支持 August 27, 2015
    在Oracle数据库之中,实现跨平台迁移一直是一项较为复杂的任务。Oracle的DataGuard技术一直在进步,不仅仅作为容灾,在数据迁移中也承担了重要的使命。 自10g开始,Oracle的DG开始有限度的支持跨平台的DataGuard环境搭建,从而简化数据迁移的过程,现在从AIX迁移至Solaris Sparc平台已经发布了成功的实施过程。

  • Oracle数据恢复 - 注意Expdp导出文件可能初始写入损坏 January 7, 2014
    最近一个客户遭遇到了一次非常意外的数据损失,客户在维护时重建系统,先通过expdp备份了数据,结果当进行导入恢复数据时,发现部分重要的数据表无法恢复,出现错误。这个案例提示我们:不能尽信expdp等导出文件备份,必须通过多重手段协同,全面保障数据安全。

  • Oracle数据库恢复:数据库黑客攻击案例一则 April 16, 2013
    这个案例告诉我们,将Oracle数据库直接开放在公网上是极其危险的,尤其是陈旧的数据库版本中可能存在很多已知的安全漏洞,可能被轻易的攻击渗透。常规的做法是将数据库隐藏在应用服务器的后端,同时要确保及时修正Oracle严重警告的安全漏洞,另外及时的备份是确保数据留存的最后手段。

  • Oracle Kernel : Function kglic & Library Cache Latch September 19, 2012
    最近在客户的一个案例中,遇到Latch : Library Cache的竞争,其竞争位于kglic函数调用。

  • ORA-00600 Kcfrbd_3 出现在查询 DBA_EXTENTS August 14, 2012
    在某些异常情况下,查询数据库的dba_extents字典表时,可能遇到ORA-600 kcfrbd_3错误,这个错误是由于文件大小和控制文件不符合导致的,触发原因可能是数据库写异常,通常可以通过重建控制文件来消除错误。 但是,如果是数据文件头部的信息记录错误,和数据文件本身不符合,则需要修改数据文件头部的文件大小信息,才能够解决该问题。

  • 数据安全警示录:fdisk 导致的ASM磁盘数据丢失 August 9, 2012
    昨天朋友遇到一则数据库故障案例: 11.2.0.3 数据库因asm磁盘头块损坏宕机,出现错误ORA-15196。 更详细的错误如下:ORA-15196: invalid ASM block header [kfc.c:26076] [endian_kfbh] [256] [0 != 1] 进一步的检查发现DataGuard同样损坏.这让大家陷入不解,为何主库和备库会同时损坏?

  • Where is the backup of ASM disk header block? June 29, 2012
    在Oracle 10.2.0.5之前,ASM磁盘的头块并没有自己的备份,因此一旦头块损坏,如果没有以前kfed read备份出来的信息,恢复ASM磁盘头块的操作就会非常麻烦。但是从Oracle 10.2.0.5之后,ASM磁盘的头块会自动备份在另外一个块中,这实际上是Oracle 11g出现的功能,在Oracle 10.2.0.5版本中,这个备份也是存在的。

  • DBV 坏块检测:Corrupt block relative dba之源 June 5, 2012
    在使用dbv进行坏块检测时,会抛出文件号、块号等信息,这个信息来自于文件头的信息记录。

  • Event 38003 与 C_OBJ#_INTCOL# 对象清理 May 28, 2012
    在很多朋友的数据库中,聚簇对象 C_OBJ#_INTCOL# 占用了大量空间,有时候希望通过TRUNCATE清理这个对象,注意,当然最好不要这么做,风险太高。

  • ORA-600 2252 错误与SCN的一致性 May 23, 2012
    当数据库系统的时间被调整,回到历史状态时,数据库可能出现ORA-600 2252错误。 这个错误指,数据库的SCN被认为是错误和不合理的,Oracle内部控制每秒产生的SCN数量小于 16K 个,然后以1988年1月1日,0点0分0秒开始,可以计算出一个SCN可能的合理最大值。

  • ORA-00600 kclchkblk_4 错误恢复案例一则 May 21, 2012
    最近客户在恢复数据库时遇到了ORA-600 kclchkblk_4错误,这个错误在MOS上有官方的解释和解决方案。

  • Oracle安全 - SCN的可能最大值与耗尽问题 May 17, 2012
    在2012年第一季度的CPU补丁中,包含了一个关于SCN修正的重要变更,这个补丁提示,在异常情况下,Oracle的SCN可能出现异常增长,使得数据库的一切事务停止,由于SCN不能后退,所以数据库必须重建,才能够重用。

  • Oracle数据恢复-慎用OEM误操作数据文件删除案例 May 7, 2012
    这则案例警示我们:尽量少用OEM等图形工具进行数据库重要的管理和维护操作,如果你不清楚前台的一个操作在后台会如何执行,那么一定要谨慎使用这样的工具。 对于这样的案例,如果用户能够及时的保护现场,通过存储级别的恢复是可以找回数据文件的。

  • ORA-00600 ktspReadExtents:range 的错误猜测 April 6, 2012
    这个错误号,在MOS上没有解释,在Google上也找不到,但是从错误号上,我们可以大致猜出这个错误的原因: KTSP - Kernel Transaction SPace Transaction ReadExtents - Read segments Extents info Range - Extents Range

  • 数据恢复:ORA-600 kccpb_sanity_check_2解决 March 30, 2012
    最近在客户的数据库恢复中再次遇到了ORA-00600 kccpb_sanity_check_2错误,这个错误是因为控制文件不一致导致的。 出现这个错误时,数据库将无法Mount挂载,影响数据库服务。 这个错误,多数是因为存储故障,丢失了数据写。

  • Oracle SCN exhaustion BUG - CPU Jan 2012 March 22, 2012
    在2012第一季度,Oracle发布的CPU补丁中,包含了两个BUG修正,其中一个与SCN有关。 这个BUG的BUG号是:13489660 - DB-10.2.0.5-MOLECULE-020-CPUJAN2012 该BUG修正了SCN的问题,我们先从文件影响上来看看,大量内核相关的文件被更新

  • Oracle数据恢复:ORA-00600 6002错误的解决 March 19, 2012
    错误现实,在执行SYS.DBMS_HA_ALERTS_PRVT包的内部任务时出现问题。 而 ORA-00600 6002 错误和索引相关,具体内容是指: 当Oracle试图去插入一个索引键值时,首先需要找到合适的位置,并且去进行相关校验,校验内容包括索引列数量、数据大小等,一旦发现不一致,则将出现ORA-600 的 6002错误。

  • kcbz_check_objd_typ_3与参数 _db_block_check_objtyp March 16, 2012
    在之前遇到的ORA-00600 Kcbz_check_objd_typ_3错误时,发现了一个相关的隐含参数:_db_block_check_objtyp 该参数定义是否执行对象号和对象类型检测:

  • Oracle数据恢复:kcbz_check_objd_typ_3 错误处理 March 16, 2012
    首先 kcbz_check_objd_typ_3 这个错误的含义是: 当Oracle在检查内存中的数据块时,发现数据块上的对象号是错误的,随之抛出kcbz_check_objd_typ_3 这个异常。 通常这个错误意味着存在着数据损坏。

  • Oracle数据恢复:ORA-00600 6749与ORA-8102 March 12, 2012
    最近,在帮助用户进行数据恢复之后遇到了一个ORA-00600 6749问题,这个错误实际上有多种可能,在这个客户系统中,也并不是因为恢复问题导致的,只是这个问题以前并没有被注意到。 多年以前,在ITPUB上就曾经探讨过这个问题, Oracle有一个BUG,在某行记录上,会将ROWID指向自身,这样当读取到这条记录时就可能产生死循环,无法跳出这条记录。

  • Oracle数据恢复:AMDU恢复ASM磁盘组数据 March 7, 2012
    在Oracle 10g中,ASM磁盘组的信息需要在Mount之后才能通过内部视图查询,如果磁盘组因为故障无法正常加载,那么信息将不可用,这为诊断带来了诸多不便。 从Oracle 11g开始,Oracle提供了一个工具AMDU用于协助诊断,通过这个工具可以在磁盘组加载之前将ASM的元数据抽取出来,用于数据库诊断,这个工具可以向后兼容,引入到10g中。

  • Oracle数据恢复:异常中断的操作都很危险 March 5, 2012
    最近遇到的一则案例,由于一个失败的操作,导致了数据库崩溃和不可启动,最后的处理过程非常复杂。 但是我想说的是,对于一个DBA需要学习去避免问题而不是陷入问题之中,以下一个简单的测试就可以重现类似的问题。 DBA应当存在一种基本的常识,那就是:每一个异常中断的操作都可能极为危险,我们应当尽量避免,思虑周全是对于DBA的基本要求。

  • Oracle数据恢复:SYSTEM表空间的重要性 February 29, 2012
    [Oracle数据恢复]在数据库创建时,SYSTEM通常都写在磁盘最开始的位置,而在很多误操作如格式化、ASM故障时,都会从磁盘开始写起,这就会导致SYSTEM无可恢复,如果SYSTEM能够让出磁盘开始的位置,则很多故障的恢复就简单多了。USER表空间太小,UNDO还有用,TEMP是稀疏文件,所以最佳选择是SYSAUX。

  • 年终难终 - 记年底前的几则数据恢复案例 December 25, 2011
    每到年底,很多数据库就开始动荡不安起来,这是一个数据库故障的多发期,大家都应当提高警惕。 以下收录了最近我在微博上发布的关于数据库恢复的案例,供大家参考警示。

  • Oracle数据恢复 - Linux / Unix 误删除的文件恢复 December 22, 2011
    今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于open状态的时候,客户就发现了问题,求助到我们,最终完整地恢复了所有数据文件。

  • Oracle数据恢复 - 使用 lsof 查看进程打开的文件列表 December 21, 2011
    对于Oracle数据库来说,如果有文件被删除,只要文件句柄未关闭,则就可以在lsof的输出中看到标记为deleted的状态标记. 通过 proc 下的文件目录,可以找到文件句柄信息,这个就是Oracle的数据文件

  • 关于Freelists和Freelist Groups的研究 November 24, 2011
    如果为了避免freelists争用,而增加freelist group,确实可以减少Buffer Busy Waits事件,也会减少所有类别的block上的等待(从V$WAITSTAT视图中可以得知),但是却会增加HW Enqueu的等待事件。 因为一个进程使用了一个freelist group之后,即使其它的freelist group中有大量的空闲空间(比如一个进程刚刚删除了大量的数据,从而在自己的TFL上腾出了很多空闲块),这个进程也不会去检索。所以如果这个进程正好需要insert大量数据,那么就很可能会提升HWM,也就会放置HW enqueue,那么如果还有其它的进程也需要insert数据,就不可避免地经历HW enqueue等待。正是由于多个freelist group使提升HWM的几率变大,所以也就会导致HW Enqueu等待事件的增多

  • Oracle数据恢复:格式化,Raid损坏,文件覆盖恢复 November 23, 2011
    某客户为了重新部署系统,将数据导出备份到移动硬盘,然后将Raid重新格式化,重新安装系统,当进行Oracle数据库重建,导入数据时发现,移动硬盘上的数据无法正确读取,文件缺失一半。数据灾难形成。

  • DB2 数据库活动日志故障 - SQLOGCTL.LFH November 22, 2011
    DB2数据库启动的环节中有一个步骤是检查SQLOGCTL.LFH.1文件,这个文件中记录了数据库的活动日志情况。很多人由于没有深刻理解活动日志的作用,而有可能误删除活动日志。如果误删除了活动日志,那么数据库将无法连接。这也属于数据库损坏的一种情况,因为数据库的完整一致性受到了破坏。出现这种情况后,首先考虑是否有可以恢复的备份,如果有,可以从备份恢复,然后前滚到日志的末尾,以完全恢复该数据库。如果没有可用的备份来恢复,可以通过IBM的技术支持中心来协助解决(IBM内部通过一条命令db2lfh去修改SQLOGCTL.LFH.1文件)。如果想自己解决那就只有使用db2dart工具了。

  • Oracle DataGuard跨平台支持列表 - 2011 November 17, 2011
    Oracle支持在某些平台之间,进行跨平台的Dataguard环境架设,虽然存在这样一种可能性,但是选择这样的解决方案时,应当极为慎重。

  • 数据安全 - 从陕西手机用户信息泄露谈数据安全 October 31, 2011
    企业应当认识到数据安全的重要性,不断完善管理,通过技术和非技术手段提升数据安全;而数据从业人员也应当提高自身素质及安全意识,遵守行业道德及法律规范。

  • Oracle数据恢复:错误叠加导致灾难不可恢复 September 29, 2011
    这个故事给我们的警戒是:备份,备份,备份,再多一份也不算多;故障处理,再加一万个小心也不算多。 最初的一个简单故障,在层层错误之后,彻底不可挽回,这是多年来我见到最富有戏剧性的恢复案例。最后软件厂商为补录数据开出的价码高达7位数,而客户DBA也选择了离开。

  • Oracle数据恢复:SYSTEM回滚段损坏案例一则 August 5, 2011
    注意,以下一段SQL非常著名: select /*+ rule */ name,file#,block#,status$,user#,undosqn,xactsqn,scnbas,scnwrp,DECODE(inst#,0,NULL,inst#),ts#,spare1 from undo$ where us#=:1 这是启动过程中对于undo$的递归读取,获得其中的回滚段信息.如果某个回滚段上存在活动事务,则该事务必须被读取回滚,以便保证事务的一致性.

  • Oracle数据恢复:ORA-600 4097错误解决案例一则 July 19, 2011
    在客户数据库恢复过程中,遇到ORA-600 4097号错误,这个错误是比较少见的. 在Oracle进行延迟块清除时,会去查询回滚段头,以确认事务状态,然而,由于一些损坏或强制性恢复手段的采取,获得的回滚段信息来自与未来,超前于当前数据库状态.这样就出现了4097号错误. 这个错误明确的由于事务清除和回滚段问题导致.

  • Oracle数据恢复:ORA-600 kdsgrp1错误解决案例 July 12, 2011
    在客户的数据库中,恢复之后打开数据库后遇到如下问题,ORA-00600 kdsgrp1错误,这个错误主要指对应索引ROWID,在数据表中找不到记录,这表明出现了数据一致性问题. 我们可以通过重建索引来解决,以下错误提示表明问题出现在file 3 block 32538号数据块上.

  • Oracle数据恢复:断电导致的ORA-600 6006错误 July 6, 2011
    上周,有个客户的系统,因为机房停电,预先关闭数据库,但是启动后却遭遇了ORA-600 6006 错误,数据库无法启动. 这是比较郁闷的事情,经过我们的恢复,最后成功启动数据库,恢复了数据库应用,但是整个过程值得记录一下. 同时提醒大家:断电对于数据库系统的伤害极大,应当做好充分的准备和预防工作.

  • Oracle数据恢复:文件 数据错误(循环冗余检查) 解决 June 21, 2011
    当从系统访问文件时,出现"循环冗余检查",无法读取和复制文件,数据库也无法访问该文件,数据库使用受损,导致了严重的业务故障。 在这种情况下,通常的手段就无能为力了,然后我们可以通过DD等工具,将该文件完好的部分DD出来,还原成一个独立的文件或文件碎片,然后修复该文件,可以完成数据恢复。 在这个案例中,坏块位于数据文件头部,我们复制了其他部分之后,使用BBED修复了数据文件头块(Header Block)就完成了数据恢复。

  • Oracle数据恢复:数据文件头的SCN与时间校验 June 15, 2011
    近日在恢复一个数据库时,用到BBED修改数据文件头信息,更加明确了以下内容,与大家分享。 在数据库加载一个数据文件时,需要对文件头的文件创建SCN进行校验,与数据字典(file$)比较, 如果数据文件信息与数据字典不符,则出现ORA-01203错误

  • Oracle数据恢复:6008 及事务回滚错误恢复 June 13, 2011
    近日,帮助某用户恢复了一个重要的生产数据库。数据库由于异常宕机导致故障,重启后无法正常运行,出现ORA-00600 6008错误,数据库Open之后,很快会Crash。6008错误通常出现在索引块上。 用户数据库定期做了逻辑备份,但是在这样的时候,并不认可通过逻辑备份的恢复,因为会损失较多数据。值得我们借鉴的是,逻辑备份绝对不能作为唯一的数据库备份手段,这是相当危险的。

  • Oracle数据恢复:RAC系统Redo/Undo损坏恢复 June 2, 2011
    昨天,一个客户的数据库系统出现故障,RAC无法启动,大量的错误信息,经过分析检查,最后我们通过强制手段打开数据库,帮助用户挽回了数据损失。

  • Oracle KKS 层-Kernel Kompile Shared (cursors) June 1, 2011
    在很多错误信息或提示中,总能看到KKS的身影,可是没有文档表明其具体含义。 我在这里整理收集一下能够读到的文档信息: KKS层的代码管理是 kks.c 文件,其含义为Kernel Kompile Shared (cursors).

  • 期待与拥抱变化 - 谈谈技术人的技术路 May 19, 2011
    这里边说出了我最近的一些想法,做技术的很容易陷入墨守的成规之中,而我真诚的喜爱变化,从变化中寻找机会,这就是我想说的。

  • 使用 ASM 存储 expdp 导出文件(ORA-39070) May 6, 2011
    在客户系统中,由于空间问题,想要将expdp的逻辑导出文件存储到ASM磁盘组中。 经过测试,expdp导出文件完全可以放在ASM磁盘组中,但是日志文件需要放在文件系统上。

  • Max Extents越界导致故障的Oracle数据库恢复 April 20, 2011
    今天接收到一则Oracle 8i的数据库故障,恢复数据过程并不特别复杂,只是Oracle 8i的东西基本上快忘的差不多了。 数据库是在一个ORA-1631错误持续报出后出现的问题, Oracle的一个数据对象的最大区数量超过,数据段将无法扩展。

  • 主机断电文件丢失的 Oracle数据库恢复 March 28, 2011
    不清楚为何一次简单的断电导致了如此严重的后果,庆幸的是,客户有一份及时的备份,通过备份和归档日志,成功的恢复了数据库。 有备份,一切很简单。

  • ASM元数据备份与恢复:md_backup和md_restore March 22, 2011
    在Oracle Database 11gR2 中,asmcmd有了大量的改进和增强,即使11.2.0.2和11.2.0.1比较,也有很多不同。 在ASM元数据的备份与恢复方面,Oracle增加了两个命令:md_backup 和 md_restore。 md 是 metadata的缩写,这一工具极大的简化了ASM的元数据维护。

  • ORA-27069 文件数据块损坏 数据库恢复一则 March 11, 2011
    在Oracle数据库中,不同平台上存在的种种限制,可能导致数据库异常,我认为这是Oracle数据库的不足,这些确定性的约束,应当在软件中体现出来,并且应当能够进行一定程度的避免,当然可能要 付出一点代价。 在客户的Windows 2000 Server + Oracle 8.1.7 环境中,遭遇到文件越界( > 16G ),导致读写失败的案例。

  • 参数_smon_internal_errlimit与数据库恢复 March 8, 2011
    前一段时间,在帮助用户恢复一个数据库时,用到了_smon_internal_errlimit参数。 客户数据库遭受存储损坏无法打开,数据文件存在大量坏块,我们强制打开数据库后遇到了如下错误

  • DBA手记:X$KTUXE与Oracle的死事务恢复 March 7, 2011
    X$KTUXE是数据库中非常神秘的一个对象表,当然其本质上是C定义的一个结构体,在数据库中可以看到其结构

  • DBA手记:共享池的改进与ORA-04031的变化 February 28, 2011
    我们知道,从Oracle 9i开始,Shared Pool可以被分割为多个子缓冲池(SubPool)进行管理,以提高并发性,减少竞争。 Shared Pool的每个SubPool可以被看作是一个Mini Shared Pool,拥有自己独立的Free List、内存结构以及LRU List。同时Oracle提供多个Latch对各个子缓冲池进行管理,从而避免单个Latch的竞争(Shared Pool Reserved Area同样进行分割管理)。SubPool最多可以有7个,Shared Pool Latch也从原来的一个增加到现在的7个。如果系统有4个或4个以上的CPU,并且SHARED_POOL_SIZE大于250MB,Oracle可以把Shared Pool分割为多个子缓冲池(SubPool)进行管理,在Oracle 9i中,每个SubPool至少为128MB。

  • DBA手记:Cache-Low RBA与On-Disk RBA的恢复 February 24, 2011
    在最近(2010年9月6日)的一次培训中,有位朋友问起上节案例,该如何证明和验证Oracle介于Cache-Low RBA和On-Disk RBA之间的恢复过程?我们可以通过如下的过程来做一些观察和证明。 首先执行一个建表的CTAS操作,这个操作是为了多生成一些脏块(Dirty Buffer),然后紧接着执行两次控制文件转储,两次转储是为了确认对比一下控制文件的检查点没有变化,然后紧接着执行强制关闭数据库(Abort方式),再启动数据库

  • EXPDP 过程中的 SYS_XMLGEN 性能影响 January 6, 2011
    在EXPDP执行数据导出时,其中一个过程要调用SYS_XMLGEN执行XML文件生成,这个过程可能会产生性能问题,所以需要关注相应时段的AWR报告相关信息。 在一个客户的性能诊断中,发现类似如下的SQL,手工在SQL*Plus中执行该类SQL可以评估其性能,如果其性能存在较大问题,则需要介入研究起原因。

  • cursor_sharing参数对于expdp的性能影响 January 1, 2011
    客户的数据库使用了cursor_sharing=similar参数,经过测试,发现这一参数极大影响了expdp的性能。 其本质原因是SQL的执行计划发生了改变。 在正常情况下28分钟完成的EXPDP操作,在similar模式下用了整整1个小时

  • EXPDP:使用ESTIMATE_ONLY参数评估ESTIMATE性能 December 30, 2010
    在使用Expdp进行导出时,Expdp需要计算导出数据大小容量,Oracle可以通过两种方式进行容量估算,一种是通过数据块数量、一种是通过统计信息中记录的内容估算。两者在不同版本中,可能有巨大的性能差异,尤其是在Oracle 10g的早期版本中,一些Bug严重影响了性能。

  • Oracle数据库恢复: 存储及系统故障导致文件丢失 December 4, 2010
    对于数据库不太大的用户,我强烈建议用户在主机上多配备几块硬盘,将备份存放到本地,一是获得性能,二可以加快恢复,保证恢复时间。 最后客户在一块移动硬盘上找到了一份临时分离出去的备份文件,最终靠这个偶然留存的备份挽救了数据库。 数据备份,再多一份也不为过!

  • Oracle数据库恢复 : 存储故障导致的数据损坏 December 3, 2010
    最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量4TB,浪潮的存储设备,控制器损坏导致数据库故障。

  • Oracle数据库恢复:归档日志损坏案例一则 November 16, 2010
    最近在帮助用户恢复数据库时遇到了一则罕见的归档日志损坏案例

  • 帮助用户恢复数据块损坏的海量数据库 October 23, 2010
    上周在上海出差时,有用户找到我们,请求帮住恢复一个因为硬盘损坏导致的数据库故障,数据库是Oracle 10g的RAC集群,存储使用的是ASM管理。 主要问题是SYSTEM表空间存在大量的坏块,DBV检查,很多关键数据块出现问题,收录一下DBV的检测输出,看一看RAID硬盘损坏类故障会导致多少故障吧

  • Oracle数据库恢复:解决ORA-600 2831错误 July 28, 2010
    一个数据库,不知怎样就陷入了ORA-600 2831 和 kcfofl_01错误中,表空间无法删除,频繁出现如下错误

  • Oracle数据恢复:强制Resetlogs的可能数据损失 June 30, 2010
    很多时候,在强制打开数据库之后,比如使用了_allow_resetlogs_corruption等隐含参数,可能会导致数据库丧失一致性,损坏部分数据,如果损失的是部分DML数据,则数据库可能仍然可以运行良好,但是如果损失的是元数据,则可能数据库会出现一些其他的异常,当时这些异常也仍然是可以修复的,只是成本或代价会比较高昂。 最近的一则案例中,恢复数据之后,用户动态创建的某些临时表出现问题,无法成功导出,这就是强制Resetlogs的后果之一。

  • DBID的获取 与 控制文件中有什么? June 29, 2010
    我以前写过一个文章,如何获得DBID,这个问题今天仍然有人问题,其实不管控制文件的名称里是否包含了DBID,但是,只要有了控制文件,就可以从其中获得 DBID,可以直接用二进制工具打开,读取固定的位,也可以恢复出了控制文件,通过其Mount数据库,再来查询V$视图。

  • Oracle数据恢复:格式化、ASM及字典损坏案例三则 June 28, 2010
    客户原系统使用的是ASM存储管理,两块硬盘组成的大约2T的存储设备,这样在恢复时,我们必须通过两块硬盘来进行数据重组,ASM缺省的AU大小是 1M,在两块磁盘之间进行均衡(Balance),存储均衡是Oracle的一项性能提升技术,然而在故障时,你会发现这一技术让人倍感折磨,通常使用文件系统,一个文件会在单个系统上存储,而ASM是分散的,这就导致哪怕是最早创建的SYSTEM表空间,也必然在两个磁盘之间跨越交替存储。

  • 恩墨科技成功帮助某金融用户恢复ASM故障 June 17, 2010
    学会如何规避风险往往比解决问题更重要,因为数据库的风险太多且无处不在。

  • ORA-00600 kcratr_nab_less_than_odr案例一则 May 25, 2010
    近日,有朋友遇到了ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr]错误,具体的错误信息类似:Incident 63078 created, dump file: /u01/diag/rdbms/orcl/orcl/incident/incdir_63078/orcl_ora_1916_i63078.trcORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [],...

  • ORA-00600 kcratr1_lostwrt之解决与原理分析 May 10, 2010
    客户的一个数据库因为断电遇到了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 这个错误不难解决,但是其具体成因有点意思

  • 讨论: 无备份的数据库如何应对故障? March 10, 2010
    近期,在为一个客户的数据库制定紧急预案,这个数据库数据量大约在1.4T左右。由于客户没有额外的存储资源用于备份,所以数据库目前存在了很大的安全风险。 虽然存储级别有一定的安全防范,但是如果遇到数据损失、坏块、文件损坏等问题,将无法应对。

  • kcbgtcr 错误小记 March 4, 2010
    kcbgtcr 是Oracle数据库最重要的函数之一,其含义为:Kernal Cache Buffer GeT Cosistents Read,也就是数据库的一致性读操作,后面的代码有很多种,代表在不同的层面上出现问题。 Metalink 的 Note 415773.1 - Diagnostics and Solutions for kcbgtcr() Related Internal Errors记录了与此相关的很多问题。

  • ORA-00600 3020 错误案例一则 March 2, 2010
    出现这个错误后,恢复中断,无法继续,3020错误在Metalink上的解释,主要原因是在恢复时发现Redo里面记录的信息和被恢复的数据块信息不一致,导致恢复无法继续。比如Update Some record from 3 to 2,结果发现该记录根本不是3,恢复无法继续。

  • SMON: recover undo segment与事务恢复 February 23, 2010
    在一些系统异常之后,尤其是一场Down机之后,数据库里可能会看到类似如下的提示信息: SMON: about to recover undo segment 23 SMON: mark undo segment 23 as available 这些信息意味着,数据库需要这些回滚段的信息去恢复一些未完成事务,多数情况下,这些事务都能够得到恢复,但是如果不幸,在异常宕机时丢失了部分 Write操作,则可能无法完成恢复,出现灾难。

  • Cache-low rba 与 on-disk rba - 恢复笔记 February 12, 2010
    我们都知道在恢复过程中,Cache-Low RBA和On-Disk RBA主导了恢复过程,Oracle的恢复从上一次成功的写出开始,也就是以Cache-Low RBA为起点,恢复至日志的最后成功记录,也就是以On-Disk RBA为终点。

  • ORA-00600 4000 及 4194 错误小记 February 4, 2010
    在初期恢复时出现了ORA-600 4000号错误,这个错误以前写过几个案例,一般没有好的办法,只能通过bbed修复。 不过4000号错误不一定非要用bbed修改坏块,有时候经过反复几次重新启动数据库,就可以暂时规避,尝试将数据导出。

  • 使用RMAN验证备份的有效性 January 26, 2010
    RMAN提供VALIDATE的命令,可以用于校验备份集的有效性,常用命令如下

  • ORA-600 kcbzpbuf_1 坏块的恢复案例一则 January 13, 2010
    明确了所有的细节之后,处理起来就有底了。在现场遇到了blue_stone同学,这是意外的收获,在越来越多的场合可以遇到ITPUB里熟悉的ID,这是网络生活给我们的馈赠与惊喜。blue_stone准备好了DUL,准备在最坏的情况下进行数据抽取。而我现在越来越少使用DUL、AUL、ODUL了,因为一遇到这样的恢复就会抵触,特别是在失去SYSTEM之后的恢复。而事实上,很多情况下都还是有办法可想的。

  • 工具: ass109.awk 分析 Oracle 的跟踪文件 November 19, 2009
    以前分析Oracle的跟踪文件,主要靠手工阅读,最近发现ass109.awk文件是个不错的工具,在网上找到了一个,附在这里: ass109.rar

  • Exp 导出与 Expdp 的速度与时间对比 September 24, 2009
    虽然expdp是Oracle 10g推荐的逻辑导出方式,但是仍然有很多人并不习惯这一方式,这与expdp的使用复杂度有关,我觉得expdp的directory方式应当简化,由参数行定义就好了,后台由数据库自动去维护。

  • 一个TB级数据库的备份时间及备份记录 September 12, 2009
    昨晚,为一个客户的数据库做了一次临时性的备份留存,数据库的整体容量大约在1.5T左右

  • 使用ora_rowscn识别误操作数据时间点 September 8, 2009
    如果没有明显的字段可以识别,那么ora_rowscn可以作为一个参考,以下这个查询就可以通过SCN和数据识别,将后来增加的记录找出来

  • 恩墨科技为某企业SAP数据库提供紧急援助服务 September 7, 2009
    最近已经遇到了多次SAP备份失败导致的故障,有的甚至要求从数月之前的归档开始恢复,导致客户的业务遭受影响和损失。

  • RMAN排除备份 Exclude带来的Obsolete影响 September 1, 2009
    Oracle在Bug 3736736修正中澄清,修正后,如果有效备份中不包含排除表空间,则备份将不保留用于恢复排除表空间的归档。

  • 恩墨科技为济南某大学提供数据恢复服务 August 23, 2009
    根据最近几次的恢复经验看,BBED是恢复一些棘手故障的利器,几乎无往不胜,现在还存在的问题是Fractured block的修复问题。 然后备份总是王道,做好备份,万事无忧;没有备份,心惊胆跳!

  • Oracle KSL Latch 管理层 与 Latch管理 August 17, 2009
    Oracle的Latch管理,对应的内核代码层位KSL层,ksl.c代码层

  • 断电故障导致 ASM DiskGroup 故障及恢复案例 July 9, 2009
    ASM在RAC环境中的使用已经极其广泛,但是往往由于对ASM的认识不够,很多时候在处理故障时会陷入谜团,前一段在客户环境中就遇到了一个ASM的棘手问题。

  • 恩墨科技为某企业提供紧急数据恢复服务 July 7, 2009
    由于数据块出现了损坏,其中的数据不可避免的遭到了损失,我们可以通过BBED等工具修复数据块,虽然可以骗过数据库,强制启动数据库,但是无法骗过自己,其中的数据难免遭到损失。

  • DataGuard ORA-01111文件创建失败问题解决 July 6, 2009
    在DataGuard环境中,由于备库的路径、存储、空间等问题,可能会导致文件创建失败的问题。

  • Export ORA-00904: "Ifreepool": Invalid Identifier June 8, 2009
    这是因为版本不一致导致的,在遇到包含LOB对象的表时触发,这是因为10.2.0.4中,管理LOB对象发生了变化,在字典中引入了一些新的字段,如'IFREEPOOL'. 10.2.0.3中不包含相应字段,在EXP时就出现了错误。

  • ORA-01157 - Mount状态下的文件存在性校验 June 5, 2009
    虽然在Mount状态,数据库并不会主动校验文件的存在性,但是会被前台进程触发,去判断文件的存在性,从而报出出错信息

  • IMP-00009 abnormal end of export file May 14, 2009
    这中情况通常是因为导出文件异常,当导如最后发现异常时,会回退所有操作。 回退在数据库处理是正常的,因为导出文件异常可能导致局部数据丢失,数据的一致性和完整性是无法确保的。 可是在用户环境下,数据是为了导入测试环境进行测试,而且导入据说花费了4个小时,漫长等待得到的是回退的答案,这在用户看来是不可接受的。

  • 如何快速找到备份过最近、最大序号的归档日志 April 23, 2009
    这里我们可以用另外一个命令:
    LIST BACKUP OF ARCHIVELOG FROM SEQUENCE seq_no [THREAD thread_no];
    选择一个合适的SEQuence号,接下来这个命令会将备份过的日志按照序号展现出来,非常便于观察。
    对于RAC环境不同的Thread可以加上不同的Thread号。


  • Oracle EXP/IMP与临时对象的管理方式 April 22, 2009
    今天做了一整天的数据导入工作,有一点点收获就是,清晰的看到了导入时临时对象的生成。 这是一个Oracle9iR2的环境,在漫长的导入过程中,系统中可以看到大量这样的临时对象,在对象创建完成之后,对象的临时属性被更改为固定.

  • RMAN结合Read Only、Exclude的备份策略 April 22, 2009
    RMAN结合Read Only、Exclude的备份策略制定,特定条件下非常有用的备份手段之一。

  • Oracle Wait Events:read by other session February 27, 2009
    这个等待也就是说明数据库存在读的竞争,所以该等待事件通常和db file sequential read或db file scattered read 同时出现。

  • Oracle Wait Events: Wait for scn ack February 22, 2009
    ACK (ACKnowledgment) 的意思是:TCP首部中的确认标志,对已接受到的TCP报文进行确认。Acknowledge Character,就是确认字符。在数字通信协议中,如果接受方成功的接收到数据,那么会回复一个ACK信号。通常ACK信号有自己固定的格式,长度大小,由接受方回复给发送方。其格式取决于采取的网络协议。当发送方接收到ACK信号时,就可以发送下一个数据。如果发送方没有收到信号,那么发送方可能会重发当前数据包,也可能停止传送数据。具体情况取决于所采用的网络协议。ACK信号通常是一个ASCII字符,不同的协议中ACK信号都不一样。

  • Oracle Database 11g回滚段命名的变化 January 30, 2009
    在处理Oracle Database 11g中,回滚段的命名规则已经和以前不同。

  • 圣诞超级复杂困难之Oracle数据库大恢复 December 25, 2008
    这个案例所用到的所有知识在我的网站上全都有详细介绍,不过要能把所有知识综合运用才能解决这次的故障,这真是圣诞节对我的一大考验!

  • Oracle Express版本的数据库选件 October 28, 2008
    Oracle的Express版本中,仅有12个选件为True,这是Oracle软件的免费产品。

  • 使用RMAN进行排除表空间备份 October 15, 2008
    在RMAN的备份中,可以通过Exclude命令排除某些不需要备份的表空间。 这样可以缩减备份的容量,对备份进行适当优化和调整。 排除某个表空间可以使用类似如下命令: configure exclude for tablespace users; 其设置可以在RMAN中通过show all命令来查看。

  • 关于Mutex的笔记 October 10, 2008
    Mutex在计算机中是互斥也就是排他持有的一种方式,和信号量-Semaphore有可以对比之处

  • ORA-00704 与 bootstrap 错误 July 3, 2008
    一般来说,见到bootstrap错误都是很严重的故障,bootstrap过程失败数据库肯定就无法打开。很多时候bootstrap$表损坏也会导致bootstrap失败。

  • 使用Catalog命令注册RMAN备份集 June 3, 2008
    只有原库数据文件的RMAN备份集(此备份集不包含控制文件,log,参数文件等等,单纯只有数据库的所有数据文件的备份集),主库废了,如何进行恢复!

  • 使用dbms_backup_restore修改DBID May 26, 2008
    在一些特殊的情况下,我们可能需要修改数据库的DBID,有时候可能仅仅是修改控制文件的。

  • Oracle Wait Events:Data file init write April 10, 2008
    测试数据库是Oracle10g 10.2.0.3,实际上这个等待事件也是从Oracle 10g开始引入的,用来标识表空间或数据文件扩展时的等待。 Oracle 需要将系统块格式化为Oracle数据块,然后才能提供数据库使用。

  • 并行查询并行度Degree与instances 设置 April 9, 2008
    在DBA_TABLES字典表中有一个degree字段,这个字段代表并行查询在数据表上的并行度,在RAC环境中,这个参数还和实例有关。

  • resize datafile 与 checkpoint March 30, 2008
    Resize datafile会触发一个文件级检查点,今天讲课的时候和大家提到过这个,记录一下。

  • RAC环境下根据sequence恢复指定日志 February 7, 2008
    RAC环境下,可以通过如下命令来恢复备份集中的归档日志。

  • 成功恢复案例:解决字典表误Truncate故障 January 22, 2008
    这一案例的恢复过程并不重要,重要的是DBA应该学会永远不要让我们的数据库置于这样的危险境地

  • Varchar2(4000)能存多少数据? November 6, 2007
    今天一个朋友在MSN上问我,Varchar2(4000)能存多少数据? 他说他的Varchar2(4000)有的条目,用lengthb计算,达到了4046.

  • 497天是一个轮回-记Linux时钟的回转 September 17, 2007
    由于某些Linux内核使用32位无符号长整型来计算时间,32位的最大值就是0xffffffff,再加1就将溢出变为0

  • 如何加快SMON的恢复进度? September 12, 2007
    昨天提到的事务恢复问题,有人问是否真要回滚几天那么久?

  • Oracle HowTo:判断一个死事务的恢复进度 September 11, 2007
    由于死事务已经无法通过v$transaction来观察,所以必须通过内部表来进行判断。
    这个内部表是x$ktuxe,该表会记录Dead事务的恢复进度

  • 关于Shared Pool探索的补充之一 September 7, 2007
    在x$ksmsp.ksmchcls的分类中,还有两外几个分类,这几个分类是R-free/R-freea/R-perm

  • v$sql视图buffer_gets统计溢出为负数的现象 August 22, 2007
    但是最终Oracle不认为这是一个Bug,因为即使底层表x$kglob的相关值定义从KQFCINT() 变更位 KQFCUIN()。也只不过将这个限制扩大了一倍而已,这个限制早晚还会被达到。

  • Oracle ASSM三级位图块结构 July 4, 2007
    我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。

  • Oracle10g的current_scn是如何计算的? June 21, 2007
    也就是说你不查询就不知道current_scn的值,你查询它就变化,是不是有点向薛定谔的猫的那种感觉?

  • 关于Oracle归档进程的运行机制 June 11, 2007
    真理是需要不断摸索才能发现的。

  • 关于Oracle归档进程的运行机制 June 6, 2007
    归档进程的数量是受初始化参数log_archive_max_processes控制,初始的,这个参数设置为2,Oracle启动两个归档进程

  • Oracle中独一无二的Cache对象 April 19, 2007
    这个root dba指向了1.417对象,而1.417对象的上一个对象正是bootstrap$,Oracle通过1.417找到了bootstrap$对象就可以启动了数据库。

  • LGWR与AIX上的进程优先级 March 31, 2007
    最显著的等待是LOG FILE SYNC,最终发现问题出在LGWR进程,由于该进程活动过于频繁,该进程在系统上的nice值被调至68,AIX上缺省进程nice值为60,nice值越高表示优先级越低。

  • Oracle与Linux/Unix下的时间处理 March 11, 2007
    在Linux/Unix上,Oracle在很多地方都从系统取得时间。

  • Oracle Peeking绑定变量的控制 March 7, 2007
    我们知道从Oracle9i开始,Oracle引入了Peeking of User-Defined Bind Variables的特性,这个特性可以用来在存在数据倾斜时对执行计划纠偏。 然而这一特性也可能带来一些副作用,所以Oracle同时引入了一个内部参数用于控制这一特性

  • ORA-00701 warmstarting对象的另类解决方法 February 15, 2007
    38003事件的作用是:CBO Disable column stats for the dictionary objects in recursive SQL 也就是说可以将部分对象从启动的bootstrap$需要里剥离出来,从而可以被在线rebuild.

  • Oracle10g 控制文件的改变 February 12, 2007
    前几天说过,Oracle10g Events CONTROLF的改变,当时猜测控制文件的变化可能是为了满足Oracle10g Grid运算支持大量并行实例的需要。

  • 终极恢复孰弱孰强-DUL vs AUL February 3, 2007
    其实很多时候,到达用户现场后,你就只剩下一个想法,尽快帮用户最大程度的恢复数据,因为到了最后的阶段,数据已经影响到了很多人的生活,我们能做的就是尽最大可能以最快速度进行恢复。

  • 系统对象IDL_UB1$表的含义及作用 January 17, 2007
    在ITPUB上有朋友遇到SYSTEM表空间快速扩展的问题,经过如下代码查询,可以找出系统表空间中占用空间最多的Top9对象

  • Oracle10g中SCN与TimeStamp的相互转换 January 8, 2007
    作为对于闪回操作(flashback)的一个增强,Oracle10g提供了函数对于SCN和时间戳进行相互转换。

  • DataGuard数据库服务器硬盘故障处理一则 November 28, 2006
    这两台服务器用的都是联志的国产低端PC Server,这些服务器的质量实在是差,上次一台备机的硬盘损坏,然后又有一台因为电源模块的问题反复重起,现在这一台服务器的硬盘再次出现问题。

  • DB link与检查点(checkpoint)和SCN November 8, 2006
    这种机制其实是为了满足分布式事务(Distributed Transaction)的需要,只不过这里通过db link被触发。

  • UTL_INADDR包获取ip地址的内部原理 October 26, 2006
    首先获取域名解析服务器,在根据host.conf文件确定解析顺序,因为缺省hosts文件优先,又继续读取/etc/hosts文件。 如果hosts文件存在解析关系,则返回信息;如果不存在,则继续问询DNS服务器,获得解析地址,如果不能解析,则会出错:

  • 获得Redo Block Size的非典型方法 October 17, 2006
    我以前介绍过获得redo block size的方法,当然也可以通过dbfsize工具获得。 现在在这里我想介绍的是另外一种非典型方法,有多非典型呢? 问题来自于N年前我在一个客户的机器上部署的监控脚本,现在那些脚本看来还在运行着,我最近收到了大量类似如下内容的邮件

  • 使用RMAN进行基于时间点的不完全恢复 September 17, 2006
    此时可以检查数据的正确性,如果无误就可以通过exp导出数据,再imp进生产数据库,完成恢复。 在有了充分的备份的前提下,这样的恢复是非常容易的。

  • sql.bsq与数据库的创建 August 23, 2006
    如果我们使用脚本创建数据库,那么最先运行的是一个叫做CreateDB.sql的脚本。 这个脚本发出CREATE DATABASE的命令,具体类似如下的例子:

  • 拥有归档日志 如何恢复一个丢失的数据文件 August 20, 2006
    如果拥有一个冷备份,但是缺失了其中的一个数据文件,但是存在所有的归档,应该如何恢复数据文件。

  • 备份的控制文件和新的数据文件 August 11, 2006
    我们可以想象,如果控制文件是从备份中恢复的,那么数据库在open过程中又将如何呢?

  • 关于控制文件与数据文件头信息的说明 August 11, 2006
    在上一讲中,我们说过:当我们使用file_hdrs事件来转储数据文件头信息时,Oracle会转储两部分信息,一部分来自控制文件,一部分来自数据文件,在数据库启动过程中,这两部分信息要用来进行启动验证。

  • EVENT: FILE_HDRS 的信息来源 August 10, 2006
    我们知道,可以通过一个内部事件来转储数据文件头信息,这个常用的命令是.....

  • Oracle9iR2 NF:压缩表技术 June 26, 2006
    从Oracle9iR2开始,Oracle推出了压缩表技术(table compression),用于压缩数据表中的重复数据,以节省存储空间,压缩技术倾向于在数据仓库中使用。

  • 隐含参数_disable_logging的几点说明 June 20, 2006
    在很久以前,曾经介绍过Oracle的一个内部隐含参数_disable_logging,看到有朋友论述这个参数,今天忍不住做一点补充说明.

  • 时间再次停止运行 June 16, 2006
    今天下班时,同事说,一个数据库上的Job进程不能启动,我登陆上去查看,果然,时间再次停止运行: SQL> select * from v$timer; HSECS----------4294967295 SQL> / HSECS----------4294967295 此前曾经遭遇这个Bug,当主机持续运行497 days 2 hrs 28 mins 时,数据库系统时间将会停止. Bug出现: $ uptime6:27pm...

  • Oracle热备期间的过量Redo生成控制 May 31, 2006
    我们都知道为了防止热备期间的分裂块问题,Oracle在热备过程中会对修改块进行全块的Redo记录. 偶然发现居然还存在一个隐含参数可以控制这个行为: SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ2 FROM SYS.x$ksppi x, SYS.x$ksppcv y3 WHERE x.inst_id = USERENV ('Instance')4...

  • 使用10203事件跟踪Oracle块清除 April 20, 2006
    Oracle的10203事件可以用来跟踪数据库的块清除(cleanout)操作,从事件列表中,我们可以知道该时间的含义为:block cleanout 。 该事件需要在系统级设置,重启数据库后生效: SQL> alter system set event="10203 trace name context forever" scope=spfile; System altered. SQL> shutdown immediate;Database closed.Database...

  • _disable_logging如何禁用日志 April 14, 2006
    在非归档模式下(归档模式会导致日志损坏),使用_disable_logging可以禁止日志的生成,从而可以提高某些特殊操作(如批量加载或Benchmark测试等)的性能. 我们可以来看一下这个禁止是如何完成的. 启动2个Session,一个用于管理,一个用于测试. 1.Session 1 ,使用SYS用户连接数据库,当前_disable_logging未设置,数据库处于正常状态 $ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Fri Apr 14...

  • _disable_logging对于性能的影响 April 14, 2006
    设置了_disable_logging参数,可以禁用日志的生成,从而提高某些测试的性能. 以下测试,纯属测试目的,其他内容请参考本站其他文章: http://www.eygle.com/archives/2006/04/more_about_disable_logging.html 禁用日志情况下: SQL> connect / as sysdbaConnected.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started. Total...

  • 隐含参数_disable_logging的几点说明 April 14, 2006
    在很久以前,曾经介绍过Oracle的一个内部隐含参数_disable_logging,看到有朋友论述这个参数,今天忍不住做一点补充说明. 1.当然,隐含有风险,设置请谨慎. 2.最初在9.2.0.6 Solaris版本上,设置该参数会触发Bug:3868748 使得数据库无法启动. 从警告日志中,通常可以获得的错误提示是: ORA-07445: exception encountered: core dump [kcrfwcint()+1625] [SIGFPE] [Integer divide by zero] [0x828739D] [] []...

  • 关于自动PGA管理的进一步探讨 April 9, 2006
    伴随自动PGA调整新特性的引入Oracle随之引入了一系列新的视图,V$PGASTAT就是其中的一个....

  • 临时文件file#和db_files的关系 March 28, 2006
    在v$tempfile与v$sort_usage之关系解析一文中,我们注意到对于临时文件的绝对文件号(AFN),Oracle的分配规则和常规数据文件并不相同.

  • v$tempfile与v$sort_usage之关系解析 March 25, 2006
    在前面的V$TEMPSEG_USAGE与Oracle排序中我谈到V$TEMPSEG_USAGE和V$SORT_USAGE同源,其中的SEGFILE#代表的是绝对文件号(AFN).

  • LOB对象与临时段 March 25, 2006
    如果程序中使用了临时的LOB类型变量,Oracle会分配临时空间,如果并发很高,初始区很大,那么数据库可能产生严重的TEMP表空间的不足问题

  • V$TEMPSEG_USAGE与Oracle排序 March 24, 2006
    刚才Kamus说起V$TEMPSEG_USAGE这个视图,看着很眼生,我说没注意过,然后动手查一下这个东西究竟来自何方. 查询dba_objects视图,发现原来这是一个同义词。

  • 转储日志文件头 获得日志信息 March 17, 2006
    我们可以通过如下命令Dump日志文件头,获得关于Redo Log File的一些重要信息:

  • Oracle7.3.4 Checkpoint行为研究 February 20, 2006
    在不同的版本中,Oracle的检查点策略一直在不断的调整优化,而从Oracle7之后,Oracle不在文档中透漏更多的信息给我们.

  • 如何解决Ora-00600 4194错误 February 13, 2006
    4194错误通常说明UNDO段出现问题,最好的办法是通过备份进行恢复,如果没有备份,那么可以通过特殊的初始化参数进行强制启动

  • DBWR enhancements In Oracle10g II February 8, 2006
    我们注意到,在Oracle9iR2中,和DBWR相关的统计事件有12个

  • DBWR enhancements In Oracle10g February 7, 2006
    为了避免DBWR不必要的唤醒及过于活跃,从Oracle10g开始,Oracle对DBWR的SCAN间隔进行了调整.

  • 为何而心跳-Oracle Heartbeat研究之二 January 27, 2006
    这说明Heartbeat并非在数据库Open状态下才会更新,也说明HeartBeat是用来维持实例的Mount状态检测.

  • Oracle7.3.4数据库已经启动 January 26, 2006
    今天调整了一下,手工建立了一个数据库,顺利启动了Oracle7的数据库

  • 谁能帮忙提供Oracle7 For NT的版本 January 25, 2006
    哪位朋友还有Oracle7.3 For Nt版本的数据库,能否帮忙提供一个,急需该版本进行一些测试.

  • Oracle的X$表系列介绍之-X$KCCCP January 24, 2006
    X$KCCCP--[K]ernel [C]ache [C]ontrolfile management [c]heckpoint [p]rogress

  • 年终难终 进入数据库事故多发期 January 22, 2006
    据多日观测,临近年终,国内各行业数据库已经进入了数据库事故多发期

  • 为何而心跳-Oracle Heartbeat研究 January 19, 2006
    在Oracle中有一个事件叫Heartbeat,这个词在很多地方被提及,并且有着不同的含义(比如RAC中),我们这里要讨论的是CKPT的Heartbeat机制。

  • Oracle HowTo:如何更改数据库的SCN? January 17, 2006
    很多时候,我们需要调整数据库系统的SCN值,有的是为了恢复的需要,如为了解决ORA-600 2662错误.

  • How Big SCN can be? January 16, 2006
    oracle 内部使用了一个4G范围的数据来表示01/01/1988 00:00:00 ~ 08/18/2121 06:28:15 这段时间.它的算法简单,说来就是每个月都是用的31天来表示时间,每增加1秒,这个数值就增加1.

  • Oracle HowTo:How to get Oracle SCN? January 6, 2006
    如何获得当前数据库的SCN值...

  • Oracle HowTo: How to deal with Ora-600 4193 error December 30, 2005
    在解决2662错误之后,经常会出现Ora-00600 4193错误,经常可以在alert文件中看到的错误号类似

  • what is SMON_SCN_TIME ? December 27, 2005
    SMON_SCN_TIME是Oracle数据库的系统表,用以进行辅助恢复等功能。 在Oracle9iR2中,SMON_SCN_TIME每5分钟被更新一次。

  • Oracle HowTo:如何强制刷新Buffer Cache December 22, 2005
    很多时候,为了排除Cache对于测试的影响,我们常常需要手动刷新Buffer Cache,以促使Oracle重新执行物理访问。

  • Oracle Diag:如何处理ORA-600 2662错误 December 20, 2005
    在ORA-00600 2262错误解决一文中,我曾经提到过,很多时候使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库,我们可能会由于SCN不一致而遭遇到ORA-00600 2662号错误,这里给出一个完整的例子及解决过程。

  • db_file_multiblock_read_count and Oracle IO size December 14, 2005
    db_file_multiblock_read_count的设置要受OS最大IO能力影响,也就是说,如果你系统的硬件IO能力有限,即使设置再大的db_file_multiblock_read_count也是没有用的

  • How Oracle Store Number internal? December 11, 2005
    Oracle Number Store Internal Dump

  • Oracle Diagnostics:How to deal with ORA-19815 December 5, 2005
    这个10g的数据库最近数据量狂增,每天产生大约5~6个G的归档

  • 案例:Move系统表DEPENDENCY$导致索引失效的数据库故障 November 18, 2005
    今天看到有一个朋友因为Move了一个系统表DEPENDENCY$,在没有Rebuild索引的情况下,重起数据库,结果收到ORA-01502错误,数据库无法启动

  • Linux上shmmax参数的设置及含义 November 17, 2005
    shmmax内核参数定义单个共享内存段的最大值,如果该参数设置小于Oracle SGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。

  • ORA-00600 2662错误解决 October 24, 2005
    继续上一个测试,使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库后,我们说很多时候你会遇到ORA-00600 2662号错误,这个错误的含义是:
    A data block SCN is ahead of the current SCN.
    The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN
    stored in a UGA variable.
    If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]
    internal error.
    在测试中,很容易模拟这个错误

  • 了解raw trace文件的各项内容 October 23, 2005
    我们知道有几种方法可以得到一个SQL语句执行时后台的trace文件,一个是用SQL_TRACE,一个是用DBMS_SUPPORT包或者DBMS_SYSTEM包,还有一种就是直接使用10046 event。

  • Oracle Hidden Parameter:_allow_resetlogs_corruption October 19, 2005
    提示:Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用。 在使用_disable_logging进一步的测试中,试图通过switch logfile进行日志切换,结果重起居然报出日志文件损坏。 SQL> startup ORACLE instance started. Total System Global Area 97588504 bytes Fixed Size 451864 bytes Variable...

  • Oracle Hidden Parameter:_disable_logging October 19, 2005
    提示:Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用。
    从Oracle的系统表中,我们知道Oracle存在一个隐含参数_disable_logging可以用于禁用日志生成,这个参数显然只能用于测试目的(可以极大提高Benchmark测试的性能),禁止日志生成必然导致事务的不可恢复性。

  • ORA-00600 [2662]错误解决过程 October 19, 2005
    ORA-600 [2662] "Block SCN is ahead of Current SCN",说明当前数据库的数据块的SCN早于当前的SCN,主要是和存储在UGA变量中的dependent SCN进行比较,如果当前的SCN小于它,数据库就会产生这个ORA-600 [2662]的错误了。这个错误一共有五个参数,分别代表不同的含义

  • What's mean Oracle PE lock from v$lock? October 19, 2005
    今天同事维护一个数据库,说观察到大量的PE锁竞争: 14:44:34 SQL> select * from v$Lock; ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK -------- -------- ----------...

  • 关于proof阵营和voodoo阵营的论战 September 21, 2005
    所谓的proof阵营,这是我自己起的名字,包含我们所尊敬的Tom,JL等大师。 所谓的voodoo阵营,这是根据Howard J. Rogers发表的Voodoo Tuning一文而来,eygle在Howard J. Rogers创造的新词组:Voodoo Tuning中也谈过一些看法,包括我们所熟知的(此处未用尊敬一词,个人立场已经很是鲜明,惭愧惭愧)Don,Mike等专家。 之所以又提到这个由来已久的论战,是因为今天收到dba-oracle的邮件,提到Mike Ault有新作describing the current Oracle myths and traps发表,但是邮件上给你URL居然不对,ft......于是就直接上dba-oracle找了一下,如果没有更新的文章的话,那么应该是这篇 Oracle Myths Revisited,同时又注意到Mike Ault还有另外一篇...

  • How to repair corruption block use BBED? September 12, 2005
    前面我已经介绍了如何使用BBED模拟坏块,本文简要介绍如何使用BBED修复损坏的BLOCK。 1.备份数据文件 要想恢复损坏的文件,需要存在一个良好文件,本文简单冷备份一下文件. [oracle@jumper conner]$ cp users01.dbf users01.dbf.bak 2.修改BBED参数文件 加入备份文件 [oracle@jumper conner]$ vi filelist.txt 1 /opt/oracle/oradata/conner/system01.dbf 440401920 2 /opt/oracle/oradata/conner/undotbs01.dbf 104857600...

  • How to simulate block corruption with BBED? September 11, 2005
    使用BBED模拟数据块损坏

  • Sparse File And Oracle temporary tablespaces August 16, 2005
    实际上这是Unix/Linux的一个特性,Oracle的临时表空间,初始创建时,比如你指定14G,这个空间是延后分配的。

  • 数据文件SCN的一致性问题 August 6, 2005
    回答几个留言板上的问题

  • 如何使用sqlldr的WHEN判断加载数据到不同的数据表 July 3, 2005
    如果不选择分区表,可以使用此方式直接加载数据到不同的数据表中....

  • 如何从备份集中恢复归档日志 July 3, 2005
    这一类的操作是因为丢失了所有的控制文件,而RMAN的备份信息又存储在控制文件之中。
    所以只能使用DMBS_BACKUP_RESTORE从备份集中恢复数据文件、归档日志等进行恢复。


  • Oracle数据库诊断案例-redo log日志组处于高激活状态 June 26, 2005
    redo log日志组处于高激活状态

  • 使用Oracle9i的新特性Flashback Query恢复误删除数据 June 22, 2005
    下午接到研发工程师的电话,说误删除了部分重要数据,并且已经提交,需要恢复。
    登陆到数据库上查看,由于是Oracle9iR2,首先尝试使用flashback query闪回数据。


  • 使用Oracle9i的blockrecover新特性修复数据库中的坏块 June 12, 2005
    1.备份数据库 D:\>rman target / 恢复管理器: 版本9.2.0.6.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. 连接到目标数据库: EYGLE (DBID=1365961916)...

  • 使用dbv和RMAN检查数据文件中的坏块 June 11, 2005
    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....

  • 应对RMAN-06026错误,使用dbms_backup_restore进行恢复 June 11, 2005
    昨天做一个实验,结果把数据库搞坏了,当试图进行恢复时居然报了RMAN-06026错误。...

  • Jonathan Lewis: Can we have a sensible debate ? April 21, 2005
    看来Don Burleson从来都没打算停止狡辩,最近Don又提出了一个 “Empirical” vs. “Research” DBAs的论题,邀请Jonathan Lewis等人参与,feel free to join the discussion,我已经不止一次见Don搬出这句话来。 中间一段非常有意思: Jonathan说一开始Don就提出: Remember the rule here that everyone...

  • Control SCN of Undo Segments April 21, 2005
    在回滚段头有一个重要的数据结构称为:Control SCN.
    这个SCN是最近一个被重用的事务槽的SCN(重用是按事务的先后顺序重用的)。如果Control SCN比查询的Snapshot SCN新,那么Oracle不会试图去构造前镜像,而是马上返回ORA-01555错误,因为这个UNDO信息肯定已经被覆盖了。


  • 对即将上线的Oracle10g ASM生产数据库进行备份恢复测试 April 13, 2005
    对即将上线的Oracle10g ASM生产数据库进行备份恢复测试

  • Oracle10g已经废弃log_archive_start参数 April 13, 2005
    在Oracle10g中,log_archive_start参数已经被废弃,只要启动数据库的归档模式,Oracle就会启用自动归档,从而避免了10g以前由于用户疏忽所带来的一系列问题

  • Oracle10g新增的用以简化用户管理备份的命令 April 6, 2005
    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时间点进行恢复 April 5, 2005
    在Oracle10g以前,在进行了不完全恢复使用resetlogs选项打开数据库以后,Oracle建议你要立即进行全备份。
    因为日志序号会被置位,以防止后续日志被应用。resetlogs之前的备份将不能用于进行跨域resetlogs时间点的恢复。

  • 如何把数据导入不同的表空间? April 5, 2005
    很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。

  • 使用Rman进行不完全恢复 April 5, 2005
    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进行基于表空间的恢复 March 30, 2005
    示范案例,仅供参考: 1.察看备份文件 $ rman target / Recovery Manager: Release 10.1.0.2.0 - 64bit Production Copyright (c) 1995, 2004, Oracle. All rights...

  • 如何从自动备份中恢复控制文件和SPFILE文件 March 30, 2005
    启用了自动控制文件备份功能之后,在数据库发生重要改变或备份完成之后,会自动进行控制文件备份,同时备份SPFILE文件

  • 通过Oracle10g的flashback transaction query新特性进行事务撤销 March 30, 2005
    具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.
    这就是flashback transaction query。flashback transaction query可以从FLASHBACK_TRANSACTION_QUERY中获得指定事务的历史信息以及Undo_SQL,通过这个UNDO_SQL,我们就可以恢复特定的事务。


  • Oracle10g的Flashback version Query March 30, 2005
    Oracle10g通过Flashback Version Query提供查看对数据库事务级改变的方法.当闪回事务处理查询与闪回版本查询同时使用时,我们可以轻易地从用户或者应用程序错误恢复。

  • 使用Oracle10g的Flashback Query进行数据闪回 March 30, 2005
    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 新特性 March 29, 2005
    为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。
    而在以前的版本中,除了不完全恢复,通常没有一个好的解决办法。
    Oracle 10g的flashback drop功能,允许你从当前数据库中恢复一个被drop了的对象,在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。


  • 使用Oracle10g Flashback database功能恢复用户错误 March 29, 2005
    Flashback Database是Oracle10g的新增功能,在启动Flashback Database之后,它定期将已发生变化的块写入闪回日志的日志文件中。这些日志不是由传统的Log Writer (LGWR) 过程写入,而是由一种称作Recovery Writer (RVWR)的新过程写入。这是Oracle10g的新增进程。

  • 如何启用Oracle10g闪回数据库特性 March 29, 2005
    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新特性 March 29, 2005
    Block chage tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。

  • Oracle10g备份集压缩新特性(Backupset Compression) March 29, 2005
    Oracle10g允许你和BACKUP命令伴随使用AS COMPRESSED BACKUPSET字句,对备份集进行压缩。

  • 使用COPY的镜像文件进行基于表空间/数据文件的恢复 March 28, 2005
    假设数据文件或表空间丢失之前进行了镜像COPY备份,那么以下过程可以用于参考恢复

  • 使用Oracle10g新特性简化数据库镜像COPY March 28, 2005
    镜像拷贝是单个数据文件、归档日志或者控制文件的额外拷贝,不以RMAN的格式存储。镜像拷贝的文件和执行操作系统级拷贝的文件一样,RMAN进行重建或者恢复操作时,可以使用镜像拷贝,当然手工操作也可以使用。

  • Oracle10g如何释放flash_recovery_area,解决ORA-19815错误 March 28, 2005
    Oracle10g中释放flash_recovery_area,解决ORA-19815错误,一个示范案例

  • 重建控制文件恢复丢失表空间一例 March 25, 2005
    以下案例用以说明重建控制文件的恢复机制。 案例假设在备份之后,新建表空间,然后crash丢失所有控制文件和数据文件。 拥有所有日志及归档文件进行恢复。 1.数据库状态 [oracle@standby oracle]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Fri Mar 25 13:56:54...

  • Oracle10g的ASH及历史信息记录 March 18, 2005
    性能调整和问题诊断是任何数据库管理人员必须面临的最大挑战和必须完成的重要管理任务。基于管理上的简化和易用性的努力,Oracle推出了Autometic Database Diagnostic Monitor (ADDM) ,通过ADDM,Oracle试图使数据库的维护工作变得更简单更容易

  • 使用ERRORSTACK进行错误跟踪及诊断 March 16, 2005
    诊断事件可以在Session级设置,也可以在系统级设置,通常如果要诊断全局错误,最好在系统级设置....

  • Oracle10g的UNDO_RETENTION自动化管理增强 March 15, 2005
    在AUM模式下,我们知道UNDO_RETENTION参数用以控制事务提交以后undo信息保留的时间。该参数以秒为单位,9iR1初始值为900秒,在Oracle9iR2增加为10800秒。但是这是一个NO Guaranteed的限制。

  • 使用RMAN的备份及恢复一例-丢失所有控制文件 March 9, 2005
    使用RMAN的备份及恢复一例-丢失所有控制文件

  • 使用Oracle9i的自动控制文件备份功能 March 9, 2005
    在启用了自动备份以后,在数据库发生文件变化或备份等任务时,数据库会自动备份控制文件。
    如果丢失了所有的控制文件及数据文件,我们可以尝试从自动备份中恢复控制文件及spfile文件。


  • 如何重建UNDO TABLESPACE March 4, 2005
    MSN上有朋友问到,在迁移(同平台)的时候由于空间问题,他不打算要现在的UNDO文件,想要重建一个。他打算使用_corrupted_rollback_segments参数。

  • Howard J. Rogers创造的新词组:Voodoo Tuning March 2, 2005
    Voodoo Tuning是HJR创造的一个词,用以形容那些没有及时更新自己的知识技能的所谓的Oracle技术专家

  • 让B*Tree索引一直向左走 February 26, 2005
    Jonathan Lewis在他的文章中,奇妙的利用B*Tree索引分裂的原则,通过24条记录就成功的构造出了24层的索引结构,从而验证了B*Tree索引的最大允许高度

  • 如何转储B*Tree索引的分枝结构 February 26, 2005
    Oracle允许对B*Tree索引进行转储,以显示B*Tree的层次结构。 示例如下: 1.首先选择要研究的索引 SQL> select index_name from user_indexes where index_name='I_BD_INVMANDOC_TS'; INDEX_NAME ------------------------------ I_BD_INVMANDOC_TS 2.找到该索引的object_id SQL> select object_id from dba_objects where...

  • B*Tree索引能有多高?--推荐Jonathan Lewis 的一篇经典文章 February 25, 2005
    有人说B*Tree索引最高能有24层,Lewis试图证明这个限制。

  • 关于redo copy latch的说明 February 11, 2005
    一个进程产生redo时首先需要获得redo copy latch,获得了该latch以后才能把redo拷贝到Log Buffer中。
    redo copy latch表明进程正在把redo拷贝入log buffer中,在此过程中,LGWR应该等待直到进程拷贝完成才能把目标Log buffer Block写入磁盘。


  • Log Block Size February 10, 2005
    LGWR以block为单位把redo写入磁盘,redo block size是Oracle源代码中固定的,与操作系统相关。 通常的操作系统都是以512 bytes为单位,如:Solaris, AIX, Windows NT/2000, Linux 等 这个Log size可以从Oracle的内部视图中获得: SQL> select max(lebsz) from x$kccle; MAX(LEBSZ) ---------- 512...

  • Oracle的X$表系列介绍之-X$KSMSP January 25, 2005
    X$KSMSP的名称含义为: [K]ernal [S]torage [M]emory Management [S]GA Hea[P]

  • Oracle基于时间点的恢复 January 17, 2005
    Oracle基于时间点的恢复能够精确到什么样的精度? 这是一个需要关心的问题。 以下测试用于进行一点说明。 1.首先做好冷备份 2.创建测试数据 D:\>sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.6.0 - Production on Mon Jan 17 11:56:43 2005...

  • Oracle的X$表系列介绍之-X$KSLLCLASS January 16, 2005
    X$KSLLCLASS--[K]ernel [S]ervice [L]ock [L]atches [CLASS] 从Oracle9iR2开始,Oracle允许对Latch进行分类,不同的分类可以用于不同的_SPIN_COUNT值。 这就避免了之前版本,一旦修改_SPIN_COUNT参数就会影响所有Latch的问题。从而可以在一定程度上控制该参数对于CPU的过量耗用。...

  • Rman Crosscheck删除失效归档 December 20, 2004
    当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。
    所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常。


  • 如何获得当前数据库的SCN值 December 16, 2004
    SCN(System Change Number) ,也就是通常我们所说的系统改变号,是数据库中非常重要的一个数据结构。

  • Oracle诊断事件列表 December 10, 2004
    经常有人问,Oracle有哪些诊断事件,各是什么含义,怎样使用? 这些问题问得太多太多,Oracle没有过多的说明,实际上也不需要太多的说明。 我们可以通过以下代码查询得到Oracle的诊断事件及说明,通过这些,我想就足够了。列举在这里给自己参考。

  • 在Oracle9i中,如何监视索引并清除监视信息 December 4, 2004
    对于DML操作来说,索引对于数据库是一个性能负担.如果索引没有被有效的使用,那么其存在性就值得从新考虑. 从Oracle9i开始,Oracle允许你监视索引的使用

  • Oracle X$ table 参考手册 November 17, 2004
    Oracle X$ table 参考手册,来自Metalink....

  • 使用热备份进行分时恢复 November 15, 2004

    很多时候你可能遇到这样的情况:
    一个大型数据库的迁移,但是只有很少的停机时间,这看起来充满困难。可是我们可以通过各种方法来缩短停机时间.



  • 用Rman的Plus archvielog选项简化数据库备份 November 4, 2004
    Oracle9i开始Rman提供plus archivelog选项,极大的简化了Rman备份的操作。

  • 关于shared pool的深入探讨(一) October 31, 2004
    关于shared pool的设置一直是一个争议较多的内容,很多文章上说,shared pool设置过大会带来额外的管理上的负担,从而在某些条件下会导致性能的下降. 那么这个管理上的负担指的是什么内容呢?

  • 关于shared pool的深入探讨(二) October 31, 2004
    由此我们可以看出,如果数据库系统中存在大量的硬解析,不停请求分配free的shred pool内存 除了必须的shared pool latch等竞争外,还不可避免的会导致shared pool中产生更多的内存碎片 (当然,在内存回收时,你可能看到chunk数量减少的情况)

  • 关于shared pool的深入探讨(三) October 31, 2004
    Library cache由一个hash表组成,而hash表是一个由hash buckets组成的数组. 每个hash bucket都是包含library cache handle的一个双向链表。 Library Cache Handle指向Library Cache Object和一个引用列表. library cache对象进一步分为:依赖表、子表和授权表等

  • 关于shared pool的深入探讨(四) October 31, 2004
    Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin,Lock比pin具有更高的级别. Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定. 锁定主要有三种模式: Null,share,Exclusive.

  • 关于shared pool的深入探讨(五) October 31, 2004
    Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin. Lock比pin具有更高的级别. Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.

  • 关于shared pool的深入探讨(六)-高Latch竞争案例 October 31, 2004
    我们注意到,在当前数据库中竞争最严重的两个latch是shared pool和library cache. 显然这极有可能是SQL的过度解析造成的.

  • 丢失所有文件、拥有全备份,缺少后增加的文件 October 14, 2004
    此案例丢失控制文件,从备份控制文件进行恢复,在进行恢复中,会向控制文件中以缺省规则增加文件,我们可以通过CREATE AS方式修改控制文件中记录.继续应用所有归档和日志文件可以完成恢复.

  • 无文件备份、拥有所有归档的恢复 October 13, 2004
    此案例拥有当前控制文件,控制文件中包含了丢失文件信息,所以可以通过create datafile方式重新创建文件...

  • Use RMAN to Manage BackupSet October 12, 2004
    With Oracle 9iR2, We have a new way to let RMAN to manage backupset better. That is CONFIGURE RETENTION POLICY command .

  • Undo Internal的研究 September 19, 2004
    本文就Undo的内部结构作初步探讨,我们通过实验来看一下回滚段的内部结构.

  • 数据块转储及RDBA的转换 August 31, 2004
    很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下...

  • Nologging到底何时才能生效? July 13, 2004
    我们知道,Nologging只在很少情况下生效,通常,DML操作总是要生成redo的 关于Nologging和append,一直存在很多误解,经过一系列研究,终于发现了Nologging的真相....

  • Oracle中临时表产生过量Redo的说明 July 3, 2004
    我们知道临时表在DML操作中可以减少redo的生成,从而在保存中间结果集时可以带来较大的性能提高

  • Oracle中Kill session的研究 June 25, 2004
    我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程....

  • Oracle中模拟及修复数据块损坏 June 24, 2004
    通过试验模拟及解决数据块损坏...

  • 关于checkpoint cnt和checkpoint scn June 22, 2004
    Checkpoint cnt用于保证在正常操作中使用的数据文件是当前版本 在恢复时防止恢复数据文件的错误版本.Checkpoint cnt是一直递增的,即使表空间处于热备份模式.

  • 关于数据文件头信息记录 June 17, 2004
    这个测试的起因是一些朋友讨论,Oracle在恢复时从何处获得日志文件名信息. 因为如果在重建控制文件的过程中,控制文件中的信息显然已经被清空了.

  • 关于ASSM HWM的研究 June 15, 2004
    HWM移动遵循: 每次移动32个blocks,但是HWM包含未格式化的block,每次格式化16个block或者16 –metadata blocks

    More......

 

 

 

CopyRight © 2004 ~ 2012 eygle.com, All rights reserved.