一、创建数据库
1. 数据库目录
对于数据库管理器的每个实例,都存在一个系统数据库目录文件。在该文件中,每个编目到该实例的数据库都对应着一个条目。当发出 CREATE DATABASE 命令时,数据库会自动进行编目,也可以通过 CATALOG DATABASE 命令手动编目。
此外,在定义了数据库的每个驱动器或路径中,都有一个本地数据库目录文件。在这个文件中,对于可从这个位置访问的每个数据库,都有一个条目。
2. 创建数据库
创建一个数据库时,DB2 会执行以下任务:
- 设置数据库所需的所有系统编目表
- 为数据库恢复日志分配空间
- 创建数据库配置文件和默认的值集
- 将数据库实用程序绑定到数据库
可以使用 CREATE DATABASE 命令来创建数据库。创建时可指定如下参数:
- 存储路径
- 用于编目分区的数据库分区号
- 用于创建数据库的驱动器或路径
- 代码集和国家
- 排序序列
- 默认的盘区大小
- 是否应该自动配置数据库
- CATALOG、TEMPORARY 和 USERSPACE1 表空间的表空间定义
CREATE DATABASE 命令会创建三个默认的表空间:
- SYSCATSPACE:用于系统编目表。该表空间不能被删除。
- TEMPSPACE1:用于系统创建的临时表。当创建了另一个临时表空间时,可删除此表空间。
- USERSPACE1:用于用户创建对象的默认表空间。当创建了另一个用户创建的表空间时,可删除此表空间。
3. 目录结构
取决于操作系统,CREATE DATABASE 命令允许指定用于在其中创建数据库的驱动器或目录。如果没有指定驱动器或目录,那么数据库就创建在 DFTDBPATH 实例(数据库管理器)配置参数所指定的路径中。如果该参数也未设定,则数据库创建在执行命令时所在的驱动器或目录上。
CREATE DATABASE 命令会创建一系列的子目录。第一个子目录按被创建数据库所在实例的实例所有者来命名。在这个子目录下,DB2 创建一个目录,以表明该数据库被创建在哪个数据库分区上。
对于非分区数据库,该目录为 NODE0000。对于分区数据库,该目录将被命名为 NODExxxx,其中 xxxx 是一个四位数的数据库实例的分区号,这个分区号在 db2nodes.cfg 文件中指定。例如,如果分区号为 43,那么该目录就是 NODE0043。
在 Windows 中,实例并没有真正的实例所有者,所以这里将使用实例的名称(例如 DB2)代替实例所有者的 ID。
由于在同一个驱动器或目录中可以创建不止一个数据库,因此每个数据库必须有其惟一的子目录。在 NODExxxx 目录下,对于在该驱动器或目录中创建的每个数据库,都有一个 SQLxxxxx 目录。
默认情况下:
- 系统编目表空间(SYSCATSPACE)将使用目录 SQLT0000.0
- 系统临时表空间(TEMPSPACE1)将使用目录 SQLT0001.0
- 默认用户表空间(USERSPACE1)将使用目录 SQLT0002.0
列出默认实例下的所有数据库可使用以下命令:
db2 list db directory
二、自动存储
1. 概述
自动存储(Automatic Storage)是 DB2 V9 中的新特性,它允许为一个数据库指定一个或多个存储路径。当您创建表空间时,DB2 自动将表空间放在指定的存储路径上。在创建数据库时,可以为之启用或配置自动存储。
启用自动存储的命令如下:
CREATE DATABASE db_name AUTOMATIC STORAGE YES
或者指定路径:
CREATE DATABASE db_name ON db_path1, db_path2
还可以使用 ADD STORAGE 参数为设置了自动存储的数据库添加附加的存储路径:


