是否可以在Oracle數據庫上顯示正在進行的其他進程? Sybases之類的東西sp_who
如何在Oracle DB中顯示正在運行的進程?
56
A
回答
73
我懷疑你只是想抓住從V $ SESSION數列和從V $ SQL的SQL語句。假設你要排除甲骨文本身運行
SELECT sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text
FROM v$session sess,
v$sql sql
WHERE sql.sql_id(+) = sess.sql_id
AND sess.type = 'USER'
外連接的後臺進程是處理那些沒有當前活動的會話,假設你想那些。您還可以從V $ SQL中獲得sql_fulltext列,該列將具有完整的SQL語句而不是前1000個字符,但這是一個CLOB,因此處理起來可能更復雜一點。
實際上,您可能希望查看V $ SESSION中可用的所有內容,因爲它可能比SP_WHO提供的信息多得多。
5
查看sp_who後,Oracle本身沒有這種能力。 Oracle至少有8個運行db的進程正在運行。像RMON等
您可以詢問數據庫哪些查詢正在運行,因爲這只是表查詢。看看V $表。
簡單的例子:
SELECT sid,
opname,
sofar,
totalwork,
units,
elapsed_seconds,
time_remaining
FROM v$session_longops
WHERE sofar != totalwork;
1
請記住,數據庫上有可能不支持會話的進程。
如果你感興趣的所有進程,你會想看看到v $過程(或GV $進程RAC)
3
這一個顯示SQL是當前「活動」: -
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/
這顯示鎖。有時候,事情的進展緩慢,但它是因爲它被阻止等待鎖:
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/
這是一個很好的尋找長期操作(例如全表掃描)。如果是因爲很多短暫的操作,則什麼都不會顯現。
COLUMN percent FORMAT 999.99
SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,(sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/
相關問題
- 1. 如何顯示正在運行的進程列表Python?
- 2. 對所有正在運行的進程不顯示進程MainWindowTitle
- 3. 在ListView中顯示正在運行的進程圖標
- 4. MAT:Eclipse沒有顯示任何正在運行的進程
- 5. 如何讓Perl/Tk進度條顯示外部進程正在運行?
- 6. 如何在Android進程中獲取正在運行的線程?
- 7. PS命令不顯示正在運行的進程
- 8. 如何在正在運行的活動中顯示活動?
- 9. 如何在php中顯示正在運行的mysql查詢
- 10. 爲什麼JPS不顯示進程正在運行?
- 11. 「heroku ps」顯示沒有進程正在運行
- 12. 如何在matlab中終止正在運行的進程?
- 13. 如何在Windows Phone 7中列出正在運行的進程?
- 14. 如何在VB.NET中查找正在運行的進程
- 15. 如何在Linux中創建正在運行的進程圖
- 16. 如何在Netbeans中停止正在運行的進程
- 17. 當線程中的一個進程正在運行時,ProgressDialog未顯示
- 18. 如何顯示列表進程,當我在c運行sql * loader#
- 19. 如何在python中與正在運行的進程進行交互?
- 20. 在後臺運行的進程的顯示進度
- 21. Foxpro訪問正在運行進程的窗口以及如何結束正在運行的進程
- 22. 正在運行pytest進程中
- 23. 如何從正在運行的進程中分叉?
- 24. Oracle DB - 如何在模式/所有者之間顯示priv?
- 25. 如何在mac上找到正在運行的java進程的進程ID?
- 26. 正在運行的進程的Python REPL
- 27. 如何在Linux中讀取正在運行的進程的線程組標識
- 28. 在Mac OS X上顯示正在運行的應用程序
- 29. 正在運行的任務進程ID
- 30. 重定向正在運行的進程
如果您需要快速查看了很長時間運行的查詢,你可以在`SELECT`加上`sql.elapsed_time/1000000`,加約束'WHERE ... AND sql.elapsed_time IS NOT NULL` ,最後是`ORDER BY sql.elapsed_time DESC`。 – 2012-02-08 13:55:52