基于linuxsuse10安装db2 8.2.4
1,建立用户和组 ,如下:
----------------------------------------------------------------------
组 id 用户
db2adm1 1001 db2inst1 ===>实例所有者
db2fenc1 1002 db2fenc1 ==>受防护的用户
dasadm1 1003 dasusr1 ==>DAS实例所有者
db2grp1 1004 dwadm ==>一般db2用户
db2grp1,db2adm1 1005 bips ==>作为dba的用户
-----------------------------------------------------------------------
前两个用户和组是创建实例必须,db2inst1用户名和要创建的实例db2inst1必须同名。
db2fenc1受防护的用户用于在db2数据库所使用的地址空间之外运行用户定义的函数和存储过程。
#groupadd -g 1001db2adm1
#groupadd -g 1002db2fenc1
#groupadd -g 1003dasadm1
#groupadd -g 1004db2grp1
#useradd -m -gdb2adm1 -u 1001 db2inst1
#passwd db2inst1 (设置密码)
#useradd -m -gdb2fenc1 -u 1002 db2fenc1
#passwd db2fenc1(设置密码)
#useradd -m -gdasadm1 -u 1003 dasusr1
#passwd dasusr1(设置密码)
#useradd -m -gdb2grp1 -u 1004 dwadm
#passwd dwadm(设置密码)
#useradd -m -gdb2grp1 -G db2adm1 -u 1005 bips
#passwd bips(设置密码)
2,建立数据库存方目录(根据需要)
确定CREATE DATABASE的位置,创建目录,如 /db2dir/db2db
mkdir -m 777 -p/db2dir/db2db
3,开始安装
以root用户
解压DB2安装文件并进入安装文件目录
执行./db2_install -b /home/db2inst1 -p DB2.ESE
或者执行./db2_install
然后根据提示选择版本,和安装路径。
版本输入DB2.ESE
……
路径(默认/opt/IBM/db2/V8.1)
……
解压补丁文件(FP11_MI00152.tar)
执行./installFixPak -y
4.在安装目录中找到许可证文件:db2ese.lic
执行 /opt/IBM/db2/V8.1/adm/db2licm -a db2ese.lic
5.创建db2 实例
#cd/opt/IBM/db2/V8.1/instance
#./db2icrt -aSERVER -s ese -u db2fenc1 -w 32 db2inst1
启动实例
#su - db2inst1
$ db2start
以root用户
vi /etc/services
新增如下一行
DB2c 50000/tcp
保存退出
配置相关参数:
su - db2inst1
$db2 update dbm cfgusing SVCENAME DB2c
$db2 update dbm cfgusing ASLHEAPSZ 256
$db2 update dbm cfgusing MON_HEAP_SZ 1024
$db2 update dbm cfgusing SHEAPTHRES 50000
$db2setdb2comm=tcpip
重新启动DB2
$db2stop force
$db2start
DB2创建数据库
一个DB2数据库实例可以同时管理多个DB2数据库,而一个DB2数据库只能由一个DB2实例管理。
1.首先需要了解DB2数据库的存储结构:
物理结构:
大家都知道操作系统的最小存储单位是快(block),在linux和unix上最小快是512字节,在windows上最小存储单位是1KB,而数据库上最小存储单位是数据页(datapage)。
数据库为了保证写存储时的吞吐量,引入了一个更大的单位扩展数据块extent,他是datapage的整数倍。
逻辑结构:
表空间容器是由很多个扩展数据块extent组成的,表空间也是由多个容器组成的。
操作系统块==》数据页(datapage)==》扩展数据块extent==》容器container==》表空间tablespace
2.DB2数据库表空间的管理类型:
系统管理的空间 (SMS);此时,由操作系统的文件系统管理器分配和管理空间,数据库容器是操作系统文件。
数据库管理的空间(DMS);此时,有DB2数据库管理程序控制存储空间,表空间容器可使文件系统或裸设备。
DMS的自动存储;这只是一种处理DMS存储的不同方式。
3.表空间和缓冲池的关系:
每个表空间与一个特定的缓冲池相关,而且表空间和他相关的缓冲池必须有相同的页(pagesize)大小。一个表空间只可和一个缓冲池关联,而一个缓冲池可用于多个表空间。
建库之前应了解的信息:
1)、权限:
/home/db2inst1>db2 get dbm cfg | grep SYSADM_GROUP
SYSADM group name (SYSADM_GROUP) =DB2ADM1
需是db2adm1组的用户。
2)、系统空间是否够用,确定数据库目录,如:/data/db2dir/testdb
3)、代码页和整理次序
using codeset GBKterritory CN
collate using identity ==》选择以逐字节二进制比较
4)、确定扩展数据块的页数extentsize
5)、预取页得数据页数prefetchsize
--创建数据库:
create databasetestdb \
on/data/db2dir/testdb \
using codeset GBKterritory CN \
collate usingidentity
如此,db2会默认创建3个数据库表空间(extentsize,prefetchsize都用的默认设置,切不可更改),当然也可以用语法自己定义这3个表空间
1)、Syscatspace ===》保存数据库编目,和数据库元数据即数据字典。
CATALOG TABLESPACE MANAGED BY DATABASE USING ( FILE '…' …)
或CATALOG TABLESPACE MANAGED BY SYSTEM USING('… ' )
2)、TEMPSPACE1 ==》db2用于放置分组,排序,连接和重组中间结果的工作区域。
TEMPORARY TABLESPACE MANAGED BY DATABASE USING ( FILE '…'… )
….
3)、Userspace1 ==》存放用户数据的表空间。
USER TABLESPACE MANAGED BY DATABASE USING ( FILE '…'… )
.....
数据库维护
--连接数据库
db2 connect todatabasename
--查看与数据库连接的程序
db2 listapplication
--列出数据库目录:
db2 list databasedirectory/db2 list db2 directory
--列出当前实例:
db2 get instance
--察看示例配置文件:
db2 get dbmcfg|more
--修改实例参数
db2 update dbmcfg using SVCENAME DB2c
--查看数据库版本
db2level
db2 "select *from sysibm.sysversions"
--设置实例系统启动时是否自动启动
db2iauto -on
db2iauto –off
我自己需要创建两个DMS的表空间来存放用户数据和索引,因为其用的pagesize非默认值,所以需先创建同pagesize大小的
连接到数据库:db2 connect to testdb
--查看缓冲池表空间:
select * fromsyscat.bufferpools;
--查看表空间对应的缓冲池
selecttbspace,bufferpoolid from syscat.tablespaces;
--创建缓冲池
create bufferpooldw_bp immediate size 3000 pagesize 16k
--创建DMS表空间
create tablespacedw_tbl pagesize 16384 managed by database using (file'/data/db2dir/dccdb/NODE00001' 500000) extentsize 16 prefetchsize 16 bufferpooldw_bp \
create tablespacedw_idx pagesize 16384 managed by database using (file'/data/db2dir/dccdb/NODE00002' 190000) extentsize 16 prefetchsize 16 bufferpooldw_bp \
--创建用户临时表空间
create usertemporary tablespace TEMPSP16K pagesize16384 managed by database using(file '/data/db2dir/dccdb/NODE00003' 65000)extentsize 16 prefetchsize 16 bufferpool dw_bp
创建模式
create schema db2test [authorization db2test] -->指定模式所属的用户,默认为创建该模式的用户拥有。
表空间维护
--.查看当前数据库表空间
db2 listtablespaces show detail
--查看tablespace id = 2使用容器所在目录
db2 list tablespacecontainers for 2 show detail
--查看表空间快照
db2 get snapshotfor tablespaces on testdb
--删除缓冲池
drop bufferpool bp1
--将表空间下所有容器扩展10000页
alter tablespacedw_tbl extend (all 10000)
--添加DMS容器(会发生表空间重新平衡)
alter tablespacedw_tbl add (file '/data/db2dir/testdb/NODE00003' 100000,file '/data/db2dir/testdb/NODE00004'100000)
-- 缩小表空间容器也的大小(减少5000页)
alter tablespacedw_tbl reduce (file '/data/db2dir/testdb/NODE00001' 5000)
--改变表空间容器也的大小(减少到5000页)
alter tablespacedw_tbl resize (file '/data/db2dir/testdb/NODE00001' 5000)
-- 删除容器
alter tablespace dw_tbldrop (file 'data/db2dir/testdb/NODE')
--重命名表空间
rename tablespacedw_tbl to tbl
--将表空间从脱机状态(offline)转换到联机状态(online)
alter tablespace<name> switch online
--删除表空间(一个表的数据放在不同的表空间,如:数据放在dw_tbl上,索引放在dw_idx上,删除是需要同时删除)
drop tablespacedw_tbl
dorp tablespacedw_tbl,dw_idx