首页 > 数据库 >生产环境使用10053分析Oracle的执行计划

生产环境使用10053分析Oracle的执行计划

时间:2024-06-15 17:33:15浏览次数:8  
标签:trace -- oradebug 10053 SQL Oracle 执行

【问题现象】

在SQL出现性能问题后,通过分析统计信息、直方图、SQL AWR、查看执行计划等,仍然找不出为什么SQL要选择差的执行计划,就需要通过10053查看这个SQL的执行计划的更详细的信息。

【操作方法】

通过10053事件来查看执行计划和详细的SQL解析过程,10053的trace文件提供了Oracle如何选择执行计划的原因。

10053 是最常用的Oracle 优化器optimizer 跟踪trace,10053 可以作为解析优化器为什么选择某个执行计划的辅助工具。

--查询SPID

SQL> select spid from v$process 
where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum <=1));
SPID
------------------------------------------------
33651

--开启对指定会话的跟踪

sqlplus / as sysdba
--设置OS PID
SQL> oradebug setospid 33651
Oracle pid: 21, Unix process pid: 33651, image: oracle@dream (TNS V1-V3)

--不限制跟踪文件大小

SQL> oradebug unlimit;
Statement processed.

--开启10053事件跟踪

SQL> oradebug event 10053 trace name context forever,level 1
Statement processed.

--执行需要跟踪的相关SQL

select * from myTestTable;

--关闭跟踪

SQL> oradebug event 10053 trace name context off;
Statement processed.

--显示trace文件路径

SQL> oradebug tracefile_name
/oracle/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_33651_10053.trc
  分类: ORACLE   https://www.cnblogs.com/liulianzhen99/articles/17587246.html

标签:trace,--,oradebug,10053,SQL,Oracle,执行
From: https://www.cnblogs.com/seasonzone/p/18249530

相关文章

  • C#等待多线程任务都执行结束
    有时为了快速处理多个任务,同时启用多个线程执行,需要等待都执行结束后再执行后面的方法,实现方法如下:点击查看代码usingSystem;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(string[]args){vartask1=Task.Run(()=>DoWork......
  • Docker+Jenkins+Pipline如何获取git插件环境变量(提交sha、分支等)以及Jenkinsfile中
    场景Docker中部署Jenkins+Pipline流水线基础语法入门:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/139672283上面介绍了环境搭建以及Pipeline的Jenkinsfile的常用写法。如果需要通过Jenkins插件获取git相关的信息,比如上一次提交的SHA,分支名称等信息,然后需要输......
  • JavaScript打包可执行文件
    pkg[选项]选项:-h,--help输出使用信息-v,--version输出pkg版本-t,--targets逗号分隔的目标列表(参见示例)-c,--configpackage.json或任何具有顶级配置的json文件--options将v8选项拷贝到可执行文件中,以便与它们一起运行......
  • 远程代码执行和远程命令执行是一个东西吗
    远程代码执行(RemoteCodeExecution,简称RCE)和远程命令执行在概念上有所区别,但两者都涉及到攻击者通过远程方式在目标系统上执行代码或命令。以下是两者的详细比较:定义:远程代码执行(RCE):指攻击者可能通过远程调用的方式,在目标计算机设备上执行恶意代码,从而控制该设备。这通......
  • oracle中如何查询特定日期?
    1.selectlast_day(to_date('20230101','YYYYMMDD'))fromdual; selectlast_day(to_date(V_END_DATE,'YYYYMMDD'))fromdual; --查询任意一天 当月的最后一天2.selectto_char(to_date('20230101','YYYYMMDD')-1,'YYYYM......
  • mybatis之特殊SQL的执行
    1.1模糊查询尝试://模糊查询用户List<User>getUserByLike(@Param("mohu")Stringmohu);<selectid="getUserByLike"resultType="user">select*fromuserwhereusernamelike'%#{mohu}%'</select>@Testpub......
  • 成为MySQL DBA后,再看ORACLE数据库(九、用户与权限)
    数据库的用户和权限的管理是DBA日常运维工作中的重要组成部分,不同数据库的用户权限体系及管理方式也会有差别,本文将对ORACLE的用户权限体系和常用操作进行一个总结。一、用户管理ORACLE中创建用户语句和mysql一样,不同的是mysql可以在用户后面加ip以实现ip层面的访问控制。在ORAC......
  • 利用信号量实现线程顺序执行
    线程顺序循环执行的场景在多线程编程中并不罕见,尤其是在需要协调多个线程按特定顺序重复执行任务的情况下。以下是几个常见的例子:生产者-消费者模型:在这种模型中,生产者线程生成数据并将其放入缓冲区,而消费者线程从缓冲区取出数据进行处理。这种情况下,生产者和消费者线程通常按顺......
  • 编写一个.sh的脚本,然后通过 shell 脚本执行 Makefile 文件并把生成的可执行文件下载到
    要编写一个shell脚本来执行Makefile并下载生成的可执行文件到开发板,你需要确保开发板可以通过某种方式(如SSH、FTP、SCP等)访问。以下是一个简单的shell脚本示例,它使用scp命令将可执行文件从本地机器复制到开发板。假设你的开发板可以通过SSH访问,并且你已经配置了SSH密钥认证,这样你......
  • php返回数据后如何让程序继续执行其它操作
    最近遇到一个需求,异步请求对一个慢查询的结果进行缓存,先返回缓存的结果,然后继续获取数据缓存下来。写个demo记录下使用register_shutdown_function函数register_shutdown_function — 注册在关闭时执行的函数register_shutdown_function(callable $callback, mixed ...$ar......