sybase的日志记录了所有对数据的增删改 *** 作,做了日志备份后随即自动清除,但如果没有做备份,就得把数据库设置为自动清除日志,否则日志随着时间推移会把存放数据库日志的设备空间撑满(有的人建库时还可能不小心把数据和日志混放,就是说数据库属性中显示的不是:“数据”或者“日志”而是“数据和日志”),数据库空间一旦被撑满就停止运行,必须要手工清除掉才能继续运行。
设置自动清除日志方法:数据库-属性->选项->trunc log on checkpoint打上勾
详细步骤,已测试成功[@more@]
1、备份数据库,包括 master 和你要分离数据与日志的应用库,最好是备份所有数据库;
2、检查数据库的日志是否有单独的存放设备,如有,则直接到第5步;
3、如没有单独的日志设备,则增加一个设备:disk init ;
4、alter database db_name log on new_log_device=xxx
5、sp_logdevice dbname,new_logdev (移动日志设备)
6、sp_dropsegment logsegment, db_name, device_name (如果数据库有多个设备既放数据又放日志,则
要相应的运行几次
7、创建一个临时表,然后往里面插入足够的数据,然后截断日志
use db_name
go
create table t1 (id int)
go
declare @loop int
select @loop = 1
while(@loop<500)
begin
insert t1 values(@loop)
select @loop = @loop + 1
end
go
dump tran db_name with truncate_only
go
8、到此,数据与日志的分离已经完成,使用sp_helpdb db_name或sp_helplog查看是否已分离。
增加和删除 segment 并不移动当前的已分配空间。日志至少有一个扩充(extend)位于以前的 segment
上(还记得吗,为对象分配存贮单元时,实际是以 extend 为单位的。)。如果当前 extend 被填满,需要再
为日志分配时,ASE会在新的 segment 上分配(segment 约束它不得不这么做)。此时,截断日志就可以回收
以前分配的 extend 了。
最后,还是要备份所有数据库
1 *** 作系统版本?数据库版本分别是什么?
2 根据当前的日志分析应该是内存溢出导致的,修改一下注册表,新建dword值“'LargeSystemCache” 设置成0如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache,重启windows使之生效。
然后再观察是否还停止服务
3 另外再观察一下产品的license是否过期?
您好,很高兴为您解答。 第一步:设定Sybase数据库自动截断日志: 方法一: [sql] isql -Usa -Ppassword -Ssybaseserver >sp_dboption database_name,"trunc log on chkpt",true >go >checkpoint >go方法二:在sybase central 数据库属性对话框
数据库db 和log都是配对的, 你的问题是这两者不同步了。你可以这样检查,利用dblog工具:
----------
C:\>dblog demodb
Adaptive Server Anywhere Transaction Log Utility Version 9023951
"demodb" is using log file "demolog"
"demodb" is using no log mirror file
Transaction log starting offset is 0000430509
Transaction log current relative offset is 0000086674
C:\>dblog demolog
Adaptive Server Anywhere Transaction Log Utility Version 9023951
File "demolog" is a transaction log file
File version is 41
Log starts at offset 0000430509
Log ends at offset 0000517183
Log contains 64 pages with a page size of 2048 bytes
86674 bytes in use (6613%), 44398 bytes free (3387%)
------------
两个的offset(指针位移)应该是一样的。
你的情况可以这样解决:
把dblog移到另外一个地方,加上 “-f” 这个恢复选项(这个是针对SQL Anywhere, 如果是其他数据库如ASE,你可以查下文档),重启你的数据库,它应该会重新生成一个log文件。
如果还不行,可以补充提问。拜托采纳为最佳答案吧。
以上就是关于为什么长时间运行后,要对sybase数据库的日志进行清空全部的内容,包括:为什么长时间运行后,要对sybase数据库的日志进行清空、sybase 检查数据库的日志是否有单独的存放设备、sybase数据库总停止服务,请高手帮看看错误日志等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)