通过DBA_SOURCE定位SQL语句属于哪个存储过程
- 通过DBA_SOURCE定位SQL语句属于哪个存储过程
- 最近集中进行了一系列SQL优化,主要通过ADDM和AWR对捕捉COST或物理读、逻辑读很高的语句,问题的主要原因是全表扫描。但提交开发后开发反馈找不到SQL语句,因为属于存储过程。其实通过EDITPLUS全目录检索肯定能够找到该语句的位置,但为了便于日后定位,笔者还是通过ORACLE的dba_source视图进行了步骤。
- 什么是dba_source字典视图:
- 存储所有函数、过程、程序包和Java源的完整的文本,对于你了解一个数据库对象的源代码很有用。存储过程在该视图中是以行为单位进行存储的。
- SAMPLE:
- 问题sql语句
- Select Count(*)
- From Sample_Con_Sta_No Cs
- Where Cs.Deleted_Flag = 0 And (Cs.In_Out_Group_Status != '1' And Cs.In_Out_Group_Status != '2') And
- Cs.Con_Id In
- (Select Con_Id
- From Sample_Ent_Con Ec
- Where Ec.Ent_Id In (Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id = :B1))
- 定位方法:
- 截取“Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id”去视图查询(注意dba_source视图中存储的是行为单位拆分的存储过程等对象,关键词太长肯定找不到)
- 查询语句:
- Select * From dba_source Where text Like '%Select Ent_Id From Sample_Ent_Con Ecc%'
- 查询结果:
- OWNER
- NAME
- TYPE
- LINE
- TEXT
- SAMPLE
- PKG_SAMPLE_CON_STATUS
- PACKAGE BODY
- 35
- (Select Ent_Id From Sample_Ent_Con Ecc
- Where Ecc.Con_Id = v_Con_Id));
- 分析:
- 该语句在PKG_SAMPLE_CON_STATUS的35行
- 确认:如下存储过程35行确实有该行内容
- CREATE OR REPLACE Package Body Pkg_Sample_Con_Status Is
- -- Private type declarations
- -- Private constant declarations
- -- Private variable declarations
- -- Function and procedure implementations
- Function Func_Is_Over_Clearance_State(v_Con_Id In Number, v_Clearance_State In Varchar2) Return Number Is
- v_Num Number;
- Begin
- Select Count(*)
- Into v_Num
- From Sample_Ent_Status_Note
- Where Deleted_Flag = 0 And
- Ent_Id In (Select Ent_Id From Sample_Ent_Con Where Con_Id = v_Con_Id) And
- Clearance_State < v_Clearance_State;
- If v_Num > 0 Then
- Return 0;
- Else
- Return 1;
- End If;
- End Func_Is_Over_Clearance_State;
- -- 判断
- Function Func_Is_All_Con_In(v_Con_Id In Number) Return Number Is
- v_Num Number;
- Begin
- Select Count(*)
- Into v_Num
- From Sample_Con_Sta_No Cs
- Where Cs.Deleted_Flag = 0 And (Cs.In_Out_Group_Status != '1' And Cs.In_Out_Group_Status != '2') And
- Cs.Con_Id In
- (Select Con_Id
- From Sample_Ent_Con Ec
- Where Ec.Ent_Id In
- (Select Ent_Id From Sample_Ent_Con Ecc Where Ecc.Con_Id = v_Con_Id));
- If v_Num > 0 Then
- Return 0;
- Else
- Return 1;
- End If;
- End Func_Is_All_Con_In;
转载于:https://blog.51cto.com/yunlongzheng/423689
通过DBA_SOURCE定位SQL语句属于哪个存储过程相关推荐
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
Web服务器的配置: 1.安装Oracle 客户端 参考 Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解),在选择安装的时候仅安装客户端即可 2.为安装客户端的服务器配置 ...
- Sql语句优化及存储过程
1. 怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引. 2.:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验 ...
- 数据库sql语句-----游标和存储过程
关键词: create procedure xxx()as.......go 查询: exec ... 从例子中感悟一下: create table cartoon( linenum int, na ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- EF增删查改加执行存储过程和sql语句,多种方法汇总
1 ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubT ...
- 教你如何定位及优化SQL语句的性能问题
转载自 教你如何定位及优化SQL语句的性能问题 在现如今的软件开发中,关系型数据库是做数据存储最重要的工具.无论是Oracale还是Mysql,都是需要通过SQL语句来和数据库进行交互的,这种交互 ...
- sql语句(SQL SERVER)
1.第一节 1.1什么是数据库 用来存储数据的仓库 ,就像存放文件的保险柜. 1.2如何创建数据库 拿SQL server举例 两种方式: 1) 右键数据库->创建数据库 2)SQL 语 ...
- oracle数据库中最常用的sql语句
对SQL语句进行调整,往往有一项前期工作,就是定位最常用的SQL 语句.Oracle数据库可以从多个方面取得SQL语句.如从数据库自身的存储过程或者函数中取得,也可以从前台的应用程序中取得.所以,数据 ...
- LINQ to SQL语句(1)之Where(抄的好)
Where操作适用场景:实现过滤,查询等功能.说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关 ...
最新文章
- const和readonly内部区别
- Hive 数仓中常见的日期转换操作
- 《java编程思想》学习笔记——复用类
- CSP认证201412-4	最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树
- Logistic回归的自己推导
- Angular如何自定义attribute指令
- 记一次 .NET 某智慧水厂API 非托管内存泄漏分析
- 网络爬虫--3.str和bytes的区别
- 深度学习之人脸检测实践-现有框架实现 opencv Face++
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
- 消除SQL Server中重要维护任务的风险
- CCF NOI1145 数字金字塔【DP】
- 【专栏必读】软件工程导论第六版(张海藩)专栏学习笔记目录导航
- 平面三自由度机器人动力学建模与仿真
- 手机屏幕坏了怎么把数据导出来_手机屏幕失灵怎么办 手机屏幕失灵解决办法【详解】...
- Typora简易教程
- 多种方法教你如何让手机免费上网
- 鼠标滑轮将物体放大缩小
- 如何实现两个笔记本电脑间的文件传输
- oracle00312,Oracle教程:ORA-16038 ORA-19809 ORA-00312 错误解决
热门文章
- 最先进的NAS算法不如随机搜索,瑞士学者研究结果让人吃惊,也令人怀疑
- npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持
- HTML5游戏开发(四):飞机大战之显示场景和元素
- java8-06-自定义Collector-JoinCollector
- JVM笔记 3 3 垃圾回收算法
- 消息总线(Spring Cloud Bus)
- 【Dijkstra】最短路径
- 【设计模式】业务代表模式
- escape()、encodeURI()、encodeURIComponent() difference
- 58. Length of Last Word