首页 > 学技术 > 技术网文 > DB2 > 正文

[原创] Db2 日常实用操作积累-部分


来源 chinaunix.net 酷勤网整理

DB2数据库
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 <dbsname>  //当前数据库可以省略
6、修改数据库的Log数据:
  db2 update db cfg using <参数名> <参数值>
 
7、Db2Stop Force的用法:
  在进行Bind的时候出现如下错误:
       SQL0082C  An error has occurred which has terminated processing.
       SQL0092N  No package was created because of previous errors.
       SQL0091N  Binding was ended with "3" errors and "0" warnings.
   主要是表文件被加锁,不能继续使用;
 在进行stop的时候报错:db2stop
   8/03/2005 21:46:53  0 0   SQL1025N  The database manager was not stopped because databases are still active.
   SQL1025N  The database manager was not stopped because databases are still active.
 需要使用如下命令可以解决这个问题: db2stop force
   08/03/2005 21:47:49     0   0   SQL1064N  DB2STOP processing was successful.
   SQL1064N  DB2STOP 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 <dbname> using logretain on 注:改为on后,查看数据库配置参数logretain的值时,实际显示的是recovery。改变此参数后,再次连接数据库会显示数据库处于备份暂挂(BACKUP PENDING)状态。这时,需要做一次对数据库的脱机备份(db2 backup db <dbname>),才能使数据库状态变为正常。 循环日志模式:db2 update db cfg for <dbname> using logretain off
 
10、Db2 日志处理:
    必须按照以下正确的步骤进行操作: &#1048698; 要求必须使用DB2命令PRUNE进行清理,不建议使用rm命令删除。 &#1048698; 删除前应保证应用已停止(即联机已下来)。 &#1048698; 查看当前使用的日志文件目录及第一活动日志文件 &#1048766; 用 “db2 get db cfg for <dbname>”命令查看日志文件目录(Path to log files)参数,确定数据库当前使用的日志文件目录。 例如:Path to log files = /db2log/,说明DB2日志存放目录是/db2log &#1048766; 用 “db2 get db cfg for <dbname>”命令查看第一活动日志文件(First active log file)参数,该参数对应的日志文件之前的日志文件均为归档日志文件,如果确认没有用,可以删除。 例如:First active log file = S0015913.LOG,说明当前第一活动日志文件是S0015913.LOG。 &#1048698; 备份好要删除的归档日志 &#1048698; 删除归档日志 以应用用户(如BTP)登录,执行:
 $ db2 connect to <dbname>
 $ 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文件。 请按以下正确步骤操作: &#1048698; 确认应用(如BTP)、DB2已经停止。 &#1048698; 将原db2diag.log文件备份到其它文件系统下。 &#1048698; 删除db2diag.log文件。删除后,DB2会自动创建一个新的文件。
 
