DB2数据库目录结构及其作用_第1页
DB2数据库目录结构及其作用_第2页
DB2数据库目录结构及其作用_第3页
DB2数据库目录结构及其作用_第4页
DB2数据库目录结构及其作用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DB2 数据库目录结构及其作用数据库目录结构及其作用 我创建的数据库存储在什么地方我创建的数据库存储在什么地方 从 DB2 的架构上来看 DB2 中的数据库的层次位于实例之下 实例实际上就是一个逻辑的数据库管理器 它提供了一个相对独立的运行环境 数据库必须要被创建在某个实例之下 因此 在创建数据库之前 必须要先创建实例 每当一个新的实例被创建 DB2 都会在 DB2 安装目录 sqllib 下生成一个目录 其目录名称与实例名称相同 该目录下的文件用于对该实例进行管理和控制 另外 在使用 CREATE DATABSE 创建数 据库之后 系统还将会生成一系列子目录 具体的目录结构如图 1 所示 图 1 数据库缺省目录结构 在图 1 中 驱动器 目录 的具体值可以在 CREATE DATABASE 命令中指定 对于 Windows 平台 用户只能指定要创建数据库的驱动器 而对 于 Unix Linux 平台 用户可以指定在哪个目录下创建数据库 如果没有在创建数据库的时候指定路径 系统将会在数据库管理器配置参数 DFTDBPATH 指定的缺省路径下来创建相应目录 第一层子目录的目录名与实例名称相同 属于该实例的数据将会被存储在该目录下 第二层 子目录指定了该数据库所属的数据库分区 在 DB2 V8 中 数据库分区取代了以前版本中的节点的概念 一个数据库分区是数据库的一个子集 拥有自己的配置文件 数据 索引和日志 在多分区数据库环境下 一个数据库可以被划分为多个分区 不同的分区可以驻留在不同的物理机器 上 从而提高整个数据库系统的处理能力 在这种环境下 每个分区都有自己的编号 这个编号会体现在数据库的目录结构中 比如 如果该分 区的编号为 3 则该层目录名称应为 NODE0003 对于单分区数据库环境 该目录名固定为 NODE0000 接下来名称形如 SQL0000n 的目录对应着该实例下的相应数据库 数据库中的数据就存放在该目录下 在该实例下创建的第一个数据库对应的目 录为 SQL00001 第二个为 SQL00002 依此类推 如果因为数据库被删除而导致编号不连续 在新创建数据库的时候 系统会优先使用最小的编 号 要想察看某个数据库具体对应的目录 可以先通过 LIST DATABASE DIRECTORY 察看数据库所驻留的驱动器 路径 然后再通过 LIST DATABASE DIRECTORY ON 命令来察看对数据库所在的目录 此外 还有一个名为 SQLDBDIR 的目录 该目录中存储着与本地数据库目录相关的文件 本地数据库目录中驻留在每个存储着数据库的驱动器 或者路径中 用于存取子目录下的本地数据库 该目录中存储的每个条目中包含着数据库名称 数据库别名以及数据库类型和数据库的位置信息 要想察看本地数据库目录的内容 可以通过下列命令 LIST DB DIRECTORY ON 数据库内部结构数据库内部结构 不同的数据库中可能有不同的存储设定 因此子目录可能会有些差异 很多初学者在安装了 DB2 后都会创建一个样本数据库 我们就以这个数 据库为例介绍一下数据库内部的结构 请参见图 2 图 2 数据库内部目录结构 下面我们对这些目录和文件加以分析 DB2EVENT 目录 这个目录是 DB2 事件监视器的缺省结果输出目录 事件监视器用于记录特定事件发生时数据库的活动 记录的结果可以被保存在表 命名管道 或者文件中 当使用文件来记录监控结果时 需要指明输出文件的路径名称 如果使用的是绝对路径 则文件会输出到相应路径下 如果使用的 是相对路径 则文件会被输出到对应数据库目录下的 DB2EVENT 目录中 要察看监控结果的话 可以使用事件分析器这样的图形化工具 或者 DB2EVMON 这样的文本工具 db2rhist asc 和 db2rhist bak 文件 db2rhist asc 文件也就是在备份和恢复过程中会用到的 DB2 恢复历史文件 该文件随着数据库的建立而建立 当对数据库进行了备份 恢复以及 LOAD 等操作时 该文件中都会记录相应信息 这些信息在进行恢复操作将起到至关重要的作用 该文件是如此重要 以至于为了防止该文件损 坏 DB2 同时生成了一个 db2rhist bak 作为该文件的备份 而且 DB2 的 restore 命令还允许从备份映像中单独恢复该文件 用户可以使用 LIST HISTORY 命令来察看该文件的内容 也可以使用 UPDATE HISTORY 命令和 PRUNE HISTORY 命令来修改该文件 但不应当使用文本 编辑器来直接处理 SQLBP 1 和 SQLBP 2 文件 这两个文件中包含数据库中缓冲池的信息 用于对缓冲池进行管理 SQLBP 2 和 SQLBP 1 的内容完全相同 可以起到备份的作用 SQLDBCON 文件 每个数据库都有自己的配置参数 这些配置信息都被存放在 SQLDBCON 文件中 由于该文件是二进制格式 因此不能使用文本编辑器编辑 而应该使用 GET DB CFG 以及 UPDATE DB CFG 命令来察看和修改 SQLINSLK 和 SQLTMPLK 文件 这两个文件都是用来保证该数据库只能被数据库管理器的一个实例来使用 SQLOGCTL LFH 文件 这个文件就是日志控制文件 里面记录着日志文件的状态 特别是包含了一个叫作 LOGHEAD 的变量 该变量定义了当前第一个活动日志 该日 志也是崩溃恢复的起点 在进行崩溃恢复的时候 DB2 会利用该变量的值来决定使用哪些日志来进行崩溃恢复 LOGHEAD 对于归档日志也有很 重要的意义 该变量的值是归档日志文件和活动日志文件的分割点 文件名序号小于 LOGHEAD 的值的日志文件都可以被归档到其他位置 要察 看改变量的值 可以使用 GET DB CFG 命令 SQLOGDIR 目录 这个目录是数据库缺省的日志文件存放目录 不过 由于日志文件是数据库恢复策略中的决定性因素 因此要尽量保证日志文件的可用性 如果 使用缺省设置 数据库的日志和数据都存放在同一位置 一旦发生介质错误 有可能造成日志文件和数据同时丢失 导致数据库无法恢复 因此 对于关键性应用 建议更改数据库配置参数 NEWLOGPATH 来修改日志文件的存储位置 SQLOGMIR LFH 文件 该文件与 SQLOGCTL LFH 文件的作用类似 不过专门适用于启用了镜像日志的 DB2 环境 SQLSPCS 1 和 SQLSPCS 2 文件 这两个文件中包含了数据库中表空间的定义以及表空间的当前状态 如果这两个文件被损坏 数据库连接操作将会失败 以上介绍的文件和目录都是用于管理和控制数据库的 而数据库中的数据都是被存储在表空间中 在创建数据库时 系统必须预先创建三个表空 间 系统目录表空间 系统临时表空间以及缺省用户表空间 如果不特别指定 这三个表空间都会是 SMS 表空间 由于 SMS 表空间的容器类 型只能是目录 因此 DB2 会生成下列三个目录 SQLT0000 0 目录 这个目录是系统目录表空间 SYSCATSPACE 所使用的容器 用于存储系统目录表 系统目录表由一组以 SYSIBM 为模式的表组成 是一个数 据库的数据字典 系统目录表里面包含了三类信息 一类是数据库中所有数据库对象的定义信息 一类是数据库中的统计信息 在对应用程序进 行优化时需要使用这些统计信息计算存取计划 此外 还有一类是数据库级别的授权信息 如果系统目录表空间处于异常 数据库连接操作将会 失败 SQLT0001 0 目录 这个目录是系统临时表空间 TEMPSPACE1 所使用的容器 用于存储数据库系统在操作过程中生成的临时数据 比如排序 多表连接等操作时所 形成的临时表 每个数据库中必须至少存在一个系统临时表空间 SQLT0002 0 目录 这个目录是缺省用户表空间 USERSPACE1 所使用的容器 用于存放用户创建的表 用户也可以在数据库创建后创建自己的用户表空间 要说明的是 我们上面介绍的三个表空间都是通过缺省方式创建的 在实际应用中 用户可以在创建数据库的时候指明这三个表空间的类型以及 容器 那样的话 看到的目录结构会有些不一样 但功能上是相同的 走进走进 SMS 表空间表空间 DMS 表空间的容器类型是文件或者设备 其内部有独特的映射机制来控制存储空间的分配 而 SMS 表空间则不同 表中数据的分配会非常有 规律地体现在文件结构中 很容易分辨 由于本文介绍的是 DB2 中不同文件的作用 因此我们会着重探讨 SMS 表空间下数据的分配 下面我 们来看一看样本数据库中缺省用户表空间下的文件 图 3 缺省用户表空间下的文件 由于在创建样本数据库时 系统已经创建了一些用户表 因此我们可以在 SQLT0000 2 目录下看到很多文件 在每个 SMS 表空间容器中 都会 有一个名为 SQLTAG NAM 的文件 DB2 会通过这个文件来验证数据的一致性 此外 由于一个容器只能属于一个表空间 因此 DB2 还会通 过该文件阻止其他表空间对该容器进行重复使用 除了该文件以外 我们可以看出其他的文件的文件名称都形如 SQLnnnnn 其中 nnnnn 由一组数字组成 可以用来判定数据是属于哪个表的 可以用来判定具体的数据类型 在表空间中 每个表都有自己唯一的 ID 表名称 和 ID 之间的对应关系可以通过系统目录视图 SYSCAT TABLES 和 SYSCAT TABLESPACES 很方便地得到 首先 我们先要得到表空间名称和 表空间 ID 的对应关系 SELECT TBSPACE TBSPACEID FROM SYSCAT TABLESPACES 通过上面语句的查询结果可以得出 USERSPACE1 的 表空间 ID 为 2 然后再通过下面的命令得出 USERSPACE1 中 表名称和表 ID 的对应关 系 SELECT TABNAME TABLEID FROM SYSCAT TABLES WHERE TBSPACEID 2 假定我们看到样本数据库中表 EMP PHOTO 的 ID 为 8 则文件名称形如 SQL00008 的文件都与 EMP PHOTO 相关联 如果文件的扩 展名为 DAT 则说明该文件中包含的是 EMP PHOTO 表中的常规 REGULAR 数据 也就是除了 LONG VARCHAR LONG VARGRAPHIC CLOB BLOB 以及 DBCLOB 之外的数据 每个数据行中这类数据的大小不能超过一个数据页 如果文件的扩展名为 LF 则说 明该文件中包含的是表中的 LONG VARCHAR 或者 LONG VARGRAPHIC 数据 由于 EMP PHOTO 表中不存在这类数据 因此不存在 SQL00008 LF 文件 如果文件的扩展名为 LB 则说明该文件中包含的是 EMP PHOTO 表中的 BLOB CLOB 和 DBCLOB 数据 如果文件 的扩展名为 LBA 则说明该文件中包含的是 EMP PHOTO 表中 BLOB CLOB 和 DBCLOB 数据的空间分配信息 该文件与 LB 文件是成 对出现的 如果文件的扩展名为 INX 则说明该文件中包含的是 EMP PHOTO 表上建立的索引数据 除此之外 如果创建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论