sqlplus 跟踪sql语句

sqlplus 最耗资源sql语句跟踪[@more@]这片文章主要是介绍怎样查看哪个客户端的哪条sql语句最耗时。 transaction 有四个特性:ACID Atomicity 原子性 consistency 一致性 isolation 独立性 durability 持久性 主要介绍从4个视图里找到最终的SQL. v$session v$transaction v$process v$sql 查有多少个用户登录到数据库: select sid,serial#,username,status from v$session where username is not null; 查看数据服务器上有哪些用户连接上来: [root@ovt ~]# netstat -anp |more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:718 0.0.0.0:* LISTEN 2232/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2192/portmap tcp 0 0 0.0.0.0:1523 0.0.0.0:* LISTEN 5331/tnslsnr tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2559/cupsd tcp 0 0 0.0.0.0:43225 0.0.0.0:* LISTEN 3014/ora_d000_ovt tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 5121/0 tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 5209/1 tcp 0 0 127.0.0.1:6012 0.0.0.0:* LISTEN 5240/2 tcp 0 0 168.1.1.108:1523 168.1.1.108:6465 ESTABLISHED 5331/tnslsnr tcp 0 0 168.1.1.108:1523 168.1.1.65:4165 ESTABLISHED 5384/oracleovt tcp 0 0 168.1.1.108:1523 168.1.1.65:4177 ESTABLISHED 5389/oracleovt tcp 0 0 168.1.1.108:1523 168.1.1.65:4094 ESTABLISHED 5349/oracleovt tcp 0 0 168.1.1.108:6465 168.1.1.108:1523 ESTABLISHED 2982/ora_pmon_ovt 在客户端机器(win)上查看哪个程序连接服务器: netstat -b 查看库里有多少个transacation select addr,ses_addr from V$TRANSACTION 查看多少个用户连接进来 select sid,serial#,username,status from v$session; v$session中的sid 和 v$transaction 中的ses_addr是关联的。 select sid,serial#,paddr,username,status from v$session; select addr,spid from v$process; v$process 中的 1、V$PROCESS.SPID---&gt NETSTAT 2、V$SESSION.PADDR--&gtV$PROCESS.ADDR 3、V$SESSION.SADDR--&gtV$TRANSACTION.SES_ADDR 4、V$SESSION.SQL_ADDRESS/PREV_SQL_ADDR--&gtV$SQL.ADDRESS&SQL_TEXT 先根据netstat pid值在V$PROCESS中找到ADDR, 然后根据ADDR--&gtPADDR对应关系, 找到ses_addr, select addr,ses_addr,xid from v$transaction; 联合V$SESSION SELECT SADDR,SID,USERNAME,PADDR,STATUS FROM V$SESSION; SELECT ADDR,SPID FROM V$PROCESS; SPID 就能和netstat中的pid对应。 v$SESSION.SQL_ADDRESS --&gt v$SQL 小布的脚本: select addr,ses_addr from v$transaction; select saddr,sid,serial#,username,status from v$session; select saddr,sid,serial#,username,status,prev_sql_addr,prev_hash_value from v$session; alter session set nls_date_format = 'YYYY-MM-DD HH:MI:SS'; select addr,sid,username,s.status,process,program from v$transaction t ,v$session s where t.ses_addr=s.saddr; select addr,pid,spid,program from v$process; select saddr,sid,paddr,username from v$porcess; select saddr,sid,paddr,username from v$session; select sql_text,address,hash_value from v$sql q,v$session s where s.prev_sql_addr=q.address and sid= 14; sid 是上个语句查询出来的、 我自己改编合成一个语句: select count(*) from v$transaction; select sid,username,ses_addr,saddr,sql_hash_value,prev_sql_addr,sql_text from v$transaction t,v$session s,v$sql q where t.ses_addr=s.saddr and s.prev_sql_addr=q.address; select sid,username,ses_addr,saddr,sql_hash_value,prev_sql_addr,sql_text from v$transaction t,v$session s,v$sql q where t.ses_addr=s.saddr and s.sql_hash_value=q.hash_value;

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

转载于:http://blog.itpub.net/309902/viewspace-1055377/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值