重庆思庄Oracle、Redhat认证学习论坛
标题: 跟踪ORACLE SQL语句有哪些方式? [打印本页]
作者: 郑全 时间: 2020-3-13 10:30
标题: 跟踪ORACLE SQL语句有哪些方式?
一用户抱怨操作慢,如何跟踪操作的SQL呢?
作者: 郑全 时间: 2020-3-13 10:37
如果要跟踪当前会话的 SQL,我们可以在执行SQL语句之前,
执行以下语句开启跟踪 :
ALTER SESSION SET SQL_TRACE=TRUE;
之后执行的 SQL语句,就会保存到 当前会话对应的TRACE文件
SQL>CONN hr/hr
sql>alter session set sql_trace=true;
SQL> select * from v$diag_info where name='Default Trace File';
INST_ID
----------
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
CON_ID
----------
1
Default Trace File
D:\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_10796.trc
0
sql> select * from departments;
去查看 D:\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_10796.trc 文件,是否已经有了,而且里面有你刚才输入的SQL语句.
作者: 郑全 时间: 2020-3-13 10:44
上面是跟踪自己,如何跟踪别人呢 ?
可以使用dbms_monitor来实现:
1.先找到对应的SQL会话的SID,SERIAL#
2.执行对应的SID监控
EXECUTE dbms_monitor.session_trace_enable (指定的sid,指定的serial#, waits=>TRUE, binds=>TRUE);
3.可以去检查对应的文件
作者: 郑全 时间: 2020-3-13 10:55
本帖最后由 郑全 于 2020-3-13 10:57 编辑
通过10046 进行跟踪
1.登录用户,获取SPID
获取SPID的方式有很多种.
SQL> conn hr/hr
已连接。
SQL> select distinct sid from v$mystat;
SID
----------
357
SQL> select spid from v$process p,v$session s where p.addr=s.paddr and s.sid=357;
SPID
------------------------------------------------
9100
2.另外开一个窗口,设置10046
SQL> conn / as sysdba
SQL> oradebug setospid 9100;
SQL> oradebug event 10046 trace name context forever,level 12;
3.查看文件已经生成