今天给一张表添加新字段,怎么也添加不上去,后来用sql语句写,看了报错信息才知道是日志空间满了。
所以收集了一些资料,如下:
SYBASE ASE的每一个数据库,无论是系统数据库(master,model, sybsystemprocs, tempdb),还是用户数据库,都有自己的transaction log,每个库都有syslogs表。Log记录用户对数据库修改的操作,所以如果不用命令清除, log会一直增长直至占满空间。清除log可用dump transaction 命令;或者开放数据库选项trunc log on chkpt,数据库会每隔一段间隔自动清除log。管理好数据库log是用户操作数据库必须考虑的一面。
Server Cache Memory中日志页总是先写于数据页:
如果数据库开放trunc log on chkpt选项,则ASE在数据库系统执行checkpoint时自动清除log。但用户自己写入执行的checkpoint命令并不清除log,即使trunc log on chkpt选项开放。只有在trunc log on chkpt选项开放时,ASE自动执行checkpoint动作,才能自动清除log 。
数据库的log是不断增长的,必须在它占满空间之前清除。前面已经讨论过,清除log可以开放数据库选项trunc log on chkpt,使数据库系统每隔一段时间间隔自动清除log,还可以执行命令dump transaction 来清除log.trunc log on chkpt 选项同dump transaction with truncate_only 命令一样,只是清除log而不保留log到备份设备上。所以如果只想清除log而不做备份,可以使用trunc log on chkpt 选项及dump transaction with truncate_only,dump transaction with no_log 命令。若想备份,应做dump transaction database_name to dumpdevice。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
dbcc checktable (syslogs) 可以看见日志情况:
*** 注意:日志段上保留的空间是 2 页 (0.03 MB),0.16%。
*** 注意:日志段上的可用空间是 1250 页 (19.53 MB),97.66%。
表包含 1041 数据行。
用快速方法来判断transaction log 满的程度。
select data_pgs(8,doampg) from sysindexes where id=8
开放trunc log on chkpt选项(或者右击数据库,选择‘属性’,再选择‘选项’)
sp_dboption ttms_upload ,trunc,true
清除LOG日志
dump transaction dbname with truncate_only
解决办法: dump transaction ttms_upload with truncate_only