科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道DB2数据库部分日常实用操作

DB2数据库部分日常实用操作

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文总结了DB2数据库部分日常的实用操作方法,概括介绍了使用中的技巧。

作者:lingsl 来源:IT专家网 2008年6月5日

关键字: 数据库 IBM DB2

  • 评论
  • 分享微博
  • 分享邮件

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会自动创建一个新的文件。

12、Load 操作
在进行load的时候
db2 "load from acmmst.txt 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 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.

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章