sybase空間監控和死鎖檢測語句

wangzh3發表於2006-09-27

一直習慣於oracle的空間檢視使用資料字典,鎖檢測可以用到oem工具或者其他工具裡面看session。

sybase還不是很習慣。sybase提供了系統儲存過程來看空間的使用,不過很難按照自己的要求定製,所以就去看對應系統儲存過程的實現,然後查sybase的系統表參考,相對來說,還好,系統儲存過程的實現沒有加密,所以比較容易看明白。

[@more@]

對於空間監控,oracle提供了表,可以直接用。對sybase不熟悉,只能用sp_helpdb或者sp_spaceuesd類似的系統儲存過程,考慮了一下,看系統表的參考吧。所以寫出如下語句:

use master

go

select b.name,sum(a.size) *2 ,sum(a.unreservedpgs) *2 unreservedpgs from sysusages a,sysdatabases b

where a.dbid=b.dbid

group by b.name

go

測試,ok。

說明:*2表示頁的大小是2k,得到的結果也是k,結果集中第一個欄位是資料庫的名稱,第二個是該資料庫分配的空間,第三個是該資料庫尚未使用的空間。根據實際需要擴充套件該sql即可,可以得到某個表空間的使用率超過75%之類的告警。

對於死鎖的監控,很麻煩,參考sp_sysmon以及sp_who和sp_lock的實現,寫了語句如下:

select p.spid,suser_name(p.suid),p.blocked,suser_name(p1.suid),db_name(p.dbid),p.status,p.program_name,getdate()p.time_blocked

from master..sysprocesses p,master..sysprocesses p1

where p.blocked>0 and p.blocked *=p1.spid

可以根據time_blocked的大小判斷是阻塞還是死鎖,如果時間很短就結束了,說明是阻塞,如果很長,就應該是死鎖了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-867560/,如需轉載,請註明出處,否則將追究法律責任。

相關文章