当前位置:文档之家› DB2_数据库日志管理

DB2_数据库日志管理

1、load 方法装入数据:export to tempfile of del select * from tablename where not 清理条件;load from tempfile of del modified by delprioritychar replace into tablenamenonrecoverable;说明:在不相关的数据表export数据时,可以采取并发的形式,以提高效率;tablename指待清理table的名称;modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况; replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;nonrecoverable无日志方式装入;2、查找当前的应用:db2 list application grep btpdbs;3、删除当前正在使用的application:db2 "force application (id1,id2,id3)"id1,id2,id3 是list显示的应用号;4、查看当前应用号的执行状态:db2 get snapshot for application agentid 299 grep row5、查看数据库参数:db2 get dbcfg for //当前数据库可以省略6、修改数据库的log数据:db2 update dbcfg using <参数名><参数值>7、db2stop force的用法:在进行bind的时候出现如下错误:sql0082can error has occurred which has terminated processing.sql0092nno package was created because of previous errors.sql0091nbinding was ended with "3" errors and "0" warnings.主要是表文件被加锁,不能继续使用;在进行stop的时候报错:db2stop8/03/2005 21:46:530 0 sql1025nthe database manager was not stopped because databases are still active.sql1025nthe database manager was not stopped because databases are still active.需要使用如下命令可以解决这个问题:db2stop force08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful.sql1064ndb2stop processing was successful.然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。

8、缓冲池参数修改:db2 alter bufferpoolibmdefaultbp size 10240查看本表的数据内容如下:db2 "select * from syscat.bufferpools";9、db2 日志处理:db2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。

当创建新数据库时,日志的缺省模式是循环日志。

在这种模式下,只能实现数据库的脱机备份和恢复。

如果要实现联机备份和恢复,必须设为归档日志模式。

目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。

至于采用何种模式,可以通过修改数据库配置参数(logretain)来实现:归档日志模式:db2 update dbcfg for using logretain on注:改为on后,查看数据库配置参数logretain的值时,实际显示的是recovery。

改变此参数后,再次连接数据库会显示数据库处于备份暂挂(backup pending)状态。

这时,需要做一次对数据库的脱机备份(db2 backup db),才能使数据库状态变为正常。

循环日志模式:db2 updatedbcfg for using logretain off10、db2 日志处理必须按照以下正确的步骤进行操作:要求必须使用db2命令prune进行清理,不建议使用rm命令删除。

删除前应保证应用已停止(即联机已下来)。

查看当前使用的日志文件目录及第一活动日志文件用“db2 get dbcfg for ”命令查看日志文件目录(path to log files)参数,确定数据库当前使用的日志文件目录。

例如:path to log files = /db2log/,说明db2日志存放目录是/db2log用“db2 get dbcfg for ”命令查看第一活动日志文件(first active log file)参数,该参数对应的日志文件之前的日志文件均为归档日志文件,如果确认没有用,可以删除。

例如:first active log file = s0015913.log,说明当前第一活动日志文件是s0015913.log。

备份好要删除的归档日志删除归档日志以应用用户(如btp)登录,执行:&#36; db2 connect to&#36; db2 prune logfile prior to s???????.log注:s???????.log为查看到的第一活动日志文件。

此命令可以将当前第一活动日志文件之前的归档日志文件全部删除。

11、如何清理db2diag.log文件db2diag.log,是用来记录db2数据库运行中的信息的文件。

可以通过此文件,查看记录的有关db2数据库详细的错误信息。

此文件也是不断增大的,需要定期进行清理。

可以通过查看实例的配置参数diagpath,来确定db2diag.log文件是放在哪个目录下:db2 get dbmcfg如果diagnostic data directory path(diagpath) = /home/db2inst1/sqllib/db2dump,则此文件是放在/home/db2inst1/sqllib/db2dump目录下。

当文件系统/home的使用率达到80%-90%左右时,应及时删除db2diag.log文件。

请按以下正确步骤操作:确认应用(如btp)、db2已经停止。

