当创建一个数据库时,关于该数据库的信息(包括缺省信息)会存储在目录层次结构中。
此分层目录结构的创建位置取决于您在
CREATE DATABASE 命令中提供的信息。如果在创建数据库时未指定目录路径或驱动器的位置,那么将使用缺省位置。
在 CREATE DATABASE 命令中指定为数据库路径的目录中,将创建一个使用实例名的子目录。这个子目录确保在同一目录下的不同实例中创建的数据库不会使用相同的路径。在实例名子目录下面,将创建一个名为 NODE0000 的子目录。这个子目录可以区分逻辑分区数据库环境中的数据库分区。在节点名目录下面,将创建一个名为 SQL00001 的子目录。此子目录的名称使用了数据库标记并表示正在创建的数据库。SQL00001 包含与创建的第一个数据库以及随后创建的具有更高编号(SQL00002 等)的数据库相关联的对象。这些子目录可以区分在
CREATE DATABASE 命令中指定的目录下的实例中创建的数据库。
目录结构如下所示:your_database_path/your_instance/NODE0000/SQL00001/
数据库目录中包含下列作为
CREATE DATABASE 命令的一部分进行创建的文件。
- SQLBP.1 和 SQLBP.2 文件都包含缓冲池信息。这两个文件互为副本以实现备份。
- SQLSPCS.1 和 SQLSPCS.2 文件都包含表空间信息。这两个文件互为副本以实现备份。
- SQLSGF.1 和 SQLSGF.2
文件都包含与数据库的自动存储器功能部件相关联的存储器路径信息。这两个文件互为副本,旨在进行维护和备份。在执行
CREATE DATABASE dbname AUTOMATIC STORAGE YES
命令或 ALTER DATABASE dbname ADD STORAGE ON
语句后启用自动存储器时,将为数据库创建这两个文件。
- SQLDBCONF 文件包含数据库配置信息。切勿编辑此文件。
注: SQLDBCON 文件用于先前发行版,它包含可以在 SQLDBCONF 被破坏时使用的类似信息。
要更改配置参数,请使用 UPDATE DATABASE CONFIGURATION 和 RESET DATABASE CONFIGURATION 命令。
- DB2RHIST.ASC 历史记录文件及其备份 DB2RHIST.BAK 中包含关于备份、复原、表装入、表重组、表空间更改和其他数据库更改的历史记录信息。
DB2TSCHG.HIS 文件包含日志文件级别的表空间更改的历史记录。对于每个日志文件,DB2TSCHG.HIS 中包含有助于确定日志文件影响哪些表空间的信息。表空间恢复使用此文件中的信息来确定在进行表空间恢复期间要处理哪些日志文件。可以在文本编辑器中检查这两个历史记录文件中的内容。
- 日志控制文件 SQLOGCTL.LFH.1 及其镜像副本 SQLOGCTL.LFH.2 和 SQLOGMIR.LFH 中包含有关活动日志的信息。
恢复处理过程使用这些文件中的信息来确定要在日志中后退多远来开始恢复。SQLOGDIR 子目录中包含实际的日志文件。
注: 您应确保不要将日志子目录映射到用于存储数据的磁盘。这样,在磁盘发生问题时,只会影响到数据或日志,而不会同时影响这两者。由于日志文件与数据库容器不会争用同一磁盘磁头的移动,因此这可提供很多性能方面的好处。要更改日志子目录的位置,请更改 newlogpath 数据库配置参数。
- SQLINSLK 文件用于确保一个数据库只能由数据库管理器的一个实例使用。
在创建数据库的同时,还创建了详细死锁事件监视器。详细死锁事件监视器文件存储在目录节点的数据库目录中。当事件监视器达到它要输出的最大文件数时,它将停用,并且将把一条消息写入通知日志中。这样可防止事件监视器消耗过多的磁盘空间。除去不再需要的输出文件将允许在下一次数据库激活时再次激活事件监视器。
非自动存储器数据库中的 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 文件的临时数据)