DB2 数据库支持两种不同的日志模式:循环(Circular)和归档(Archival)。当新数据库创建时,系统默认的日志模式为循环。如果业务需求要求更高级的功能,您可以将日志模式从循环修改为归档。

DB2 将一直尝试将日志条目写入主要日志文件集,也就是数据库活动时间自动分配的日志文件。如果某个事务将所有主要日志文件消耗怠尽(所有主要日志文件都被标记为 unavailable),则数据库管理员将分配一个次要日志文件。当这个文件变满时,数据库管理员将再次检查主要日志文件的状态是否为 unavailable。如果是,则再分配一个次要日志文件并继续在其中写入条目。该过程将不断重复,直到所有次要日志文件都分配并写满。如果没有主要日志文件可供写入 Redo 条目,并且已经分配最大数量的次要日志文件,则应用程序将收到以下错误消息:
  SQL0964C The transaction log for the database is full.
希望您曾经遇到过这种错误。但是,如果遇到此错误,则应该根据需要增加主要和次要日志文件(或者它们的大小)的数量。在理想情况下,主要日志文件的数量或大小应该足够保存最大的事务。分配次要日志文件相当消耗资源,因为它将在运行时执行。因此,我们应该将需要在高峰工作负荷期间分配的次要日志文件数量降到最低。要更新主要或次要日志文件的数量,可以发起以下命令:
  UPDATE DB CFG FOR db_name USING LOGPRIMARY value
  UPDATE DB CFG FOR db_name USING LOGSECOND value
注意:如果出现此问题,则应该分析造成整个日志文件空间变满的原因是什么。它可能是由失控查询或用户错误造成的,因此增加日志文件的数量或大小只能在表面上解决问题。比如说,假设某个用户发起了一个 DELETE FROM tab1 语句,且 TAB1 是一个相当大的表。虽然这一语句看上去没什么问题,每行生成一条删除日记记录,但是如果未经过配置处理它可以轻易地将日志空间填满。

循环日志

  当循环日志生效时,事务数据将通过循环的方式写入主要日志文件。当存储于某个日志文件中的所有记录都不再需要用于恢复时,该日志文件将被重用,并且可以在以后再次成为活动日志文件。这意味着在循环日志模式中,日志文件的内容最终将被新日志条目重写。由于日志文件的内容被重写覆盖了,因此我们只能将数据库恢复到最后一次完整的数据库备份。不能使用循环日志执行时间点(point-in-time)恢复。

  归档日志

  在归档日志模式中,redo log 条目将写入主要日志文件。但是,与循环日志不同,这些日志文件永远都不可重用。当存储于某个日志文件中的所有记录都不再需要用于恢复时,该日志文件将被标记为非活动 而不是可重用。这意味着它的内容永远都不会被覆盖。当第一个主要日志文件变满时,系统将分配一个新的日志文件,这样主要日志文件的配置数量(LOGPRIMARY 数据库参数)将一直可用。
  与单个事务相关的所有条目必须在活动日志空间中保持一致。如果长时间运行的事务所需要的日志空间大于主要日志文件可以提供的空间,则可能会分配并使用次要日志文件。在归档日志模式中,通过结合使用数据库备份映像和日志文件,我们可以将数据库恢复到具体的时间点。有关此流程的详细描述请参见下文。

何修改日志模式

  创建新的 DB2 数据库时,默认的日志模式为循环日志 。如果希望将日志模式从循环修改为归档,可以执行以下步骤:
  在磁盘上创建一个文件夹(比如说 e:\db_name\archive),磁盘上必须有足够的空间存储归档日志文件。保证归档文件目标文件夹与活动日志文件目标文件夹分开。
  

终止与数据库的连接:
  TERMINATE
  更新归档日志文件目标文件夹(为归档日志文件指定路径可以将归档日志模式打开)。
  UPDATE DB CFG FOR db_name USING LOGARCHMETH1 "Disk:e:\db_name\archive"

重新连接到数据库:
  CONNECT TO db_name
  连接失败并显示以下错误消息:
  SQL1116N A connection to or activation of database db_name cannot be made because of backup pending: SQLSTATE=57019
  

出现错误消息的原因是,日志模式已经从循环更改为归档,并且需要执行完全数据库备份。数据库处于循环日志模式时执行的备份并不充分,因此当切换模式后需要执行新备份。
  

使用以下命令执行完全数据库备份:
  BACKUP DATABASE db_name TO d:\db_name\backup
  
尝试再次连接到数据库。这次应该能够成功。
  CONNECT TO db_name

  事务是逻辑工作单元。每一个事务在事务日记文件中都存储有相应的日志记录。每个事务都有一个相应的 Redo Log 条目。Redo Log 条目将写入当前的活动日志文件。当活动日志文件变满时,它将被标记为 unavailable。此时,DB2 将接着此活动日志文件另外创建一个日志文件,并继续在其中写入日志条目。当前活动日志文件变满时,DB2 将重复这一循环过程。当事务完成后(发起 COMMIT 或 ROLLBACK 语句),相应的日志条目将被释放,因为不再需要将它们用于恢复数据库。

