這個儲存過程用於檢查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...