v$session 視圖的一個(gè)不太有名的特性是它能夠解碼由單個(gè)會(huì)話執(zhí)行的實(shí)際命令。信息被編碼到一個(gè)非凡的字段 v$session_command。
在查詢 v$session 視圖的時(shí)候,我們根據(jù)它的內(nèi)部表示解碼每一個(gè)字段。這樣我們就可以創(chuàng)建一個(gè)數(shù)據(jù)字典查詢,使用這個(gè)數(shù)據(jù)字典來顯示每一個(gè)用戶、這些用戶在執(zhí)行的程序,以及在這些用戶的系統(tǒng)中正在執(zhí)行的程序內(nèi)部當(dāng)前的命令。
當(dāng)你需要快速找出他們的 Oracle 系統(tǒng)的內(nèi)部情況時(shí)非常有用。
這個(gè)簡(jiǎn)單的腳本舉例說明了 v$session_command。
select
substr(s.username,1,18) username,
substr(s.PRogram,1,15) program,
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