db2归档日志与循环日志(转载weiruan85)相关推荐

  1. DB2归档日志文件系统属主异常

    1 问题现象 DB2无法正常归档.https://www.cndba.cn/hbhe0316/article/4886 https://www.cndba.cn/hbhe0316/article/48 ...

  2. db2关闭下一句sql的日志_DB2_数据库日志管理

    1 . load 方法装入数据: export to tempfile of del select * from tablename where not 清理条件: load from tempfil ...

  3. 非归档模式下重做日志覆盖后的rman恢复

    非归档模式下重做日志覆盖后的rman恢复 实验原理:在非归档模式下,数据库的重做日志不会写入归档日志中,对数据库的恢复只能依靠3个联机重做日志.当第一个重做日志满了,就切换第二个重做日志中,以此类推, ...

  4. Oracle数据库开启归档日志和补充日志

    文章目录 Oracle数据库开启归档日志和补充日志 重做日志的概念 归档日志 ARCHIVELOG模式 启动归档日志 归档日志的清理 补充日志 Oracle数据库开启归档日志和补充日志 项目中要对Or ...

  5. oracle查看联机日志,oracle联机日志和归档日志

    联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改,一个oracle实例有一组或多组联机日志,每组至少包含1个或者多个日志成员,这里要多个日志成 ...

  6. python用logging模块写循环日志

    在程序运行的过程中需要打印一些有用的信息,但如果需要打印的信息比较多的话且运行时间较长则磁盘容量可能不够用. 因此就需要写循环日志. 比如设置日志的大小为3M,设置日志的个数为3个,设置日志名称为Lo ...

  7. 网站服务器取证案例,教你如何通过服务器日志进行入侵取证(转载)

    转载自:网卫大学堂 http://www.wwdxt.com/ 日志文件默认位置: 应用程序日志.安全日志.系统日志.DNS日志默认位置:%systemroot%/system32/config, 默 ...

  8. 日志审计产品(转载)

    由于业务需要,在网上粗略整理了一些日志审计系统: 安恒明御 天融信网络卫士 网御神州SecFox-LA Manageengine -Event Analyzer 分类 安恒明御 天融信网络卫士 网御神 ...

  9. mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)...

    一. mysql错误日志: 错误日志记录的事件: a).服务器启动关闭过程中的信息 b).服务器运行过程中的错误信息 c).事件调试器运行一个事件时间生的信息 d).在从服务器上启动从服务器进程时产生 ...

  10. binlog日志_MySQL三大日志binlog、redo log和undo log

    点击蓝色"JavaKeeper"关注我哟 加个"星标",一起成长,做牛逼闪闪的技术人 Keeper导读:日志是mysql数据库的重要组成部分,记录着数据库运行期 ...

最新文章

  1. java作图哪个是x轴_java – 主要以X和Y轴绘制的圆圈,为什么?
  2. VS Code 2022路线图:大量Spring Boot优化提上日程!难道是被JB Code吓到了?
  3. CNN如何识别一幅图像中的物体
  4. 11、InnoDB存储引擎
  5. php有个qrcode类,一个PHP的QRcode类与大家分享
  6. Redis学习笔记之入门基础知识——简介
  7. 企业微服务:实现crud操作之dao接口
  8. 不相交集合求并的路径压缩
  9. Python、Perl 垫底,C语言才是最环保的编程语言
  10. 查看某个分区之前所有的数据_腾讯大数据面试真题汇总
  11. PHP框架编写和应用知识点,php框架知识点的整理和补充
  12. 最优视频监控软件开发的实现方法
  13. 吉利汽车终止科创板IPO
  14. Maven 仓库使用与私有仓库搭建
  15. V8 7.4释出!支持JIT-less不需可执行内存也能执行
  16. 3.7 TextRNN—TextRCNN—TextAttentionRNN—HAN—FastText—代码
  17. # 研究杂感 × VOSviewer(第二辑)
  18. 详解Python函数如何重载?
  19. 10种防止网络被攻击的方法
  20. 通过笔记本wifi共享到以太网接口方法--使用嵌入式设备接入互联网

热门文章

  1. Win10 通知区域蓝牙图标消失问题
  2. Spark:spark-evn.sh参数详解
  3. 所谓成长,就是认知升级
  4. (七)设定目标:原理与方法
  5. U3D DotH教程3
  6. Subspace Adversarial Training
  7. 【Oracle】并行等待之PX Deq: Signal ACK
  8. 天行健,君子以自强不息;地势坤,君子以厚德载物 释意
  9. 软件工程课程设计分组与选题名单
  10. “姓氏文化展”在国图开展 免费对读者开放