崩溃恢复的基石
2008-12-15 16:37:34 来源:WEB开发网核心提示:您曾多少次碰到过错误消息“SQL0946C The transaction log for the database is full”?在尽力解决该问题时,您是否停下来思考为何存在事务日志以及事务日志记录服务的目的是什么呢?若没有事务,崩溃恢复的基石,多个用户和应用程序同时与一个数据库进行交互时
您曾多少次碰到过错误消息“SQL0946C The transaction log for the database is full”?
在尽力解决该问题时,您是否停下来思考为何存在事务日志以及事务日志记录服务的目的是什么呢?
若没有事务,多个用户和应用程序同时与一个数据库进行交互时就必然会破坏数据。而如果没有事务日志记录,DB2 UDB 中的一些据库恢复方法就不会存在。
如果您还没有完全理解这些概念,也不必担忧。我将解释事务是什么以及事务日志记录背后的机制。然后,我将展示在系统崩溃或程序故障之后,如何使用数据库事务日志文件中所存储的信息来使数据库回归到一致、可用的状态。
但您还可以通过这些重要的日志做更多事情。在今后的专栏中,我将展示如何使用事务日志文件重现操作,以将数据库恰好恢复到给定时间点所处的状态。
事务
事务(也称作工作单元)是指一个或多个 SQL 操作的序列,这些操作组合成一个单元且通常位于一个应用程序进程内。该单元通常称作是“原子的”,因为它是不可分的 — 它的所有工作要么全都执行,要么全都不执行。一个给定的事务可以执行任何数目的 SQL 操作(从一个到几千个,取决于业务逻辑里对于“一步”的定义)。
一个事务的开始和终止定义了数据库里数据一致性的点;要么将事务里所执行的所有操作的结果应用到数据库上,并使之成为永久的(已提交),要么将之都撤销(回滚),使数据库返回到启动该事务之前的状态。
事务是在建立到数据库的连接之后第一次执行 SQL 语句时或在现有事务终止时立即启动。一旦启动,就可以使用名为原子提交的功能隐式地终止该事务。通过原子提交,会将每条可执行的 SQL 语句当作一个事务。如果该语句执行成功,那它所做的任何修改都将应用到数据库上,但如果语句失败,那修改将被丢弃。
[]
更多精彩
赞助商链接