白鳝的洞穴 ( 白鳝与Oracle的亲密接触 ) 给他(她)留言   |  相册  |  回到专栏  |  管理  |   登录  博客首页
白鳝在工作中的点滴积累,不仅仅包括技术的
白鳝
  •    我的栏目
  •   我的文章
      Oracle杂谈
      内部分析
      优化
      案例
      小技巧
      BUG与故障
      SQL与PL/SQL开发
      DBA日记
      IT长篇小说第一部:IT的I
  •    最新文章
  •   DBA日记第三部 像Oracle一样
      DBA日记第三部 像Oracle一样
      DBA日记第三部 像Oracle一样
      DBA日记第三部 像Oracle一样
      DBA日记第三部 像Oracle一样
      CPU_COUNT对共享池的影响
      DBA日记 第三部 像Oracle一样
      DBA日记 第三部 像Oracle一样
      3月24日 简单任务 (1)令人
      3月23日 理解表的存储结构 (
  •    最新评论
  •   [HadaVopsesoto]   Would you like to play solitaire against real persons?
      [飞帆]   回复:DBA日记第三部 像Oracle一样思考 3月28日 理解索引(1)
      [xhh]   回复:健康性检查
      [jimlist]   回复:Oracle常用EVENT参考(3)
      [edwards6309]   回复:DBA日记第三部 像Oracle一样思考 4月2日 索引危机(3)效果不错
      [eagle_fan]   回复:DBA日记第三部 像Oracle一样思考 4月2日 索引危机(3)效果不错
      [白鳝]   回复:DBA日记第三部 像Oracle一样思考 4月2日 索引危机(3)效果不错
      [白鳝]   回复:DBA日记第三部 像Oracle一样思考 4月2日 索引危机(3)效果不错
      [killkill]   Re:DBA日记第三部 像Oracle一样思考 4月2日 索引危机(3)效果不错
      [sir.liang]   回复:健康性检查
  •    博客统计
  •   文章 - 166
      评论 -772
      访问 - 57821
  •    友情链接
  •    
      一个JAVA故障的处理过程 2010-3-11 0:04:07
    今天碰到一个案例,虚惊了一场。一个客户说今天换了块板子,重启数据库的时候数据库启动后很快就宕了,ALERT LOG信息如下:Errors in file /oracle/app1/oracle/product/9.2/admin/xxxlyg/udump/xxxlyg_ora_4964.trc:ORA-07445: 出现异常: 核心转储 [kgllkdl()+3072] [SIGSEGV] [Address not mapped to object] [0x290000000000008] [] []Wed Mar 10 21:52:12 2010Errors in file /oracle/app1/oracle/product/9.2/admin/xxx/udump/xxxlyg_ora_4894.trc:ORA-00600: 内部错误代码,参数: [26599], [1], [229], [], [], [], [], []ORA-29549: 类SYS.oracle/jdbc/dbacc我问客户做了什么改动,客户说没有任何改动,只是正常SHUTDOWN,然后关机,换板子,重启服务器,再重启数据库,数据库启动后,LISTENER一启动,数据库就报错宕了。我查了一下,发现有两个BUG和这个情况类似:Bug 3691672和 Bug 2882661 ,于是建议客户先打PATCH 3691672,并且建议客户查查JVM有没有什么问题。由于这是一个限制性PATCH,于是找人下补丁。对于BUG 2882661,可以通过下面的方法修复JVM:begin    initjvmaux.rollbacksetup;commit;    initjvmaux.rollbackset;delete from java$rmjvm$aux;commit;    initjvmaux.rollbackset;insert into java$rmjvm$aux (select joxftobn from x$joxfc where bitand(joxftflags,96)=0);commit;    initjvmaux.rollbackset;delete from java$rmjvm$aux where obj# in    (select obj# from obj$ where type#=29 and    mtime>(select date_loaded from registry$ where cid='CATPROC'));commit;    initjvmaux.rollbackset;delete from dependency$ where d_obj# in (select obj# from java$rmjvm$aux);    commit;initjvmaux.rollbackset;    update obj$ set status=5 wheretype#=29 and obj# in (select obj# from java$rmjvm$aux);    commit;initjvmaux.rollbackset;    delete from java$rmjvm$aux;commit;   

    点击此处查看原文
    评论 (0)阅读(469)
      一个CURRENT REDO LOG损坏,强制打开数据库的案例 2008-10-25 19:49:14
    今天无廛之氓的数据库由于CURRENT的REDO LOG损坏而无法打开了。当时他先将所有的数据文件以及控制文件,REDO LOG文件等拷贝到了一台测试机,并准备在测试机上打开数据库,并导出数据。碰到这种情况首先备份数据是十分好的做法。以下是当时的聊天记录,希望大家碰到类似问题可以参考。无廛之氓(8819616) 18:39:37   日志文件坏了。   但是我在alter database recover database until cancel,结果报错。   ora-00279,00289,00280   非归档模式。   我把生产库拷贝出来了。在一个测试环境里。建了一个和生产库一模一样的生产环境。白鳝-shenzhen(62565) 18:56:03   设置_ALLOW_RESETLOGS_CORRUPTION = TRUE   然后尝试打开数据库无廛之氓(8819616) 18:57:27   00283,01124   报这个错,system01.dbf   是8.17的版本。   提示我正在恢复或正在使用中。白鳝-shenzhen(62565) 19:01:05   先recover database until cancel;   然后随便输入一个文件名   提示找不到后输入cancel   然后alter database open resetlogs;无廛之氓(8819616) 19:03:25   recover database until cancel;告诉我介质恢复完。   然后我alter database open resetlogs,告诉我ora-00603白鳝-shenzhen(62565) 19:04:35   那应该报ORA-600了吧无廛之氓(8819616) 19:04:43   没有。白鳝-shenzhen(62565) 19:05:19   看alert log无廛之氓(8819616) 19:06:15   错误提示是:oralce server session by fatal error   有600   alert文件里有报00600   internal error code:argument ,后面一大堆数字要不要报出来?   [2662]白鳝-shenzhen(62565) 19:13:22   2662,SCN不一致无廛之氓(8819616) 19:13:33   [2662],[0],[243126373白鳝-shenzhen(62565) 19:14:02   需要ADJUST_SCN   http

    点击此处查看原文
    评论 (6)阅读(3235)
      一个ORA-600 [729]的案例 2008-9-26 9:56:48
    ORA-600[729]一般来说是会话LOGOFF的时候发现小型的内存泄露。其堆栈上可以看到:opilof ,这说明是在LOGOFF的时候发现的内存泄露。 ORA-00600: internal error code, arguments: [729], [144], [space leak], [], [], [], [], []从TRACE中看到:

    点击此处查看原文
    评论 (5)阅读(1859)
      一个使用柱状图的案例 2008-7-28 18:22:18
    客户的系统突然WIO超高:09:02:23 %usr %sys %wio %idle09:02:24 15 3 79 409:02:25 6 4 86 409:02:26 5 3 92 009:02:27 8 2 89 109:02:28 10 3 82 509:02:29 7 2 90 109:02:30 7 2 91 009:02:31 5 4 90 109:02:32 6 1 87 6通过STATSPACK报告看到:Instance Efficiency Percentages (Target 100%)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Buffer Nowait %: 98.84 Redo NoWait %: 100.00Buffer Hit %: 20.33 In-memory Sort %: 100.00Library Hit %: 94.41 Soft Parse %: 89.96Execute to Parse %: 2.39 Latch Hit %: 99.53Parse CPU to Parse Elapsd %: 95.73 % Non-Parse CPU: 98.75Top 5 Timed Events~~~~~~~~~~~~~~~~~~ % TotalEvent Waits Time (s) Ela Time-------------------------------------------- ------------ ----------- --------db file sequential read 153,738 920 67.67CPU time 377 27.73buffer busy waits 4,820 26 1.91db file parallel write 1,776 12 .86SQL*Net message from dblink 23,712 9 .67-------------------------------------------------------------DB CACHE的命中率只有20%,经过检查发现有几个TOP SQL:SQL ordered by Reads for DB: PCS Instance: pcs Snaps: 654 -655-> End Disk Reads Threshold: 1000CPU ElapsdPhysical Reads Executions Reads per Exec %Total Time (s) Time (s) Hash Value--------------- ------------ -------------- ------ -------- --------- ----------369,695 14 26,406.8 21.6 26.49 143.65 1920692241Module: 。。。 (TNS V1-V3)select a.filename, b.source_id, b.source_path, b.localnet_abbr from SCH_XXXXX a, source b where a.deal_flag='W' anda.validflag='Y' and b.pipe

    点击此处查看原文
    评论 (3)阅读(2228)
      ORA-1591的补充说明 2008-5-10 10:28:43
    前几天流沙的ORA-1591问题,由于是QQ对话,可能对于对ORA-1591缺乏经验的人来说不容易看懂,本帖针对这个问题进行进一步的介绍。这样参考那个实例就可以更加清晰的了解ORA-1591问题了。 ORA-01591: "lock held by in-doubt distributed transaction %s" Cause: Trying to access resource that is locked by a dead two-phase commit transaction that is in prepared state. Action: DBA should query the pending_trans$ and related tables, and attempt to repair network connection(s) to coordinator and commit point. If timely repair is not possible, DBA should contact DBA at commit point if known or end user for correct outcome, or use heuristic default if given to issue a heuristic commit or abort command to finalize the local portion of the distributed transaction. 总的来说ORA-1591的产生原因是分布式事务失败,失败的原因很多,比如网络问题、XA资源管理器存在BUG等,都可能引起失败。一旦分布式事务失败,本地事务中,如果有一个事务挣处于活跃状态,那么该事务相关的数据就会被锁定(无论读写都会被锁定),如果访问这个事务关联的数据,就会报ORA-1591。一般情况下,ORA-1591可以自动的解开,SMON会在一定时间周期内检查DBA_2PC_PENDING,找出需要回退的事务,并进行自动的恢复。这里就有几个问题,由于分布式事务超时判断以及RECO处理周期的关系,一般来说事务自动恢复的时间为1分钟以上,较长的可以达到5-10分钟。可能会对生产系统造成比较大的影响。为了加快解锁,可以使用手工处理。这个时候可以使用ROLLBACK FORCE或者COMMIT FORCE。有时候由于分布式事务恢复出现故障,会出现数据字典不一致,此时该分布式事务就无法正常解除,需要手工干预来处理。分析方法:1、检查分布式事务的状态:SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE, MIXED, HOST, COMMIT#FROM DBA_2PC_PENDINGWHERE LOCAL_TRAN_ID = '报错的本地事务号'2、检查分布式事务相关其他节点的情况:

    点击此处查看原文
    评论 (5)阅读(2882)
      一个ORA-1591问题的处理过程 2008-5-6 17:35:35
    数据库总是报错:Tue May  6 13:44:47 2008                                                                                                            SMON: about to recover undo segment 119                                                                                             ORACLE Instance topcs2 (pid = 11) - Error 1591 encountered while recovering tran                                                    saction (119, 18) on object 2309045.                                              &n

    点击此处查看原文
    评论 (8)阅读(2749)
      一个CRS故障的分析案例 (续) 2008-5-4 11:03:12
    压力测试进行的不算顺利,大开销SQL确实导致了大量的换页,不过换页消耗的CPU资源不超过50%,IO繁忙程度也与OSW上看到的有一定的差距。因此无法判别是由于压力不足,导致无法重现3月3日的场景,还是换页不会导致3月3日的场景。通过对crs日志的分析,看到了vip超时的信息,这和其中一次宕机前看到的现象类似,但是vip超时并没有引起宕机。反复进行了3次测试,结果都是如此。此时已经是晚上8点半了,晚上吃饭的时候,大家喝了点酒,表面上也是有说有笑,不过我感觉压在大家心头的那块石头并没有放下。对于这种十分关键的业务系统,如果这个问题不解决,就像头上悬了一把剑一样。回到酒店已经晚上10点半了,由于周五还有一个重要的会议,因此我必须周四回深圳,所以留给我的时间不足2天了。我又花了一个多小时的时间,在BUG库中寻找相似的案例。通过比较,发现绝大多数案例最终都和OS有关,并不是由于Oracle 引起的。由于压力测试无法证明我的推断,因此问题定位可能无法马上做出。但是我不能象Philippe 一样等待下一次宕机,我必须做点什么。因此我必须整理一下思路:1、首先,RAC有2个实例,而两套RAC都出现过宕机,并且只有实例1会发生宕机2、从系统资源上看,实例1上的空闲内存比例较低,而实例2上一般都有超过1G的空闲内存3、两套系统的实例1上都有DSG,但是从DSG的开销上来看,并不大。我判断DSG不是引起问题的根源,不过DSG会有一定的推波助澜的作用,因为DSG有大量的文件操作,会加大BUFFER/CACHE的使用,从而减少物理内存。DSG可能是引起节点1的物理内存较少的原因,而不是宕机的原因4、应用不应该是造成问题的根源,应用都是一些十分小型的事务,每个SQL的执行时间都是毫秒级的。而且在业务最繁忙的时期,应用消耗CPU均在10%以下5、3月3日的宕机前有大量的SYS CALL,并且系统盘的IO十分高,从内存监控看,空闲内存很小,几乎用尽,大多数内存都在BUFFER/CACHE里。十分类似宕机前产生过大量的SWAP。推断可能是由于某个突发业务导致物理内存不足,产生大量换页。从而导致CSSSD无法获得CPU时间片,相关线程通讯超时,实例2误判为实例1宕机,发生驱逐行为,从而导致实例1宕机。6、实例重启是由于RAC分裂引起,RAC分裂的主要原因是由于实例2发现和

    点击此处查看原文
    评论 (10)阅读(3012)
      一个CRS故障的分析案例 2008-5-1 18:59:21
    一、背景资料操作系统:redhat linux as4 update4  Linux yhshora1 2.6.9-42.ELlargesmp #1 SMP Wed Jul 12 23:46:39 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux数据库版本:10.2.0.3 CRS版本:10.2.0.3BUNDLE PATCH:6160398  节点数量:2故障描述:  系统上线后,每隔一段时间(周期不定,从几天到10多天),其中一个节点会莫名其妙的重启。甚至在系统负载很轻的时候(临晨3点多)也会莫名其妙的重启。客户已经在METALINK上开了SR,Oracle的Philippe 负责跟进这个SR,要求采集了RDA数据,由于没有操作系统的情况,建议客户安装了OSWATCH。由于缺乏资料,Philippe 无法进行进一步的分析,SR处于PENDING状态。3月初,在业务高峰,CRS再次重启,此次OSW采集了部分操作系统信息,而由于缺失部分Oracle后台进程的日志,Oracle方面的分析仍然无法顺利进行。Philippe 建议:We just can delay the reboot, but the clusterware need to reboot the blocked system to avoid full database hangs.The remaining instance and system is blocked during that time (during the reconfiguration or because the failingnode is holding some locks/buffer needed by the other node). So, it is always possible todelay the reboot a bit, but at the expense of a longer hanging situation for the remaining node.note:284752.1 explains how to change the css timeout value. It is set today to 60 (seconds), but can be set to 300 totry to avoid that an eviction get declared rapidly. It then give 5min to the blocked system to recope from the activityblocking everything (instead of 1min). 并建议安装如下补丁:Please install the patch:5679560 (see note:5679560.8). It will update the init* files with scripts that are morerobust agains sporadic cpu shortages, i.e. they don't trigger a potentially unnecessary reboot dueto bug:5679560. They can also log something more in case of problems in the /var/log/messagesPlease keep collecting the oswatcher data afterwards for a while (in case of).由于客户的系

    点击此处查看原文
    评论 (4)阅读(3500)
      人多嘴杂的时候如何保持清醒的头脑 2008-4-30 14:47:56
        这几天处理了一个案例,我想很多经验可以和大家共享。客户那边在测试一个应用,在一台SUN 4900,带一个盘阵,16块盘,每8块组成一个RAID 0,然后组成RAID 0+1,只划了一个LUN,安装的是Solaris 10,数据库版本是10.2.0.3。在测试的时候,他们发现某个应用模块,第一次执行48秒,第二次执行1分半,每次执行都会比前一次慢几十秒,如果SESSION重新连接,又会恢复为48秒,然后逐渐衰减。后来他们在一台安装了WINDOWS虚拟机的微机上进行测试,发现在微机上运行十分稳定,都是平均25秒左右。这里就有2个问题了,1是为什么SUN 4900比微机还要慢那么多,2是为什么会越执行越慢。    我是晚上7点左右到达客户现场的,由于临近5.1假期,因此时间十分宝贵。英国那边已经安装了相同的环境,并且也模拟出了我们这边的现象,老外告诉我们,他们肯定能找到问题的原因,但是需要的是时间。而对于这个项目来说,最缺乏的也是时间。    我到达现场的时候,会议室里坐的满满的,今天晚上是最后的期限,如果无法解决这个问题,可能会导致项目的失败。所以大家都很紧张。在火车上,我就一直在想如何处理这个问题,我让同事帮我查了ORACLE的BUG数据库,希望能够找到ORACLE 10G在SUN 10上关于性能的BUG,在我临下火车的时候,那边的反馈结果是没有发现明显的和Solaris 10相关的BUG。在火车上,我也接到了现场的几个电话,给我介绍现场的情况,因为事情紧急,他们也希望我在火车上就开始工作。在去现场的路上,我理了理思路,这种情况,应用和数据库、操作系统混合在一起,要在一晚上发现问题也确实有些难度,因此在晚上的分析过程中,不能走太多的弯路,否则时间就不够了。    在火车上和现场的交流中,给我的第一印象是,数据库性能存在问题,这个性能问题可能和SOLARIS 10有关。而从同事给我的信息里,在SOLARIS 10上,10.2没有明显的和性能相关的BUG。因此我决定还是从应用入手分析问题。而这个计划一到客户现场就被打乱了。到达现场后,我首先简单了解了问题,以及以前他们做的一些工作。这个问题是几天前发现的,开始定位为Oracle的问题,这段时间里已经有好几批DBA对数据库进行了各种各样的优化,但是没有任何效果。他们也测试了写一个小的程序,分别在小型机上和微机上跑,测试的结果是微机快于小型机。具体之前做了哪些优化,由于没有留下任何文档,因此无从考证。所以

    点击此处查看原文
    评论 (4)阅读(2222)
      一个ORA-4031故障的处理案例 2008-4-13 19:14:56
    客户的一个9207 RAC因为ora-4031导致了宕机。分析4031问题,如果是事后,那么TRACE文件是最好的分析工具,我们来看4031 TRACE里各种对象的情况:===============================Memory Utilization of Subpool 1===============================     Allocation Name          Size   _________________________  __________"free memory              "    32773512  "miscellaneous            "    15862600  "partitioning i           "           0  "sim trace entries        "      245760  "gcs resources            "    21925568  "PL/SQL DIANA             "      401496  "trigger defini           "           0  "KQR M PO                 "       49688  "krvxrr                   "      253056  "trigger inform           "           0  "FileOpenBlock            "     6028960  "transaction          

    点击此处查看原文
    评论 (8)阅读(2568)
      全表扫描产生db file sequential read的问题分析 2008-3-31 18:40:13
    下午小荷问个问题:小荷(34120993) 16:05:11白大哥。。。。请教下update xxx set col_x=null 为啥等待事件数据文件单块读?小荷(34120993) 16:08:23如果是select全表。。。。做全表扫描,用数据文件的连续读。。。这个还能想通~~老网虫白鳝(62565) 16:08:22执行计划是全表扫描?小荷(34120993) 16:08:26是的老网虫白鳝(62565) 16:08:32把10046的TRACE发过来看看小荷(34120993) 16:08:38好的从TRACE上看:PARSING IN CURSOR #1 len=24 dep=0 uid=262 oct=6 lid=262 tim=13304830119245 hv=1237939612 ad='7824b328'update txx set line=nullEND OF STMTPARSE #1:c=0,e=610,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=13304830119233BINDS #1:WAIT #1: nam='db file sequential read' ela= 4179 p1=116 p2=61450 p3=1WAIT #1: nam='db file sequential read' ela= 402 p1=116 p2=61451 p3=1WAIT #1: nam='db file sequential read' ela= 279 p1=116 p2=61452 p3=1WAIT #1: nam='db file sequential read' ela= 244 p1=116 p2=61453 p3=1WAIT #1: nam='db file sequential read' ela= 276 p1=116 p2=61454 p3=1WAIT #1: nam='db file sequential read' ela= 168 p1=116 p2=61455 p3=1WAIT #1: nam='db file sequential read' ela= 214 p1=116 p2=61456 p3=1WAIT #1: nam='db file sequential read' ela= 264 p1=116 p2=61457 p3=1WAIT #1: nam='db file sequential read' ela= 220 p1=116 p2=61458 p3=1WAIT #1: nam='db file sequential read' ela= 247 p1=116 p2=61459 p3=1WAIT #1: nam='db file sequential read' ela= 271 p1=116 p2=61460 p3=1WAIT #1: nam='db file sequential read' ela= 276 p1=116 p2=61461 p3=1WAIT #1: nam='db file sequential read' ela= 260 p1=116 p2=61462 p3=1WAIT #1: nam='db file sequential read' ela= 167 p1=116 p2=61463 p3=1WAIT #1: nam='db file sequential read' ela= 1924 p1=116 p2=61464 p3=1WAIT #1: nam='db file sequential read' ela= 255 p1=116 p2=61465 p3=1WAIT #1: nam='db file sequential read' ela= 234 p1=116 p2=61466 p3=1WAIT #1: nam='db file sequential read' ela= 205 p1=116 p2=61467 p3=1WAIT #1:

    点击此处查看原文
    评论 (3)阅读(2402)
      笋干的ORA-7445问题 2008-3-28 16:23:56
      交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。笋干 16:01:51我的alert.log   文件“编辑5.TXT”已经成功接收。 打开文件  打开文件夹  转存至QQ网络硬盘老网虫白鳝 16:05:35/home/oracle/opt/oracle/admin/fzmccbk/udump/ora_5235.trc老网虫白鳝 16:05:40这个文件笋干 16:05:47好的,马上老网虫白鳝 16:06:44和你系统慢关系不是很大   文件“ora_5235.trc”已经成功接收。 打开文件  打开文件夹  转存至QQ网络硬盘老网虫白鳝 16:09:14这个是因为你的分布式事务远端出问题了老网虫白鳝 16:09:30查看一下16:42分左右,远端是不是有ORA-1555之类的错误老网虫白鳝 16:09:51Create Table guan0325_2 As (Select msisdn,user_id,to_char(create_time,'yyyymmdd'),customer_id From users@to_30Where home_county=101 And user_brand=1016老网虫白鳝 16:10:01users@to_30笋干 16:10:09你是说另一台服务器的错误?笋干 16:10:16to_30的?老网虫白鳝 16:10:49是的DBLINK TO_30指向的数据库的ALERT LOG看看有没有错误,老网虫白鳝 16:11:012008-03-25 16:42:13.722 左右笋干 16:10:59ok,马上……笋干 16:15:52DBLINK to_30那台机器上好像25日没有什么错误……老网虫白鳝 16:16:36你把那台机器的alert log发给我笋干 16:16:2825日的?老网虫白鳝 16:16:54是的老网虫白鳝 16:17:05最近这几天的都可以   文件“新建 文本文档.txt”已经成功接收。 打开文件  打开文件夹  转存至QQ网络硬盘笋干 16:19:11这个吧,是最近几天的   文件“11.txt”已经成功接收。 打开文件  打开文件夹  转存至QQ网络硬盘老网虫白鳝 16:20:15远端是10G的库?笋干 16:21:25对笋干 16:21:3010201的老网虫白鳝 16:23:14901 连10201会有问题的,经常会出现故障老网虫白鳝 16:23:29Oracle不支持这种连接模式笋干 16:23:28那是不是要把两个都拿去升级比较好?老网虫白鳝 16:24:11

    点击此处查看原文
    评论 (7)阅读(3224)
      dbms_stats和analyze的一个小区别 2008-3-26 23:43:59
    Oracle真是有说不完的惊喜。今天客户问一个问题,问我怎么估算一下一张表里的LONG字段占用的空间。我想LONG字段是和表存储在一起的,怎么估算呢。我建议分析一下表,看avg_row_len,然后CTAS创建一个新表,除了LONG字段。再分析一下,然后相减,乘以2000万,就差不多能估算个大概了。客户分析后发现两个表的行长度相同。后来找到一个文档,8i的,说是DBMS_STATS统计的时候不统计LONG字段。这是一个Oracle的行为性BUG,在10G前不准备修改。在9i下做个实验验证一下:create table tlong (a integer,b long);SQL> insert into tlong values (1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');已创建 1 行。SQL> insert into tlong values (1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddddddddd');已创建 1 行。SQL> commit;SQL> exec dbms_stats.gather_table_stats('scott','tlong');PL/SQL 过程已成功完成。SQL> select avg_row_len from user_tableS where table_name='TLONG';AVG_ROW_LEN-----------          3 SQL> analyze table tlong compute statistics;表已分析。SQL> select avg_row_len from user_tableS where table_name='TLONG';AVG_ROW_LEN-----------         57我测试的版本是9.2.0.8,可见Oracle所言不虚,说不改正,就不改正(在10.2上的测试结果相同)。该贴被白鳝编辑于2008-3-26 23:44:50该贴被白鳝编辑于2008-4-6 9:17:02

    点击此处查看原文
    评论 (12)阅读(2299)
      从CLEANUP_ROLLBACK_ENTRIES说起 2008-3-14 13:22:57
    从一个已经过时快10年的参数开始说起,确实远了点。不过用过Oracle7和Oracle80的朋友肯定对这个参数有印象。如果一个大事务死了,那么是一件很痛苦的事情,因为要等PMON来进行回滚,而PMON为了保证不被大事务搞死,每次只处理该参数定义的那么多UNDO记录。因此大事务如果突然被中断,特别是处理事务的SESSION突然故障退出,那么事务的回滚十分缓慢。因此从Oracle 8i开始引入了一个新的机制,就是fast start parallel rollback机制,SMON可以使用并行恢复的机制来进行事务的恢复。通过并行恢复,来弥补以前大事务回滚机制的不足。fast_start_parallel_rollback可以设置为false,low,high。 不过并行恢复机制存在一些问题,有时候会导致恢复占用过多的CPU资源(如果设置为HIGH),也有可能导致并行恢复十分缓慢。如果你从:select * from v$fast_start_servers; 看到多个SERVER都在RECOVER,那么说明工作正常,如果只有一个是RECOVER,其他都是IDLE,那么这种情况下,并行恢复可能比旧的恢复机制还要慢。这个时候如果你想取消并行恢复,那么如果直接修改fast_start_parallel_rollback=false可能会HANG住,因为SMON正在做RECOVER。这个时候,可以按照Note:238507.1 How to Disable Parallel Transaction Recovery When Parallel Txn Recovery is Active中的方法: 1. Find SMON's Oracle PID: Example: SQL> select pid, program from v$process where program like '%SMON%'; PID PROGRAM ---------- ------------------------------------------------ 6 oracle@stsun7 (SMON) 2. Disable SMON transaction cleanup: SVRMGR> oradebug setorapid SVRMGR> oradebug event 10513 trace name context forever, level 2 3. Kill the PQ slaves that are doing parallel transaction recovery. You can check V$FAST_START_SERVERS to find these. 4. Turn off fast_start_parallel_rollback: alter system set fast_start_parallel

    点击此处查看原文
    评论 (3)阅读(2523)
      一个ORA-1114 ORA-27070错误的案例 2008-2-25 16:08:01
    今天客户出了一个很怪的事情,一个SQL,直接在服务器上登录就能够正确执行。如果通过SQL*NET,执行的时候报错:SQL>select cur_date, count(distinct serv_id)                                          from rt_rent_ticket_219                                                                  group by cur_date                                                *ERROR at line 1:ORA-01114: IO error writing block to file 1006 (block # 251913)ORA-27070: skgfdisp: async read/write failedHP-UX Error: 15: Block device requiredORA-01114: IO error writing block to file 1006 (block # 251913)ORA-27070: skgfdisp: async read/write failedHP-UX Error: 15: Block device required分析:1、这是DIRECT PATH WRITE的错误,由于GROUP BY和ORDER BY会产生硬盘排序。从文件号上看也是临时文件出错2、数据库上直接连接能执行,说明临时文件并没有问题3、检查该文件属性:brw-r-----   1 root       sys         64 0x040004 Jan 15  2007 /dev/vgjf02/lvjf02_2000_02crw-r-----   1 oracle     dba         64 0x040004 Jan 1

    点击此处查看原文
    评论 (5)阅读(3438)
      一个存储过程编译HANG住的分析 2008-2-25 9:45:31
    客户的一个库编译某个存储过程HANG住。查看了一下,也没锁方面没有什么问题。查看v$session_wait,发现在等待Library cache pin。建议他做一个3级的hanganalyze。结果如下:==============HANG ANALYSIS:==============Open chains found:Chain 1 : :    <48/29750/0x3ed60060/7856/PX Deq: Join ACK> -- <141/31823/0x3ed5d680/2291/library cache pin>  --被HANG住的SESSIONChain 2 : :    <76/16377/0x3ed554b0/6507/No Wait>Chain 3 : :    <98/8617/0x3ed65c80/4550/No Wait>Chain 4 : :    <117/43613/0x3ed55080/6505/No Wait>Other chains found:Extra information that will be dumped at higher levels:[level  4] :   4 node dumps -- [LEAF] [LEAF_NW] [IGN_DMP] [level  5] :   1 node dumps -- [NLEAF] [level 10] :  78 node dumps -- [IGN]  State of nodes([nodenum]/sid/sess_srno/session/state/start/finish/[adjlist]/predecessor):[0]/1/1/0x3ee65290/IGN/1/2//none[1]/2/1/0x3ee65c10/IGN/3/4//none[2]/3/1/0x3ee66590/IGN/5/6//none[3]/4/1/0x3ee66f10/IGN/7/8//none[4]/5/1/0x3ee67890/IGN/9/10//none[5]/6/1/0x3ee68210/IGN/11/12//none[6]/7/1/0x3ee68b90/IGN/13/14//none[8]/9/28264/0x3ee69e90/IGN/15/16//none[9]/10/45631/0x3ee6a810/IGN/17/18//none[10]/11/53468/0x3ee6b190/IGN/19/20//none[11]/12/1/0x3ee6bb10/IGN/21/22//none[12]/13/1/0x3ee6c490/IGN/23/24//none[13]/14/39041/0x3ee6ce10/IGN/25/26//none[16]/17/12002/0x3ee6ea90/IGN/27/28//none[17]/18/26556/0x3ee6f410/IGN/29/30//none[19]/20/7116/0x3ee70710/IGN/31/32//none[20]/21/57406/0x3ee71090/IGN/33/34//none[21]/22/43997/0x3ee71a10/IGN/35/36//none[22]/23/38835/0x3ee72390/IGN/37/38//none

    点击此处查看原文
    评论 (0)阅读(1517)
      分析索引ORA-3001 2008-2-14 16:10:35
    SQL> desc t1 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------- A                                                  NUMBER(38) B                                                  NUMBER(38) SQL> create index idx_t1 on t1(a,1);索引已创建。SQL> select * from t1;         A          B---------- ----------         1          2         1          2         1          2执行计划----------------------------------------------------------Plan hash value: 3617692013--------------------------------------------------------------------------| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |--------------------------------------------------------------------------|   0

    点击此处查看原文
    评论 (0)阅读(2323)
      ORA-600 [opixrb-4], [1036], [ORA-01036: 非法的变量名/编号] 2008-1-26 15:40:05
    ALERT LOG中存在大量 ORA-00600: 内部错误代码, 参数: [opixrb-4], [1036], [ORA-01036: 非法的变量名/编号718729  ], [], [], [], [], []错误信息:如果TRACE里发现类似的SQL,那么说明是由于BUG:4964703引起,触发该BUG的SQL为:Select 1from tbl_mfs@billwhere uid = :n

    点击此处查看原文
    评论 (1)阅读(2709)
      使用Opatch检查平台代码失败 2008-1-4 9:04:12
    你在使用opatch打补丁的时候是否碰到过类似的问题OPatch detects your platform as 453 while this Patch supports platforms: 23 (Sun SPARC Solaris (64-BIT))OPatch detects your platform as 610 while this patch supports platforms: 212 (AIX 5L (64-BIT))在HP-UX,AIX,SUN OS等平台上都可能出现类似的问题,其共同点就是数据库打过9.2.0.6的补丁包。其原因是9206补丁包错误的设置了aru_id,所以导致opatch检查平台的时候报错。解决方法如下:Solaris64 (Sparc 64) 修改$ORACLE_HOME/inventory/ContentsXML/oraclehomeproperties.xml 错误的文件 -- 453Solaris -- 修改为-- -- 23Solaris -- AIX64 (64 bit Oracle on AIX) 修改 $ORACLE_HOME/inventory/ContentsXML/oraclehomeproperties.xml 错误的文件 -- 610IBM_AIX -- 修改为 -- -- 212IBM_AIX -- HPUX 64 bits(PA-RISC) 如果9206的patchset是2004年12月2号前下载的就需要

    点击此处查看原文
    评论 (1)阅读(2081)
      AIX 5.3 TL5下常见的一个异步IO问题 2008-1-3 9:31:12
    AIX 5.3 TL5下,经常会出现ORA-1115: IO error reading block from file ? (block # ?)ORA-1110: data file #: nameORA-27091: skgfqio: unable to queue I/OORA-27072: skgfdisp: I/O error解决方案:1、在AIX上:升级到TL6或者打IY89080补丁包2、在Oracle上:打Patch:5496862 该贴被白鳝编辑于2008-4-6 9:35:43

    点击此处查看原文
    评论 (6)阅读(2730)
    找到符合条件的记录21条 每页显示20条 页次 1/1   1 [2]   到第  页   

    Powered by CWBBS 2.1  © 2005-2006 Cloud Web Soft
      Email:webmaster@justdb.cn