K3数据库日志文件过大分析及解决方案V20要点Word格式.docx
《K3数据库日志文件过大分析及解决方案V20要点Word格式.docx》由会员分享,可在线阅读,更多相关《K3数据库日志文件过大分析及解决方案V20要点Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
![K3数据库日志文件过大分析及解决方案V20要点Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/7/dffac00c-876f-48d3-8889-599c18227147/dffac00c-876f-48d3-8889-599c182271471.gif)
所有权利均予保留。
目 录
第一章 报错现象及分析
一、报错现象
案例一、在进行帐套备份的时候提示以下错误,如图1.1所示:
图1.1
案例二、在进行单据录入的时候提示以下错误,如图1.2所示:
图1.2
点击确定后出现如下提示,如图1.3所示:
图1.3
后弹出单句录入界面为不可录入状态,点新增后仍然继续弹出错误提示。
二、问题分析
问题的原因可能主要是由于统计,排序等操作做的太多,太频繁。
导致账套实体的事务日志的增长已超过当前的限制太小所致。
如果客户数据库的LOG文件过大,也会导致客户端运行速度变慢,严重时连一个客户端都进不去。
产生性能问题。
三、关于日志文件
主要数据文件是数据库的起点,指向数据库中文件的其它部分。
每个数据库都有一个主要数据文件。
主要数据文件的推荐文件扩展名是.mdf。
日志文件包含恢复数据库所需的所有日志信息。
每个数据库必须至少有一个日志文件,但可以不止一个。
日志文件的推荐文件扩展名是.ldf。
日志文件增长:
可以按百分比或实际大小指定增长速度。
日志文件容量设置:
可以指定文件增长的最大值或不受限。
在
SQL
Server
中,如果设置了自动增长功能,事务日志文件将会自动扩展。
一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。
然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。
通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,除了出现此错误消息之外,SQL
还可能因为缺少事务日志扩展空间而将数据库标记为
SUSPECT。
另外,事务日志扩展可能导致下列情形:
1)、非常大的事务日志文件。
2)、
事务可能会失败并可能开始回滚。
3)、
事务可能会用很长时间才能完成。
4)、
可能发生性能问题。
5)、
可能发生阻塞现象。
分析事务日志扩展可能由于以下原因或情形而发生:
1)、未提交的事务
2)、
非常大的事务
3)、操作:
DBCC
DBREINDEX
和
CREATE
INDEX
4)、在从事务日志备份还原时
客户端应用程序不处理所有结果
6)、查询在事务日志完成扩展之前超时,您收到假的“Log
Full”错误消息
7)、
未复制的事务
第二章 解决方案
一、SQL2000
1、执行数据库分离附加。
概述:
该方法有一定的风险性,因为SQL
SERVER的日志文件不是即时写入数据库主文件的,如过处理不当,可能会造成数据的损失。
1:
分离数据库
企业管理器->服务器->数据库->右键->分离数据库
2:
附加数据库
企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。
注意:
因为日志大到一定的程度,就无法进行备份,而该方法又存在一定的风险。
所以如果对数据要求特别高的话建议可以先收缩日志文件,进行完全备份。
之后再进行分离附加数据库的操作。
详细操作步骤:
首先点击开始菜单找到所有程序金蝶k3金蝶k3服务器配置工具帐套管理,确定帐套对应的数据库实体文件是那一个。
并且记录下该数据库实体名称。
如下图2.1所示:
图2.1
其次点击开始菜单找到所有程序MICROSOFTSQLSERVER企业管理器.详细见图2.2
图2.2
打开到企业管理器界面,展开到数据库:
如图2.3
图2.3
第一步,将问题账套实体进行数据分离。
在数据库列表中,可以看到K3对应的数据库实体,选中该数据库实体,点右键:
选择属性。
点击数据文件:
记住位置中的文件路径(该文件夹是我们数据库文件所保存的位置.)如图2.4
图2.4
再关掉属性框,回到该数据库实体中.进入SQLSERVER企业管理器进行分离。
SQLSERVER企业管理器-》MicroSQLServers-》SQLServer组-》(local)WindowsNT-》数据库-》帐套号-》所有任务-》分离数据库。
如图2.5.
图2.5
(注意该操作要保证没有客户端登陆的情况下做,否则,客户端后面做的数据,将无法保存.)
如果数据库状态中显示:
“使用本数据库的连接”不为0,则点旁边的“清除”。
如图2.6
图2.6
然后点确定:
此时,数据库列表中将没有了该数据库实体(图2.7)。
图2.7
打开此前记住的数据库文件所在文件夹:
第二步,删除问题账套实体的数据库日志文件。
找到该数据库实体名称所对应的日志文件:
扩展名为:
.ldf或_log.ldf,如图2.8:
把该日志文件剪切到其他文件夹(或者删除)。
因为稍后会生成一个新的日志文件,一般约500k左右。
注册帐套的时候需要使用到日志文件,如果剪切到其他的文件夹下了,以后还可以找回来。
如果客户对数据要求非常高。
不建议删除。
图2.8
确保数据库数据文件(扩展名为:
MDF)与日志文件(扩展名为:
LDF)不在同一个文件夹下。
第三步,将问题帐套数据实体重新附加回SQL数据库中。
步骤:
回到企业管理器(控制台)上,到数据库项上点右键所有任务附加数据库
图2.9
出现界面如图所示:
图2.10
选择数据文件(扩展名为.MDF)
图2.11
确定后如下图所示:
图2.12
点确定:
出现下图所示提示:
图2.13
继续确定:
最后,数据库正常附加。
图2.14
此时可以看到新的日志文件只有504k.。
图2.15
第四步,将问题帐套数据实体重新注册。
最后您需要进入帐套管理,把帐套注册回来。
就可以了。
先运行反注册帐套。
如下图:
图2.16
之后选择注册帐套。
图2.17
注意选择身份验证方式:
图2.18
2、数据库收缩操作。
概述:
1、修改故障模型方式在数据库上点右键->
属性->
选项->
故障恢复-模型-选择-简单模型。
2、重新启动数据库服务。
3、收缩日志文件企业管理器->
数据库实体->
所有任务->
收缩数据库->
收缩文件。
详细操作步骤:
如下图2.19所示:
图2.19
其次点击开始菜单找到所有程序MICROSOFTSQLSERVER企业管理器.详细见图2.20
图2.20
如图2.21
图2.21
第一步,修改问题账套实体故障还原模式。
在对应的数据库实体上点右键->
故障还原->
模型->
选择:
简单模型。
如图2.22所示。
图2.22
第二步,重新启动数据库服务。
右健单击【我的电脑】,选择管理->
服务和应用程序->
服务。
在列表中选择MSSQLSERVER服务。
如图2.23所示。
图2.23
第三步,收缩数据库日志文件。
在数据库的企业管理器中,右击该数据库实体选择所有任务中收缩数据库,如图2.24所示。
图2.24
选择文件打开如下界面,选择日志文件,然后输入收缩到的数值。
确定。
如图2.25所示:
图2.25
分离附加日志文件和收缩日志文件效果都是一样的,都起到了减小日志文件的作用。
做完以上操作之后,您就可以正常的使用k3了。
如果以后,不想要它变大。
有以下3种方法。
1)、在数据库上点右键->
故障恢复模型->
选择->
也可以使用命令:
alterdatabase数据库名setrecoverysimple
2)、企业管理器--服务器--右键数据库--属性--选项--选择"
自动收缩"
3)、右建数据库属性窗口--故障还原模型--设为大容量日志记录
二、SQL2005
1、分离附加数据库
其次点击开始菜单找到所有程序MICROSOFTSQLSERVER2005SQLServerManagermentStudio如下图3.1所示.
图3.1
输入用户名密码,登陆。
展开到数据库。
如图3.2所示
图3.2
点击文件:
记住位置中的文件路径(该文件夹是我们数据库文件所保存的位置.)如图3.3所示
图3.3
再关掉属性框,回到该数据库实体中.
进入SQLSERVERManagermentStudio中进行分离。
数据库->
任务->
分离。
如图3.4所示
图3.4
弹出如图3.5所示界面,点确定后,会提示分离成功。
图3.5
因为稍后会生成一个新的日志文件。
回到ManagermentStudio(控制台)上,到数据库上点右键附加。
在弹出的界面,单击添加,找到对应的数据库实体文件。
如图3.6所示,后单击确定。
2、收缩数据库
收缩数据库的步骤同2000中是一样的,详细请参考本文2.1.2。
在此不做赘述。
先将数据进行备份(所有帐套)
1.在SQL企业管理器-locanlwindowsnt-数据库-账套号-属性-事务日志