DB2体系结构

DB2数据库体系结构

DB2体系结构图

DB2体系结构图

DB2服务器环境变量

1. 环境变量

1
set <variable>=<value>      # 设置服务器变量

2.全局注册变量

1
2
3
db2set -all                     # 查看当前注册变量设置 ([g]全局、[i]实例)
db2set -lr # 查询所有注册变量 (全局 + 实例)
db2set <variable>=<value> -g # 设置全局注册变量

实例

创建实例

参考: DB2数据库安装

实例相关命令

1
2
3
4
5
6
7
8
db2ilist                              # 列出实例
db2start # 启动实例
db2stop [force] # 停止实例
db2 force application all # 强制中断实例下所有连接(当无法停止实例时,可以先执行该操作)
db2iauto -[on | off] <instance_name> # 自动起停实例
db2 attach to <instance_name> # 连接实例
db2 detach / db2 terminate # 断开实例
db2idorp <instance_name> # 删除实例 (需要root权限)

配置实例

1. 实例级注册变量

1
2
3
db2set <variable>=<value> [-i instance_name]    # 设置实例级注册变量
# eg
db2set DB2COMM=TCPIP

2. 数据库管理配置文

1
2
3
4
5
db2 get dbm cfg                                     # 获取当前实例数据库管理文件配置
db2 reset dbm cfg # 恢复默认配置
db2 update dbm cfg using <parameter_name> <value> # 配置当前实例数据库管理文件参数
# eg
db2 update dbm cfg using SVCENAME=50000

DB2INSTANCE 变量

该变量主要用于实例间切换,但在Linux/Unix系统下实例名即为实例用户名,因此直接使用不同实例用户登陆进行实例切换

1
2
3
echo $DB2INSTANCE               # 输出变量值
set DB2INSTANCE=<instance_name> # 设置变量值
get instance # 获取当前实例

数据库

创建数据库

创建数据库时默认生成三个表空间 SYSCATSPACE、TEMPSPACE1、USERSPACE1

1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE <db_name>                           -- 创建数据库
AUTOMATIC STORAGE <YES | NO> -- 是否自动存储
ON <path | drive> -- 数据库路径
ALIAS <db_alias> -- 别名
USING CODESET <code> TERRITORY <territory> -- 代码页
COLLATE USING <SYSTEM | IDENTITY | ...> -- 整理次序
CATALOG TABLESPACE <tablespace_option> -- 系统编目表空间
USER TABLESPACE <tablespace_option> -- 用户表空间
TEMPORARY TABLESPACE <tablespace_option> -- 临时表空间

-- 大写为关键字

示例:

1
2
3
4
5
6
7
create database test 
automatic storage yes on /data/db2/data -- 使用自动存储管理
dbpath on /data/db2/log -- 指定数据库的事物日志存储路径
using codeset utf-8 -- 指定字符集
territory CN -- 决定数据库的时间和日期格式为中文
pagesize 16 k -- 数据库默认页大小
alias test; -- 别名

数据库相关操作

1
2
db2 list database directory         # 列出当前实例下所有数据库
db2 drop database <database_name> # 删除数据库

配置数据库

1
2
3
4
db2 get db cfg                                      # 获取当前据库配置文件参数设置
db2 update db cfg using <parameter_name> <value> # 配置当前数据库参数文件
#eg:
db2 update db cfg using LOGPRIMARY 50

缓冲池

  1. 每个表空间都会与特定的缓冲池相关;
  2. 想要表空间与缓冲池相关,该缓冲池与表空间必须具有相同的页大小;
  3. 表空间与缓冲池关联是在使用 CREATE TABLESPACE 语句创建表空间时定义的,但是可以使用 ALTER TABLESPACE 语句更改关联。

创建缓冲池

1
2
3
4
5
CREATE BUFFERPOOL <bufferpool_name>     -- 缓冲池名称
SIZE <AUTOMATIC | size_number> -- 缓冲池大小,即页数
PAGESIZE <pagesize> -- 缓冲池页大小
BLOCKSIZE <number> -- 可选参数: 指定每个块的大小,即在一次块I/O中从磁盘读取的页的数量。应该等于正在使用缓冲池的表空间的 EXTENTSIZE 的整数倍。
NUMBLOCKPAGES <number> -- 可选参数: 定义块内存大小。应该是 BLOCKSIZE 的倍数,并且不能大于缓冲池页面数量的 98%。

示例:

1
CREATE BUFFERPOLL MYBUFFER16K SIZE AUTOMATIC PAGESIZE 16K;

缓冲池相关操作

1. 修改缓冲池

1
ALTER BUFFERPOOL <name> SIZE <tgt_size>

2. 查看缓冲池

1
2
3
4
5
SELECT      T2.TBSPACE
,T1.*
FROM SYSCAT.BUFFERPOOLS T1
INNER JOIN SYSCAT.TABLESPACES T2
ON T1.BUFFERPOOLID = T2.BUFFERPOOLID

表空间

创建表空间

1. 创建用户表空间

1
2
3
4
5
6
7
8
9
-- SMS
CREATE TABLESPACE <name> MANAGED BY SYSTEM USING ('<path>');

-- DMS
CREATE TABLESPACE <name> MANAGED BY DATABASE USING (DEVICE | FILE '<path>');

- DMS自动存储
CREATE TABLESPACE <name>;
CREATE TABLESPACE < name > MANAGED BY AUTOMATIC STORAGE;

2. 创建系统临时表空间

1
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp MANAGED BY SYSTEM USING ('/data/tmp_tbsp');

3. 创建用户临时表空间

1
CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASE USING (FILE '/data/usr_tbsp' 5000);

示例:

1
2
3
4
5
6
7
8
CREATE TEMPORARY TABLESPACE tbs_temp
PAGESIZE 16K
MANAGED BY DATABASE USING(FILE '/data/' 1000)
EXTENTSIZE 32
OVERHEAD 10.67
PREFECHSIZE 32
TRANSFERRATE 0.04
BUFFERPOOL MYBUFFER16K;

表空间相关操作

1. 查看表空间

1
2
db2 list tablespaces [show detail]                  # 查看表空间
db2 list tablespace containers for <tablespace_id> # 查看表空间及容器属性

2. 修改表空间

1
2
3
4
5
6
7
8
9
10
#   2.1. SMS表空间只能增加容器;
ALTER TABLESPACE <name> ADD(DEVICE '<path>' <size>, FILE '<filename>' <size>);

# 2.2. DMS表空间可以调整容器;
ALTER TABLESPACE <name> REDUCE (FILE '<filename>' <size>); # 缩小
ALTER TABLESPACE <name> EXTEND (FILE '<filename>' <size>); # 增大
ALTER TABLESPACE <name> RESIZE (FILE '<filename>' <size>); # 调增 (可调小或调大)
ALTER TABLESPACE <name> DROP (FILE 'filename', DEVICE 'path'); # 删除DMS容器

# 2.3. 自动存储表空间不能手动调整大小;

3. 重命名表空间

1
RENAME TABLESPACE <srcName> TO <tgtName>;

4. 将表空间从托机状态切换至联机状态

1
ALTER TABLESPACE <name> SWITCH ONLINE;

5. 删除表空间

1
DROP TABLESPACE <name>;

参考

循序渐进DB2 (第2章~第3章)