0%

db2常用命令

一、进入管理用户

su - db2inst1

二、数据库操作

1. 连接数据库

db2 默认用户为 db2inst1

db2 connect to 数据库 [user 用户 using 密码]

2. 加载数据

2.1. load 加载数据(不会记录日志)

LOAD CLIENT(从客户端加载文件) FROM employee.ixf OF IXF REPLACE INTO employee_copy
SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKED

3. 表空间

参考IBM

3.1 基本创建语句

CREATE TABLESPACE name
          MANAGED BY DATABASE
          USING (FILE 'path' size)

.2 创建表空间 自增长 限定最大值

CREATE TABLESPACE name
          MANAGED BY DATABASE
          USING (FILE 'path' size) 
          autoResize 10M
          maxsize 100G

3.3 修改表空间

3.3.1 减小表空间

参考IBM
使用 REDUCE 选项来减小容器大小。以下示例说明如何在基于 Windows 的系统上的表空间中缩小文件容器(含 1000 页):

ALTER TABLESPACE PAYROLL
  REDUCE (FILE 'd:\hldr\finance'  200)
3.3.2 修改为自增长
db2 "ALTER TABLESPACE 表空间名称 AUTORESIZE YES"
3.4 迁移表空间数据

ADMIN_COPY_SCHEMA 命令 用于将一个schema下的所有表迁移到另一个schema下,可实现表空间的迁移。

例子

1
call sysproc.ADMIN_COPY_SCHEMA( 'sourceSchema', 'targetSchema', 'copymode', NULL, 'sourceTableSpace', 'targetTableSpace', 'errorSchema', 'errorSchema' )

sourceTableSpace,targetTableSpace是一个列表,参数用逗号分隔。如“tbs_data,tbs_idx”.

4. 不记录日志

建表时添加属性: “NOT LOGGED INITIALLY”
大批量更改操作的同一个事务开始时执行 :db2 “ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”
commit之前由于打开了not logged intially选项,后面的Sql语句不计日志;
commit之后not logged intially选项同时被关闭; 这个时候最好执行备份,因为你这一段数据操作是没有日志的,不利于以后恢复。

1
2
3
4
5
6
7
update command options using c off                                           -- 关闭自动提交 
DB2 CREATE TABLE tabname ("field varchar(1)") IN "SPACES" index in "IDX" NOT LOGGED INITIALLY;

ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY --设置不记日志或建表时添加属性 NOT LOGGED INITIALLY
delete from tabname -- 删除数据
commit --手动提交
update command options using c on --打开自动提交

5. 查看表空间

db2 list tablespaces show detail