数据库目录和文件

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

系统已为您创建分层目录结构。 可通过对 CREATE DATABASE 命令指定目录路径或驱动器来指定该结构的位置;如果未指定位置,那么会使用缺省位置。

在您在 CREATE DATABASE 命令中您指定为数据库路径的目录中,会创建使用该实例名称的子目录。

在实例名子目录内,会创建分区全局目录。 分区全局目录包含与新数据库相关联的全局信息。 分区全局目录名为 NODExxxx/SQLyyyyy,其中 xxxx 是数据分区号, yyyyy 是数据库标记 (编号> = 1)。

partition-global 目录下,将创建特定于 成员 目录。 特定于 member的目录包含本地数据库信息。 特定于 member的目录名为 MEMBERxxxx ,其中 xxxxmember 编号。
  • Db2® pureScale® 环境中,每个 成员都有一个特定于 成员的目录,称为 MEMBER0000MEMBER0001等。
  • 在分区数据库环境中, 成员 号具有一对一映射及其相应的分区号,因此每个 成员 和分区都有一个 NODExxxx 目录。 特定于成员的目录始终名为 MEMBERxxxx,并且它们始终驻留在分区全局目录下。
  • Enterprise Server Edition 环境在单个 成员上运行,并且具有一个名为 MEMBER0000的特定于 成员的目录。

分区全局目录

分区全局目录具有以下路径:your_instance/NODExxxx/SQLxxxxx

分区全局目录包含以下文件:
  • 全局死锁写至文件事件监视器文件,它指定相对路径或根本不指定任何路径。
  • 表空间信息文件。

    SQLSPCS.1SQLSPCS.2 文件都包含表空间信息。 这两个文件互为副本以实现备份。

  • 存储器组控制文件。

    文件 SQLSGF.1SQLSGF.2 包含与数据库的自动存储器功能相关联的存储器组信息。 这两个文件互为副本,旨在进行维护和备份。 使用 CREATE DATABASE 命令创建数据库时,或者将非自动存储器数据库升级到 Db2 10.1 或更高版本时,将为数据库创建这些文件。

  • 临时表空间容器文件。

    新容器的缺省目录是 instance/NODExxxx/<db-name>。 这些文件由每个 成员本地管理。 通过将 成员 号插入到文件名中,使表空间文件名对于每个 成员 都是唯一的,例如: /storage path/SAMPLEDB/T0000011/C0000000.TMP/SQL00002.MEMBER0001.TDA

  • 全局配置文件。

    全局配置文件 SQLDBCONF 包含数据库配置参数,它们引用在数据库中必须保持一致的单个共享资源。 切勿编辑此文件。 要更改配置参数,请使用 UPDATE DATABASE CONFIGURATIONRESET DATABASE CONFIGURATION 命令。

  • 历史记录文件。

    DB2RHIST.ASC 历史记录文件及其备份 DB2RHIST.BAK 中包含关于备份、复原、表装入、表重组、表空间更改和其他数据库更改的历史记录信息。

  • 与日志记录相关的文件。

    全局日志控制文件 SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2包含数据库级别的恢复信息,例如,与在数据库处于脱机状态时添加新 成员 以及在 成员之间维护公共日志链相关的信息。 日志文件本身存储在分区全局目录中的 LOGSTREAMxxxx 目录 (每个 成员一个) 中。

  • 锁定文件。

    实例数据库锁定文件 SQLINSLKSQLTMPLK 有助于确保数据库仅被数据库管理器的一个实例使用。

  • 自动存储器容器

特定于成员的目录

特定于 member的目录具有路径: /NODExxxx/SQLxxxx/MEMBERxxxx

此目录包含与创建的第一个数据库相关联的对象,后续数据库被给予更高的编号 SQL00002,以此类推。 这些子目录区分在 CREATE DATABASE 命令中指定的目录上此实例中创建的数据库。

特定于成员的目录包含以下文件:
  • 缓冲池信息文件。

    SQLBP.1SQLBP.2 文件都包含缓冲池信息。 这两个文件互为副本以实现备份。

  • 历史记录文件。

    DB2TSCHG.HIS 文件包含日志文件级别的表空间更改的历史记录。 对于每个日志文件,DB2TSCHG.HIS 中包含有助于确定日志文件影响哪些表空间的信息。 表空间恢复使用此文件中的信息来确定在进行表空间恢复期间要处理哪些日志文件。 可在文本编辑器中检查历史记录文件的内容。

  • 本地事件监视器文件。
  • 与日志记录相关的文件。

    日志控制文件 SQLOGCTL.LFH.1 及其镜像副本 SQLOGCTL.LFH.2SQLOGMIR.LFH 中包含有关活动日志的信息。 在 Db2 pureScale 环境中,每个 成员 都有自己的日志流和一组本地 LFH 文件,这些文件存储在每个特定于 成员的目录中。

    提示: 将日志子目录映射到未用于数据的磁盘。 通过这样做,您可将磁盘问题限制为数据或日志方面,从而避免数据和日志同时出现磁盘问题。 将日志子目录映射至未用于存储数据的磁盘可大幅提高性能,因为日志文件和数据库容器不会为同一磁盘头的移动而竞争。 要更改日志子目录的位置,请使用 newlogpath 数据库配置参数。
  • 本地配置文件。

    本地 SQLDBCONF 文件包含数据库配置信息。 切勿编辑此文件。 要更改配置参数,请使用 UPDATE DATABASE CONFIGURATIONRESET DATABASE CONFIGURATION 命令。

在创建数据库的同时,还创建了详细死锁事件监视器。 在企业服务器版环境和分区数据库环境中,详细死锁事件监视器文件存储在目录节点的数据库目录中。 在 Db2 pureScale 环境中,详细的死锁事件监视器文件存储在 partition-global 目录中。 当事件监视器达到它要输出的最大文件数时,它将取消激活,并且将把一条消息写入通知日志中。 这样做可避免事件监视器使用太多磁盘空间。 将不再需要的输出文件移除即可在下次激活数据库时再次激活事件监视器。

注: 如果要将现有 Db2 V 9.5 或 V 9.7 数据库升级到 版本 11.1,那么数据库日志目录已更改。 如果使用用户定义的日志目录(例如 /usr/logpath),那么在升级之后日志文件的位置为 /usr/logpath/NODE0000/LOGSTREAM0000。 如果正在使用缺省数据库目录(例如 /home/db2user/db2inst/NODE0000/SQL00001/SQLOGDIR),那么在升级之后日志文件的位置为 /home/db2user/db2inst/NODE0000/SQL00001/LOGSTREAM0000。 在升级之后,旧的日志目录仅包含已重命名的日志文件。 可在 db2diag.log 文件中查看有关新的日志目录的信息。

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

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

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

此外,名为 SQL*.DAT 的文件中还存储有关子目录或容器包含的每个表的信息。 星号 (*) 将被唯一的一组数字取代,用来识别每个表。 对于每个 SQL*.DAT 文件,可能有一个或多个下列文件,这取决于表类型、表的重组状态或者表是否存在索引、LOB 或 LONG 字段:
  • SQL*.BKM(包含块分配信息,如果它是 MDC 或 ITC 表)
  • 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 文件的临时数据)