通过DBA_SOURCE定位SQL语句属于哪个存储过程

简介:

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

 



本文转自zylhsy 51CTO博客,原文链接:http://blog.51cto.com/yunlongzheng/423689,如需转载请自行联系原作者

相关文章
|
23天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
19天前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
|
22天前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
24 1
|
24天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
30天前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
49 3
|
6月前
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
52 1
|
28天前
|
存储 SQL 安全
|
1月前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
14 0
|
3月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
41 1
|
3月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
105 0

热门文章

最新文章