创建数据库

使用 CREATE DATABASE 命令来创建数据库。 要从客户机应用程序中创建数据库,请调用 sqlecrea API。 除非您另行指定,否则创建的所有数据库都将具有缺省存储器组 IBMSTOGROUP。 自动存储器管理的表空间对其存储器定义使用存储器组。

准备工作

数据库管理器必须正在运行。 使用 db2start 命令来启动数据库管理器。

在创建数据库之前,规划数据库至关重要,您务必牢记数据库的内容、布局、潜在增长和使用方式。 创建数据库并填充数据之后,可以进行更改。

下列数据库特权被自动授予 PUBLIC:对系统目录视图的 CREATETAB、BINDADD、CONNECT、IMPLICIT_SCHEMA 和 SELECT。 但是,如果有 RESTRICTIVE 选项,那么不会自动对 PUBLIC 授予任何特权。 有关 RESTRICTIVE 选项的更多信息,请参阅 CREATE DATABASE 命令。


限制

  • 不能使用相对路径名来指定存储器路径;必须使用绝对路径名。 存储器路径的长度可达 175 个字符。
  • 在 Windows 操作系统上,除非 DB2_CREATE_DB_ON_PATH 注册表变量设置为 YES,否则数据库路径必须仅为盘符。
  • 如果未使用 CREATE DATABASE 命令的 DBPATH ON 子句指定数据库路径,那么数据库管理器将使用为数据库路径的 ON 子句指定的第一个存储路径。 (在 Windows 操作系统上,如果将此子句指定为路径,并且 DB2_CREATE_DB_ON_PATH 注册表变量未设置为 YES,那么您将收到 SQL1052N 错误消息。) 如果未指定 ON 子句,那么将在数据库管理器配置文件(dftdbpath 参数)中指定的缺省数据库路径中创建数据库。 此路径还将用作与该数据库相关联的单一存储器路径的位置。
  • 对于分区数据库,必须在每个数据库分区上使用同一组存储器路径(除非您使用数据库分区表达式)。
  • 数据库分区表达式在数据库路径中无效,无论您是使用 CREATE DATABASE 命令的 DBPATH ON 子句显式指定这些表达式,还是使用第一个存储路径中的数据库分区表达式隐式指定这些表达式。
  • 存储器组必须至少有一个与它相关联的存储路径。
注: 虽然您可以创建指定 AUTOMATIC STORAGE NO 子句的数据库,但不推荐使用 AUTOMATIC STORAGE 子句,并且可能会从将来的发行版中除去该子句。

关于本任务

创建数据库时,为您完成了下列所有任务:
  • 设置数据库所需的所有系统目录表
  • 分配数据库恢复日志
  • 创建数据库配置文件并设置缺省值
  • 将数据库实用程序与数据库绑定

过程

  • 要从客户机应用程序创建数据库,请调用 sqlecrea API。
  • 要使用命令行处理器创建数据库,请发出 CREATE DATABASE 命令。
    例如,以下命令在缺省位置创建一个名为 PERSON1 的数据库,并带有相关注释 "Personnel DB for BSchiefer Co"。
    CREATE DATABASE person1
      WITH "Personnel DB for BSchiefer Co"
  • 要使用 IBM® Data Studio创建数据库,请右键单击要在其中创建数据库的实例,然后选择任务助手以进行创建。

示例

示例 1: 在 UNIX 或 Linux® 操作系统上创建数据库:

要在使用 /DATA1/DATA2 作为定义至缺省存储器组 IBMSTOGROUP 的存储器路径的情况下在路径 /DPATH1 中创建名为 TESTDB1 的数据库,请使用以下命令:
   CREATE DATABASE TESTDB1 ON '/DATA1','/DATA2' DBPATH ON '/DPATH1'

示例 2: 在 Windows 操作系统上创建数据库,同时指定存储器和数据库路径:

要在驱动器 D: 上创建名为 TESTDB2 的数据库,并且存储器在 E:\DATA 中,请使用以下命令:
   CREATE DATABASE TESTDB2 ON 'E:\DATA' DBPATH ON 'D:'
在此示例中,E:\DATA 用作定义至缺省存储器组 IBMSTOGROUP 的存储器路径和数据库路径。

示例 3: 在 Windows 操作系统上创建数据库,仅指定存储路径:

要在驱动器 F: 上创建带有存储器的名为 TESTDB3 的数据库,请使用以下命令:
   CREATE DATABASE TESTDB3 ON 'F:'
在此示例中,F: 用作定义至缺省存储器组 IBMSTOGROUP 的存储器路径和数据库路径。
如果指定目录名(例如 F:\DATA)作为存储器路径,那么此命令将失败,这是因为:
  1. 如果未指定 DBPATH,那么此存储器路径(在这种情况下为 F:\DATA)用作数据库路径
  2. 在 Windows 上,数据库路径只能是盘符 (除非将 DB2_CREATE_DB_ON_PATH 注册表变量的缺省值从 NO 更改为 YES)。
如果要在 Windows 操作系统上指定目录作为存储路径,那么还必须包含 DBPATH ON drive 子句,如示例 2 中所示。

示例 4: 在 UNIX 或 Linux 操作系统上创建数据库而不指定数据库路径:

要创建名为 TESTDB4 并且在 /DATA1/DATA2 上有存储器的数据库,请使用以下命令:
   CREATE DATABASE TESTDB4 ON '/DATA1','/DATA2' 
在此示例中,将 /DATA1/DATA2 用作定义至缺省存储器组 IBMSTOGROUP 的存储器路径,并且 /DATA1 是数据库路径。

后续操作

配置顾问程序
配置顾问程序通过建议修改某些配置参数并为它们提供建议值来帮助调整性能和平衡每个实例中单个数据库的内存需求。 创建数据库时,缺省情况下会自动调用配置顾问程序。
可以使用下列任一方法来覆盖此缺省行为,以便不会自动调用配置顾问程序:
  • 发出带有 AUTOCONFIGURE APPLY NONE 参数的 CREATE DATABASE 命令。
  • DB2_ENABLE_AUTOCONFIG_DEFAULT 注册表变量设置为 NO
    db2set DB2_ENABLE_AUTOCONFIG_DEFAULT=NO
    但是,如果使用 CREATE DATABASE 命令指定 AUTOCONFIGURE 参数,那么将忽略此注册表变量的设置。
事件监视器
在创建数据库的同时,还创建了详细死锁事件监视器。 同其他监视器一样,这个事件监视器将造成相关的额外处理时间和资源。 如果不需要详细死锁事件监视器,那么可使用以下命令来删除此事件监视器:
 DROP EVENT MONITOR db2detaildeadlock

要限制此事件监视器消耗的磁盘空间,那么在输出文件达到最大数时停用事件监视器,并将此消息写入到管理通知日志。 将不再需要的输出文件移除即可在下次激活数据库时再次激活事件监视器。

远程数据库
您可以在另一个可能是远程的实例中创建数据库。 要在另一个(远程)数据库分区服务器中创建数据库,首先必须连接至该服务器。 在处理期间,以下命令临时建立了数据库连接:
CREATE DATABASE database_name AT DBPARTITIONNUM options
在这种类型的环境中,还可以对不同于缺省实例的实例(包括远程实例)执行实例级管理。 有关如何执行此操作的指示信息,请参阅 db2iupdt(更新实例)命令。
数据库代码页

缺省情况下,使用 UTF-8(Unicode)代码集创建数据库。

要覆该数据库的缺省代码页,需要在创建数据库时指定需要的代码集和地域。 有关设置代码集和地域的信息,请参阅 CREATE DATABASE 命令或 sqlecrea API。