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.数据库的备份、恢复(详见浅谈IBMDB2的数据库备份与恢复一文)
--离线备份
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:\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
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 USING LOGFILSIZ 6000 ; --日志文件大小
db2 UPDATE DB CFG FOR DBName USING LOGPRIMARY 5 ; --日志文件数目
db2 UPDATE DB CFG FOR DBName USING LOGSECOND 25 ; --辅助日志文件数目
21.如何重新启动数据库?
db2 RESTART DB DBName ; --重新启动数据库
db2 ACTIVATE DB DBName ; --激活数据库
db2 DEACTIVATE DB DBName ; --停止数据库
表空间:页大小(字节)*总页数
表:(1):runstats 之后,用select npages from syscat.tables where TABNAME='TableName'得到npages,再用npages×表空间页大小
(2):在控制中心中,选择要查看的表,选择“估计大小”查看,索引大小同.
34。查看某模式下的表
db2 list tables for schema <schema name>
or
all table information is stored in syscat.tables view
db2 select * from syscat.tables where tabschema=<schema name>
or simply
db2 select * from syscat.tables order by tabschema, tabname
similarly, all column information is stored in syscat.columns
db2 select * from syscat.columns where tabname=<table name>
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 '%2007%'];
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 ;