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---> NETSTAT
2、V$SESSION.PADDR-->V$PROCESS.ADDR
3、V$SESSION.SADDR-->V$TRANSACTION.SES_ADDR
4、V$SESSION.SQL_ADDRESS/PREV_SQL_ADDR-->V$SQL.ADDRESS&SQL_TEXT
先根據netstat pid值在V$PROCESS中找到ADDR,
然後根據ADDR-->PADDR對應關係,
找到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 --> 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- phalcon:跟蹤sql語句SQL
- 使用10046跟蹤sql語句SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- mysql如何跟蹤執行的sql語句MySql
- 【MySQL】如何對SQL語句進行跟蹤(trace)?MySql
- 依據錯誤號來跟蹤sql語句SQL
- SQL效能的度量 - 語句級別的SQL跟蹤autotraceSQL
- 使用oracle的10046事件跟蹤SQL語句Oracle事件SQL
- [20150527]跟蹤單個sql語句.txtSQL
- oracle 使用者跟蹤 需要的sql語句總結OracleSQL
- [20160704]從跟蹤檔案抽取sql語句.txtSQL
- 透過ORADEBUG運用10046事件跟蹤SQL語句事件SQL
- [20130226]跟蹤特定IP的sql語句.txtSQL
- [20131031]從跟蹤檔案中抽取sql語句.txtSQL
- 0624使用10035事件跟蹤無法執行的sql語句事件SQL
- [20200326]dbms_monitor跟蹤與SQL語句分析.txtSQL
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視.txtSQL
- SQLServer進行SQL跟蹤SQLServer
- 會話級SQL跟蹤會話SQL
- SQL 的跟蹤方法traceSQL
- 追蹤應用程式所執行的sql語句SQL
- Oracle資料庫跟蹤SQLOracle資料庫SQL
- sql server跟蹤資料庫SQLServer資料庫
- SQL跟蹤工具和TKPROF使用SQL
- 跟蹤 sql 的trace檔案SQL
- 跟蹤使用者的SQLSQL
- sql_trace跟蹤工具(轉)SQL
- DM7聯機執行SQL語句進行加密備份與設定跟蹤日誌SQL加密
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視2.txtSQL
- PostgreSQL 原始碼解讀(15)- Insert語句(執行過程跟蹤)SQL原始碼
- 跟蹤SQL - SQL Trace 及 10046 事件SQL事件
- [20200424]跟蹤特定sql語句以及v$open_cursor檢視(再補充).txtSQL
- [20200422]跟蹤特定sql語句以及v$open_cursor檢視(補充).txtSQL
- SQL 跟蹤方法相關介紹SQL
- sql_trace 和 events 跟蹤事件SQL事件
- SQL SERVER 跟蹤標記總結SQLServer
- SQL語句SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL