如何对db2中的数据库进行数据分析

如何对db2中的数据库进行数据分析,第1张

1、 打开命令行窗口

  #db2cmd

2、 打开控制中心

  # db2cmd db2cc

3、 打开命令编辑器

 db2cmd db2ce

===== *** 作数据命令=====

4、 启动数据库实例

  #db2start

5、 停止数据库实例

  #db2stop

 如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2

force application all就可以了 /db2stop force

6、 创建数据库

  #db2 create db

[dbname]

7、 连接到数据库

  #db2 connect to [dbname] user [username] using

[password]

8、 断开数据库连接

  #db2 connect reset

9、 列出所有数据库

 #db2 list

db directory

10、 列出所有激活的数据库

  #db2 list active databases

11、

列出所有数据库配置

  #db2 get db cfg

12、 删除数据库

  #db2 drop database [dbname]

(执行此 *** 作要小心)

如果不能删除,断开所有数据库连接或者重启db2

========= *** 作数据表命令==========

13、 列出所有用户表

  #db2 list tables

14、列出所有系统表

 #db2 list tables for

system

15、列出所有表

  #db2 list tables for all

16、 列出系统表

  #db2 list

tables for system

17、列出用户表

  #db2 list tables for user

18、 列出特定用户表

  #db2 list tables for schema [user]

19、 创建一个与数据库中某个表(t2)结构相同的新表(t1)

  #db2 create table t1 like t2

20、 将一个表t1的数据导入到另一个表t2

#db2 "insert

into t1 select * from t2"

21、 查询表

  #db2 "select * from table name where

..."

22、 显示表结构

  #db2 describe table tablename

23、 修改列

  #db2

alter table [tablename] alter column [columname] set data type varchar(24)

======脚本文件 *** 作命令=======

24、 执行脚本文件

  #db2 -tvf scripts.sql

25、帮助命令

* 查看命令帮助

 #db2 ? db2start

* 查看错误码信息

#db2 ? 22001

* memo:

详细命令请使用"db2 ? <command>"进行查看。 

=========================

26、备份数据库

#db2 backup db <db name>

备注:执行以上命令之前需要断开数据库连接

27、在线备份数据库

#db2 -v "BACKUP DATABASE <database name>ONLINE TO <path>WITH 2

BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING"

28、恢复数据库

#db2

restore db <source db name>

29、在线恢复数据库

#db2 "RESTORE DB

<database name>TO <db path>LOGTARGET <logpath>WITHOUT

PROMPTING"

#db2 "ROLLFORWARD DB <database name>TO END OF LOGS AND

STOP" ...

30、导出数据文件

#db2move <db name>export

[-sn

<模式名称,一般为db2admin>]

[-tn <表名,多个之间用逗号分隔>]

31、导入数据文件

#db2move <db name>import

32、获取db2数据库管理配置环境信息

#db2 get dbm cfg

33、.获取db2某个数据库数据库管理配置环境信息

#db2 get db cfg for <db name>

或者:连接至某个数据库以后执行db2 get db cfg

34、更改db2日志空间的大小

备注:以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改。

#db2

UPDATE DB CFG FOR <db name>USING logretain OFF logprimary 3 logsecond 2

logfilsiz 25600

如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。

35、创建临时表空间

#DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY

DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000)

EXTENTSIZE 256

36、获取数据库管理器的快照数据

#db2 –v get snapshot for dbm

37、显示进行程号

#db2

list applications show detail

===================================================

一、加载数据:

1、

以默认分隔符加载,默认为“,”号

db2 "import from btpoper.txt of del insert into btpoper"

2、 以指定分隔符“|”加载

db2 "import from btpoper.txt of del modified by coldel|

insert into btpoper"

二、卸载数据:

1、 卸载一个表中全部数据

db2 "export to

btpoper.txt of del select * from btpoper"

db2 "export to btpoper.txt of del

modified by coldel| select * from btpoper"

2、 带条件卸载一个表中数据

db2 "export to

btpoper.txt of del select * from btpoper where brhid='907020000'"

db2

"export to cmmcode.txt of del select * from cmmcode where codtp='01'"

db2

"export to cmmcode.txt of del modified by coldel| select * from cmmcode where

