db2事务日志和归档的管理
1.DB2的日志模式
1.1循环日志
当循环日志生效时,事务数据将通过循环的方式写入主要日志文件。当存储于某个日志文件中的所有记录都不再需要用于恢复时,该日志文件将被重用,并且可以在以后再次成为活动日志文件。这意味着在循环日志模式中,日志文件的内容最终将被新日志条目重写。由于日志文件的内容被重写覆盖了,因此我们只能将数据库恢复到最后一次完整的数据库备份。不能使用循环日志执行时间点(point-in-time)恢复。
1.2归档日志
在归档日志模式中,redo log条目将写入主要日志文件。但是,与循环日志不同,这些日志文件永远都不可重用。当存储于某个日志文件中的所有记录都不再需要用于恢复时,该日志文件将被标记为非活动而不是可重用。这意味着它的内容永远都不会被覆盖。当第一个主要日志文件变满时,系统将分配一个新的日志文件,这样主要日志文件的配置数量(LOGPRIMARY数据库参数)将一直可用。
与单个事务相关的所有条目必须在活动日志空间中保持一致。如果长时间运行的事务所需要的日志空间大于主要日志文件可以提供的空间,则可能会分配并使用次要日志文件。在归档日志模式中,通过结合使用数据库备份映像和日志文件,我们可以将数据库恢复到具体的时间点。有关此流程的详细描述请参见下文。
设置了归档模式后,数据库将支持前滚恢复。此时,系统中将会存在三种类型的日志文件:
活动日志:该日志包含尚未提交或回滚的事务单元的相关信息,以及已提交但尚未写入数据库文件的事务的信息。
联机存档日志:活动日志中所有改动对正常处理已不需要,即该日志中所记录的事务都已提交并写入数据库文件时,该活动日志转换为联机存档日志。称之为联机,是由于它们与活动日志存放在同一个目录下。
脱机存档日志:将联机存档日志从活动日志目录下Copy到另外的地方存档,就称为脱机存档日志。这些日志可能在数据库前滚恢复的时候仍然需要。
(所谓联机归档日志,就是归档日志文件和活动日志文件同在一个目录下;而离线归档日志,则是归档日志与活动日志分开存放)
2.联机归档
缺省创建数据库是循环日志模式
为的是演示日志能够迅速写满,然后立刻去写下一个日志。
C:\Documents and Settings\Administrator>db2 update db cfg for arc using LOGFILSIZ 100
提示需要断开数据库的连接:
C:\Documents and Settings\Administrator>db2 disconnect arc
C:\Documents and Settings\Administrator>db2 connect to arc
Database Connection Information
Database server = DB2/NT 9.7.0
SQL authorization ID = TONY
Local database alias = ARC
2.1、修改主日志数和辅日志数:
db2 update db cfg for arc using logprimary 3
db2 update db cfg for arc using logsecond 2
2.2、启用归档模式,类型为联机归档
将数据库改为归档模式下的联机归档日志模式,只需将数据库参数,更改之前的系统显示
C:\Documents and Settings\Administrator>db2 get db cfg for arc |grep LOG
Catalog cache size (4KB) (CATALOGCACHE_SZ) = 300
Log buffer size (4KB) (LOGBUFSZ) = 256
Log file size (4KB) (LOGFILSIZ) = 100
Number of primary log files (LOGPRIMARY) = 3
Number of secondary log files (LOGSECOND) = 2
Changed path to log files (NEWLOGPATH) =
Path to log files = C:\DB2\arc\DB2\NODE0000\SQL00001\SQLOGDIR\
Overflow log path (OVERFLOWLOGPATH) =
Mirror log path (MIRRORLOGPATH) =
First active log file = S0000039.LOG
Block log on disk full (BLK_LOG_DSK_FUL) = NO
Block non logged operations (BLOCKNONLOGGED) = NO
Percent max primary log space by transaction (MAX_LOG) = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
Log retain for recovery enabled (LOGRETAIN) = OFF
First log archive method (LOGARCHMETH1) = OFF
Options for logarchmeth1 (LOGARCHOPT1) =
Second log archive method (LOGARCHMETH2) = OFF
Options for logarchmeth2 (LOGARCHOPT2) =
Log pages during index build (LOGINDEXBUILD) = OFF
LOGARCHMETH1设置为logretain
db2 update db cfg for arc using LOGARCHMETH1 logretain
设置LOGARCHMETH1参数,此参数可取值如下
a.OFF :表示非归档
b.LOGRETAIN:等价于将LOGRETAIN配置参数设置为RECOVERY,如果指定此值,将自动更新LOGRETAIN参数
c.USEREXIT :且等价于将USEREXIT配置参数设置为ON,如果指定此值,将自动更新USEREXIT参数I
d.DISK :日志文件将在其中归档,
e.TSM :将日志文件归档在本地TSM服务器上
f.VENDOR :指定将使用供应商库来归档日志文件。此值后必须紧跟冒号(:)和库的名称
修改之后的参数:
C:\Documents and Settings\Administrator>db2 get db cfg for arc |grep LOG
Catalog cache size (4KB) (CATALOGCACHE_SZ) = 300
Log buffer size (4KB) (LOGBUFSZ) = 256
Log file size (4KB) (LOGFILSIZ) = 100
Number of primary log files (LOGPRIMARY) = 3
Number of secondary log files (LOGSECOND) = 2
Changed path to log files (NEWLOGPATH) =
Path to log files = C:\DB2\arc\DB2\NODE0000\SQL00001\SQLOGDIR\
Overflow log path (OVERFLOWLOGPATH) =
Mirror log path (MIRRORLOGPATH) =
First active log file = S0000039.LOG
Block log on disk full (BLK_LOG_DSK_FUL) = NO
Block non logged operations (BLOCKNONLOGGED) = NO
Percent max primary log space by transaction (MAX_LOG) = 0
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0
Log retain for recovery enabled (LOGRETAIN) = RECOVERY
First log archive method (LOGARCHMETH1) = LOGRETAIN
Options for logarchmeth1 (LOGARCHOPT1) =
Second log archive method (LOGARCHMETH2) = OFF
Options for logarchmeth2 (LOGARCHOPT2) =
Log pages during index build (LOGINDEXBUILD) = OFF
C:\Documents and Settings\Administrator>db2 disconnect arc
C:\Documents and Settings\Administrator>db2 connect to arc
SQL1116N A connection to or activation of database "arc" cannot be made
because of BACKUP PENDING. SQLSTATE=57019
C:\Documents and Settings\Administrator>db2 backup db arc to C:\DB2\backup
C:\Documents and Settings\Administrator>db2 connect to arc
2.3查看活动日志文件和禁用自动commit
2.3.1、查看活动日志使用如下命令:
db2pd -db arc -logs
2.3.2、禁止自动commit:
db2默认是自动提交的,本例中我们将这个给禁止掉。首先查看下auto-commit的情况,发现时开启的。
db2 list command options
Command Line Processor Option Settings
Backend process wait time (seconds) (DB2BQTIME) = 1
No. of retries to connect to backend (DB2BQTRY) = 60
Request queue wait time (seconds) (DB2RQTIME) = 5
Input queue wait time (seconds) (DB2IQTIME) = 5
Command options (DB2OPTIONS) =
Option Description Current Setting
------ ---------------------------------------- ---------------
-a Display SQLCA OFF
-c Auto-Commit ON
-d Retrieve and displayXMLdeclarations OFF
-e Display SQLCODE/SQLSTATE OFF
-f Read from input file OFF
-i Display XMLdatawith indentation OFF
-l Log commands in history file OFF
-m Display the number of rows affected OFF
-n Remove new line character OFF
-o Display output ON
-p Display interactive input prompt ON
-q Preserve whitespaces & linefeeds OFF
-r Save output to report file OFF
-s Stop execution on command error OFF
-t Set statement termination character OFF
-v Echo current command OFF
-w Display FETCH/SELECT warning messages ON
-x Suppress printing of column headings OFF
-z Save all output to output file OFF
将command的c选项(即auto-commit)关闭即可:
db2 update command options using c off
DB20000I The UPDATE COMMAND OPTIONS command completed successfully.
插入数据,查看日志文件的变化
Db2 create table test( name varchar(200)
Db2 insert into test values(‘aaaaaaa’)
Db2 insert into test select * from test
反复执行,直到出现
SQL0964C The transaction log for the database is full. SQLSTATE=57011
提示,日志已满。由于我们没有提交事务,而活动日志都已经写满了,无法进行归档,所以错。
我们现在看下,活动日志的情况,发现总数是5个。由于日志是先写3个主日志,再写2个从日志的。
下面减少插入的记录数,查看下活动日志的情况,发现从变为了4~7。于此同时,也发生了日志的归档。
db2 insert into test1 select * from test1 fetch first 5000 rows only
DB20000I The SQL command completed successfully.
db2 commit
DB20000I The SQL command completed successfully.
C:\Documents and Settings\Administrator>db2 list history archive log all for arc
C:\Documents and Settings\Administrator>db2 list history backup all for arc
C:\Documents and Settings\Administrator>db2 terminate
C:\Documents and Settings\Administrator>db2 backup db arc to C:\DB2\backup
C:\Documents and Settings\Administrator>db2 connect to arc
C:\Documents and Settings\Administrator>db2pd -db arc -logs
C:\Documents and Settings\Administrator>db2 list history archive log all for arc
C:\Documents and Settings\Administrator>db2 list backup all for arc
C:\Documents and Settings\Administrator>db2 prune history 20110823105033 and delete
DB20000I The PRUNE command completed successfully.
**
可以使用force选项:
db2 prune history 20110823105033with force optionand delete
**
虽然提示成功,但是归档文件还是存在,对于联机归档情况,delete不能删除文件。
C:\Documents and Settings\Administrator>db2 get db cfg for arc | grep First
First active log file = S0000007.LOG
First log archive method (LOGARCHMETH1) = LOGRETAIN
C:\Documents and Settings\Administrator>db2 prune logfile prior to S0000007.LOG
DB20000I The PRUNE command completed successfully.
现在07之前的归档文件,全部删除。
3 离线归档实验
C:\Documents and Settings\Administrator>db2 update db cfg for arc using logarchmeth1 disk:C:\DB2\arc\archive
db2 insert into test1 select * from test1 fetch first 5000 rows only
可以在目录C:\DB2\arc\archive\DB2\ARC\NODE0000\C0000000下看到,产生的离线归档文件。
C:\Documents and Settings\Administrator>db2 list history archive log all for arc
可以看到产生的归档文件信息
C:\Documents and Settings\Administrator>db2 list history archive log all for arc
C:\Documents and Settings\Administrator>db2 connect to arc
C:\Documents and Settings\Administrator>db2 prune history 20110823132450 and delete
DB20000I The PRUNE command completed successfully.
这个时候,离线的归档文件被删除了。
分享到:
相关推荐
在DB2中,日志是用于记录数据库中所有事务活动的重要组件,包括所有的修改操作(如插入、更新和删除)。为了保证数据的一致性和完整性,DB2通过日志机制实现了数据恢复功能。然而,随着时间的推移,日志文件会不断...
DB2 数据库归档日志管理方案 ...DB2 数据库中的日志文件管理是非常重要的,需要对日志文件进行归档和管理,以确保数据库的安全和可靠性。使用 USEREXIT 程序可以简化日志文件管理的过程,提高数据库的安全和可靠性。
7. **日志归档和清理**:在归档日志模式下,当日志文件达到最大大小时,旧的日志会被归档并释放空间。设置合理的日志归档策略,避免日志文件堆积占用过多磁盘空间。 8. **考虑日志切分**:DB2允许设置自动日志切分...
- **配置程序**:定义日志归档和检索的目标路径,如`ARCHIVE_PATH`、`RETRIEVE_PATH`和`AUDIT_ERROR_PATH`。 - **编译C文件**:将修改后的源代码编译成可执行的db2uext2程序。 4. **操作系统的兼容性**: - **...
事务日志记录是关系数据库系统用来保证数据完整性的关键工具,它记录了所有事务的详细信息,包括事务的开始、修改和结束。本文将深入探讨DB2的日志系统,包括日志的分类、相关参数以及其设置方法。 1. **日志概述**...
在Db2 11.5中,通过高级事务日志空间管理,系统可以更智能地处理事务日志的空间分配和回收,以避免因日志空间不足而导致的停机。这个新特性利用了AI和机器学习技术,能够预测并自动管理日志空间的需求,减少人为干预...
DB2是IBM公司的一款关系型数据库管理系统,广泛应用于企业级的数据存储和管理。在DB2系统管理中,日志管理是非常关键的一部分,它涉及到数据的可靠性、一致性以及故障恢复。本文将深入探讨DB2的日志管理以及与之相关...
4. **执行归档操作**:使用`db2cmd archive log for db sample user db2admin using duan1980`命令执行日志归档操作,其中`duan1980`为归档操作的用户身份。 综上所述,数据库归档日志管理是保障数据库高可用性和...
DB2数据库日志管理是确保数据安全性和高可用性的重要环节。日志文件记录了所有对数据库进行的事务操作,以便在系统崩溃或灾难发生时能够恢复...在实际操作中,应根据系统的具体需求和业务场景来合理配置和管理日志。
DB2是IBM开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。"DB2管理指南_性能"这一主题涵盖了DB2在运行过程中如何优化性能、监控与调整的重要概念和技术。以下是对这一主题的详细阐述: 1. **性能...
DB2是IBM公司的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。在使用DB2的过程中,开发者可能会遇到各种问题,以下是一些关键的知识点和经验分享,旨在帮助你理解和解决DB2使用中可能遇到的困惑。 1....
2. **高可用性与灾难恢复**:探讨各种高可用性和灾难恢复解决方案,如数据库镜像、日志归档、故障转移集群等,确保数据的安全性和业务连续性。 3. **数据复制与分发**:涵盖同步与异步复制机制,以及如何实现多...
- `USEREXIT`: 使用用户自定义的出口程序来管理日志的归档和检索。 - `DISK:directory_name`: 将日志自动归档到指定目录。 - `TSM:[managementclassname]`: 使用特定的第三方软件(如IBM Tivoli Storage Manager...
IBM DB2作为一种广泛使用的高性能数据库管理系统,提供了丰富的工具和方法来确保数据的安全和可靠性。其中,备份与恢复机制是确保数据安全的重要组成部分。本文旨在详细介绍DB2备份和恢复的基础知识,帮助读者掌握这...
- 日志管理对于事务处理至关重要,DB2提供了多种日志模式,如正常日志、归档日志等,以满足不同的事务恢复需求。 总之,DB2作为一款强大的数据库管理系统,提供了丰富的功能和灵活的配置选项,适用于各种规模的...
DB2实例和数据库表示本身在各自的目录中主要包含配置和管理文件。 - **实例目录** 包含数据库管理器配置文件、系统数据库目录、节点目录和实例注册表。其中还保存有到已安装数据库软件以及一些仅针对该实例的可执行...
检查和管理许可证通常可以通过DB2控制中心或命令行工具完成。 ### 创建数据库前调整好系统时间 系统时间的准确性对数据库操作至关重要,特别是对于事务处理和日志记录。确保系统时间同步,避免因时间差异导致的...
17. **常用操作**:了解并熟练掌握DB2的常用管理命令和工具,如db2stop, db2start, db2admin, db2level等,以便于日常管理和故障排查。 18. **全库检查**:定期执行全库检查以发现潜在问题,可以使用DB2的db2ck命令...
报告可能涵盖DB2的备份类型,如完整备份、增量备份和差异备份,以及如何执行恢复操作,包括点-in-time恢复和归档日志恢复。 最后,性能优化是DB2使用中的关键环节。实验报告可能包含如何分析和调整数据库性能,包括...