`
hanjian861202
  • 浏览: 159823 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Oracle:sql_trace的增强—10046事件

阅读更多

10046:不能根据sid设置跟踪。

dbms_system:只能sys用户执行,赋予他人只能sysdba执行,要慎重,因为含有set_ev这个很重要的存储过程。

dbms_support:不需要sysdba权限,但是没有客户端级别和组件级别的跟踪。

dbms_monitor:不需要sysdba权限,含有数据库级、会话级、客户端级和组件级的跟踪

 

===================================================================================================================

 

很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些信息记录在trace文件里以后分析。一般情况下我们可以通过初始化参数SQL_TRACE=TRUE来设置SQL跟踪。

我们也可以通过设置10046事件来进行SQL跟踪,并且可以设置不同的跟踪级别,比使用SQL_TRACE获得更多的信息。

Level 0   停用SQL跟踪,相当于SQL_TRACE=FALSE

Level 1   标准SQL跟踪,相当于SQL_TRACE=TRUE

Level 4   在level 1的基础上增加绑定变量的信息

Level 8   在level 1的基础上增加等待事件的信息

Level 12 在level 1的基础上增加绑定变量和等待事件的信息

10046事件不但可以跟踪用户会话(trace文件位于USER_DUMP_DEST ),也可以跟踪background进程(trace文件位于BACKGROUND_DUMP_DEST )。trace文件的大小决定于4个因素:跟踪级别,跟踪时长,会话的活动级别和MAX_DUMP_FILE_SIZE参数。

启用跟踪事件10046

1.在全局设置

修改初始化参数

EVENT = "10046 trace name context forever, level 8"

2.在当前session设置

alter session set events '10046 trace name context forever, level 8';

alter session set events '10046 trace name context off';

3.对其他用户session设置

首先获得要跟踪的session的session id和serial number

select sid,serial#,username from v$session where username='TRACE_USERNAME';

exec dbms_support.start_trace_in_session(sid => 1234,serial# => 56789,waits => true,binds => true);

exec dbms_support.stop_trace_in_session(sid => 1234,serial# => 56789);

或者

exec dbms_system.set_ev( 1234, 56789, 10046, 8, '');

exec dbms_system.set_ev( 1234, 56789, 10046, 0, '');

或者

exec dbms_monitor.session_trace_enable(session_id => 1234,serial_num => 56789,waits => true,binds => true);

exec dbms_monitor.session_trace_disable(session_id => 1234,serial_num => 56789);

也可以通过使用oradebug工具来设置10046事件

首先通过V$PROCESS获得该session的os process id。

select s.username, p.spid os_process_id, p.pid oracle_process_id

from v$session s, v$process p

where s.paddr = p.addr and s.username = upper('TRACE_USERNAME');

oradebug setospid 12345;

oradebug unlimit;

oradebug event 10046 trace name context forever, level 8;

oradebug event 10046 trace name context off;

获取跟踪文件

1.使用oradebug

SQL> oradebug setmypid

Statement processed.

SQL> oradebug tracefile_name

/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183.trc

2.设置初始参数TRACEFILE_IDENTIFIER

alter session set tracefile_identifier = 'MyTrace';

这样在生成的trace文件名中会包含有MyTrace字样

/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183_MyTrace.trc

3.通过SQL查询

select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

from

    ( select p.spid

      from sys.v$mystat m,sys.v$session s,sys.v$process p

      where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

   ( select t.instance from sys.v$thread t,sys.v$parameter v

      where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

    ( select value from sys.v$parameter where name = 'user_dump_dest') d;

?/rdbms/log/uxdb_ora_9183.trc

查看当前session的跟踪级别

SQL>Set serveroutput on

SQL> declare

  event_level number;

  begin

  dbms_system.read_ev(10046,event_level);

  dbms_output.put_line(to_char(event_level));

  end;

  /

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xieyunchao/archive/2010/01/06/5140059.aspx

分享到:
评论

相关推荐

    10046事件和sql_trace.docx

    10046事件和sql_trace.docx

    SQL执行计划之sql_trace

    介绍:sql_trace命令会将执行的整个过程输出到一个trace文件,我通过阅读这个trace文件来了解这个sql在执行过程中Oracle究竟做了哪些事情

    如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况

    如何使用oracle提供的SQL_TRACE来跟踪sql的执行情况?Sql性能非常差的时候,oracle提供了SQL_TRACE来跟踪sql的执行情况。注:分析sql的方式比较多,还有根据优化器、sql执行计划来分析。SQL_TRACE能够将sql执行的过程...

    oracle跟踪sql语句.txt

    oracle有三种方式跟踪sql: 1、审计 2、trigger 3、利用 dbms_support 查看sql_trace 现在主要讲第三种方式: 参见网址:https://www.cnblogs.com/shenfeng/p/oracle_sql_trace.html,步聚如下:

    Oracle 10g + SQL SERVER 2000 透明网关设置

    环境:Oracle 10g + SQL SERVER 2000 数据库:Oracle:ZNDATA;SQL SERVER:ZNDB 目标:在oracle下建立一个tnsname用来访问SQL SERVER的ZNDB数据库. (1)建立ZNDB数据库在Oracle下的别名zheneng: 进入%ORACLE_HOME%\tg4...

    sqlmonitor

    sqlmonitor 1. 找出sid和serial# select sid,serial#,osuser from v$session t where t.USERNAME='USERNAME' 2. 开始sqltrace ... execute dbms_system.set_... 例: tkprof sqltrace文件.trc a.out 8. 打开a.out

    Oracle优化—SQL优化

    数据库、数据表、数据表I/O优化原则 2、选用适合的ORACLE优化器 3、访问Table的方式 ...8、使用sql_trace/10046事件进行数据库诊断 9、当前会话的所有SQL语句生成执行计划 10、如何干预执行计划 - - 使用hints提示

    从Oracle到SQL Server的透明网关配置

    1: 运行oracle 安装软件,安装类型选自定义,选择里面的安装oracle transparent gateway 9.2.0.1.0,下面的oracle transparent gateway from microsoft sql server 9.2.0.1.0,这里可以看到,还可以选择其他的数据库...

    Oracle 10G 透明网关的配置

    我的oracle和sqlserver安装在同一台主机上: IP:192.168.100.102 sqlserver database:pub 第一步 修改配置文件. 在ORACLE_HOMEtg4msqladmininittg4msql.ora 目录下: # This is a sample agent init file that ...

    Oracle PL_SQL高级程序设计

    全面介绍了PL/SQL语言的包、触发器、动态SQL、外部例程、对象、集合等基本概念,而且还集中讨论了Oracle8i提供的最新功能。这些新的特性包括如何使用内置包,优化策略,以及PL/SQL程序的调试技术等。本书从以下几个...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    oracle_8i_pl_sql高级程序设计

    2) 使用包DBMS_DEBUG和 DBMS_TRACE跟踪调试PL/SQL应用。 3) 使用包DBMS_JOB调度PL/SQL任务在指定时间自动运行。 4) 使用包UTE_FILE直接读写操作系统文件。 5) 使用Pro*C和嵌入SQL语言编制外部例程。 6) 使用动态SQL...

    SQL TRACE原理、方法、事件查看总结

    SQL TRACE原理、方法、事件查看 总结, 还包括10046,10053事件的讲解

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part2.rar

    第10章 sql_trace和10046事件 254 10.1 sql_trace 254 10.2 tkprof工具 256 10.3 10046事件 268 第11章 10053事件 276 第12章 性能视图和性能参数 294 12.1 性能视图 294 12.1.1 v$sql 295 12.1.2 v$sql_shared_...

    SQL Trace and TKPROF

    SQL Trace and TKPROF

    ct.zip_trace

    This is simple but very useful Oracle SQL Trace Parser.

    Oracle 8i PL_SQL高级程序设计

    2) 使用包DBMS_DEBUG和 DBMS_TRACE跟踪调试PL/SQL应用。 3) 使用包DBMS_JOB调度PL/SQL任务在指定时间自动运行。 4) 使用包UTE_FILE直接读写操作系统文件。 5) 使用Pro*C和嵌入SQL语言编制外部例程。 6) 使用动态SQL...

    oracle的sql优化

    oracle的sql优化方法 1.全表扫描和索引扫描  大数据量表尽量要避免全表扫描,全部扫描会按顺序每条记录扫描,对于>100万数据表影响很大。  Oracle中通过RowID访问数据是最快的方式  对字段进行函数转换,或者前...

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    ORACLE_sql_tune 2 ORACLE_oracle体系结构1 3 ORACLE_oracle体系结构2 3 ORACLE_重做日志管理1 3 ORACLE_重做日志管理2 3 Oracle一个女人和五个男人的故事(数据库命名习惯) 3 oracle_内部事件(Oracle高级工具的...

    Oracle 8i PL SQL高级程序设计

    Oracle 8i PL SQL高级程序设计(PDF) 本书是深入介绍PL/SQL 语言的专著。可供数据库系统管理员和应用系统设计师参考。众所周知,PL/SQL是用来从各种平台访问Oracle数据库的高级程序设计语言。本书原版自出版以来,...

Global site tag (gtag.js) - Google Analytics