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。不推荐)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。