有懂SYBASE的,过来帮我看看。

我这的数据库用得SYBASE ,前段时间突然两次数据库停止工作了。通过SYBASE日志发现是TEMPDB的事务日志满了,其实我专门给TEMPDB的事务日志配了500MB的空间,由于找不到事务日志满的原因,通过网上的资料我在SYBSYSTEMPROCS中添加了SP_THRESHOLDACTION的一个存储过程,因为做测试,故意吧@space_lefe的值设置得比现实情况的少,一天时间里面SYBASE日志内也看不到运行存储过程的记录,TEMPDB的事务日志也不见有什么变化,高手看看是我的这个过程有问题,还是有什么东西我忘了做。多谢
CREATE PROCEDURE dbo.sp_thresholdaction
/* [@param_name datatype [= default] [output], ...] */
@db_name varchar(30)=tempdb,
@seg_name varchar(30)=logsegment,
@space_lefe int=1044470,
@status int=1

AS
BEGIN
dump transaction tempdb
with truncate_only
         
END

作者: bulesky   发布时间: 2010-07-12

一、你加了这个存储过程并不代表日志快满的时候能够自动触发,你要去设置;
二、tempdb我估计你就算是触发了这个存储过程都不一定清的掉日志;
三、tempdb建大一点,不用单独的日志,data和log混放是个比较好的选择

作者: 5个周   发布时间: 2010-07-12

敢问高手,应该怎么设置?我以前没用过SYBASE,这个过程也是网上找来的,以为管用。我的TEMPDB和事务日志加起来有2.5G的空间了,我的数据库也就10来个G,照理应该够了,不需要再扩了。

作者: bulesky   发布时间: 2010-07-13

优化SYBASE数据库的时候,SYBASE的工程师建议我们把日志和数据库分离,所以才这样日志和TEMPDB分离在不同的裸设备上。

作者: bulesky   发布时间: 2010-07-13

sp_helpthreshold添加代码了,
你得设定何时触发阈值吧?

作者: andkylee   发布时间: 2010-07-13

bulesky

发表于 2010-7-13 08:40
优化SYBASE数据库的时候,SYBASE的工程师建议我们把日志和数据库分离,所以才这样日志和TEMPDB分离在不同的裸设备上。

用户库或者叫生产库的数据和日志是应该分开放的,但是tempdb是例外的,应该是混放,而且这个跟优化没关系,恐怕你需要去了解一下tempdb里面放哪些东西以及怎么放才行,不是网上怎么说就怎么做。而且你找到的那个资料在ASE的管理手册里面根本就是有的,而且很详细,但是说实话,这个存储过程即使设置了,通常也木啥用,索性不设置。


tempdb的大小跟你的生产库没有任何的关系,跟你的应用有很大的关系,按照你现在的情况,我建议你把你的2.5G的tempdb全部搞成数据和日志混放的可能会比较好一些。

作者: 5个周   发布时间: 2010-07-13

可以设置自动截断log的,当日终增长到一定大小后自动截断。

作者: 五岳分析   发布时间: 2010-07-14

tempdb通常设置了checkpoint的时候清除日志,因此,如果你数据和日志分开,又发生日志满的情况,那时候的日志肯定是活动的,无法删除。这种情况下,数据库这边只能通过增加日志空间。
我认为,你还应该检查应用程序,看什么原因导致数据库日志满,通常是sql语句写的不好

作者: zjut   发布时间: 2010-07-18