一件关于数据库日志log的无聊事情

为何说是无聊的记录呢?

因为事先把问题想复杂了,事后发现的时候觉得更是无聊的行为。还是写下来,毕竟很少弄这么无聊的事情。

事情起因是需要给服务器做性能基数(baseline),用sqldiag 提取了大量的log信息,当然这里的数据库日志并不是指ldf文件。当我打开SQL 2005或2008的对象资源管理器-->管理-->SQL Server 日志察看发现日志大约有百万行,当然原因我就不说了。

日志log数据太大怎么办?

先查看日志log如何被调用的,在TSQL中执行

[python] view plain copy

  1. --查看日志文件的存档号
  2. EXEC master.dbo.sp_enumerrorlogs

显示结果为

有了存档号,接着查看某一个日志文件异常大的log内容(图中的异常日志已经被清除了,所以这里记录的时候暂且认为存档#为4的日志是异常大文件)

接下来看看存档4的log内容,在TSQL中执行

[python] view plain copy

  1. --根据存档号查看该档日志内容
  2. EXEC master.dbo.xp_readerrorlog 0
  3. EXEC master.dbo.xp_readerrorlog 1
  4. EXEC master.dbo.xp_readerrorlog 2
  5. EXEC master.dbo.xp_readerrorlog 3
  6. EXEC master.dbo.xp_readerrorlog 4
  7. EXEC master.dbo.xp_readerrorlog 5
  8. --因为我只需要查看文件大小异常的4号档,所以执行
  9. EXEC master.dbo.xp_readerrorlog 4

通常结果会返回如下图的内容

话说到这儿,才开始我那愚蠢且无聊的做法。(直到现在我仍然认为这个做法相当怪异)

因为这个日志log内容非常大,大约为数百万行,导致用sqldiag提取的__sp_sqldiag_Shutdown.OUT文件大小有近2G。于是有清除这个日志的想法,因为已经备档(备档的方式是将内容存为文本),所以可以清除日志。

于是我就想找到这个log内容是存放在数据库MASTER的哪个表中,以便于干掉它。找来找去,只让我看到xpstar.dll 和xpstar90.dll这些信息。既然是调用动态链接库,我也要看看这个dll的内容,于是从网上下载ReflectorDepends 进行反编译,接着反编译出错。

到这里,其实GOD已经提醒我该走出去呼吸一下新鲜空气再回来思考,结果我没有那样做。这段过程大约花费近3个小时时间,用《 Becoming a Technical Leader》里的话说,我已经进入了神游状态,当然我自己丝毫没有发觉。

隔日清晨,来到办公室,当我下意识的打开系统中下面路径时,“密码”被破译了。其实只要删除log目录下ERRORLOG以及一系列ERRORLOG.1文件即可。

X:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/Log

其实我可以对自己说一句“神啊”,从结果看过程原来一切都是那么简单。

当然,为了清除这个日志log内容,也有问一些朋友,不过他们都误以为我要清除ldf日志文件。写下来也是告诉自己:方向错了,停下来就是前进!!

时间: 2024-07-30 18:22:50

一件关于数据库日志log的无聊事情的相关文章

SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid不正确、数据库日志文 件丢失

客户名称:深圳某科技信息有限公司 数据库类型:sql2000 数据库大小:20g 故障经过 电脑突然断电,软件就显示某数据库错误,无法连接,打开企业管理器,显示数 据库质疑,DBCC查询显示" SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid不正确.数据库日志文件丢失". 处理经过 客户找到我们,然后我们让客户把数据库压缩发给我们,首先我们先对数据进行 检测分析,确定是" I/O 错误 ",然后我们就开始用我们的修复工具对数据进 行全面性的分

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

数据库日志报错问题分析

Thread 1 cannot allocate new log, sequence 466 Private strand flush not complete Current log# 7 seq# 465 mem# 0: /home/app/oracle/oradata/orcl/redo07.log Thread 1 advanced to log sequence 466 (LGWR switch) Current log# 8 seq# 466 mem# 0: /home/app/or

SQL Server 2008 R2 下如何清理数据库日志文件

USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE GO USE [数据库名] GO DBCC SHRINKFILE (N'[数据库日志文件名称]' , 0,TRUNCATEONLY) GO USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY FULL WITH NO_

一个哥们看到数据库日志不断增大 [log_reuse_wait_desc]为replication 之后的做法

一哥们看到数据库日志不断增大 [log_reuse_wait_desc]为replication 之后的做法 一天那个哥们看到数据库日志暴涨,用sys.databases 视图看一下[log_reuse_wait_desc]为replication,但是数据库根本无做replication 但是数据库有做CDC 数据抽取,最后发现原来是CDC的问题,导致收缩日志失败,把CDC停掉,问题解决 因为CDC跟replication都是使用同一个log reader线程,sys.databases里的l

数据库日志文件收缩

项目所使用的数据库通过备份还原来的,导致日志文件很大,占用了很大的空间,在网上搜索了日志收缩的信息,整理了下. --清空日志 DUMP  TRANSACTION  EWABOQDB  WITH NO_LOG --截断事务日志 BACKUP LOG EWABOQDB WITH NO_LOG --收缩日志 右键要收缩的数据库--任务--收缩--文件--文件类型选择日志--收缩方式中选择收缩至XXM输入确定 以上已完成日志文件的收缩,日志文件所占空间已减少 下面是对日志文件的增长规则进行了个限制 右键

Exchange Server 2013&2010 邮箱数据库日志清理

随着企业业务量的增大.人员的增加以及Exchange邮件系统使用时间的增长,邮件服务器中的数据库日志会日益增加.而且随着邮件系统利用率的提高,邮箱数据库的日志数量也会急剧增加.系统会在日志文件夹中生成一个接一个的大小为1024KB且后缀名为log的日志文件.已一个400人的房地产公司为例,我们可以看到(如下图),在相对高峰的时期,每1分钟,都会有几个到十几个,甚至几十个的日志文件.长此以往,邮件服务器磁盘的占用量会非常的高,如果不采取一定的措施,我们的磁盘就惨了! BTW:补充一句,邮箱数据库所

转:使用fn_dblog解析SQL SERVER 数据库日志方法

http://blog.itpub.net/8183550/viewspace-682907 一直以来我都很困惑,不知道怎么解析SQL SERVER的日志, 因为微软提供了fn_dblog(NULL,NULL)和DBCC LOG获取数据库日志的基本信息,但是都是二进制码,看不懂.最近终于成功解析了SQL SERVER LOG信息 在fn_dblog(NULL,NULL)输出结果中, 获取表名是AllocUnitName字段. 具体获取方法:AllocUnitName like 'dbo.TEST

清除SQL 数据库日志

随着生产数据的日志越来越大,硬盘空间越来越小的时候,我们就需要考虑清理一下数据库日志,以前都是手工弄,现在找到一个语句直接自动处理,方便很多,分享一下. DUMP TRANSACTION CMSDemo WITH NO_LOG BACKUP LOG CMSDemo WITH NO_LOG DBCC SHRINKDATABASE(CMSDemo) EXEC sp_dboption 'CMSDemo', 'autoshrink', 'TRUE'