oracle怎么抓一周,oracle sql抓取1

在数据库引用时,有时业务很复杂,相关表经常变更;

或者业务报表出错,相关sql无法的得知;

那么sql的抓起将成为问题解决的关键第一步,也是自学业务的关键方法。

抓取某一用户当前运行sql语句,有两种方法,一种是通过sql_trace,另一种是查v$sql(或v$sqltext,v$sqlarea)

一、通过sql_trace查询

这是一种sql监控的最好方法,可以根据指定用户、终端机、运行程序查询。

而这些信息来源于v$session的USERNAME,MACHINE,PROGRAM列

如:

select sid,serial#,USERNAME,MACHINE,PROGRAM from v$session;

8da70790573ea76823c0d11e260caf16.png

步骤:

1)设置跟踪

(1.1)当前session级设置跟踪

在当前session级设置,启用当前session的跟踪:

SQL> alter session set SQL_TRACE=true;(如果没有权限,登陆system执行GRANT ALTER SESSION TO 用户名;)Session altered.

此时的SQL操作将被跟踪:......结束跟踪:SQL> alter session set SQL_TRACE=false;Session altered.

(1.2)跟踪用户或进程

1.2.1)获得进程信息,选择需要跟踪的进程,查询对于的sid,serial#,:SQL> select sid,serial#,USERNAME,MACHINE,PROGRAM from v$session;-----------这句sql查询使用session-----------真实情况下根据指定用户、终端机、运行程序查询,如:SQL>select sid,serial#,USERNAME,MACHINE,PROGRAM from v$session where username='HK9999';-----------查找用户为HK9999的session状况

abb2f1b2b3fccbd38c866a5cae784dee.png

-----------找到sid,serial#,是35和10317

1.2.2)设置启动跟踪(使用SYS登录运行)SQL> exec dbms_system.set_SQL_TRACE_in_session(35,10317,true);

PL/SQL procedure successfully completed

….

可以等候片刻,跟踪session执行任务,捕获sql操作…

….

1.2.3)停止跟踪(使用SYS登录运行)

SQL> exec dbms_system.set_SQL_TRACE_in_session(35,10317,false);

PL/SQL procedure successfully completed

2)查看服务器上trc文件方法

trc文件放置在udump文件夹中,可以执行SQL>show parameter user_dump_dest 查看具体的路径。

SQL> show parameter user_dump_dest

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

user_dump_dest                       string      c:\oracle\admin\hisorcl\udump

SQL>

oracle自带的tkprof工具可以方便转换trc文件可读

执行tkprof

c:\oracle\admin\hisorcl\udump\orcl_ora_2968.trc d:\xe_ora_out.txt

2.通过v$sql查询

这种方法只适于查询阻塞或等待的sql

v$sql记录sharepool中的sql语句,利用其可以获取其它session当前正在执行的sql语句(或状态为waiting)

select * from

v$sql sq,v$session se

where sq.address=se.sql_address

and se.state='WAITING' and se.username='用户名';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值