SYBASE 日志空间满了的几种情况

1、在数据库执行SQL语句时,执行不成功,报错:日志空间已满(***log full**)的错误

解决方法:执行 dump transaction DB_TASK with truncate_only   即可

2、在java项目运行时控制台报错:Space available in the log segment has fallen critically low in database 'DB_TASK_R11'.  All future modifications to this database will be aborted until the log is successfully dumped and space becomes available.

这个时候再用1的方法就不可以了,可以用一下方法:

sp_helpdb 'DB_TASK_R11'   -----在【device_fragments】字段查到对应日志文件的名称,例如:DEV_TASK_LOG01_R11

sp_helpdevice 'DEV_TASK_LOG01_R11'  ------查看原来日志文件存储的物理位置,查看查询结果的【physical_name】字段 结果为:C:\sybase\data\DEV_TASK_LOG01_R11.dat

 

disk init name = 'DEV_TASK_LOG02_R11',
physname = 'C:\sybase\data\DEV_TASK_LOG02_R11.dat',
size = '150M', dsync = false
go              --------在同样的物理位置上,参照日志文件1的名字创建日志文件2,大小视数据库的情况而定,一般不要超过DATA的大小

 

ALTER DATABASE DB_TASK_R11
log ON DEV_TASK_LOG02_R11 = 150
go                      ----------将新建的日志挂到对应数据库上

 

百度查询的是需要重启数据库才会生效,但是我没有重启数据库,重新运行java的web项目也没有在报这个错误,如果还报错可以重启一下数据库应该就好了。

 

PS:SELECT COUNT(*) FROM DB_TASK_R11..syslogs      ---这个语句可以查看数据库的日志里面的记录数

 

posted @ 2016-11-25 15:16  安静的程序媛  阅读(3906)  评论(0编辑  收藏  举报