![[IT认证]Oracle诊断案例-Sql_trace.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/8/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce1.gif)
![[IT认证]Oracle诊断案例-Sql_trace.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/8/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce2.gif)
![[IT认证]Oracle诊断案例-Sql_trace.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/8/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce3.gif)
![[IT认证]Oracle诊断案例-Sql_trace.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/8/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce4.gif)
![[IT认证]Oracle诊断案例-Sql_trace.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/8/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce/b4b06bb2-69f2-490d-baf3-7f35c3b5f9ce5.gif)
已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
问题描述:这是帮助一个公司的诊断案例.应用是个后台新闻发布系统.症状是,通过连接访问新闻页是极其缓慢通常需要十数秒才能返回.这种性能是用户不能忍受的.操作系统:sunos 5.8数据库版本:8.1.71.检查并跟踪数据库进程 诊断时是晚上,无用户访问在前台点击相关页面,同时进行进程跟踪查询v$session视图,获取进程信息sql select sid,serial#,username from v$session; sid serial# username- - - 1 1 2 1 3 1 4 1 5 1 6 1 7 284 iflow 11 214 iflow 12 164 sys 16 1042 iflow10 rows selected. 启用相关进程sql_tracesql exec dbms_system.set_sql_trace_in_session(7,284,true)pl/sql procedure successfully completed.sql exec dbms_system.set_sql_trace_in_session(11,214,true)pl/sql procedure successfully completed.sql exec dbms_system.set_sql_trace_in_session(16,1042,true)pl/sql procedure successfully completed.sql select sid,serial#,username from v$session; sid serial# username- - - 1 1 2 1 3 1 4 1 5 1 6 1 7 284 iflow 11 214 iflow 12 164 sys 16 1042 iflow10 rows selected. 等候一段时间,关闭sql_tracesql exec dbms_system.set_sql_trace_in_session(7,284,false)pl/sql procedure successfully completed.sql exec dbms_system.set_sql_trace_in_session(11,214,false)pl/sql procedure successfully completed.sql exec dbms_system.set_sql_trace_in_session(16,1042,false)pl/sql procedure successfully completed. 2.检查trace文件检查发现以下语句是可疑的*select auditstatus,categoryid,auditlevel from categoryarticleassign a,category b where b.id=a.categoryid and articleid= 20030700400141 and auditstatus0call count cpu elapsed disk query current rows- - - - - - - -parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 0.81 0.81 0 3892 0 1- - - - - - - -total 3 0.81 0.81 0 3892 0 1* 这里显然是根据articleid进行新闻读取的.非常可疑的是query读取有3892这个内容引起了我的注意.如果遇见过类似的问题,大家在这里就应该知道是怎么回事情了.如果没有遇见过的朋友,能在这里思考一下再往下看.misses in library cache during parse: 1optimizer goal: chooseparsing user id: 41 rows row source operation- - 1 nested loops 2 index range scan (object id 25062) 1 table access by index rowid category 2 index unique scan (object id 25057)*select auditstatus,categoryid from categoryarticleassign where articleid=20030700400138 and categoryid in (63, 138,139,140,141,142,143,144,168,213,292,341,346, 347,348,349,350,351,352,353,354,355,356,357,358, 359,360,361,362,363,364,365,366,367,368,369,370, 371,372,383,460,461,462,463,621,622,626,629,631, 634,636,643,802,837,838,849,850,851,852,853,854, 858,859,860,861,862,863,-1)call count cpu elapsed disk query current rows- - - - - - - -parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 4.91 4.91 0 2835 7 1- - - - - - - -total 3 4.91 4.91 0 2835 7 1misses in library cache during parse: 1optimizer goal: chooseparsing user id: 41 rows row source operation- - 1 table access full categoryarticleassign我们注意到,这里有一个全表扫描存在* 3.登陆数据库,检查相应表结构sql select index_name,table_name,column_name from user_ind_columns 2 where table_name=upper(categoryarticleassign);index_name table_name column_name - - - idx_articleid categoryarticleassign articleidind_articleid_categ categoryarticleassign articleid ind_articleid_categ categoryarticleassign categoryid idx_sortid categoryarticleassign sortid pk_categoryarticleassign categoryarticleassign articleid pk_categoryarticleassign categoryarticleassign categoryid pk_categoryarticleassign categoryarticleassign assigntype idx_cat_article categoryarticleassign auditstatus idx_cat_article categoryarticleassign articleid idx_cat_article categoryarticleassign categoryid idx_cat_article categoryarticleassign assigntype 11 rows selected. 我们注意到,idx_articleid索引在以上查询中都没有被用到.检查表结构:sql desc categoryarticleassign name null? type - - - categoryid not null number articleid not null varchar2(14) assigntype not null varchar2(1) auditstatus not null number sortid not null number unpass varchar2(255) 问题发现:因为articleid是个字符型数据,查询中给入的articleid= 20030700400141 是个数字值oracle发生潜在的数据类型转换,从而导致了索引失效sql select auditstatus,categoryid 2 from 3 categoryarticleassign where articleid=20030700400132;auditstatus categoryid - - 9 94 0 383 0 695 elapsed: 00:00:02.62execution plan- 0 select statement optimizer=choose (cost=110 card=2 bytes=38) 1 0 table access (full) of categoryarticleassign (cost=110 card=2 bytes=38) 4.解决方法简单的在参数两侧各增加一个,既可解决这个问题.对于类似的查询,我们发现query模式读取降低为2几乎不必花费cpu时间了*select unpass from categoryarticleassign where articleid=20030320000682 and categoryid=113 call count cpu elapsed disk query current rows- - - - - - - -parse 1 0.00 0.00 0 0 0 0execute 1 0.00 0.00 0 0 0 0fetch 1 0.00 0.00 0 2 0 0- - - - - - - -total 3 0.00 0.00 0 2 0 0misses in library cache during parse: 1optimizer goal: chooseparsing user id: 20 rows row source operation- - 0 table access by index rowid categoryarticleassign 1 index range scan (object id 3080)*至此,这个问题得到了完满的解决.-*问题说明:非常多时候在我们进行数据库操作时比如drop user,drop table等,经常会遇见这样的错误ora-00604: error occurred at recursive sql level 1 . 这样的提示,非常多时候是没有丝毫用处的.本案例就这一类问题提供一个思路及方法供大家参考.1. drop user出现问题报出以下错误后退出ora-00604: error occurred at recursive sql level 1 ora-00942: table or view does not exist .关于 recursive sql 错误我们有必要做个简单说明.我们知道,当我们发出一条简单的命令以后 oracle数据库要在后台解析这条命令,并转换为oracle数据库的一系列后台操作.这些后台操作统称为递归sql比如create table这样一条简单的ddl命令oracle数据库在后台,实际上要把这个命令转换为对于obj$,tab$,col$等底层表的插入操作.oracle所作的工作可能比我们有时候想的要复杂的多. 2.跟踪问题我们知道oracle提供sql_trace的功能能用于跟踪oracle数据库的后台递归操作.通过跟踪文件,我们能找到问题的所在以下是格式化(tkprof)后的输出:*the following statement encountered a error during parse:delete from sdo_geom_metadata_table where sdo_owner = wapcomm error encountered: ora-00942*oracle把错误信息首先呈现出来我们看到ora-00942错误是由于sdo_geom_metadata_table表/视图不存在所致问题由此能定位对于这一类的错误,定位问题以后解决的方法就要依据具体问题原因而定了。3.问题定位对于本案例,通过metalink获得以下解释:problem description - the oracle spatial option has been installed and you are encountering the following errors while trying to drop a user, who has no spatial tables, connected as system: error at line 1: ora-00604: error occurred at recursive sql level 1 ora-00942: table or view does not exist ora-06512: at line 7 a 942 error trace shows the failing sql statement as: delete from sdo_geom_metadata_table where sdo_owner = solution description - (1) create a synonym for sdo_geom_metadata_table under system which points to mdsys.sdo_geom_metadata_table. 对于本例,为mdsys.sdo_geom_metadata_table创建一个同义词即可解决.是相对简单的情况.(2) now the user can be dropped connected as system. related documents - ora-604 and ora-942 reported during drop user casca4.实际处理mdsys.sdo_geom_metadata_table为spatial对象如果未使用spatial选项,能删除sql connect / as sysdbaconnected.sql select * from dba_sdo_geom_metadata order by owner; select * from dba_sdo_geom_metadata order by owner*error at line 1:ora-00942: table or view does not existora-04063: view mdsys.dba_sdo_geom_metadata has errorssql select object_name from dba_objects where object_name like %sdo%;object_name-all_sdo_geom_metadataall_sdo_index_infoall_sdo_index_metadatadba_sdo_geom_metadatadba_sdo_index_inf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轨道交通人才选拔全攻略:龙潭地铁面试题库精 编版指南
- 知识题库-餐饮服务食品安全管理人员考试题目及答案
- 社会信用体系下信贷市场的效率提升
- 第1章三角形的初步知识2017年秋滚动阶段测试1416及答案
- 牙科口腔医院综合服务体系
- 八年级地理铁路路线图
- 山西省山西大学附属中学2026届化学高二第一学期期中联考模拟试题含解析
- 托幼园创建汇报
- 食管癌指南讲解
- 血管活性药品
- 安装家具合同协议书范本
- 车辆采购中标合同协议
- 2025年全年日历表(带农历 带2025年法定放假时间安排)
- 购买肉牛合同协议书
- 烟气参数在线监测系统(CEMS)培训课件
- 企业微信直播讲解课件
- 中国卒中患者高血压管理专家共识(2024)解读
- 2025年乡村全科医师考试真题及答案
- 通往未来之路课件
- 膜性肾病护理进展
- 2025年供暖锅炉安全技术托管协议书
评论
0/150
提交评论