互联网服务数据库归档

数据库归档日志管理方案

需求描述:
由于使用了LOGRETAIN=ON数据库配置,所以数据库日志文件将不会被数据库从活动日志目录中自动删除或循环利用,活动日志目录中的日志文件将会越来越多,所以需要对该目录下的日志文件进行归档。
问题分析
将LOGRETAIN设置为ON后,数据库将支持前滚恢复。此时,系统中将会存在三种类型的日志文件:
活动日志:该日志包含尚未提交或回滚的事务单元的相关信息,以及已提交但尚未写入数据库文件的事务的信息。
联机存档日志:活动日志中所有改动对正常处理已不需要,即该日志中所记录的事务都已提交并写入数据库文件时,该活动日志转换为联机存档日志。称之为联机,是由于它们与活动日志存放在同一个目录下。
脱机存档日志:将联机存档日志从活动日志目录下Copy到另外的地方存档,就称为脱机存档日志。这些日志可能在数据库前滚恢复的时候仍然需要。
管理数据库日志的工作可以手工完成(即将联机存档日志手工拷贝到某个archive目录),也可由编写USEREXIT程序自动维护。
由于DB2对所有平台都提供了相应的USEREXIT示例程序,而且非常易于修改和使用,所以IBM建议用户使用USEREXIT程序来管理日志文件。
使用USEREXIT程序的方法
要使用User exit program自动化log文件的archiving和retrieval过程:
1. 设置database cfg参数logarchmeth1 为USEREXIT。
connect to sample
update db cfg using logarchmeth1 USEREXIT
connect reset
2. 创建user exit programs。该程序必须是一个名为db2uext2的可执行文件。DB2在各种平台上都提供了User Exit的示例程序,用户可以通过直接修改该样本文件来实现自己的user exit程序。
在UNIX(R) based的系统中,该程序存放在sqllib/samples/c目录下.
There are four sample user exit programs for UNIX based systems:
? db2uext2.ctsm
This sample uses Tivoli(R) Storage Manager to archive and retrieve database log files.
? db2uext2.ctape
This sample uses tape media to archive and retrieve database log files .
? db2uext2.cdisk
This sample uses the operating system COPY command and disk media to archive and retrieve database log files.
? db2uxt2.cxbsa
This sample works with the XBSA Draft 0.8 published by the X/Open group. It can be used to archive and retrieve database log files. This sample is only supported on AIX.
? 在Windows(R) 系统中,该文件存放在sqllib/samples/c目录下。
There are two sample user exit programs for Windows operating systems:
? db2uext2.ctsm
This sample uses Tivoli Storage Manager to archive and retrieve database log files.
? db2uext2.cdisk
This sample uses the operating system COPY command and disk media to archive and retrieve database log files.
3. 配置该示例程序,指定要将日志文件Archive到哪个系统目录中(在windows平台下,程序中默认为c:mylogs)。
#define ARCHIVE_PATH      "c:\mylogs\"
#define RETRIEVE_PATH     "c:\mylogs\"
#define AUDIT_ERROR_PATH  "c:\mylogs\"
4. 编译该C文件。
cl db2uext2.c
5. 拷贝db2uext2.exe到/SQLLIB/BIN目录下。
6. 在db2cmd中键入archive log for db sample user db2admin using duan1980命令强制执行log日志归档任务。查看c:mylogs目录下有无日志文件归档,验证是否成功
参与5

5同行回答

LanDomLanDom软件开发工程师互联网企业
学习了!多谢分享!显示全部
学习了!多谢分享!收起
互联网服务 · 2010-04-28
浏览1041
3k3a3k3a软件开发工程师shen
学习之,谢谢显示全部
学习之,谢谢收起
互联网服务 · 2010-03-19
浏览1031
学习了,谢谢楼主显示全部
学习了,谢谢楼主收起
2010-03-16
浏览981
了解一下显示全部
了解一下收起
2010-03-16
浏览990
WUJJ0828WUJJ0828系统架构师华际信息系统有限公司
在db2 v8.2后中又有的新变化了DB2版本8.2以前,采用用户出口程序的方式进行日志归档操作,从DB2版本8.2开始,DB2集成了日志管理功能,目前支持采用如下三种方式归档日志: DISK:将归档日志存放到磁盘上 TSM:将归档日志存放到TSM服务器 BAR APIs:第三方厂商提供的产品 DB2在版本8.2中...显示全部
在db2 v8.2后中又有的新变化了

