DB2 常用命令
1.数据库的启动、停止
db2start--启动
db2stop [force]--停止
2.与的连接、断开
db2 CONNECT TO DBName [user UserID
using PWD]--建立连接
CONNECT reset /db2 disconnect CURRENT
--断开连接
3.实例的创建、删除
db2icrt < 实例名称 >--创建 db2 实例
db2idrop
< 实例名称 >--删除 db2 实例
SET db2intance=db2--设置当前 db2 实例
db2ilist--显示 db2
拥有的实例
4.节点、数据库的编目
db2 list node directory --查看本地节点目录
db2
catalog tcpip node remote ostype -- 编目一个TCP/IP节点
db2 uncatalog node
--取消节点编目
db2 catalog DATABASE AS AT node --编目数据库
db2 uncatalog DATABASE
--取消数据库编目
5.表空间的创建、删除
db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE
25000 PAGESIZE 8K--创建缓冲池STMABMP
db2 DROP tablespace STMABMP--删除表空间
db2
CREATE REGULAR TABLESPACE STMA PAGESIZE 8 K MANAGED BY SYSTEM |
DATABASE
USING (‘D:\DB2Container\Stma‘ )
EXTENTSIZE 8 OVERHEAD 10.5
PREFETCHSIZE 8
TRANSFERRATE 0.14 BUFFERPOOL STMABMP DROPPED TABLE RECOVERY
OFF
--在D:\DB2Container\Stma下创建系统/数据库表空间STMA
db2
BACKUP DATABASE 数据库别名 TABLESPACE 表空间名 [ONLINE} TO 介质名--表空间的
db2 list
tablespaces show detail --列出所以表空间信息
db2 list tablespace containers for
SpaceID--列出对应表空间的容器详情
--修改表空间
ALTER TABLESPACE 表空间名 RESIZE(FILE ‘已满的容器名‘ 更改后容器的大小)
ALTER TABLESPACE 表空间名 EXTEND(FILE ‘已满的容器名‘ 准备增加的大小)--可以是实际大小或者页数
eg:db2 "alter tablespace HTDC_INDEX EXTEND(file ‘/home/db2admin/dbback/db2containner/htdc/index/htdc_index‘ 1024M)" --(unix系统)将DMS HTDC_INDEX 在扩大1G
6.数据库的创建、删除
db2 CREATE db DBName [using codeset GBK
territory CN]--创建数据库
db2 DROP db DBName--删除数据库
db2 list db
directory--列出所有数据库目录(包括远程编目的数据库)
db2 list db directory ON location--如Windows下的C: ,Unix下的/home/db2inst1(本地数据库)
db2 list active databases--列出活动的数据库和连接数
7.表的创建、删除
DROP TABLE TableName ;--删除表
CREATE TABLE
TableName
( 字段名 数据类型 ,
PRIMARY KEY (字段名)
)IN Space1 INDEX IN Space2
;--创建表(表空间Space1存放数据,Space2存放索引)
ALTER TABLE TableName VOLATILE CARDINALITY;--将表TableName设置为易失表
db2 list tables ;
db2 list tables FOR USER /ALL /system / SCHEMA
SchemaName [show detail] ;
--列出数据库中的表如果没有指定任何参数,则缺省情况是列出当前用户的表
db2 describe TABLE TableName ;
db2 describe SELECT * FROM tables ;--查看表结构
8.索引的创建、删除
DROP INDEX Index_Name ;--删除索引
CREATE
INDEX Index_Name ON TableName(F1) ;--对表TableName的F1字段创建索引Index_Name
db2
describe indexes FOR TABLE TableName ;--查看表TableName的索引
db2 describe indexes FOR TABLE TableName show detail;
db2 SELECT
INDNAME,COLNAMES FROM syscat.indexes WHERE tabname = ‘TableName‘;
9.视图的创建、删除
DROP VIEW ViewName ; --删除视图
CREATE VIEW
ViewName(×,××) AS SELECT ×,×× FROM TableName WHERE ×××;--创建视图
10.数据库的备份、恢复(详见浅谈 DB2的数据库备份与恢复一文)
--离线备份
db2 force applications all--断开所有连接
db2 force application(h1,h2……)--杀死与欲备份数据库相连接的进程
db2 backup db DBName [to
d:\db2_backup] [use TSM]--离线备份
--在线、增量备份
--前提:更改数据库参数
logretain, userexit, trackmod 为 on,之后数据库处于backup
pending状态,要完全离线备份数据库一次,之后就可以进行在线、在线增量备份了。
db2 update db cfg using logretain
on userexit on trackmod on--启用相关参数
--归档路径
DB2 UPDATE
DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:D:\DB2\ IMMEDIATE
--LOGARCHMETH1参数改成TSM
DB2
UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 TSM IMMEDIATE
db2
backup db DBName [to d:\db2_backup] [use TSM]--离线备份
db2 backup db DBName
online [to d:\db2_backup] [use TSM]--在线线备份
db2 backup db DBName online
incremental [to d:\db2_backup] [use TSM]--在线增量备份
--数据库恢复
db2 restore db DBname [incremental] [FROM d:\db2_backup][use TSM] taken AT YYYYMMDDHHMMSS
--恢复 (时间戳记:YYYYMMDDHHMMSS)
db2 list history backup [since
YYYYMMDDHHMMSS] ALL FOR DBName
--查看 [从YYYYMMDDHHMMSS] 对DBName的备份情况
db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND COMPLETE
NORETRIEVE--将暂挂的数据恢复到前滚状态
db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND
COMPLETE OVERFLOW LOG PATH ("C:\DBName.0\SQLOGDIR")
db2 CONNECT TO
DBName
db2 prune history YYYYMMDDHHMMSS--删除DBName YYYYMMDDHHMMSS之前的备份记录
11.数据的导出、导入
--导出
db2 EXPORT TO D:\TableName.txt OF del
SELECT * FROM SCHEMA.TableName--文本格式
db2 EXPORT TO D:\TableName.csv OF del SELECT * FROM
SCHEMA.TableName--csv可转为excel
db2 EXPORT TO D:\TableName.ixf OF ixf SELECT *
FROM SCHEMA.TableName
--导出数据(IXF 集成通用交换格式)
db2 EXPORT TO "D:\TableName.data" OF IXF MESSAGES
"D:\TableName.msg" SELECT * FROM SCHEMA.TableName;
--导入
db2 IMPORT FROM
D:\TableName.txt OF del INSERT INTO SCHEMA.TableName
db2 IMPORT FROM
"D:\TableName.data" OF IXF [MESSAGES "D:\TableName.msg"] [COMMITCOUNT 1000]
INSERT/CREATE INTO SCHEMA.TableName;
db2 IMPORT FROM "D:\TableName.ixf" OF
IXF [COMMITCOUNT 1000] INSERT/INSERT_UPDATE/CREATE/REPLACE/REPLACE_CREATE INTO
SCHEMA.TableName;
IMPORT FROM file_name OF file_type MESSAGES message_file
[ INSERT |
INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE ]
INTO
target_table_name
*INSERT 选项将导入的数据插入表中。目标表必须已经存在。
*INSERT_UPDATE
将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。
*REPLACE
选项删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。
*使用 REPLACE_CREATE
选项时,如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE
选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF
格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE。
*CREATE
选项首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称(IN datatbsp
INDEX IN indtbsp)。
12.存储过程的编译与运行
db2 -td@ -vf
ProcedureName.sql/.db2--编译
db2 call ProcedureName--运行
13.批处理文件
db2 -tvf FileName.sql
14.快速清除、装入大表数据
ALTER TABLE TableName activate NOT logged
initially WITH empty TABLE ;--不记日志
DECLARE C1 CURSOR FOR SELECT × × × × FROM TableName1;
LOAD FROM C1 OF
CURSOR INSERT INTO TableName2(××××) nonrecoverable;--不记日志
DB2 LOAD QUERY TABLE SCHEMA.TableName;--查看目标表load状态(正在装入/正常)
15.优化表
select ‘runstats on table
DB2ADMIN.‘||rtrim(name)||‘ and indexes all;‘
from sysibm.systables
where
creator = ‘DB2ADMIN‘ and Type = ‘T‘;--获取优化语句
db2 runstats on table DB2ADMIN.TableName and indexes all;--优化语句
16.应用连接
db2 list application(s)[ FOR db DBName ] [show
detail]--返回关于当前连接的应用程序的信息
db2 force application (h1
[,h2,..,hn])--根据句柄号与特定应用程序断开连接
db2 force application all
--断开所有应用程序与数据库的连接
db2 terminate --结束命令行对话
17. 设置联合数据库为可用(默认联合数据库不可用)
db2 update dbm cfg using
federated yes
18.创建临时表空间
db2 CREATE USER TEMPORARY TABLESPACE STMASPACE
PAGESIZE 32 K MANAGED BY DATABASE USING (FILE ‘D:\DB2_TAB\STMASPACE.F1‘ 10000)
EXTENTSIZE 256
19.创建临时表
DECLARE GLOBAL TEMPORARY TABLE
语句来定义临时表。DB2的临时表是基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现.
eg:
DECLARE GLOBAL TEMPORARY TABLE SESSION.Temp_K_Cig (Cig varchar(20)) WITH REPLACE
NOT LOGGED on commit preserve rows;
20.修改日志文件大小、数目
db2 UPDATE DB CFG FOR DBName
USINGLOGFILSIZ6000 ; --日志文件大小
db2 UPDATE DB CFG FOR DBName USINGLOGPRIMARY5
;--日志文件数目
db2 UPDATE DB CFG FOR DBName USINGLOGSECOND25 ;--辅助日志文件数目
21.如何重新启动数据库?
db2 RESTART DB DBName ;--重新启动数据库
db2
ACTIVATE DB DBName ;--激活数据库
db2 DEACTIVATE DB DBName ;--停止数据库
22.查看错误
db2 ? *** eg:DB2 ? SQL803
db2 ? db2-command
-- 关于指定命令的帮助
db2 ? help--有关阅读帮助屏幕的指示信息
db2 ? OPTIONS -- 关于所有命令选项的帮助
23.如何关闭表的日志
ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED
INIALLY
24.测试SQL的执行性能
db2batch -d DB_NAME -f select.sql -r
benchmark.txt -o p3 --select.sql是select语句写在文件中
25.查看当前应用号的执行状态
db2 get snapshot for application agentid
299 |grep Row
26.如何修改缓冲池
db2 alter bufferpool ibmdefaultbp size
10240
27.如何知道DB2的数据类型
select * from sysibm.sysdatatypes
28.如何知道BUFFERPOOLS状况
select * from
sysibm.sysbufferpools
29.查询出用户表
SELECT * FROM SYSIBM.SYSTABLES WHERE
CREATOR=‘USER‘
30.如何知道当前DB2的版本
select * from sysibm.sysversions
31.如何知道TABLESPACE的状况
select * from
sysibm.SYSTABLESPACES
32."SQL1032N 未发出启动数据库管理器的命令。
SQLSTATE=57019"的解决办法
(1).License到期,在命令行下用 db2licm -l
查看是否到期;
(2).用来启动服务的用户名或密码错误,(如我们更改了登录系统的密码),解决办法(Windows系统):在控制面板->管理工具->服务中对相关DB2服务选项【属性】中修改【登录】的用户名或密码。
33.表空间、表大小计算
表空间:页大小(字节)*总页数
表:(1):runstats
之后,用select npages from syscat.tables where
TABNAME=‘TableName‘得到npages,再用npages×表空间页大小
(2):在控制中心中,选择要查看的表,选择“估计大小”查看,索引大小同.
34。查看某模式下的表
db2list tables for schema
or
all table information is stored in syscat.tables
view
db2select * from syscat.tables where
tabschema=
or simply
db2select * from
syscat.tables order by tabschema, tabname
similarly, all column information is stored in
syscat.columns
db2select * from syscat.columns where
tabname=
35.查看存储过程信息
SELECT * FROM SYSCAT.PROCEDURES;
--如查看DB2ADMIN模式下的存过名称、编号、建立时间等
SELECT
PROCNAME,PROCEDURE_ID,CREATE_TIME,TEXT
FROM SYSCAT.PROCEDURES
where
procschema=‘DB2ADMIN‘
36.系统表中查看表、索引、表空间信息
--索引的名称、所属表、表空间
SELECT
name,creator,tbname,tbcreator,colnames,colcount,tbspaceid,
uniquerule,iid,create_time
FROM sysibm.sysindexes [WHERE NAME LIKE
‘IDX_%‘];
--索引信息
select * from sysibm.sysindexcoluse [where indname like
‘IDX_%‘]
--表信息
SELECT name,creator,colcount,tbspace,index_tbspace,ctime
FROM
sysibm.systables [WHERE NAME LIKE ‘ 07%‘];
SELECT * FROM syscat.tables;
SELECT * FROM sysibm.systables ;
--表空间信息
SELECT * FROM sysibm.systablespaces;
SELECT * FROM
syscat.tablespaces;
--查找数据库管理表空间(DMS)
SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType
= ‘D‘ ;
--视图信息
SELECT * FROM sysibm.sysviews;
--查看表的数据表空间、索引、索引表空间
SELECT
c.TbName,c.tbspace,c.IndName,d.tbspace
FROM
(SELECT a.NAME TbName,a.tbspace tbspace,b.NAME IndName,b.tbspaceid
tbspaceid
FROM sysibm.systables
a,
sysibm.sysindexes
b
WHERE a.name=b.tbname [AND
a.NAME LIKE ‘K_%‘]
) AS c LEFT JOIN
sysibm.systablespaces d
on c.tbspaceid = d.tbspaceid ;
或
SELECT c.TbName 表名,c.tbspace 数据表空间,c.IndName 索引,d.tbspace
索引表空间
FROM
(SELECT a.NAME TbName,a.tbspace
tbspace,b.NAME IndName,b.tbspaceid tbspaceid
FROM sysibm.systables a
JOIN
sysibm.sysindexes
b
on a.name=b.tbname [ AND a.NAME LIKE ‘K_%‘
]) AS c LEFT JOIN sysibm.systablespaces d
on c.tbspaceid = d.tbspaceid ;
37.db2look 导出脚本信息
可用于导出表、索引、试图、存过、触发器等脚本,可在命令行下用db2look ?查看相应参数信息。
如:
db2look -d DBTEST
-z DB2ADMIN -e -c >db2look_db2admin.sql
db2look -d DBTEST -z DB2ADMIN -e
-c -o db2look_db2admin.sql
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。