codtp='01'"

三、查询数据结构及数据:

db2 "select * from btpoper"

db2 "select *

from btpoper where brhid='907020000' and oprid='0001'"

db2 "select

oprid,oprnm,brhid,passwd from btpoper"

四、删除表中数据:

db2 "delete from

btpoper"

db2 "delete from btpoper where brhid='907020000' or

brhid='907010000'"

五、修改表中数据:

db2 "update svmmst set prtlines=0 where

brhid='907010000' and jobtp='02'"

db2 "update svmmst set prtlines=0 where

jobtp='02' or jobtp='03'"

六、联接数据库

db2 connect to btpdbs

七、清除数据库联接

db2 connect reset 断开数据库连接

db2 terminate 断开数据库连接

db2 force

applications all 断开所有数据库连接

八、备份数据库

1、 db2 backup db btpdbs

2、

db2move btpdbs export

db2look -d btpdbs -e -x [-a] -o crttbl.sql

九、恢复数据库

1、 db2 restore db btpdbs without rolling forward

2、 db2 -tvf crtdb.sql

crtdb.sql文件内容:create db btpdbs on /db2catalog

db2 -stvf crttbl.sql

db2move btpdbs import

十、DB2帮助命令:

db2 ?

db2 ? restroe

db2 ?

sqlcode (例:db2 ? sql0803) 注:code必须为4位数,不够4位,前面补0

十一、bind命令:将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind

(1) db2 bind br8200.bnd

(2) /btp/bin/bndall /btp/bnd

/btp/bin/bndall /btp/tran/bnd

十二、查看数据库参数:

db2 get dbm cfg

db2 get db cfg for btpdbs

十三、修改数据库参数:

db2 update db cfg for btpdbs using LOGBUFSZ 20

db2

update db cfg for btpdbs using LOGFILSIZ 5120

改完后,应执行以下命令使其生效:

db2 stop

db2 start

com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC: TBSPACEID=2, TABLEID=640, COLNO=0

分析DB2报出的错误信息,主要从六个方面进行分析:

SQLCODE, SQLSTATE, SQLERRMC, TBSPACEID, TABLEID, COLNO

1、先从SQLCODE和SQLSTATE两方面的数字确认是什么原因

2、在根据TBSPACEID和TABLEID两方面确认是哪个表

SQL语句:select * from syscat.tables where tbspaceid="" and tableid=""

3、根据COLNO确认是哪个列出问题

SELECT * FROM SYSCAT.COLUMNS WHERE TABNAME= '*******' AND COLNO = “”

三步就可以精确确认错误的原因了

原理分析:在DB2 数据库中隐藏着一个内部表,专存储数据库的各个表。可以通过select * from syscat.tables进行查看。TBSPACEID, TABLEID, COLNO 都是表tables 中的字段。

=====================================================================

but,

我的DB2数据库错误信息:

com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -532, SQLSTATE: 23504, SQLERRMC: DE_ANOM_DETN.FK_TT_ANOM_TT_DETN_EVNT

根据SQLCODE和SQLERRMC可知:

-532 23504 删除 *** 作违反了已指定的参照约束

可以判断出,应该是在删除级联表格时,发现参考的外键为空了,应该是提前删除了。

但是我的错误信息里面并没有上面提示的那么详细,上面的是SQLERRMC: TBSPACEID=2, TABLEID=640, COLNO=0 ,而我的是SQLERRMC: DE_ANOM_DETN.FK_TT_ANOM_TT_DETN_EVNT,由此可以推断出,SQLERRMC里面的信息就是定位错误的核心!!可是这个是什么呢??估计这个应该找数据库设计文档了。

最后没管这个问题,直接把DB2恢复(restore)一个镜像点了,然后mq(Qmanager)启动,was启动(前提是mq启动)。问题可能是执行顺序或者因为某个服务器节点未启动caused的,当这些服务器节点都正常启动之后,把数据库restore正常状态,然后就可以正常执行了。

不用检查,直接runstats,因为检查的过程,其实就是runstats了一遍

有一些经验:数据量改变了10%-20%以上,进行runstats;reorg之后进行runstats!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9254560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存