DB2版本8.2以前,采用用户出口程序的方式进行日志归档操作,从DB2版本8.2开始,DB2集成了日志管理功能,目前支持采用如下三种方式归档日志:
DISK:将归档日志存放到磁盘上
TSM:将归档日志存放到TSM服务器
BAR APIs:第三方厂商提供的产品
DB2在版本8.2中增加了如下配置参数:
第一个日志归档方法 (LOGARCHMETH1) = LOGRETAIN
logarchmeth1 的选项 (LOGARCHOPT1) =
第二个日志归档方法 (LOGARCHMETH2) = OFF
logarchmeth2 的选项 (LOGARCHOPT2) =
故障转移日志归档路径 (FAILARCHPATH) =
错误时重试日志归档次数 (NUMARCHRETRY) = 5
日志归档重试延迟(秒) (ARCHRETRYDELAY) = 20
供应商选项 (VENDOROPT) =
下面是关于这些参数的说明:
日志归档方法 1(logarchmeth1)和日志归档方法 2(logarchmeth2)
这些参数使数据库管理器将日志文件归档至活动日志路径之外的位置。如果指定这两个参数,每个日志文件均归档两次。这意味着您将拥有两个位于不同位置的归档日志文件副本。 这些参数的有效值包括介质类型,且在某些情况下,包括目标字段。使用冒号(:)来分隔值。有效的值为:
OFF 指定不使用日志归档方法。如果 logarchmeth1 和 logarchmeth2 都设置为 OFF,则认为数据库正在使用循环日志记录,且不可前滚恢复。这是缺省值。
LOGRETAIN 此值仅可用于 logarchmeth1,且等价于将 logretain 配置参数设置为 RECOVERY。如果指定此值,将自动更新 logretain 配置参数。
USEREXIT 此值仅对 logarchmeth1 有效,且等价于将 userexit 配置参数设置为 ON。如果指定此值,将自动更新 userexit 配置参数。
DISK 此值后必须紧跟冒号(:),然后是全限定现有路径名,日志文件将在其中归档。例如,如果将 logarchmeth1 设置为 DISK:/u/dbuser/archived_logs,则将归档日志文件放入名为 /u/dbuser/archived_logs 的目录。
注意: 如果正在归档至磁带,可以使用 db2tapemgr 实用程序来存储和检索日志文件。
TSM 如果指定不带任何附加配置参数,此值指示应该使用缺省管理类,将日志文件归档在本地 TSM 服务器上。如果此值后紧跟冒号(:)和 TSM 管理类,则使用指定的管理类来归档日志文件。
VENDOR 指定将使用供应商库来归档日志文件。此值后必须紧跟冒号(:)和库的名称。库中提供的 API 必须使用备份并复原供应商产品的 API。 注意:
如果将 logarchmeth1 或 logarchmeth2 设置为 OFF 以外的值,则必须配置数据库以进行前滚恢复。 如果更新 userexit 或 logretain 配置参数,将自动更新 logarchmeth1,反之亦然。然而,如果您正在使用 userexit 或 logretain, 必须将 logarchmeth2 设置为 OFF。
日志归档选项 1(logarchopt1)、日志归档选项 2(logarchopt2):
指定传递至 TSM 服务器或供应商 API 的字符串。对于 TSM,此字段用于允许数据库检索在不同 TSM 节点或通过不同 TSM 用户生成的日志。字符串必须以如下格式提供: "-fromnode=nodename -fromowner=ownername"
其中 nodename 是最初归档日志文件的 TSM 节点的名称,ownername 是最初归档日志文件的 TSM 用户的名称。每个日志归档选项字段对应于一个日志归档方法:logarchopt1 与 logarchmeth1 配合使用,logarchopt2 与 logarchmeth2 配合使用。

