热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

sybase日志问题普及篇

来源: 作者: 时间:2007-09-13 Tag: 点击:


(三)阈值管理 

  系统缺省建立最后机会阈值,由用户编写缺省阈值处理存储过程( sp_thresholdaction ),来控制自由空间。除此之外,还可以使用以下存储过程管理阈值: 

sp_addthreshold 建立一个阈值 

sp_dropthreshold 删除一个阈值 

sp_helpthreshold 显示阈值有关的信息 

sp_dboption 改变阈值的“挂起或取消”行为和取消阈值管理 

sp_helpsegment 显示某个段上空间大小和自由空间大小的信息 

(四)增加阈值(sp_addthreshold) 

  它用于创建阈值( threshold )来监测数据库段中空间的使用。如果段中自由空间低于指定值,SQL Server运行有关的存储过程。增加阈值的命令语法为:
sp_addthreshold database, segment, free_pages, procedure  

  其中: 

database——要添加阈值的数据库名。必须是当前数据库名称。 

segment——其自由空间被监测的段。当指定“default“ 段时要用引号。 

free_pages——阈值所指的自由空间页数。当段中自由空间低于该标准时,SQL Server运行有关存储过程。 

procedure——当segment中的自由空间低于free_pages时,SQL server 执行该存储过程。该过程可以放置在当前SQL Server或Open server的任意数据库中。但是,超出阈值时,不能执行远程SQL Server上的存储过程。 

  例如:sp_addthreshold pubs2, logsegment, 200, dump_transaction 

  其中,存储过程定义为: 

create procedure dump_transaction 
@ dbname varchar (30), 
@ segmentname varchar (30), 
@ space_left int, 
@ status int 
as 
dump transaction @dbname to "/dev/rmtx"  

  那么,当日志段上可用空间小于200页时,SQL Server运行存储过程dump_transaction,将pubs2 数据库的日志转储到另一台设置上。 

  sp_addthreshold不检查存储过程存在已否。但当阈值越出时,如果存储过程不存在,SQL Server把错误信息送到错误日志( errorlog )中。系统允许每个数据库有256个阈值,而同一段上二个阈值之间的最小空间为128页。其存储过程可以是系统存储过程,也可是在其它数据库里的存储过程,或者Open Server远过程调用。 

(五)删除阈值(sp_dropthreshold) 

  它删除某个段的自由空间阈值,但是不能删除日志段的最后机会阈植。删除阈值的命令语法为: 

sp_dropthreshold database_name,segment_name,free_pages  

  其中三个参数分别为:阈值所属数据库名,阈值所监测的自由空间的段名,和自由空间页。例如: 

sp_dropthreshold pubs2, logsegment, 200 
删除pubs2库中logsegment段的阈值200。 

(六)显示阈值(sp_helpthreshold) 

  它报告当前数据库上与所有阈值有关的段,自由空间值,状态以及存储过程或报告某一特定段的所有阈值。显示阈值的语法为: 

sp_helpthreshold [segment_name]  

  其中segment_name是当前数据库上一个段的名字。 

  例如: 

sp_helpthreshold logsegment 显示在日志段上的所有阈值 
sp_helpthreshold 显示当前数据库上所有段上的全部阈值 
(七)sp_dboption的新选择 

  abort xact when log is full  

  当日志段的最后机会阈值被超越时,试图往该日志段上记日志的用户进程将被挂起还是被撤回?缺省情况下系统挂起所有进程。但是可以使用sp_aboption改变它。执行sp_dboption salesdb,"abort xact when log is full",true 命令后,一旦日志满了,则数据库修改事务将会被回滚。 

  disable free space acctg 

  这个选择取消数据库中的阈值管理,但不影响最后机会阈值。执行:sp_dboption saledb, "disable free space acctg",true 它取消对非日志段上自由空间的统计。取消后,对系统有以下影响: 

SQL Server仅计算日志段上的自由空间 

日志段上的阈值继续处于活动状态 

在数据段上,系统表不改变,并且sp_spaceused得到的值是该选择被取消时刻的值 

数据库段上的阈值失效 

恢复加快 

(八)阈值的触发过程 

  频繁的插入和删除可能会使数据库段中的空间波动,阈值可能被多次超越,SQL Server使用系统变量@@thresh_hysteresis,避免连续触发阈值存储过程。它的值由SQL Server设定。在system 10.0中,@@thresh_hysteresis是64页。 

  如图所示: 

 

  

  因此,增加一个阈值,它必须与下一个最近的阈值相距至少2*@@thresh_hysteresis页。 

  一个阈值被触发,需要以下几个条件成立: 

必须到达阈值 

阈值处于活动状态(即它被建立后或者自由空间达到阈值减于@@thresh_hysteresis) 

只有自由空间减少阈值才触发,如果自由空间增加,它永远不触发 

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册