1. 通过DBA_SOURCE定位SQL语句属于哪个存储过程
  2. 最近集中进行了一系列SQL优化,主要通过ADDM和AWR对捕捉COST或物理读、逻辑读很高的语句,问题的主要原因是全表扫描。但提交开发后开发反馈找不到SQL语句,因为属于存储过程。其实通过EDITPLUS全目录检索肯定能够找到该语句的位置,但为了便于日后定位,笔者还是通过ORACLE的dba_source视图进行了步骤。
  3. 什么是dba_source字典视图:
  4. 存储所有函数、过程、程序包和Java源的完整的文本,对于你了解一个数据库对象的源代码很有用。存储过程在该视图中是以行为单位进行存储的。
  5. SAMPLE:
  6. 问题sql语句
  7. Select Count(*)
  8. From Sample_Con_Sta_No Cs
  9. Where Cs.Deleted_Flag = 0 And (Cs.In_Out_Group_Status != '1' And Cs.In_Out_Group_Status != '2') And
  10. Cs.Con_Id In
  11. (Select Con_Id
  12. From Sample_Ent_Con Ec
  13. Where Ec.Ent_Id In (Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id = :B1))
  14. 定位方法:
  15. 截取“Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id”去视图查询(注意dba_source视图中存储的是行为单位拆分的存储过程等对象,关键词太长肯定找不到)
  16. 查询语句:
  17. Select * From dba_source Where text Like '%Select Ent_Id From Sample_Ent_Con Ecc%'
  18. 查询结果:
  19. OWNER
  20. NAME
  21. TYPE
  22. LINE
  23. TEXT
  24. SAMPLE
  25. PKG_SAMPLE_CON_STATUS
  26. PACKAGE BODY
  27. 35
  28. (Select Ent_Id From Sample_Ent_Con Ecc
  29. Where Ecc.Con_Id = v_Con_Id));
  30. 分析:
  31. 该语句在PKG_SAMPLE_CON_STATUS的35行
  32. 确认:如下存储过程35行确实有该行内容
  33. CREATE OR REPLACE Package Body Pkg_Sample_Con_Status Is
  34. -- Private type declarations
  35. -- Private constant declarations
  36. -- Private variable declarations
  37. -- Function and procedure implementations
  38. Function Func_Is_Over_Clearance_State(v_Con_Id In Number, v_Clearance_State In Varchar2) Return Number Is
  39. v_Num Number;
  40. Begin
  41. Select Count(*)
  42. Into v_Num
  43. From Sample_Ent_Status_Note
  44. Where Deleted_Flag = 0 And
  45. Ent_Id In (Select Ent_Id From Sample_Ent_Con Where Con_Id = v_Con_Id) And
  46. Clearance_State < v_Clearance_State;
  47. If v_Num > 0 Then
  48. Return 0;
  49. Else
  50. Return 1;
  51. End If;
  52. End Func_Is_Over_Clearance_State;
  53. -- 判断
  54. Function Func_Is_All_Con_In(v_Con_Id In Number) Return Number Is
  55. v_Num Number;
  56. Begin
  57. Select Count(*)
  58. Into v_Num
  59. From Sample_Con_Sta_No Cs
  60. Where Cs.Deleted_Flag = 0 And (Cs.In_Out_Group_Status != '1' And Cs.In_Out_Group_Status != '2') And
  61. Cs.Con_Id In
  62. (Select Con_Id
  63. From Sample_Ent_Con Ec
  64. Where Ec.Ent_Id In
  65. (Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id = v_Con_Id));
  66. If v_Num > 0 Then
  67. Return 0;
  68. Else
  69. Return 1;
  70. End If;
  71. End Func_Is_All_Con_In;

转载于:https://blog.51cto.com/yunlongzheng/423689

通过DBA_SOURCE定位SQL语句属于哪个存储过程相关推荐

  1. Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程

    Web服务器的配置: 1.安装Oracle 客户端 参考 Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解),在选择安装的时候仅安装客户端即可 2.为安装客户端的服务器配置 ...

  2. Sql语句优化及存储过程

    1. 怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引. 2.:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验 ...

  3. 数据库sql语句-----游标和存储过程

    关键词: create procedure xxx()as.......go 查询: exec  ... 从例子中感悟一下: create table cartoon( linenum int, na ...

  4. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  5. EF增删查改加执行存储过程和sql语句,多种方法汇总

    1 ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubT ...

  6. 教你如何定位及优化SQL语句的性能问题

    转载自   教你如何定位及优化SQL语句的性能问题 在现如今的软件开发中,关系型数据库是做数据存储最重要的工具.无论是Oracale还是Mysql,都是需要通过SQL语句来和数据库进行交互的,这种交互 ...

  7. sql语句(SQL SERVER)

    1.第一节 1.1什么是数据库 ​ 用来存储数据的仓库 ,就像存放文件的保险柜. 1.2如何创建数据库 拿SQL server举例 两种方式: ​ 1) 右键数据库->创建数据库 2)SQL 语 ...

  8. oracle数据库中最常用的sql语句

    对SQL语句进行调整,往往有一项前期工作,就是定位最常用的SQL 语句.Oracle数据库可以从多个方面取得SQL语句.如从数据库自身的存储过程或者函数中取得,也可以从前台的应用程序中取得.所以,数据 ...

  9. LINQ to SQL语句(1)之Where(抄的好)

    Where操作适用场景:实现过滤,查询等功能.说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关 ...

最新文章

  1. const和readonly内部区别
  2. Hive 数仓中常见的日期转换操作
  3. 《java编程思想》学习笔记——复用类
  4. CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树
  5. Logistic回归的自己推导
  6. Angular如何自定义attribute指令
  7. 记一次 .NET 某智慧水厂API 非托管内存泄漏分析
  8. 网络爬虫--3.str和bytes的区别
  9. 深度学习之人脸检测实践-现有框架实现 opencv Face++
  10. MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
  11. 消除SQL Server中重要维护任务的风险
  12. CCF NOI1145 数字金字塔【DP】
  13. 【专栏必读】软件工程导论第六版(张海藩)专栏学习笔记目录导航
  14. 平面三自由度机器人动力学建模与仿真
  15. 手机屏幕坏了怎么把数据导出来_手机屏幕失灵怎么办 手机屏幕失灵解决办法【详解】...
  16. Typora简易教程
  17. 多种方法教你如何让手机免费上网
  18. 鼠标滑轮将物体放大缩小
  19. 如何实现两个笔记本电脑间的文件传输
  20. oracle00312,Oracle教程:ORA-16038 ORA-19809 ORA-00312 错误解决

热门文章

  1. 最先进的NAS算法不如随机搜索,瑞士学者研究结果让人吃惊,也令人怀疑
  2. npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持
  3. HTML5游戏开发(四):飞机大战之显示场景和元素
  4. java8-06-自定义Collector-JoinCollector
  5. JVM笔记 3 3 垃圾回收算法
  6. 消息总线(Spring Cloud Bus)
  7. 【Dijkstra】最短路径
  8. 【设计模式】业务代表模式
  9. escape()、encodeURI()、encodeURIComponent() difference
  10. 58. Length of Last Word