ITPub博客

首页 > 数据库 > Oracle > [20190917]oracle跟踪事件简单写法.txt

[20190917]oracle跟踪事件简单写法.txt

原创 Oracle 作者:lfree 时间:2019-09-17 22:11:47 0 删除 编辑

[20190917]oracle跟踪事件简单写法.txt

--//以前我要做10046跟踪,总是记不住命令。总是要把一些常用脚本写入一个文本文件,采用copy and paste的方式操作。
--//文本越来越大,最后发现这样的方式管理不合理,也容易出错。我就开始一点点的建立自己的工作中使用的脚本,其中
--//也包括tanel poder的脚本(虽然我很少用).

--//10046on
alter session set events '10046 trace name context forever, level &1';

--//10046off.sql
alter session set events '10046 trace name context off';

--//我以前老是记不住trace name context forever这一串命令。
--//昨天看http://www.juliandyke.com/Diagnostics/Events/Events.php链接,才发现11g开始支持一种简单的写法、
--//链接http://www.juliandyke.com/Diagnostics/Events/Events.php:

In Oracle 11.1 and above a more concise syntax is available:

ALTER SYSTEM SET EVENTS '10235';
ALTER SYSTEM SET EVENTS '10235 level 1';
ALTER SYSTEM SET EVENTS '10235 off';

Events can also be enabled at session level using the ALTER SESSION command:

ALTER SESSION SET EVENTS '<event> trace name context forever, level <level>';

Events are disabled at session level using:

ALTER SESSION SET EVENTS '<event> trace name context off';

In Oracle 11.1 and above a more concise syntax is available:

ALTER SESSION SET EVENTS '10235';
ALTER SESSION SET EVENTS '10235 level 1';
ALTER SESSION SET EVENTS '10235 off';

Events can be enabled in other sessions using ORADEBUG

To enable an event in a process use:

ORADEBUG EVEMT <event> LEVEL <level>

For example

ORADEBUG EVEMT 10053 LEVEL 1

The default level is 1 so the above can be rewritten as:

ORADEBUG EVEMT 10053

To disable trace again:

ORADEBUG EVEMT 10053 OFF

--//这样写10046跟踪时间就相对简单了。

ALTER session SET EVENTS '10046 level 12';
...
ALTER session SET EVENTS '10046 off';

--//我在windows简单测试基本没有问题。当然并不是全部可以替换,比如你跟踪942 ERRORSTACK,执行如下:

ALTER session SET EVENTS '942 level 12';
select * from notexist;
ALTER session SET EVENTS '942 off';


alter session set events '942 trace name context forever, level 12';
select * from notexist;
alter session set events '942 trace name context off';

--//跟踪文件看到的就是这个表,是看不到执行的sql语句,要看语句要配合10046事件。
--//如果要转储ERRORSTACK,必须这样写:

ALTER session SET EVENTS '942 TRACE NAME ERRORSTACK LEVEL 12';
select * from notexist;
ALTER session SET EVENTS '942 TRACE NAME ERRORSTACK OFF';

--//不过支持这样简单写法,简单许多也不容易出错。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2657325/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2485
  • 访问量
    6292801