将原db2diag.log文件备份到其它文件系统下。

删除db2diag.log文件。

删除后,db2会自动创建一个新的文件。

12、load 操作在进行load的时候db2 "load from acmmst.txt of del modified by coldel replace into acmmstnonrecoverable ”由于数据不规范出现错误,强行中断以后,进行操作的时候出现如下错误:sql0668noperation not allowed for reason code "3" on table "btp.acmmst".sqlstate=57016此时,进行反方向操作即可:db2 "load from /dev/null of del terminate into acmmstnonrecoverable"。

如果没有使用参数nonrecoverable,则会出现数据库状态不正确的情况,使用:db2 list tablesapces show detail 查看状态,如果不是正常状态,则脱机状态进行备份即可。

两个表文件之间update的方法:db2 "update cdmcrd set offset = (select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno) where cdmcrd.crdno in (select cdmlsl.crdno from cdmlsl)13、多字段条件查询和修改表a中的字段有actno, cnlno,bal,pwd;表b中的字段为actno,cnlno,txnamt;目的是将a 表中的bal修改为b表中的txnamt,命令:db2 "update a set bal=(select txnamt from b where actno=a.actno and cnlno=lno) wherelnoin (select actnocnlno from b );14、多条件匹配查询查询某个表中条件是b?aaa的记录:db2 "select * from a where actno like 'b_aaa%'".查询数据中存在某些字符的记录:db2 "select * from a where actno like '%-aaa%".15、数据库恢复的处理进行数据库恢复的时候使用以下的命令:restore db db1 to /tstdb2/catalog into dbnewlogpath /tstdb2/db2log buffer 2048replace existing redirect parallelism 16;set tablespace containers for 1 using (path '/tstdb2/db2tmp');set tablespace containers for 2 using(device '/dev/rtstcontlv00' 2621440, device '/dev/rtstcontlv01' 2621440,device '/dev/rtstcontlv02' 2621440, device '/dev/rtstcontlv03' 2621440 ) ;restore db db1 continue;恢复完成以后执行命令db2s时报如下的错误:p570:>db2ssql1117n a connection to or activation of database "db" cannot be madebecause of roll-forward pending. sqlstate=57019db21034e the command was processed as an sql statement because it was not avalid command line processor command. duringsql processing it returned:sql1024n a database connection does not exist. sqlstate=08003解决办法如下:p570:>db2 rollforwarddbdb to end of logs and completerollforwardstatusinput database alias = dbnumber of nodes have returned status = 1node number = 0rollforward status = not pendingnext log file to be read =log files processed = -last committed transaction = 2005-11-20-10.59.23.000000db20000i the rollforward command completed successfully.db2日志管理(完成)---归档日志db2 update dbcfg for dbtest usinglogretain recovery userexit ondb2 update dbcfg for dbtest using logarchmeth1 DISK:D:/DB2/Arch_logdb2 update dbcfg for dbtest using logarchmeth2 DISK:D:/DB2/Arch_log2db2 update dbcfg for dbtest using LOGPRIMARY 100 LOGSECOND 50 LOGFILSZ 65535 ;(此时单个日志文件的大小为:65535 *4K ,可用日志的个数为: 100+50 )---循环日志/*Logretaim=Recovery --(Logretaim/userexit两个值任选一个)userexit=Yes*/db2 update dbcfg for edw using logarchmeth1 off logarchmeth2 offdb2 update dbcfg for edw using logretain NO userexit NOdb2 update dbcfg for edw using LOGPRIMARY 100 LOGSECOND 50 LOGFILSIZ 65535 ;(此时单个日志文件的大小为:65535 *4K ,可用日志的个数为: 100+50 )--重启数据库才生效(或者断开所有链接)set instance=db2inst4db2stop forcedb2startdb2 activate dbedw--更改联机日志的路径(更改后logpath的值发生改变)db2 update dbcfg for edw usingnewlogpath /dw/edwdata/db2log一.日志概述任何数据库管理系统都必须拥有确保数据一致性和可恢复性的机制。

相关主题