12、Load 操作
   在进行load的时候
   db2 "load from acmmst.txt of del modified by coldel| replace into acmmst nonrecoverable ”
   由于数据不规范出现错误,强行中断以后,进行操作的时候出现如下错误:
     SQL0668N  Operation 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 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=A.Cnlno) where A.actno||A.cnlno in (select Actno||cnlno 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 2048
     replace 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:>db2s
  SQL1117N  A connection to or activation of database "DB" cannot be made
  because of ROLL-FORWARD PENDING.  SQLSTATE=57019
  DB21034E  The command was processed as an SQL statement because it was not a
  valid 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 complete
 
                                Rollforward Status
 
Input database alias                   = db
Number of nodes have returned status   = 1
 
Node number                            = 0
Rollforward status                     = not pending
Next log file to be read               =
Log files processed                    =  -
Last committed transaction             = 2005-11-20-10.59.23.000000
 
DB20000I  The ROLLFORWARD command completed successfully.



 myuhan 回复于:2005-11-28 08:36:55

先顶在看,辛苦了!


 我笨故我在new 回复于:2005-11-28 13:36:26

不错 顶一下


 cliffy 回复于:2005-12-30 11:50:15

辛苦了,谢谢


 qcgxlg 回复于:2005-12-30 12:47:49

hao !!!!!!11


 xiaoxiaoding 回复于:2005-12-30 15:48:47

还是好人多噢!:lol:


 zzjijun 回复于:2005-12-30 16:08:02

支持原创!


 wyf555 回复于:2005-12-30 23:11:46

不错 顶


 beginner-bj 回复于:2006-01-01 20:22:59

关于11、如何清理db2diag.log文件 
直接 > /home/db2inst1/sqllib/db2dump/db2diag.log 行不行?


 AIX1225 回复于:2006-01-03 11:34:04




 helpme 回复于:2006-01-04 09:11:08

谢谢楼主!


 007linxx 回复于:2006-01-04 09:53:26

RT


 喵呜小鱼 回复于:2006-01-04 10:38:04

引用:原帖由 beginner-bj 于 2006-1-1 20:22 发表
关于11、如何清理db2diag.log文件 
直接 > /home/db2inst1/sqllib/db2dump/db2diag.log 行不行? 



偶也有这个疑问.....


 chj2997 回复于:2006-01-05 11:49:40

辛苦了


 0pawpaw 回复于:2006-01-17 15:50:25

刚GOOGLE到此页,感觉很亲切的 ...


 mymm 回复于:2006-01-18 11:34:57

鼓励原创!

LZ是EBISer OR RCCer?

欢迎常来!

引用:原帖由 beginner-bj 于 2006-1-1 20:22 发表
关于11、如何清理db2diag.log文件 
直接 > /home/db2inst1/sqllib/db2dump/db2diag.log 行不行? 



没问题!


 rambus 回复于:2006-01-19 15:17:44

积累真是很重要得


 大梦 回复于:2006-01-19 21:25:50

/home/db2inst1/sqllib/db2dump/下的可以直接rm掉!


 QU2CN 回复于:2006-01-29 22:44:54

哈,哈,哈,哈,哈,哈!

[ 本帖最后由 QU2CN 于 2006-1-29 22:47 编辑 ]


 suzhengbo 回复于:2006-02-07 10:55:17

好!


 沙滩 回复于:2006-02-14 08:49:31

不错


 terryno1 回复于:2006-02-15 10:12:20

谢谢啦,留着以后用得上


 chinagirlwang 回复于:2006-02-28 12:45:55

先收藏了,但不知道什么时候能用的上。thank you


 nuno_3023 回复于:2006-02-28 14:27:56

ding!ding!ding!


 ppiao 回复于:2006-03-02 12:03:00

一见就顶


 可观 回复于:2006-03-10 09:52:42

谢谢,很有用,先收了


 suzhengbo 回复于:2006-03-13 17:04:14

好啊!


 macrodba 回复于:2006-03-13 17:32:01

good support .ding


 zrben 回复于:2006-07-18 15:14:14

weldone


 hanxiang 回复于:2006-07-18 16:05:32

不错啊 呵呵  顶了


 hgxtzhou 回复于:2006-08-18 21:00:36

好东西,正好可以用上


 dlms 回复于:2006-08-22 11:53:09

支持!


 华光骑士 回复于:2006-08-23 09:25:04

Thank your contribution!


 afog 回复于:2006-08-28 15:41:30

10、Db2 日志处理:
    必须按照以下正确的步骤进行操作: &#1048698;


 &#1048698???????      这个是什么东西?怎么用?


 dragoncxb 回复于:2006-08-28 16:27:57

不错,顶


 meilixueshan 回复于:2006-12-04 09:56:56

顶了,多谢!


 cathie 回复于:2006-12-12 23:24:08

多谢了:lol:


 tulip165 回复于:2007-03-15 17:31:32

不错,


 firedancing1982 回复于:2007-05-23 15:09:08

正是需要啊~~~


 美琳达 回复于:2007-05-26 10:43:05

真是好东西啊,支持一下啊.


 javasheng 回复于:2007-05-31 01:29:22

还行




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=656727
转载请注明作者名及原文出处



收藏本页到: