Sql清理日志文件
-
场景:
我们导入MR数据时发现磁盘空间不够用了,导致的结果就是我们的程序很可能会抛出异常了,我们需要导入数据的时候进行日志瘦身。
问1:导入数据的时候,瘦身是否会造成数据库的异常?
-
DBA提供解决方案:
回答问1:
没有问题。不会产生冲突。不过要给日子预留空间,防止被填满。
1. 确认M_Develop 的恢复模式是否为简单simple。
查看脚本如下。
select recovery_model_desc,name
from sys.databases
where name=‘M_Develop‘
2. 如果不是simple。请改为simple
修改脚本如下:
USE [master]
GO
ALTER DATABASE [M_Develop] SET RECOVERY SIMPLE WITH NO_WAIT
GO。
3.恢复模式为simple之后。确认日志大小,和占用百分比:脚本如下:
dbcc sqlperf(logspace)
4.如果数据库是simple之后,log space used(%) 日志占比应该比较小。
5.收缩日志文件大小
use M_Develop
go
--找到库的日志文件名称
select name
from sys.database_files
where type_desc=‘log‘
--缩小日志,假设上述查询结果日志名为M_Develop_log,收缩至10G,那么脚本如下
dbcc shrinkfile (M_Develop_log,10240)
--再次检查日志量大小
dbcc sqlperf(logspace)
(备注:其中将数据库模式改为simple是为了性能考虑。如果不更改,那么需要备份日志,backup log。不推荐)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。