cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪
1、SQL_Plus自动跟踪:
set autotrace on explain // 显示执行计划
set autotrace traceonly explain // 仅显示执行计划
set autotrace on // 显示执行计划、和统计数字
set timing on // 显示已用时间
set autotrace traceonly //显示执行计划、和统计数字;但不显示sql结果
2、还可以利用10046事件来跟踪SQL,它比SQL_TRACE提供更详细的信息.它有LEVEL 1,4,8,12四个级别.
其中Level 1 相当于 SQL_TRACE.下面是10046使用的例子
alter session set events '10046 trace name context forever, level 4'; --跟踪SQL语句并显示绑定变量
alter session set events '10046 trace name context forever, level 8'; --跟踪SQL语句并显示等待事件
10046:SQL到底是如何执行的。
10053:SQL为什么要这样执行。
SQL> alter session set events '10046 trace name context forever,level 4';
Session altered.
.... some SQL statements
SQL> alter session set events '10046 trace name context off';
Session altered.
3、SQL> alter session set sql_trace=true;
SQL>alter session set sql_trace=false;
*************************************************************************************************
系统上的某个接口提交数据经常超时(超过3秒),而我单独在后台数据库()执行insert,只需要17ms。提交数据的客户端没有任何的调试日志,只能通过跟踪后台语句记录实际调用过程中的数据库执行时间。从而发现问题耗时最多的阶段。
安装dbms_support包
SQL> @?\rdbms\admin\dbmssupp.sql
SQL> grant execute on dbms_support to test;
找到需要跟踪的会话,一个接口可能会建立多个会话,需要根据会话建立的时间来判断真正需要跟踪的会话。
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
SQL> select sid,serial#,logon_time from v$session where username=&name and program=&program;
输入 name 的值: 'test' 输入 program 的值: 'test.exe'
使用start_trace_in_session进行跟踪
SQL>exec dbms_support.start_trace_in_session(1157,59729,TRUE,TRUE);
开始跟踪后,在客户端进行对应的操作。
使用stop_trace_in_session结束跟踪
SQL> exec dbms_support.stop_trace_in_session(1157,59729);
使用以下的语句获得trace文件的位置。
SELECT d.VALUE
|| '\'
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
FROM (SELECT p.spid
FROM v$mystat m, v$session s, v$process p
WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,
(SELECT t.INSTANCE
FROM v$thread t, v$parameter v
WHERE v.NAME = 'thread'
AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
(SELECT VALUE
FROM v$parameter
WHERE NAME = 'user_dump_dest') d
用文本编辑器可以直接打开trace文件
图中的这一段就是对一个语句的从解析到返回数据的整个过程,如果统计从开始请求到消息返回客户端的时间,直接将红框中的两个tim相减就可以了,11592216806504-11592199796058=17010446,其单位是1/1000000秒。若要单独获取执行时间,可以EXEC的TIM减掉PARSE的TIM,差值即为执行的时间。其它字段的说明可以参照这个文档。
另外也可以使用TKPROF将trace文件转换成为执行计划解析的文本。
D:\app\oracle\diag\rdbms\wxmesdb\wxmesdb\trace>tkprof wxmesdb_ora_6520.trc trace_1.txt
TKPROF: Release 12.1.0.1.0 - Development on 星期三 1月 6 08:30:11 2016 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
如上图所示,可以得到执行时间为17秒,与上一步中通过TIM相减的差值一致。
--EOF--
cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪相关推荐
- matlab if语句多个执行举例,初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲...
问题描述: 初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲 if logical_expression statements elseif logical_ex ...
- java登录的sql语句,如何获取执行过的所有sql语句
怎么获取执行过的所有sql语句 我有一个java程序,我想获取 我登录网站执行过的所有sql语句,我的配置ibaties 有什么方法,最好有例子. 怎么获取执行过的所有sql语句 SQL Java - ...
- Oracle执行语句跟踪(1)——使用sql trace实现语句追踪
1.安装dbms_support包 SQL> @?/rdbms/admin/dbmssupp.sqlPackage created.Package body created.SQL> gr ...
- 【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?
♣题目部分 在Oracle中,获取执行计划有哪几种方法? ♣答案部分 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Pl ...
- 一条SQL查询语句是如何执行的? MySql杂谈
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...
- oracle+连接格式,oracle外连接符号(+)的用法
我们都知道,PL/SQL中实现外连接,除了可以用关键词OUTER JOIN外,还可以用Oracle的外连接符号(+).对于这个外连接符号(+),虽然看到书上说:使用(+)进行外连接时,where条件中 ...
- oracle awr书籍,Oracle AWR介绍
1AWR报告介绍 AWR是Oracle 10g版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR是通过对比两次快照(snapshot)收 ...
- 跟踪oracle中sql语句运行过程及相关知识拓展
select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这种方 ...
- oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
最新文章
- 一分钟学会看k线图_看K线图:阴跌如钝刀
- mysql6.5 操作日志
- java z+_Java Z 字形变换
- Spring框架注入注解与拦截器浅谈
- c语言printf输出中文报错,printf输出中文后还带有数字是怎么回事?
- 肝火旺的人,哪些食物打死都不要碰?
- Delphi 的绘图功能[5] - 获取 Canvas 对象
- java打印jsp_在java中实现对FORM的打印功能
- Mybatis之select元素
- 关系型数据库之MySQL8——由内而外的深化全面学习
- PID LSim PT3这个仿真模块 S7-1200 S7-1500 CPU下载
- excel打不开html格式的文件,excel扩展名,教您解决Excel无法打开文件因为文件或文件扩展名无效...
- MySQL索引(漂亮简洁的思维导图)
- PDF编辑方法,怎么删除PDF中的一页
- 微软正打造全新 Edge“Phoenix”浏览器?网友:画蛇添足?
- 解决:给 VSCode 手动添加(解压压缩包)相关插件的问题
- jQuery(入门)
- 银河麒麟V10 SP2 搭建tftp服务
- Meta-SR: A Magnification-Arbitrary Network for Super-Resolution
- GPG error: NVIDIA NO_PUBKEY A4B469963BF863CC
热门文章
- Android布局优化之include、merge、ViewStub
- 2021年大数据常用语言Scala(八):基础语法学习 循环
- 2021年大数据Flink(二十六):​​​​​​​State代码示例
- 深度学习进阶:多分类与TensorFlow
- Django 布署6.5
- Kafka入门教程与详解
- DOS命令大全 黑客必知的DOS命令集合
- python 运算符 is 与 is not 的理解
- App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW int
- 微信小程序设置字体上下左右居中