Oracle数据库-设置10053事件的三种办法

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: Oracle数据库-设置10053事件的三种办法


      在Oracle数据库中,最常用的产生10053时间的办法就是在会话中设置这个事件,比如运行下面的命令就可以在当前会话中设置10053事件

ALTER SESSION SET events '10053 trace name context forever';

     打开这个事件后,要在设置事件的会话中手动执行一下要跟踪的sql语句,使Oracle优化器对语句执行一次硬解析,然后     关闭这个这个事件,用下面的命令

ALTER SESSION SET events '10053 trace name context off';

     在会话中设置10053事件后,对会话中所有硬解析的sql语句都会进行跟踪,在不能手动执行要跟踪的sql语句的时候,使用这个事件产生的跟踪文件会包含我们跟踪的sql语句之外的很多其它语句的信息,这个事件产生的信息本来就很多,如果包含了许多其它语句的信息,会给分析带来不必要的麻烦。

      针对上面所说的问题,有两个解决的办法。

1 设置优化器跟踪事件

      Oracle优化器跟踪事件可以在系统级设置,也可以在会话级设置,这个事件的一个优点可以针对一条sql语句单独设置,可以在系统级设置,也可以在会话级设置,设置后,只要被跟踪的语句产生一次硬解析,执优化器产生执行计划的信息就会被记录下来。比如在会话级设置,下面通过一个简单的例子演示一下。先运行一条sql语句

    select count(*) from emp where empno=20;

     查询一下这条语句的sql_id

select SQL_ID,sql_text from v$sql where sql_text like '%empno%';

SQL_ID

-------------

SQL_TEXT

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

b353kz5s80jqs

select count(*) from emp where empno=20

    设置Oracle优化器跟踪事件,产生这条语句的10053事件跟踪文件

ALTER session SET events 'trace[rdbms.SQL_Optimizer.*][sql:b353kz5s80jqs]';

   想办法使这条语句重新解析一下后,就可以关闭这个事件了

ALTER SYSTEM SET events 'trace[rdbms.SQL_Optimizer.*][sql:b353kz5s80jqs] off'

   在当前会话的默认跟踪文件里可以发现这条sql语句的跟踪信息,同在会话中设置10053事件的效果是相同的。

2 使用dbms_sqldiag.dump_trace存储过程

   上面的两种方法需要使要跟踪的语句重新解析一下,使用这个存储过程则完全不用考虑重新解析语句的问题,甚至也不用考虑绑定变量的问题,只需要传入要跟踪的语句的sql_id,这个存储过程会指示优化器对语句进行重新解析,产生跟踪文件。

   exec dbms_sqldiag.dump_trace(p_sql_id => 'b353kz5s80jqs',p_child_number => 0,p_component => 'Optimizer',p_file_id => 'test');

    p_child_number的值为0是缺省设置,参数p_file_id设置会话跟踪文件的名称,这个存储过程运行后,跟踪信息存在于当前会话的跟踪文件中,这个例子中是下面这个文件

    /opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_13266_test.trc


相关文章
|
6天前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
|
10天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
32 9
|
7天前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
17天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
25 7
|
17天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
21 6
|
17天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5
|
17天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
63 3
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
24天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
26天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
25 1

推荐镜像

更多