从今天开始DB2相关的内容 系统为 Redhat 7.4 数据库为 v10.5fp10 上节我们说了如何建立DB2实例,这节内容为建立数据库 DB2中一个实例下可以有多个数据库,一个数据库只能属于一个实例 ## 1. 建立数据库目录 首先我们建立存放容器(数据文件)的目录 这里我们假设建立的数据库名称为testdb ``` su - root mkdir /db2data cd /db2data mkdir db2_archive tbs_data backup cd /db2data/tbs_data mkdir testdb chown -R db2inst1:db2iadm1 /db2data chmod -R 775 /db2data ``` ## 2. 建立数据库 接下来我们建立数据库 ``` su - db2inst1 # 如果db2未开启则先开启 db2start db2 CREATE DATABASE testdb ON /db2data USING CODESET UTF-8 TERRITORY CN PAGESIZE 8192 ``` [image:876 size:orig] 然后我们连接数据库 ``` db2 activate db testdb db2 connect to testdb ``` ## 3. 数据库目录结构 当执行完上面的语句后,我们来看下DB2到底新建了什么 **/home/db2inst1/sqllib下面** 在家目录的sqllib下面新建了一个sqldbdir目录 [image:877 size:orig] 发现下面只有三个文件 [image:878 size:orig] **/db2data目录里面** 在创建数据库的时候我们指定了容器(数据文件)的目录 DB2会在该目录下建立如下目录,为本地数据库编录目录 /db2data/db2inst1/NODE0000 其中db2inst1为实例名称 NODE0000代表第一个节点,非DPF(分区数据库)中只有一个NODE0000 接下来包含3个目录 [image:879 size:orig] - SQL00001 数据库编号,代表当前为该实例的第一个数据库 - sqldbdir本地数据库编录目录 - TESTDB为数据文件目录 **SQL00001目录** [image:880 size:orig] 图中的1和2代表冗余文件 - db2rhist.asc 数据库历史文件,使用list history浏览 - SQLDBCONF 数据库参数配置文件,使用get db cfg/uodate db cfg 读取和修改 - SQLOGCTL.GLFH 数据库全局日志控制文件 - SQLSGF 存放和自动存储管理相关的信息,ASM默认启动 - SQLSPCS 表空间控制文件,使用list/alter tablespace控制 - HADR 存储HADR相关信息,类似于Oracle的DataGuard - LOGSTREAM0000 活动日志存放的位置,类似于Oracle的Redo Log - MEMBER0000 本地数据库信息 **SQL00001/MEMBER0000 目录** [image:881 size:orig] - SQLBP 数据库缓冲池文件 - SQLDBCONF 数据库参数文件,和SQL00001下的同名文件冗余 - SQLINSLK和SQLTMPLK是lock文件,用于确保数据库只能会一个实例占有 - SQLOGCTL.LFH 和SQLOGMIR.LFH 数据库日志控制文件,和 SQLOGCTL.GLFH冗余 **TESTDB目录** [image:882 size:orig] 该目录存放数据文件,是数据库自动创建的 - T0000000 数据库系统表空间目录 - T0000001 数据库临时文件目录 - T0000002 数据库用户表空间目录 - T0000003 数据库系统工具表空间目录 [image:883 size:orig] 数据库的建立就说到这里,下一节为数据库的配置