故障转移归档路径(failarchpath)
如果指定的日志归档方法失败,则为归档日志文件指定备用目录。在失败的日志归档方法再次可用之前,此目录是日志文件的临时存储区,此时日志文件将从此目录中移至日志归档方法。通过将日志文件移动至该临时位置,可以避免日志目录发生已满情况。此参数必须是一个全限定现有目录。
出错时的归档重试次数(numarchretry)
指定在日志文件归档到 failarchpath 配置参数指定的路径之前,使用指定的归档方法归档日志文件的尝试次数。如果设置了 failarchpath 配置参数,则只能使用该参数。缺省值为 5。
归档重试延迟(archretrydelay)
指定在上一次尝试失败之后,归档日志文件尝试之间等待的时间量(以秒计)。缺省值为 20。
供应商选项(VENDOROPT)
指定使用第三方厂商进行备份、恢复、归档日志时需要的额外参数配置。参考第三方厂商存储软件的说明配置。
下面我们以一个简单的例子配置DB2将日志归档到磁盘说明如何使用DB2版本8.2提供的新功能:
1、更新数据库SAMPLE的配置参数(请在更新之前确保使用的目录已经建立,而且DB2实例用户有合适的权限):
D:\Temp>db2 update db cfg for sample using logarchmeth1 DISK:\TEMP\logarc1
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
D:\Temp>db2 update db cfg for sample using failarchpath d:\temp\logarc2
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
注意:如果先前你没有设置为归档日志模式,您设置完参数后可能需要先做一个数据库的脱机备份。例如:
db2 backup db sample to
2、查看一下数据库SAMPLE的目前日志归档参数设置:
D:\Temp>db2 get db cfg for sample
第一个日志归档方法 (LOGARCHMETH1) = DISK:\TEMP\logarc1
\
logarchmeth1 的选项 (LOGARCHOPT1) =
第二个日志归档方法 (LOGARCHMETH2) = OFF
logarchmeth2 的选项 (LOGARCHOPT2) =
故障转移日志归档路径 (FAILARCHPATH) = d:\temp\logarc2\
错误时重试日志归档次数 (NUMARCHRETRY) = 5
日志归档重试延迟(秒) (ARCHRETRYDELAY) = 20
供应商选项 (VENDOROPT) =
。。。
3、检查db2diag.log,可以看到参数设置改变的信息:
2004-10-26-19.30.25.245000+480 I14933654H408      LEVEL: Event
PID     : 1872                 TID  : 2592        PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000         DB   : SAMPLE
APPHDL  : 0-89                 APPID: *LOCAL.DB2.041026024848
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE  : CFG DB SAMPLE: "Logarchmeth1" From: "" To: "DISK:\TEMP\logarc1"
2004-10-26-19.30.47.987000+480 I14934064H404      LEVEL: Event
PID     : 1872                 TID  : 2592        PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000         DB   : SAMPLE
APPHDL  : 0-89                 APPID: *LOCAL.DB2.041026024848
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE  : CFG DB SAMPLE: "Failarchpath" From: "" To: "d:\temp\logarc2\"
4、对数据库SAMPLE进行更新操作,以便写满日志文件,触发日志归档。我们通过重复往staff表中插入数据实现:
D:\Temp>db2 connect to sample
数据库连接信息
数据库服务器 = DB2/NT 8.2.0
SQL 授权标识 = BIYJ
本地数据库别名 = SAMPLE
D:\Temp>db2 insert into staff select * from staff
DB20000I SQL 命令成功完成。
重复执行上述命令。直至有日志文件写满触发日志归档。
5、检查db2diag.log,查看是否有日志归档,你会看到类似下面的内容:
2004-10-26-19.42.13.373000+480 I14935459H319      LEVEL: Warning
PID     : 1872                 TID  : 1884        PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000
FUNCTION: DB2 UDB, data protection, sqlpghck, probe:1390
MESSAGE : ExtNum 1, state 401, baselsn 0000000000FA0000 nextlsn 0000000000FA21E
2004-10-26-19.42.13.403000+480 I14935780H418      LEVEL: Warning
PID     : 1872                 TID  : 1516        PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000
FUNCTION: DB2 UDB, data protection, sqlpgArchiveLogFile, probe:3180
MESSAGE : Successfully archived log file S0000001.LOG to
         D:\TEMP\logarc1\DB2\SAMPLE\NODE0000\C0000002\ from
         C:\DB2\NODE0000\SQL00001\SQLOGDIR\.
2004-10-26-19.42.13.573000+480 I14936200H316      LEVEL: Warning
PID     : 1872                 TID  : 196         PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000
FUNCTION: DB2 UDB, data protection, sqlpgLoggrInitDelOldLog, probe:1440
MESSAGE : Cleaning up logs from RenameArchNum 1 to delLimit 2
6、检查一下我们的归档日志,就会看到已经归档的文件:
D:\Temp\logarc1\DB2\SAMPLE\NODE0000\C0000002 的目录收起
互联网服务 · 2010-03-12
浏览1078

提问者

WUJJ0828
系统架构师华际信息系统有限公司
擅长领域: 数据库服务器AIX

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2010-03-12
  • 关注会员:0 人
  • 问题浏览:10073
  • 最近回答:2010-04-28
  • X社区推广