db2常用操作总结

使用DB2数据库过程中常用的一些操作,总结了几点如下:


1.服务启停、连接

db2stop(正常停止、需要等待)

db2 force application all(强杀db2所有进程,由于异步进行,可能也需要等待)

db2start(启动服务)

db2 connect to $dbname user $username using $password

 

2.命令行执行sql文件

db2 -svtf sample.sql 

 

3建立分区表

CREATE TABLE JCUST_SUB_ACCT_INFO column1 …

PARTITION BY RANGE(OPEN_DATE)

( STARTING '19/07/2016' ENDING '25/07/2016',

 STARTING '26/07/2016' ENDING '30/07/2016')

 

4.表空间操作

查看表所在表空间

select tabname, tbspace from syscat.tables where tabname='JINTEGRAL_DATA_INFO'

查看表空间使用情况

select substr(tbsp_name,1,20) as表空间名称,substr(tbsp_content_type,1,10) as表空间类型,sum(tbsp_total_size_kb)/1024 as总大小M,

  sum(tbsp_used_size_kb)/1024 as 已用大小 M,sum(tbsp_free_size_kb)/1024 as 可用大小 M,tbsp_page_size AS 页数

 from SYSIBMADM.TBSP_UTILIZATIONgroup by tbsp_name,tbsp_content_type,tbsp_page_size order by 1

 

查看表空间使用情况 db2pd -d dbname -tablespaces


扩大表空间有3种方法:
扩展容器50G
db2 "alter tablespace tablespace_name extend (file '/data1/ts2/con0' 50G,file'/data1/ts2/con1' 50G)"
增加容器,不过会rebalance,影响系统性能
db2 "alter tablespace tablespacename add (file '/data1/ts2/con2'50G)"
通过altertablespace begin new stripe set选项,该选项不rebalance,不会对系统性能造成影响,但它会造成数据偏移。
db2 "alter tablespace tablespace_name begin new stripe set (file'/data1/ts2/con3' 10G)"

创建表空间:
create tablespace TS4R_INDEX
pagesize 4K
managed by database using(file 'E:\DNJC\TS4R_INDEX' 10G)
extentsize 32
bufferpool BP_4K
dropped table recovery off;

修改表空间大小(可改大改小),前提是表空间不是自增的

db2 "ALTER TABLESPACE TMP_JFXTTMB RESIZE (file'/home/db2inst1/database/jfxt/rlvtmp' 20G)"
表空间设为自增长:
db2 alter tablespace idx_data autoresize yes increasesize 10240K maxsize none;
查看表空间是否为自增长及增长大小:
db2 get snapshot for tablespaces on netdb |more;

查看表空间数据文件路径

db2 list tablespaces show detail

再根据表空间名称对应的编号,例如是5,则

db2 list tablespace containers for 5

db2pd -d jfxtdb -tablespaces

 

5.db2锁操作

查询锁

db2 get snapshot for locks on <dbname>  (需要snapshot的访问权限)

解锁

找到锁的句柄编号,例如句柄为8,执行以下语句进行解锁

db2 "force application(8)"

 

db2数据库监控:

db2top -d <dbname> -n <nodename> -u <username> -p <passwd>-V skm4 -B -i 2

或者直接db2top -d <dbname>

 

6.db2日志文件配置修改

获取配置:db2 get db cfg for <dbname>

修改配置:

db2 update db cfg for <dbname> using LOGFILSIZ 4096

db2 update db cfg for <dbname> using LOGPRIMARY 20

db2 update db cfg for <dbname> using LOGSECOND 15

规定,主日志文件及辅助日志文件总个数共不能超过150个,修改完以后,重启db2服务,重启后用使用命令

db2 connect to <dbname> user <username> using <passwd>

连接连接数据库可能需要等待一段时间,看日志文件的多少和大小。

这个同时也是针对DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011(数据库的日志文件已满)的解决方法之一。

 

7.表操作不写事务日志

在一个事务中,执行表数据更新操作之前,先执行

ALTER TABLE JINTEGRAL_DATA_INFO ACTIVATE NOT LOGGED INITIALLY

该表就不再写日志,但是updateinsertdelete操作不写事务日志只在单个事务内有效,commmit过后失效。

 

8.db2load & load游标

load清空表

db2 "LOAD FROM /dev/null OF DEL REPLACE INTO JINTEGRAL_DATA_INFO_HSTNONRECOVERABLE"

export导出数据

db2 "EXPORT TO data_hst.del OF DEL MODIFIED BY CODEPAGE=1208 NOCHARDEL COLDEL0x7C SELECT * FROMJINTEGRAL_DATA_INFO_HST"

load指定文件行数ROWCOUNT

db2 "LOAD FROM data_hst.del OF DEL MODIFIED BY CODEPAGE=1208CHARDEL0x22 COLDEL| ROWCOUNT 5000000 INSERT INTO JINTEGRAL_DATA_INFO_HST NONRECOVERABLE"

从游标load,区别于insert into... select * from ...,大数据量情况下只会产生极少的事务日志

db2 "DECLARE CUR2 CURSOR FOR SELECT * FROM JINTEGRAL_DATA_INFO ";

db2 "LOAD FROM CUR2 OF CURSOR INSERT INTO JINTEGRAL_DATA_INFO_HST NONRECOVERABLE";

 

9. db2load失败后查询及解除暂挂状态

db2 load query table JINTEGRAL_DATA_INFO_HST

db2 "load from /dev/null of del terminate into JINTEGRAL_DATA_INFONONRECOVERABLE"

 

10.查看表的ddl信息

db2look -d jfxtdb -t jfxt.JINTEGRAL_DATA_INFO_HST -a -e -x -o ./outfile


  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值