DB2数据库的日志文件管理html
DB2的日志模式程序员
1.1循环日志sql
当循环日志生效时,事务数据将经过循环的方式写入主要日志文件。当存储于某个日志文件中的全部记录都再也不须要用于恢复时,该日志文件将被重用,而且能够在之后再次成为活动日志文件。这意味着在循环日志模式中,日志文件的内容最终将被新日志条目重写。因为日志文件的内容被重写覆盖了,所以咱们只能将数据库恢复到最后一次完整的数据库备份。不能使用循环日志执行时间点(point-in-time)恢复。数据库
1.2 归档日志windows
在归档日志模式中,redo log条目将写入主要日志文件。可是,与循环日志不一样,这些日志文件永远都不可重用。当存储于某个日志文件中的全部记录都再也不须要用于恢复时,该日志文件将被标记为非活动而不是可重用。这意味着它的内容永远都不会被覆盖。当第一个主要日志文件变满时,系统将分配一个新的日志文件,这样主要日志文件的配置数量(LOGPRIMARY数据库参数)将一直可用。安全
与单个事务相关的全部条目必须在活动日志空间中保持一致。若是长时间运行的事务所须要的日志空间大于主要日志文件能够提供的空间,则可能会分配并使用次要日志文件。在归档日志模式中,经过结合使用数据库备份映像和日志文件,咱们能够将数据库恢复到具体的时间点。有关此流程的详细描述请参见下文。工具
设置了归档模式后,数据库将支持前滚恢复。此时,系统中将会存在三种类型的日志文件:spa
活动日志:该日志包含还没有提交或回滚的事务单元的相关信息,以及已提交但还没有写入数据库文件的事务的信息。.net
联机存档日志:活动日志中全部改动对正常处理已不须要,即该日志中所记录的事务都已提交并写入数据库文件时,该活动日志转换为联机存档日志。称之为联机,是因为它们与活动日志存放在同一个目录下。日志
脱机存档日志:将联机存档日志从活动日志目录下Copy到另外的地方存档,就称为脱机存档日志。这些日志可能在数据库前滚恢复的时候仍然须要。
(所谓联机归档日志,就是归档日志文件和活动日志文件同在一个目录下;而离线归档日志,则是归档日志与活动日志分开存放)
日志模式修改:https://www.cnblogs.com/net2012/archive/2013/02/04/2891502.html
既然 DB2 UDB 中用户出口程序的目的是将数据库日志复制到归档目录中,您最终将在活动日志目录(缺省是 SQLOGDIR)中获得重复的日志文件。您可能考虑除去这些重复的联机归档日志以释放文件系统空间。在从数据库目录中除去这些日志以前,要十分细心地验证是否已经将它们成功地复制到归档目录中。还必须确保数据库管理器进行崩溃恢复时再也不须要它们。要肯定活动日志目录中哪些日志文件不为正常处理所需,可用如下命令检查数据库配置:
db2 "get db cfg for sample"
该命令的数据库配置输出将包括第一个活动日志文件,例如:
First active log file = S000009.LOG
上面输出中所示的日志文件 S000009.LOG
是数据库的当前活动日志。任何小于该编号的日志文件都被认为是联机归档日志。
下面是一个示例:
在下面的方案中,活动日志目录中有日志文件 S000000.LOG - S000009.LOG
,归档日志目录中有 S000000.LOG - S000008.LOG
。由于 S000009.LOG
是第一个活动日志文件,因此,能够从活动日志目录中删除 S000001.LOG - S000008.LOG
以释放磁盘空间。必须将 S000009.LOG
文件留在活动日志目录中,由于当前事务仍然在使用它。
也能够检查数据库历史文件,以查看活动日志目录中再也不须要哪些日志文件。如下命令将列出数据库备份信息:
db2 "list history backup all for database sample"
下面是该命令的输出示例:
List History File for sample Number of matching file entries = 4 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log -- --- ------------------ ---- --- ------------ ------------ B D 20030416162026001 F D S0000010.LOG S0000014.LOG ------------------------------------------------------------ Contains 2 tablespace(s): 00001 SYSCATSPACE 00002 USERSPACE1 ------------------------------------------------------------ |
在上面的输出中,最先的日志将代表:须要 S0000010.LOG
及其以后的任何日志。能够安全地删除 S00000010.LOG
以前的任何日志。再次提醒,在从活动日志目录中删除日志文件以前,验证在活动日志目录中存在这些日志文件的副本是很是重要的。
尽管能够从活动日志目录手工删除日志文件,可是除去联机归档日志文件的更安全方法是经过 prune logfile命令。能够使用该命令来删除活动日志目录中的日志文件。在下面的示例中,如下命令将删除日志文件 S000000.LOG - S000008.LOG
:
db2 "prune logfile prior to S000009.LOG"
注:根据您的恢复策略,在有些状况下前面的前滚操做可能会在数据库上执行。归档目录中旧的日志文件可能会被具备相同名称的新日志文件覆盖,从而会阻止您使用旧日志文件对数据库进行时间点恢复。用户出口程序的程序员须要考虑这种状况,这一点很是重要