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 ---这个语句可以查看数据库的日志里面的记录数