`
zzc1684
  • 浏览: 1191006 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

虚拟日志文件剖析(转)

阅读更多

每 一个数据库至少有一个日志文件,无论为事务日志定义多个少物理文件,SQL Server均视为一个连续的文件。该事务日志文件实际上由一系列的虚拟日志文件VLF来管理。虚拟日志文件的大小由SQL Server的总日志文件的大小决定。虚拟日志文件的物理结构图如下所示:

当该日志文件收缩时,日志文件末端的未使用的VLF可以被删除。

在SQL server2000中,日志文件仅可以从日志文件的尾部收缩,但是微软已经纠正先前在SQL server 7.0中的问题,当你备份或截断日志时,SQL Server会自动将日志的活动部分转移到文件的始端,然后你运行DBCC SHRINKFILE或DBCC SHRINKDATABASE命令来释放未使用的空间。

如果要判断日志文件中有多少个虚拟日志文件,并且哪些虚拟日志文件是活动的,可以使用未归档命令DBCC命令:DBCC LOGINFO,其语法如下:

DBCC LOGINFO [ ( dbname ) ]

下面我们来通过一个示例来介绍DBCC LOGINFO的用法,同时查看日志收缩与截断的工作原理与实现机制。

首先,创建一个测试数据库,脚本如下:

USE MASTER;

GO

CREATE DATABASE logtest

GO

ALTER DATABASE logtest SET recovery FULL

GO

USE logtest;

GO

DBCC loginfo;
GO

从图中可以知道,活动的虚拟日志文件的状态(status)为2,logtest数据库有两个虚拟日志文件,当前仅有一个虚拟日志文件是活动的,现在创建一个表,然后填充一些行,以产生一些日志再查看日志的变化情况。

SELECT TOP 10000 * INTO bigOrderHeader

FROM AdventureWorks.Sales.SalesOrderHeader

GO

DBCC loginfo
GO

此时你将看到日志文件中有12个虚拟日志文件,并且它们都是活动的(状态都为2),现在,收缩日志然后再查看有什么变化?

DBCC SHRINKFILE (logtest_log)
DBCC LOGINFO
GO

由于未对数据库进行备份,仍没有活动事务,SQL Server将认为你不需要保留日志的不活动部分,就将其删除。现在对数据库进行备份。

BACKUP DATABASE logtest

TO DISK = 'f:\logtest.bak'
GO
已为数据库'logtest',文件'logtest' (位于文件1 上)处理了440 页。

已为数据库'logtest',文件'logtest_log' (位于文件1 上)处理了2 页。

BACKUP DATABASE 成功处理了442 页,花费0.851 秒(4.246 MB/秒)。

现在再运行一些日志记录,重新检查日志的变化情况:

SET ROWCOUNT 1000

GO

BEGIN TRAN

DELETE bigOrderHeader

ROLLBACK TRAN

GO

SET ROWCOUNT 0

GO

DBCC loginfo

GO

从上图注意到,现在有3个标记为2的活动事务,然后收缩该日志:

DBCC shrinkfile ( logtest_log)

GO

无法收缩日志文件2 (logtest_log),因为所有的逻辑日志文件都在使用中。

(1 行受影响)

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

从输出信息知道,该文件的上一个虚拟日志文件仍旧是活动的,因此发生了失败,SQL Server不能从文件的末端进行收缩,接着我们执行另一个事务,让日志继续增长:

SET ROWCOUNT 5000
GO
BEGIN TRAN
DELETE bigOrderHeader
ROLLBACK TRAN
GO
SET ROWCOUNT 0
GO
DBCC loginfo
GO

此时的日志也不能进行收缩,原因在于标记的虚拟日志用于还原操作,只有该日志做了备份或截断,其空间才可以被释放。

BACKUP LOG logtest WITH TRUNCATE_only

DBCC loginfo

GO

现在作了标记的虚拟日志将不再需要(日志记录要么是截断的要么是已经备份至磁盘),日志文件可以进行收缩。

DBCC shrinkfile (logtest_log)

DBCC loginfo

GO

(1 行受影响)

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

(2 行受影响)

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

分享到:
评论

相关推荐

    conpot虚拟工控蜜罐日志文件

    这是一个真实搭建的conpot工控蜜罐所捕获的真实异常网络会话,可用于挖掘 Conpot是一个部署在服务端的低交互ICS蜜罐,能够快速地部署、修改和拓展。开发者通过提供一系列的通用工控协议,使得我们能够非常快速地在...

    基于大数据 Spark SQL的日志分析 视频教程 虚拟主机 和 data文件

    给想学大数据的人,很好的参考,举一反三,链接失效留言

    ASLOG自动日志分析系统 v3.2

    可以自动分析IIS的设置,自动查找日志文件,定时生成高效的报告,可以和相关的用户管理面板结合,让管理员可以统管全局,让虚拟主机用户可以了解自己的网站的访问细节。

    Web服务器日志分析.pptx

    日志文件 若使用 3 个文件分别进行记录,配置为: CustomLog /var/log/apache2/access.log common CustomLog /var/log/apache2/referer.log referer CustomLog /var/log/apache2/agent.log agent Web服务器日志分析...

    Linux 文件系统剖析

    Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统。对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台。本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为...

    matomo-log-analytics:在Matomo中导入任何类型的服务器日志,以进行强大的日志分析。 通用日志文件解析和报告

    Matomo服务器日志分析 使用此功能强大且易于使用的工具将您的服务器日志导入... 带有和不带有虚拟主机的日志文件将被导入 通常,许多字段都是可选的,以使日志导入器非常灵活。 参与其中 我们正在寻找贡献者! 随时在

    用时间片轮转法调度虚拟进程

     进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件;  设计PCB适用于时间片轮转法;  建立进程队列;  实现时间片轮转调度算法,尽量可视化...

    Linux文件系统剖析

    系统,从日志型文件系统到集群文件系统和加密文件系统。对于使用标准的和比较奇特的文 件系统以及开发文件系统来说,Linux是极好的平台。本文讨论Linux内核中的虚拟文件 系统(VFS,有时候称为虚拟文件系统交换...

    node-apache-log:和node.js实用程序来监视apache服务器日志。 监视日志文件并将更改打印到控制台。 还反向地址解析的IP地址

    node-apache-log是一个node.js实用程序,用于通过检测日志文件更新来监视apache服务器。 有两个实用程序monitor.js和monitor-one.js都通过解析对apache访问日志的更改来记录客户端访问。 记录器工具还为每个虚拟...

    服务器安全分析系统1.5

    程序基于.net,数据库采用MSSQL,开发平台:v.net2005+MSSQL2000 需要Framework 2.0支持. 所分析的服务器:windows2003...使用本系统分析IIS日志时,请一定要将IIS的日志记录格式改成Microsoft iis 日志文件记录方式。

    rar压缩软件.rar

    等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩的文件列表 - rarfiles.lst ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件...

    浅谈CDMA网络优化

    优化一个网络,需要收集和分析大量的数据,这些数据来自于路测设备以及SBS日志文件(反向链路信息)。路测数据反映的是移动台侦听和上传的信息;SBS日志文件则反映的是系统信息。数据采集涉及的内容为:1、测试前的...

    雨杰网络工具箱6.0

    日志分析助手 = SREngLogA 帮助分析SREng的扫描日志 系统设置 = SREngLdr SREng2.6正式版,此为全插件单文件版,卡饭“北方星空”DI +Y作品 进程监视 = Procmon 监视本机文件和注册表的变化,用于手工杀毒 系统诊断 ...

    php IIS日志分析搜索引擎爬虫记录程序第1/2页

    使用注意: 修改iis.php文件中iis日志的绝对路径 例如:$folder=”c:/windows/system32/logfiles/站点... //如果把日志下载到本地请修改143行的网址为您网站的网址,此操作不是必要操作,不影响分析结果。 //修改文件

    云服务器数据安全保护软件项目询价文件.doc

    " "日志审查 "提供日志审查功能,收集和分析操作系统和应用程序日 " " "志中的安全事件,将事件转至SIEM系统或中央日志服务 " " "器,做关联性分析、报告和归档。 " " "对侦测可疑行为、收集数据中心的安全事件和...

    UNIX 高级教程系统技术内幕

    11.6 4.4BSD 日志文件系统 11.6.1 写日志 11.6.2 数据检索 11.6.3 崩溃恢复 11.6.4 清除进程 11.6.5 分析 11.7 元数据日志 11.7.1 正常操作 11.7.2 日志的一致 11.7.3 崩溃恢复 11.7.4 分析 11.8 Episode 文件系统 ...

    蓝梦软件BestRecoveryForLinux数据恢复软件

    更有效的提取部分文件覆盖的恢复:文件被删除(继续使用覆盖),分区重新格式化(又向该分区拷贝了文件),多分区变成一个分区等问题造成覆盖的,本软件通过一个扫描按钮即可虚拟出原来的状态,然后进行恢复即可。...

    Linux高级系统管理视频教程.zip

    目录网盘文件永久链接 01.软件包安装 02.给磁盘分区 03.格式化磁盘 04.挂载映射存储空间 05.磁盘配额 06.磁盘阵列 07.逻辑卷的使用 08.备份与还原文件系统 09.系统初始化 ...16.引导时错误的排错分析

    PHP 蜘蛛访问统计

    本软件用户监控和管理访问整台服务器...3、您可以根据具体情况,对index.php文件进行修改,我们将陆续发布其他类型的日志文件; 4、演示地址:http://www.pd9.cn/iiszj_zz IIS专家,IIS的最佳管理者,追求技术创新!

    边干边学Linux__第二版_doc格式

    目 录 第一部分 Linux 操作环境 第1章 Linux基础 1.1 登录Linux系统 1.2 Linx的shell 1.3 shell的一些基本命令 第2章 文本编辑 2.1 vi文本编辑器 2.2 emacs文本编辑器 ...18.9 附录:优秀的日志文件系统——ext3

Global site tag (gtag.js) - Google Analytics