檢查trace的儲存過程

2021-04-02 14:34:43 字數 3491 閱讀 2132

這個儲存過程用於檢查trace所在分割槽的空間大小,如果小於設定的值,則停止儲存到這個分割槽的trace

if exists (select * from dbo.sysobjects where xtype='p' and name ='up_autotrace_check')

drop procedure up_autotrace_check

gocreate procedure dbo.up_autotrace_check

@path varchar(256) ='e:trace', --路徑,用於儲存trace檔案,必須是絕對路徑

@minmbfree int = 50 --最小可用磁碟空間,小於此值則停止trace

--@systemversion varchar(256) ='chinese' --作業系統版本,如果是英文版,請輸入english,預設是簡體中文版

/**********

--檔名 :

--用途 :檢查磁碟空間,如果可用磁碟空間小於輸入的值,則停止所檢查分割槽上的所有的trace

--輸入引數 :

--返回值解釋 :

--建立者 : summer.yang

--建立日期 : 2005-6-18

--修改者 :

--修改日期 :

--修改註解 :(引用請保留此資訊)

--備註說明 :檢查輸入的路徑下是否存在trc檔案,用作停止trace的根據

**********/

--建立作業,定期執行

--如果trace儲存到表中,則檢查不到

--如果儲存路徑是共享路徑,如何檢查?

asset nocount on

set @path=ltrim(rtrim(@path))

--------------

--如果不存在trace則退出

if not exists(select * from :: fn_trace_getinfo(0)

where property=2 and convert(char(2),value) like left(@path,2)+'%'

) goto finish

--------------

declare @file varchar(26),@tracefile varchar(256)

declare @cmd_sql varchar(4000),@mbfree int,@message varchar(4000)

create table #tbl(dir_file nvarchar(1000) null )

----檢查可用空間

/*d:>freedisk

info: 105,071,742,976 bytes free on current volume.

e:>freedisk

資訊: 當前卷上有 42,912,407,552 位元組可用。

*/set @cmd_sql = 'freedisk '

insert into #tbl(dir_file) exec master.dbo.xp_cmdshell @cmd_sql

select * from #tbl

if (select charindex('info:',dir_file,1) from #tbl where dir_file is not null)>0

begin

select @mbfree = cast(replace(substring(dir_file,charindex('info',dir_file)+5,charindex('bytes',dir_file,1)

-(charindex('info',dir_file)+5)),',','') as bigint)/1024/1024

from #tbl where dir_file is not null

endelse if (select charindex('資訊:',dir_file,1) from #tbl where dir_file is not null)>0

begin

select @mbfree = cast(replace(substring(dir_file,charindex('info',dir_file)+5,charindex('bytes',dir_file,1)

-(charindex('info',dir_file)+5)),',','') as bigint)/1024/1024

from #tbl where dir_file is not null

endprint '當前磁碟分割槽"'+ left(@path,2)+'"的可用空間是: '+ltrim(str(@mbfree))+'mb'+char(10)

if @mbfree <= @minmbfree

begin

declare @traceid int,@activetracefile varchar(256)

declare @cursor cursor

set @cursor=cursor forward_only static for

select traceid,convert(varchar(256),value) from :: fn_trace_getinfo(0)

where property=2 and convert(char(2),value) like left(@path,2)+'%'

open @cursor

fetch next from @cursor into @traceid,@activetracefile

while @@fetch_status=0

begin

exec sp_trace_setstatus @traceid, 0 --停止跟蹤

exec sp_trace_setstatus @traceid, 2 --關閉跟蹤

set @message='由於磁碟分割槽'+ upper(left(@path,1))

+'的可用空間低於儲存過程up_autotrace_check的引數輸入值:'+ltrim(str(@minmbfree))

+',已經關閉trace! '+char(10)

+'此trace的id為:' +ltrim(str(@traceid))+char(10)

+'儲存的trace檔案為:' +@activetracefile+'.trc'

raiserror (@message,16,1) --with log

fetch next from @cursor into @traceid,@activetracefile

endend

-------------

--刪除已經存在的1個月前的trc檔案

--set @cmd_sql = 'if exist ' + @tracefile + '.trc ' + 'del ' + @tracefile + '*.trc'

--exec @return = master.dbo.xp_cmdshell @cmd_sql, no_output

finish:

go

停止trace的儲存過程

停止trace的儲存過程 這個儲存過程和建立trace的儲存過程配合,可以非常靈活的控制trace的建立和停止。一般地,在作業中建立trace,可以設定trace執行的時間,到時間trace自動停止,不需要使用這個儲存過程停止。用這個儲存過程,是可以手動停止trace的執行。use system g...

RAC linux 儲存檢查

儲存檢查主要是針對共享儲存來說的。由於ip san是通過網路來傳送磁碟資料,磁碟的吞吐量不僅受磁碟本身的影響,也受到網絡卡 交換機 網線等網路元件的影響。在安裝 oracle rac之前有必要對磁碟的吞吐量等指標資料進行測試。雖然大部分生產環境並不是用的iscsi方式,但以下方式同樣適用於生產環境的...

批量刪除儲存過程的儲存過程

create procedure dropprocedure as declare cur cursor read only for select name from sysobjects where xtype p and name like drop declare name varchar 4...