IO is frozen on database xxx, No user action is required

最近遇到一起关于"I/O is frozen on database xxx. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup."的案例。

出现问题的时候,我去执行一个非常简单的SQL语句,执行时间非常长,检查没有阻塞。正常情况下,应该是几秒就OK。后面检查错误日志,发现有大量这类消息.而这个点,我们没有备份数据库的作业。后面搜索,了解了一下这个消息出现的原因:

参考网上资料,关于“I/O is frozen on database xxx. No user action is required”的介绍如下:

This message is logged in the Error Log whenever any backup service making use of SQL Server Virtual Device Interface (VDI) tries to backup the database (with snapshot)/drive on which the database files reside. Microsoft Backup (ntbackup.exe), Volume Shadow Copy (VSS), Data Protection Manager (DPM) and third party tools like Symantec Business Continuance Volume (BCV) are some of the application which cause this message to logged in the SQL Server Error Log.

What does these messages mean? Let me explain this with an example. Suppose ntbackup.exe is configured to take the backup of D drive. This drive has some data files related to few databases on SQL Server. Since the data files are in use by SQL Server, if these files are copied as it is the files in the backup will be inconsistent. To ensure that the database files are consistent in the drive backup, this application internally issues a BACKUP DATABASE [databasename] WITH SNAPSHOT command against the database. When this command is issued, the I/O for that database is frozen and the backup application is informed to proceed with its operation. Until the BACKUP WITH SNAPSHOT command is complete, the I/O for the database is frozen and the I/O is resumed once it completes. The corresponding messages are logged in the SQL Server Error Log.

翻译如下:

当任何备份服务利用SQL Server虚拟设备接口(VDI)尝试备份数据库(与快照时)或数据库文件所在的磁盘时,这个消息就会记录在错误日志(Error Log)里。 Micorsoft Backup(ntbackup.exe),卷影复制(Volume Shadow Copy VSS), 数据保护管理器(Data Protection Manager DPM)和第三方工具,例如赛门铁克Symantec 业务连续性卷(Business Continuance Volume)(BCV),这些都是会导致这类消息记录到SQL Server错误日志的应用程序。

那么这些消息是什么意思呢? 让我用一个例子来解释下。 假设你配置ntbackup.exe去备份D盘。这个磁盘上有一些SQL Server的数据库相关的数据文件。由于SQL Server要使用那些数据文件,因此如果这些文件在备份时复制将出现不一致。为了确保数据库文件在磁盘备份时是一致的,这些应用程序内部会使用BACKUP DATABASE [databasename] WITH SNAPSHOT命令来备份数据库。当命令执行时,数据库上的I/O会冻结并且备份应用程序被通知继续进行起操作。直到BACKUP WITH SNAPSHOT命令执行完成,数据库的冻结的I/O当备份命令一旦完成就会恢复。相应的消息也就会记录到SQL Server错误日志中。

后面检查发现,刚刚我们在这个时间段有PlateSpin的备份作业在运行(数据库服务器是VMware,系统管理员用PlateSpin做DR)。所以也是错误日志出现这些消息的原因。 另外,关于这个知识点,也有下面一些资料供参考、学习。

案例Frozen messages while taking NT Backup for SQL databases

关于VDI(VSS)的介绍,可以参考下面链接

How It Works: SQL Server – VDI (VSS) Backup Resources

另外关于Database Snapshots (SQL Server)它也是有一些限制和性能开销的。如下截图所示:

参考资料:

http://www.sqldbadiaries.com/2010/11/28/io-is-frozen-on-database-no-user-action-is-required/

https://blogs.msdn.microsoft.com/psssql/2009/03/03/how-it-works-sql-server-vdi-vss-backup-resources/

https://msdn.microsoft.com/en-us/library/ms175158.aspx

时间: 2024-11-10 10:47:24

IO is frozen on database xxx, No user action is required的相关文章

