Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

334

积分

0

好友

2

主题
1#
发表于 2012-12-6 01:03:38 | 查看: 4908| 回复: 4

问题1 v$session.sql_trace  标示的是什么?文档中写Indicates whether SQL tracing is enabled (ENABLED) or disabled (DISABLED)
问题2 如何判断session的trace是打开的?

下面是自己测试的过程 ,有点晕。 请刘大指点。。3Q

在11.2.0.1.0中, v$session.sql_trace和dbms_system执行的结果都显示trace是关着的
C:\Users\Thinkpad>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 12月 6 00:31:18 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> select * from v$mystat where rownum=1;

       SID STATISTIC#      VALUE
---------- ---------- ----------
        73          0          0

SQL> set serveroutput on
SQL> select sql_trace from v$session where sid=73;

SQL_TRAC
--------
DISABLED

SQL> alter session set sql_trace=true;

会话已更改。

SQL> declare
  2          l_event number;
  3       begin
  4               sys.dbms_system.read_ev( 10046, l_event );
  5               dbms_output.put_line( 'result = ' || l_event );
  6       end;
  7       /
result = 0

PL/SQL 过程已成功完成。

SQL>   select sql_trace from v$session where sid=73;

SQL_TRAC
--------
DISABLED

SQL> alter session set events '10046 trace name context forever, level 12';

会话已更改。

SQL> declare
  2          l_event number;
  3       begin
  4               sys.dbms_system.read_ev( 10046, l_event );
  5               dbms_output.put_line( 'result = ' || l_event );
  6       end;
  7       /
result = 0

PL/SQL 过程已成功完成。

SQL>   select sql_trace from v$session where sid=73;

SQL_TRAC
--------
DISABLED

在10G中 v$session.sql_trace显示trace是关着的, dbms_system显示trace是开着(对alter session set sql_trace不适用)

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


SQL> conn /as sysdba
Connected.
SQL> select * from v$mystat where rownum=1;

       SID STATISTIC#      VALUE
---------- ---------- ----------
       159          0          1

SQL> select sql_trace from v$session where sid=159;

SQL_TRAC
--------
DISABLED

SQL> set serveroutput on
SQL> declare
  2          l_event number;
  3       begin
  4               sys.dbms_system.read_ev( 10046, l_event );
  5               dbms_output.put_line( 'result = ' || l_event );
  6       end;
  7       /
result = 0

PL/SQL procedure successfully completed.

SQL> alter session set sql_trace=true;

Session altered.

SQL> select sql_trace from v$session where sid=159;

SQL_TRAC
--------
DISABLED

SQL> declare
  2          l_event number;
  3       begin
  4               sys.dbms_system.read_ev( 10046, l_event );
  5               dbms_output.put_line( 'result = ' || l_event );
  6       end;
  7       /
result = 0

PL/SQL procedure successfully completed.

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

Session altered.

SQL> select sql_trace from v$session where sid=159;

SQL_TRAC
--------
DISABLED

SQL> declare
  2          l_event number;
  3       begin
  4               sys.dbms_system.read_ev( 10046, l_event );
  5               dbms_output.put_line( 'result = ' || l_event );
  6       end;
  7       /
result = 8             --这里显示10046 level 8

PL/SQL procedure successfully completed.
2#
发表于 2012-12-6 09:35:10
FYI

11g中 在session级别:
  1. SQL> alter session set events '10046 trace name context forever,level 1';

  2. Session altered.

  3. SQL> oradebug setmypid;
  4. Statement processed.
  5. SQL> oradebug eventdump session;
  6. sql_trace level=1
  7. 1555 trace name errorstack level 3
复制代码
system级别
  1. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  2. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  3. SQL> alter system set events '10704 trace name context forever,level 1';

  4. System altered.

  5. SQL> oradebug eventdump system;
  6. ORA-00074: no process has been specified
  7. SQL> oradebug setmypid;
  8. Statement processed.
  9. SQL> oradebug eventdump system;
  10. 10704 trace name context forever,level 1
  11. 1555 trace name errorstack level 3
复制代码

回复 只看该作者 道具 举报

3#
发表于 2012-12-6 14:19:32
alter system set events  是不是只修改内存?数据库重新trace 就不起作用了把?alter system set event 修改的是spfile.

回复 只看该作者 道具 举报

4#
发表于 2012-12-6 22:42:31
alter system set events  是不是只修改内存? => 是的

如需重启仍生效  alter system set event='XX  scope=spfile

回复 只看该作者 道具 举报

5#
发表于 2012-12-6 23:31:28
第一个问题的答案 ??大侠解答下, 是不是我自己理解有误。  

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-25 14:24 , Processed in 0.065901 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569