日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句...

發布時間:2024/10/8 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle數據庫查看一個進程是如何執行相關的實際sql語句

代碼如下:

SELECT b.sql_text,sid,serial#,osuser,machine

FROM v$session a,v$sqlarea b

WHERE a.sql_address = b.address;

代碼如下:

select user_name,sql_text

from v$open_cursor

where sid in

(select sid from (select sid,username,program from v$session where status='ACTIVE'));

根據SPID查詢session

代碼如下:

SELECT * FROM v$session WHERE paddr IN

(SELECT addr FROM v$process WHERE spid=&spid);

根據SID查詢process

代碼如下:

SELECT * FROM v$process WHERE addr IN

(SELECT paddr FROM v$session WHERE sid=&sid);

DBA如何查詢其他用戶所進行的操作

代碼如下:

SELECT sql_text

FROM v$sql t1,v$session t2

WHERE t1.address = t2.sql_address

AND t2.sid = &sid;

根據process查詢sql語句

代碼如下:

SELECT sql_text

FROM v$sqltext a

WHERE (a.hash_value,a.address) IN (

SELECT DECODE (sql_hash_value,prev_hash_value,sql_hash_value ),

DECODE (sql_hash_value,prev_sql_addr,sql_address)

FROM v$session b

WHERE b.paddr = (SELECT addr

FROM v$process c

WHERE c.spid = '$processID'))

ORDER BY piece ASC;

其他

執行下列命令語句

代碼如下:

sqlplus / as sysdba

quit;

EOF

通過ps -ef|grep sqlplus命令得到上面所執行的命令的進程id為:12345

執行下面的sql是查不到相關的信息:

select * from v$process where spid='12345';

因為這個spid字段對應的并不是我們用ps命令從系統中查詢到的進程id,而是這個進程執行的當前sql的進程id,

也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所對應的進程id,如果想

通過用ps命令從系統中查詢到的進程id查看對應的信息,那么必須使用下面語句:

select spid,process,sql_address from v$session where process='12345'

上面sql中的process就是通過ps查看的進程id,而spid就是里面的sql語句所對應的進程id。

還可以通過上面的sql_address 查看正在執行的sql語句內容:

select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';

在查詢 v$session 視圖的時候,我們根據command字段內部表示解碼每一個字段,當我們需要快速找出他們的 Oracle 系統的內部情況時非常有用。

代碼如下:

select

substr(s.username,1,18) username,substr(s.program,15) program,p.spid,s.process,

decode(s.command,

0,'No Command',

1,'Create Table',

2,'Insert',

3,'Select',

6,'Update',

7,'Delete',

9,'Create Index',

15,'Alter Table',

21,'Create View',

23,'Validate Index',

35,'Alter Database',

39,'Create Tablespace',

41,'Drop Tablespace',

40,'Alter Tablespace',

53,'Drop User',

62,'Analyze Table',

63,'Analyze Index',

s.command||': Other') command

from

v$session s,

v$process p,

v$transaction t,

v$rollstat r,

v$rollname n

where s.paddr = p.addr

and s.taddr = t.addr (+)

and t.xidusn = r.usn (+)

and r.usn = n.usn (+)

order by username

sql--查看系統進程對應的信息

代碼如下:

select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text

from v$session se,v$process p,v$sqlarea s

where se.paddr=p.addr and se.sql_address=s.address and se.process='&1'

and se.username is not null

--查看所有的會話

代碼如下:

select se.username,se.saddr,se.process,s.sql_id

from v$session se,v$sqlarea s

where se.sql_address=s.address

--查看會話對應的sql內容

@L_403_10@ 代碼如下:

select se.username,v$sqlarea s

where se.sql_address=s.address and s.sql_id='&1'

總結

如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。

本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。

總結

以上是生活随笔為你收集整理的oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。