zabbix启动报错:Connection to database 'xxx' failed解决方法

Zabbix 分布式系统监视系统 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 本文讲解的是zabbix无法启动报错:Connection to database 'xxx' failed: [1045] Access denied for user 'xxx'@'localhost' (using password: NO)

The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

Msg 9002, Level 17, State 4, Line 4The transaction log for database 'Test' is full due to 'ACTIVE_TRANSACTION'. 本定一个测试库错误,由于此库的LOG文件被设置成不允许自动增长,而在大量输入数据的时候报出此错.此库已经使SIMPLE恢复模式. --数据库当前LOG状态 select log_reuse_wait_desc from sys.databaseswhere name = 'T

12c ADG reinstate database xxx

测试演练一下12C ADG环境,可能因为某些极端情况,比如主库存储异常,只能切换到备库.然后主库存储修复,重新恢复主备. 详见如下操作:在新主库上操作 <roidb01:orcl:/home/oracle>$dgmgrl / DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production Copyright (c) 2000, 2013, Oracle. All rights reserved. Welcome to DGMGRL, type &

java——解决java.io.StreamCorruptedException: invalid stream header: xxx

这个错误是由序列化引起的,可能的原因以及解决方法: 1.kryo对于集合(比如 Map)的反序列化会失效,报这个错误,解决办法比较暴力,不用kryo了,直接用java原生方法. 2.使用Java原生方法要注意,序列化和反序列化的方式,不能直接使用str.getBytes()获取二进制流,应该使用序列化方式获取二进制流: https://blog.csdn.net/weixin_33881050/article/details/87100661 3.对于Map仍然序列化失败,这时候可以将Map对象

备份链中断导致差异备份报错案例

原文:备份链中断导致差异备份报错案例 最近一台SQL Server服务器部署SQL Server Backup后,发现每晚的差异备份老是失败,报如下错误: Msg 3035, Level 16, State 1, Line 1 无法执行数据库"xxxx" 的差异备份,因为不存在当前数据库备份.请去掉WITH DIFFERENTIAL 选项后重新发出BACKUP DATABASE 以执行数据库的完整备份. Msg 3013, Level 16, State 1, Line 1 BACKU

虚拟机备份克隆导致SQL SERVER 出现IO错误案例

案例环境: 服务器配置: CPU: Intel E5-2690  RAM: 12G   虚拟机 操作系统  : Windows Server 2008 R2 Standard Edtion   x64 数据库版本: SQL SERVER 2008R2 案例介绍: 晚上收到数据库一封告警邮件SQL Server Alert System: 'Severity 016' occurred on \\xxxxx. 邮件具体内容如下所示, DATE/TIME: 2014/8/13 22:56:11 DE

SqlException with message &quot;Caught java.io.CharConversionException.&quot; and ERRORCODE=-4220

Technote (troubleshooting) Problem(Abstract) When an application uses the IBM Data Server Driver for JDBC and SQLJ (also known as the JCC driver) and is connected to a database with code set UTF-8 (code page 1208), it throws an SqlException with mess

mysql database 格式的查看和改变

MySQL中,数据库的编码是一个相当重要的问题,有时候我们需要查看一下当前数据库的编码,甚至需要修改一下数据库编码. 查看当前数据库编码的SQL语句为: mysql> use xxx Database changed mysql> show variables like 'character_set_database'; +------------------------+--------+ | Variable_name          | Value  | +--------------

Java IO 遇到的错误

1.java.io.FileNotFoundException: /storage/emulated/0/xxx.txt: open failed: EISDIR (Is a directory) 该错误的原因:本来我是要在 SD 卡上创建一个叫:xxx.txt 的文件,但是我的 sd 卡存在一个文件夹名称为 xxx.txt,所以会出现这个错误. 解决办法:给需要在 SD 卡上创建的文件重命名或者删掉 SD 卡上已存在相同名字的文件夹.