db2笔记之实用管理命令:
本文主要总结了日常db2运维中必须掌握的一些内容。
列出当前数据库的所有实例:
db2ilist
删除实例:
db2idrop 实例名
启动实例:
db2start
注:只是初始化实例级的进程和内存,并没有激活数据库,因此数据库的内存和进行还没有初始化。
关闭实例:
db2stop
db2stop force
注:关闭实例的同时也会关闭实例下的所有数据库
非常规关闭:
db2_kill
连接实例(v9.5后的版本已经不需要了,因为管理用户就是实例用户):
db2 attach to db2inst1
断开与实例的连接:
db2 detach
创建db2数据库:
db2 create database mydb1
--完整的--
db2 create database mydb1 automatic storage yes on /db2/mydb1/data1 dbpath on /db2/mydb1 using codeset utf-8 territory en_US collate using IDENTITY_16BIT pagesize 16K
在创建数据库之后,系统会自动创建一些默认表空间,如:SYSCATSPACE、TEMPSPACE1、USERSPACE1、SYSTOOLSPACE
删除数据库:
db2 drop database mydb1
给数据库添加路径:
db2 alter database mydb1 add storage on /db2/mydb1_new1, /db2/mydb1_new2
激活数据库:
db2 activate database mydb1
或
db2 connect to mydb1
去激活数据库:
db2 deactivate database mydb1
表空间:
创建系统管理表空间SMS:类似oracle使用ASM创建的表空间,用户无需自己管理表空间,一切由系统自动打理。
create tablespace tbs_test
managed by system using ('/db2data/data01','/db2data/data02','/db2data/data03')
创建数据库管理表空间DMS:类似oracle使用数据文件创建的表空间,需要指定具体的文件以及空间大小。
create tablespace tbs_test
managed by database using (file '/db2data/data01/tbs_test01' 5000,'/db2data/data01/tbs_test02' 5000)
no file system caching
注:no file system caching用于开启文件系统的CIO/DIO,防止重复的缓存与锁。5000指页大小
通过加入组创建表空间:
CREATE TABLESPACE tbs_test IN IBMCATGROUP MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4
针对DMS表空间,如果没有设置autoresize,则需要注意空间使用量。
加大或减小容器:
alter tablespace tbs_test
resize (file '/db2data/data01/tbs_test01' 2000,'/db2data/data01/tbs_test02' 2000)
增加空间(添加容器):
alter tablespace tbs_test
add (file '/db2data/data01/tbs_test03' 2000)
注:DMS增加容器会导致数据自动重新分布,所以使用这个命令要小心,最好在工作负载小的时间进行。
另外有一种方法是增加条带集,这样就不会导致数据重新公布,只有原有容器用完才会用新的容器:
alter tablespace tbs_test begin new stripe set (file 'tbs_test04' 2000,file 'tbs_test05' 2000)
为SMS数据库添加容器,只有原有容器用完才会用新的容器,不会触发数据重新分布:
alter database add storage on '/db2data/filesystem1','/db2data/filesystem2'
查看表空间DDL:
list history CREATE TABLESPACE all for database itpuxdb
v9.7版本之后,新特性:
将DMS转换成SMS:
db2 alter tablespace tbs_test managed by automatic storage
手动对数据执行立即重新分布:
db2 alter tablespace tbs_test rebalance
db2中清除高水位线:
v9.7之前的版本使用db2dart命令实现
v9.7以及之后的版本直接在线完成:
alter tablespace tbs_test lower high water mark
alter tablespace tbs_test reduce (all containers 10M) --对表空间中的所有容器
或
alter tablespace tbs_test reduce (file '/db2data/data01/tbs_test01' 100) --对某个容器
其它常用命令:
执行批量脚本:
db2 -tvf test.sql
显示错误代码释义:
db2 ? sql2062
显示当前数据库版本:
db2level
获得数据库总大小:
db2 "call get_dbsize_info(?,?,?,0)"
查某一个表的表结构:
describe table fgedu
select tabschema,tabname,colname,typename,LENGTH,DEFAULT,NULLS from syscat.columns where TABNAME='POLICY'
查用户下的表:
list tables
list tables for schema db2inst1
select tabname,owner from syscat.tables where owner=''
查表空间:
list tablespaces
list tablespaces show detail
select tbspace,owner,tbspaceid from syscat.tablespaces
查用户:
SELECT owner FROM syscat.tables GROUP BY owner
查索引:
describe indexes for table fgedu
select indname,owner,tabname,colnames from syscat.indexes where owner='DB2INST1' and tabname='POLICY'
中止db2中的应用:
db2 "force application (41408)" --终止进程号为41408的应用
list命令合集:
LIST ACTIVE DATABASES [AT MEMBER member-number | GLOBAL]
LIST APPLICATIONS [FOR DATABASE database-alias]
[AT MEMBER member-number| GLOBAL] [SHOW DETAIL]
LIST COMMAND OPTIONS
LIST DATABASE DIRECTORY [ON path]
LIST DATABASE PARTITION GROUPS [SHOW DETAIL]
LIST DBPARTITIONNUMS
LIST DCS APPLICATIONS [SHOW DETAIL | EXTENDED]
LIST DCS DIRECTORY
LIST DRDA INDOUBT TRANSACTIONS [WITH PROMPTING]
LIST HISTORY {BACKUP | ROLLFORWARD | REORG |
CREATE TABLESPACE | ALTER TABLESPACE | DROPPED TABLE | LOAD |
RENAME TABLESPACE | ARCHIVE LOG}
{ALL | SINCE timestamp |CONTAINING {schema.object_name | object_name}}
FOR [DATABASE] database-alias
LIST INDOUBT TRANSACTIONS [WITH PROMPTING]
LIST INSTANCE [SHOW DETAIL]
LIST [ADMIN] NODE DIRECTORY [SHOW DETAIL]
LIST PACKAGES [FOR {USER | ALL | SYSTEM | SCHEMA schema-name}] [SHOW DETAIL]
LIST STORAGE ACCESS
LIST TABLES [FOR {USER | ALL | SYSTEM | SCHEMA schema-name}] [SHOW DETAIL]
LIST TABLESPACE CONTAINERS FOR tablespace-id [SHOW DETAIL]
LIST TABLESPACES [SHOW DETAIL]
LIST UTILITIES [SHOW DETAIL]
客户端远程连接:
(1)对远程节点进行编目:
su - db2inst1
db2 catalog tcpip node <自定义节点名> remote <远端IP | 远端主机名,需hosts中添加映射> server <service_name | posr_number >
如 db2 catalog tcpip node node01 remote 10.11.11.53 server 50000
db2 list node directory
(2)创建数据库目录:db2 catalog db <远端dbname> as <自定义本地dbname> at node node01 --node01为前面创建的自定义节点
如 db2 catalog database itpuxdb as testdb at node node01
db2 list db directory
(3)连接:
CONNECT TO local_db_name //利用本地数据库别名连接远程数据库
USER userid //用户ID
USING password //登陆密码
db2 connect to testdb user db2inst1 using db2inst1
(4)删除注册节点
uncatalog node node01
(5)删除注册数据库
uncatalog database testdb
db2运行配置顾问程序,给出配置参数优化建议:
db2 > autoconfigure using mem_percent 60 workload_type mixed num_stmts 20 tpm 500 ADMIN_PRIORITY both is_populated yes num_local_apps 0 num_remote_apps 20 isolation rr bp_resizeable yes apply none
输入参数说明:
(MEM_PERCENT)内存百分比。可选的取值范围是1到100,默认值是25
(WORKLOAD_TYPE)工作负载类型。可选的值有:SIMPLE\MIXED\COMLEX,默认值是MIXED
(NUM_STMTS)单个工作单元中的平均SQL语句数。默认值是10
(TPM)每分钟事务数。默认值是60
(ADMIN_PRIORITY)指定数据库管理优先级。可选择的值有PERFORMANCE(事务性能更快,恢复较慢),RECOVERY(数据库恢复更快,事务较慢),BOTH(两者),默认值是两者
(IS_POPULATED)指定数据库是否填充了数据。每当数据库大小明显地增大或减少时,都应再次运行此顾问程序,可选值YES\NO,默认值是YES
(NUM_LOCAL_APPS)指定与此数据库连接的本地应用程序平均数。如果不确定应使用什么值,可接受缺省值,取值范围是0到5000,默认值是0
(NUM_REMOTE_APPS)指定与此数据库连接的远程应用程序平均数。取值范围是0到5000,默认值是10
(ISOLATION)选择最能反映应用程序的隔离级别。不要选择创建的锁定数多于需要数的隔离级别,因为每个附加锁定都需要更多的内存,另外,锁定级别过高,会影响应用程序的并发性。可选择的值有RR,RS,CS,UR,默认值是RR。RR(REPEATABLE READ)是可重复读,需要长期锁定,一般会上表级锁;RS(READ STABILITY)是指读稳定性,很少长期锁定,一般会对结果集上锁;CS(CURSOR STABILITY)是指游标稳定性,很多短期锁定,一般对检索到的当前行上行级锁;UR(UNCOMMITTED READ)是指未落实读,无锁定
(BP_RESIZEABLE)缓冲池是否可以自动调节大小。可选的值有YES,NO,默认值是YES
APPLY选项可以选择的配置参数值分别是:只显示建议变化的值,但是不应用他们(NONE),只有数据库配置和缓冲池适用(DB ONLY),所有参数及其值都适用(DB AND DBM),每个参数的具体含义如下:
配置顾问程序 建议的值只是针对每个实例具有一个数据库的情况,如果想要在多个数据库上使用此顾问程序,则每个数据库应该属于一个单独的实例,当这个数据库是这个系统中唯一活动的数据库,配置顾问命令为当前连接的数据库产生配置参数建议值?如果当前系统中存在多个活动的数据库(不在一个实例中),则内存百分比(MEM_PERCENT)参数将只影响当前连接数据库的共享内存,也就是说推荐的数据库参数值只是当前连接数据库的,和另外的活动数据库没有关系。
在数据仓库中,推荐使用数据压缩功能。