DB2崩溃后用事务日志恢复的原理和技巧

在系统崩溃之后,使用DB2的事务日志恢复数据库。

您曾多少次碰到过错误消息“SQL0946C The transaction log for the database is full?”

在尽力解决该问题时,您是否停下来思考如下两个问题:1. 为何存在事务日志;2. 事务日志记录服务的目的是什么呢?

若没有事务,多个用户和应用程序同时与一个数据库进行交互时就必然会破坏数据。而如果没有事务日志记录,DB2 UDB中的一些据库恢复方法就不会存在。

如果您还没有完全理解这些概念,也不必担忧。我将解释事务是什么以及事务日志记录背后的机制。然后,我将展示在系统崩溃或程序故障之后,如何使用数据库事务日志文件中所存储的信息来使数据库回归到一致、可用的状态。

您还可以通过这些重要的日志做更多事情。在今后的专栏中,我将展示如何使用事务日志文件重现操作,以将数据库恰好恢复到给定时间点所处的状态。

事务

事务(也称作工作单元)是指一个或多个SQL操作的序列,这些操作组合成一个单元且通常位于一个应用程序进程内。该单元通常称作是“原子的”,因为它是不可分的——它的所有工作要么全都执行,要么全都不执行。一个给定的事务可以执行任何数目的SQL操作(从一个到几千个,取决于业务逻辑里对于“一步”的定义)。

一个事务的开始和终止定义了数据库里数据一致性的点;要么将事务里所执行的所有操作的结果应用到数据库上,并使之成为永久的(已提交),要么将之都撤销(回滚),使数据库返回到启动该事务之前的状态。

事务是在建立到数据库的连接之后第一次执行SQL语句时或在现有事务终止时立即启动。一旦启动,就可以使用名为原子提交的功能隐式地终止该事务。通过原子提交,会将每条可执行的SQL语句当作一个事务。如果该语句执行成功,那它所做的任何修改都将应用到数据库上,但如果语句失败,那修改将被丢弃。

还可以通过执行COMMIT或ROLLBACK SQL语句显式地终止事务。

这些语句的基本语法是:

COMMIT <WORK>
ROLLBACK <WORK>


在COMMIT终止事务时,会将该事务从开始时对数据库所做的所有修改变成永久性的。使用ROLLBACK,所有修改都将撤销。

事务所做的未提交的修改对其他用户和应用程序来说是无法访问的,除非那些用户和应用程序使用的是未提交读(UR)隔离。然而,一旦提交了事务所做的修改,它们对于所有其他用户和应用程序来说就都是可以访问的了,并且只能通过执行新事务中的新SQL语句来删除。

时间: 2024-09-10 05:52:56

DB2崩溃后用事务日志恢复的原理和技巧的相关文章

SQL Server误区:有关大容量事务日志恢复模式的误区

误区 #28:有关大容量事务日志恢复模式的几个误区 28 a)常见的DML操作可以被"最小记录日志" 不是.在大容量事务日志恢复模式下只有一小部分批量操作可以被"最小记录日志",这类操作的列表可以在Operations That Can Be Minimally Logged找到.这是适合SQL Server 2008的列表,对于不同的SQL Server版本,请确保查看正确的列表. 28 b)使用大容量事务日志恢复模式不会影响灾难恢复 首先,在上次事务日志备份之后

SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区_MsSql

误区 #28:有关大容量事务日志恢复模式的几个误区 28 a)常见的DML操作可以被"最小记录日志"    不是.在大容量事务日志恢复模式下只有一小部分批量操作可以被"最小记录日志",这类操作的列表可以在Operations That Can Be Minimally Logged找到.这是适合SQL Server 2008的列表,对于不同的SQL Server版本,请确保查看正确的列表. 28 b)使用大容量事务日志恢复模式不会影响灾难恢复    首先,在上次事务

通过事务日志恢复SqlServer数据库到一个特定的时间点

Code--创建测试数据库CREATE DATABASE DbGO --对数据库进行备份BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMATGO --创建测试表CREATE TABLE Db.dbo.TB_test(ID int) --延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)WAITFOR DELAY '00:00:01'GO --假设我们现在误操作删除了 

数据库系统崩溃后的一般处理步骤

数据|数据库 情况描述: SQL Server 2000崩溃,重新安装数据库. 有以下准备: 1, 三个系统库(master,msdb,model)的完全备份: 2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份): 三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等. 两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak)   准备重新安装数据库,希望能一次性恢复到用户数据库最后一个备份前的状态.  

mssql数据库系统崩溃后的一般处理步骤与方法_MsSql

mssql数据库系统崩溃后的一般处理步骤  情况描述: SQL Server 2000崩溃,重新安装数据库. 有以下准备: 1, 三个系统库(master,msdb,model)的完全备份: 2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份): 三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等. 两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak) 准备重新安装数据库,希望能一次性恢复到用户数据库

mssql数据库系统崩溃后的一般处理步骤与方法

mssql数据库系统崩溃后的一般处理步骤  情况描述: SQL Server 2000崩溃,重新安装数据库. 有以下准备: 1, 三个系统库(master,msdb,model)的完全备份: 2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份): 三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等. 两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak) 准备重新安装数据库,希望能一次性恢复到用户数据库

收缩事务日志

SQLSERVER收缩事务日志 一.由于系统中录入及删除数据频繁,故事务日志很大. SQLSERVER中讲: BACKUP LOG 数据库名 WITH NO_LOG|TRUNCATE_ONLY可以截断事务日志. 但我在数据库中进行上述操作后,事务日志还是没有改变. 二.只有进行"数据库收缩"操作. 在此复选框中打勾  选中上图所示选项,即可点"确定",执行收缩事务日志的操作,硬盘经过一段时间的工作后,SQLSERVER终于提示收缩成功.事务日志文件被恢复到原始尺寸.

DB2面向OLTP环境的物理数据库设计:数据库事务日志

数据库事务日志对于数据库恢复至关重要,也是设计高度可用的数据库解决方案的一个重要组成部分. 数据库日志使得从故障中恢复成为可能.它们还可以在 HADR 环境中同步主数据库和备用数据库. DB2 对每个数据库使用一组独立的日志文件. 所有数据库都有与自己有关联的日志.这些日志保留数据库变更的记录.如果数据库需要还原到最后一次完整离线备份之前的某个点,日志需要将数据前滚到故障点.DB2 数据库支持两种类型的数据库的日志:循环日志和归档日志. 循环日志 循环日志仅支持崩溃恢复,也就是说,如果 DB2

Linux系统被入侵后使用lsof命令恢复被删除日志的方法

  Linux系统是服务器最常见的操作系统,当然也面临着非常多的安全事件,相较Windows操作系统,Linux采用了明确的访问权限控制和全面的管理工具,具有非常高的安全性和稳定性.Linux系统被入侵后,攻击者为了掩盖踪迹,经常会清除系统中的各种日志,包括Web的access和error日志.last日志.message日志.secure日志等,给我们后期应急响应和取证分析带来了非常大的阻力.所以,恢复被清除的日志是非常重要的取证和分析环节,一下是使用lsof命令恢复日志文件的案例,适用于常见