DB2 V9.7 for Linux, UNIX, and Windows

数据库目录和文件

当创建一个数据库时,关于该数据库的信息(包括缺省信息)会存储在目录层次结构中。

此分层目录结构的创建位置取决于您在 CREATE DATABASE 命令中提供的信息。如果在创建数据库时未指定目录路径或驱动器的位置,那么将使用缺省位置。

CREATE DATABASE 命令中指定为数据库路径的目录中,将创建一个使用实例名的子目录。这个子目录确保在同一目录下的不同实例中创建的数据库不会使用相同的路径。在实例名子目录下面,将创建一个名为 NODE0000 的子目录。这个子目录可以区分逻辑分区数据库环境中的数据库分区。在节点名目录下面,将创建一个名为 SQL00001 的子目录。此子目录的名称使用了数据库标记并表示正在创建的数据库。SQL00001 包含与创建的第一个数据库以及随后创建的具有更高编号(SQL00002 等)的数据库相关联的对象。这些子目录可以区分在 CREATE DATABASE 命令中指定的目录下的实例中创建的数据库。

目录结构如下所示:your_database_path/your_instance/NODE0000/SQL00001/

数据库目录中包含下列作为 CREATE DATABASE 命令的一部分进行创建的文件。

在创建数据库的同时,还创建了详细死锁事件监视器。详细死锁事件监视器文件存储在目录节点的数据库目录中。当事件监视器达到它要输出的最大文件数时,它将停用,并且将把一条消息写入通知日志中。这样可防止事件监视器消耗过多的磁盘空间。除去不再需要的输出文件将允许在下一次数据库激活时再次激活事件监视器。

非自动存储器数据库中的 SMS 数据库目录的其他信息

在非自动存储器数据库中,SQLT* 子目录包含运作数据库所需的缺省系统管理的空间 (SMS) 表空间。将创建三个缺省表空间:
  • SQLT0000.0 子目录中包含带有系统目录表的目录表空间。
  • SQLT0001.0 子目录中包含缺省临时表空间。
  • SQLT0002.0 子目录中包含缺省用户数据表空间。

每个子目录或容器中都会创建一个名为 SQLTAG.NAM 的文件。这个文件可以标记正在使用中的子目录,因此在以后创建其他表空间时,不会尝试使用这些子目录。

此外,名为 SQL*.DAT 的文件中还存储有关子目录或容器包含的每个表的信息。星号 (*) 将被唯一的一组数字取代,用来识别每个表。对于每个 SQL*.DAT 文件,可能有一个或多个下列文件,这取决于表类型、表的重组状态或者表是否存在索引、LOB 或 LONG 字段:
  • SQL*.BKM(如果它是一个 MDC 表,那么它包含块分配信息)
  • SQL*.LF(包含 LONG VARCHAR 或 LONG VARGRAPHIC 数据)
  • SQL*.LB(包含 BLOB、CLOB 或 DBCLOB 数据)
  • SQL*.XDA(包含 XML 数据)
  • SQL*.LBA(包含有关 SQL*.LB 文件的分配和可用空间信息)
  • SQL*.INX(包含索引表数据)
  • SQL*.IN1(包含索引表数据)
  • SQL*.DTR(包含用于重组 SQL*.DAT 文件的临时数据)
  • SQL*.LFR(包含用于重组 SQL*.LF 文件的临时数据)
  • SQL*.RLB(包含用于重组 SQL*.LB 文件的临时数据)
  • SQL*.RBA(包含用于重组 SQL*.LBA 文件的临时数据)