暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 为特定架构启用跟踪

askTom 2017-02-16
238

问题描述

嗨,
我们遇到了缓慢的问题,所以,我想在我的数据库中激活一个特定模式的跟踪1小时,我已经在几个网站上进行了审查,我有以下步骤:

1-更改会话集TRACEFILE_IDENTIFIER = “TEST_TRACE”;
2- ALTER会话集事件 '永远10046跟踪名称上下文,级别8';
3-更改会话设置事件 '10046跟踪名称上下文关闭'; -1小时后

我还看到,使用下面的查询,我们可以为特定的SID和SERIAL #执行此操作,但是当我这样做时,它使我陷入了400 SID/SERIALs #

选择SID、序列号、机器、终端、程序
来自SY S.V _ $ 会话
其中USERNAME = 'test12';

我的问题是,除了架构TEST12之外,我该如何做同样的事情,如果我缺少跟踪足够的性能问题信息的步骤

谢谢你,致以最诚挚的问候,
丹尼尔

专家解答

例如,您可以创建一个登录触发器-此触发器用于架构和指定程序。

create or replace
trigger TRACE_ALL_LOGINS
after logon on MYUSER.schema
disable
declare
  l_program varchar2(200);
begin
  select program
  into   l_program
  from   v$session
  where  sid = sys_context('USERENV','SID');
  
  if l_program like 'sqlplus%' then
    execute immediate 'alter session set tracefile_identifier = MYUSER';
    dbms_monitor.SESSION_TRACE_ENABLE(waits=>true);
  end if;
--
-- if i dont manage to set the trace, i'll allow the login anyway
--
exception
  when others then null;
end;
/

alter trigger TRACE_ALL_LOGINS enable;

复制


要关闭它,你可以这样做:

begin
for i in ( select sid, serial#
           from v$session
           where username MYUSER
           ) loop
       dbms_monitor.SESSION_TRACE_DISABLE(i.sid, i.serial#);
end loop;
end;
/
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论