1、load 方法装入数据:
export to tempfile of del select * from tablename where not 清理条件;
load from tempfile of del modified by delprioritychar replace into tablename nonrecoverable;
说明:
在不相关的数据表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 row
5、查看数据库参数:
db2 get db cfg for //当前数据库可以省略
6、修改数据库的log数据:
db2 update db cfg 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的时候报错:db2stop
8/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 force
08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful.
sql1064ndb2stop processing was successful.
然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。
8、缓冲池参数修改:
db2 alter bufferpool ibmdefaultbp size 10240
查看本表的数据内容如下:db2 "select * from syscat.bufferpools";
9、db2 日志处理:
db2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式下,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为归档日志模式。
目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。至于采用何种模式,可以通过修改数据库配置参数(logretain)来实现: 归档日志模式:db2 update db cfg for using logretain on 注:改为on后,查看数据库配置参数logretain的值时,实际显示的是recovery。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(backup pending)状态。这时,需要做一次
对数据库的脱机备份(db2 backup db ),才能使数据库状态变为正常。
循环日志模式:db2 update db cfg for using logretain off
10、db2 日志处理
必须按照以下正确的步骤进行操作:
要求必须使用db2命令prune进行清理,不建议使用rm命令删除。
删除前应保证应用已停止(即联机已下来)。
查看当前使用的日志文件目录及第一活动日志文件
用 “db2 get db cfg for ”命令查看日志文件目录(path to log files)参数,确定数据库当前使用的日志文件目录。 例如:path to log files = /db2log/,说明db2日志存放目录是/db2log
用 “db2 get db cfg for ”命令查看第一活动日志文件(first active log file)参数,该参数对应的日志文件之前的日志文件均为归档日志文件,如果确认没有用,可以删除。 例如:first active log file = s0015913.log,说明当前第一活动日志文件是s0015913.log。
备份好要删除的归档日志
删除归档日志 以应用用户(如btp)登录,执行:
$ db2 connect to
$ db2 prune logfile prior to s???????.log
注:s???????.log为查看到的第一活动日志文件。此命令可以将当前第一活动日志文件之前的归档日志文件全部删除。
11、如何清理db2diag.log文件
db2diag.log,是用来记录db2数据库运行中的信息的文件。可以通过此文件,查看记录的有关db2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。
可以通过查看实例的配置参数diagpath,来确定db2diag.log文件是放在哪个目录下:db2 get dbm cfg 如果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会自动创建一个新的文件。
db2数据库安装
12、load 操作
在进行load的时候
db2 "load of del modified by coldel replace into acmmst nonrecoverable ”
由于数据不规范出现错误,强行中断以后,进行操作的时候出现如下错误:
sql0668noperation not allowed for reason code "3" on table "btp.acmmst".
sqlstate=57016
此时,进行反方向操作即可:
db2 "load from /dev/null of del terminate into acmmst nonrecoverable"。
如果没有使用参数nonrecoverable,则会出现数据库状态不正确的情况,使用:
db2 list tablesapces show detail 查看状态,如果不是正常状态,则脱机状态进行备份即可。
两个表文件之间update的方法:
db2 "update cdmcrd set offset = (select cdmlsl.offset from cdmlsl dno) where cdmcr
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=alno) where a.actnoalno in (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 db newlogpath /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. during sql processing it returned:sql1024n a database connection does not exist. sqlstate=08003
解决办法如下:
p570:>db2 rollforward db db to end of logs and completerollforward statusinput 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. 
问题13、db2日志管理(完成)
---归档日志
db2 update db cfg for dbtest using logretain recovery userexit on
db2 update db cfg for dbtest using logarchmeth1 DISK:D:/DB2/Arch_log
db2 update db cfg for dbtest using logarchmeth2 DISK:D:/DB2/Arch_log2
db2 update db cfg for dbtest using LOGPRIMARY 100  LOGSECOND 50 LOGFILSZ 65535 ;
(此时单个日志文件的大小为:65535 *4K ,可用日志的个数为: 100+50 )
-
--循环日志
/*Logretaim=Recovery  --(Logretaim/userexit两个值任选一个)
userexit=Yes*/
db2 update db cfg for edw using logarchmeth1 off logarchmeth2 off
db2 update db cfg for edw using logretain NO userexit NO
db2 update db cfg for edw using LOGPRIMARY 100  LOGSECOND 50 LOGFILSIZ 65535 ;
(此时单个日志文件的大小为:65535 *4K ,可用日志的个数为: 100+50 )
--重启数据库才生效 (或者断开所有链接)
set instance=db2inst4
db2stop fo
rce
db2start
db2 activate db edw
--更改联机日志的路径(更改后logpath的值发生改变)
db2 update db cfg for edw using  newlogpath /dw/edwdata/db2log
一.日志概述
任何数据库管理系统都必须拥有确保数据一致性和可恢复性的机制。关系数据库系统为确保那些非常重要的特性所使用的众多机制之一是事务性日志记录。在本文中,我们将定义和讨论事务性日志记录的类型,及如何分配日志文件、如何存储它们。
数据库存储了供应用程序访问和处理的数据。那些应用程序会插入、读取、更新或删除数据。每一个这样的活动都是在一个事务中执行的,该事务被 定义成“应用程序过程中一个可恢复的操作序列”。除非已经提交了事务(也称作“工作单元”),否则它不会影响数据库。
将数据库操作组合到事务中只是确保数据一致性解决方案的一半。另一半是称作预写式日志记录(write-ahead logging)的数据库管理器实现。不管事务是否被提交,只要它们发生,就会记录这些事务。在将
任何数据从缓冲池写到数据库结构之前,事务会从日志缓冲区(log buffer)写到 日志文件(事务性日志记录)。用于记录事务的文件叫做 事务日志 。
二.日志分类
DB2 UDB 有两种可用的日志记录类型 — 循环(circular)日志记录和 归档(archive)日志记录。其中归档日志又分为联机归档日志和脱机归档日志。
2.1循环日志记录
循环日志记录是数据库使用的缺省日志记录策略。在此策略中,一旦日志目录中最后一个主日志文件被写满了,就会将新的事务写到第一个日志文件中,从而覆盖现有的日志数据。这些新事务会继续依次覆盖每个旧日志文件。这种日志记录方法确保了所有已提交事务的数据一致性,这样就可以执行应急恢复。
循环日志记录通常在数据仓库环境中使用,在该环境中,恢复数据库需要的只是恢复数据库映象的问题。该策略不应该用在线事务处理(on-line transaction processing,OLTP)环境,因为它不可能进行前滚恢复。
2.2归档日志记录
与循环日志记录相比,当最后一个日志文件写满时,归档日志记录过程会创建一个新的日志文件,这样将来的事务就不会覆盖现有的日志文件。当初始化数据库时,系统会在活动日志目录中分配一定数量、指定大小的主日志文件。这个数量由数据库配置参数控制。当主日志文件都写满时,就会“根据需要”创建辅助日志文件,直到创建了最大数量的辅助日志文件为止。一旦达到了这个数量,如果需要附加的日志空间,就会发出一个错误,指出没有更多的可用日
志文件,所有数据库活动停止。
利用归档日志记录,就可能采取联机(在线)数据库备份,在执行这一操作期间,会继续记录数据库活动。如果数据库崩溃或发生故障,就会使用全备份映象,然后执行使用归档日志的前滚操作,通过前滚到日志结尾,将数据库恢复到时间点状态或最近的一致状态,从而恢复数据库。
有两种归档日志:
联机归档日志: 活动日志中所有改动对正常处理已不需要,即该日志中所记录的事务都已提交并写入数据库文件时,该活动日志转换为联机归档日志。称之为联机,是由于它们与活动日志存放在同一个目录下。
脱机归档日志: 将联机归档日志从活动日志目录下Copy到另外的地方存档,就称为脱机归档日志。这些日志可能在数据库前滚恢复的时候仍然需要。
三.日志相关参数
我们只有弄清楚了日志相关的参数之后,才能正确修改配置参数,得到我们想要的日志管理模式,现对各参数介绍如下:
3.1 LOGRETAIN
缺省情况下,logretaim的值为OFF,此时采用循环日志记录方式,将期修改为ON/ RECOVERY时,采用归档日志记录方式,从而允许数据库管理器使用前滚恢复方法,可以进行在线备份。该参数使归档日志保留在数据库日志路径目录中。当启用了 logretain配置参数时,就不需要启用 userexit 。这两个参数中的任何一个都足以允许前滚恢复方法。
以下是 logretain的有效值:
No(缺省值)— 表示不保留日志。
Recovery — 表示保留日志,且可以用于前滚恢复。此外,如果您使用数据复制,CAPTURE 程序可以将日志中所记录的更新写到更改表。
Capture — 表示只保留日志,这样 Capture 程序可以将更新写到更改表。如果没有裁剪这些日志,那么它们可以用于正向恢复。注:通常仅当为了数据复制而设置数据库时,才使用 Capture 设置。
如果 logretain设置成“Recovery”或者 userexit设置成“Yes”,将保留活动日志文件,而且这些文件将变成联机归档日志文件,以便在前滚恢复中使用。这称为日志保留记录。
在将 logretain设置成“Recovery”和/或将 userexit设置成“Yes”之后,必须对数据库进行完全备份。这一状态由 backup_pending标志参数表示。
如果 再logretain设置成“No”并且 userexit也设置成“No”,就不能对数据库执行前滚恢复,而且可恢复性仅限于最新的数据库备份。在这种情况下,数据库管理器会删除 logpath目录中的所有日志文件(包括联机归档日志文件),分配新的活动日志文件,并且回复到循环日志记录。 
当 logretain设置成“Capture
”时,在 Capture 程序完成时,它会调用 PRUNE LOGFILE 命令来删除日志文件。虽然如果不裁剪日志,这些日志就可以用于正向恢复,但如果您想要确保可以对数据库执行前滚恢复,就不应该将 logretain设置成“Capture”。
当 logretain配置参数设置成“RECOVERY”时,日志文件将保留在活动日志路径中。活动日志路径由数据库配置文件中的“日志文件路径(Path to Log Files)( logpath)”或“更改的日志文件路径(Changed Path to Log Files)( newlogpath)”值确定。
3.2 USEREXIT
该参数使数据库管理器调用用户出口程序来归档和检索日志。启用了用户出口之后,就允许前滚恢复。当启用了 userexit配置参数时,就不需要启用 logretain。这两个参数中的任何一个都足以允许前滚恢复方法。
使用该参数表示覆盖了循环日志记录(缺省值)。 userexit包含有 logretain的功能,反之却不成立。
当使用 userexit 配置参数或 logretain配置参数以允许前滚恢复时,活动日志路径非常重要。当启用了 userexit配置参数时,会调用用户出口来归档日志文件,并将它们移到活动日志路径以外的位置。
以下是该参数的有效值:
No(缺省值)
Yes
如果启用了该参数,无论 logretain参数如何设置,都会执行日志保留记录。该参数还表示用户出口程序应该用于归档和检索日志文件。当数据库管理器关闭日志文件时,会归档日志文件。当 ROLLFORWARD 实用程序需要使用日志文件来恢复数据库时,就会检索它们。
在启用了参数 logretain和/或 userexit时,必须对数据库进行完全备份。这一状态由 backup_pending标志参数表示。
如果取消选择这两个参数,就不能对数据库进行前滚恢复,因为将不再保留日志。在这种情况下,数据库管理器会删除 logpath目录中的所有日志文件(包括联机归档日志文件),分配新的活动日志文件,并且回复到循环日志记录。
3.3 LOGPRIMARY
该参数指定要创建的主日志的数量。
无论主日志是空的还是满的,所需的磁盘空间量都是相同的。因此,如果您配置的日志数量比需要的多,那么您就不必要地多使用了磁盘空间。如果您配置的日志太少了,就会遇到“日志满”情况。当选择要配置的日志数量时,必须考虑您生成的每个日志的大小,以及您的应用程序是否能处理“日志满”情况。
对于 V8.1,这个限制是 256 GB。即,日志文件的数量(LOGPRIMARY + LOGSECOND)乘以以字节为单位的每个日志文件的大小(LOGFILSIZ * 4096)必须小于256 GB。
3.4 LOGSECOND
该参数指定为恢复日志文件(仅当需要时)