Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

DB2的目录结构和体系结构

Posted on 2009-07-14 23:05 Prayer 阅读(887) 评论(0)  编辑 收藏 引用 所属分类: DB2
这是我的电脑刚装完后,db2目录结构,上网查了一下每个目录和文件的用途,现总结如下:

1、顶级目录-DB2,这是实例名,所谓实例,我理解的就是一套完整的数据库运行环境和内存结构,和oracle的实例含义差不多,只不过oracle一台机器同一时间只能运行一个实例,而DB2则可以同时运行多个实例,每个实例下包含多个数据库,而数据库包含各种对象,如:表、视图、索引、触发器、过程之类的,而和oracle相对应的,这些对象都是属于某个用户即属于某个模式。这里模式的概念和oracle里类似,也许所有数据库系统中模式的概念都大同小异。

2、Node0000,这是数据库分区名,新版本的DB2中,数据库分区取代了以前版本中的节点的概念。一个数据库分区是数据库的一个子集,拥有自己的配置文件、数据、索引和日志。在多分区数据库环境下,一个数据库可以被划分为多个分区,不同的分区可以驻留在不同的物理机器上,从而提高整个数据库系统的处理能力。在这种环境下,每个分区都有自己的编号,这个编号会体现在数据库的目录结构中。比如,如果该分区的编号为3,则该层目录名称应为NODE0003。对于单分区数据库环境,该目录名固定为NODE0000。这和Oracle集群是不是很像。

3、SQL00001,代表了实例下的一个数据库,每建一个数据库,编号就会加一,如果想看看这个目录对应了哪个数据库,可以在clp下运行命令 LIST DATABASE DIRECTORY ON D,这个命令查看了D盘下的目录,结果显示如下:


4、SQLDBDIR,存储本地数据库目录相关的文件。本地数据库目录中驻留在每个存储着数据库的驱动器或者路径中,用于存取子目录下的本地数据库。该目录中存储的每个条目中包含着数据库名称、数据库别名以及数据库类型和数据库的位置信息。

5、DB2EVENT,这个目录保存了DB2 事件监视器产生的结果。事件监视器用于记录特定事件发生时数据库的活动,记录的结果可以被保存在表、命名管道或者文件中。要察看监控结果的话,可以使用事件分析器这样的图形化工具,或者 DB2EVMON 这样的文本工具。

以下为转载自loveunix.net :


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 所使用的容器,用于存放用户创建的表。用户也可以在数据库创建后创建自己的用户表空间。


要说明的是,我们上面介绍的三个表空间都是通过缺省方式创建的,在实际应用中,用户可以在创建数据库的时候指明这三个表空间的类型以及容器。那样的话,看到的目录结构会有些不一样,但功能上是相同的。

下一次,我将研究一下表空间


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理