db2linux卸载
A. IBM/DB2.linux的安装配置管理
IBM/DB2.Linux的安装配置管理
作为关系型数据库技术的领导者,IBM公司在2001年将世界排名第四的Informix数据库公司纳入麾下,并将其所拥有的先进特性融入到DB2当中。下面我准备了关于IBM/DB2.Linux的安装配置管理的.文章,提供给大家参考!
1.安装IBM/DB2 V9.1 Linux版
下载得到安装文件 db2exc_912_LNX_x86.tar.gz ,解压到ext2/3分区
# cd db2exc_912_LNX_x86
# ./db2setup
(1)弹出java的安装界面,install new instance
(2)使用“Typical Mode”,选择安装目录,默认为 DB2_root=/opt/ibm/db2/V9.1/
# echo DB2_root=/opt/ibm/db2/V9.1/ >> /etc/profile
(3)并默认创建 db2inst?、db2fenc?、db2adsusr? 这个几个用户最重要的是本地实例管理用户 db2inst? 其负责管理数据库实例
(4)创建Instance,然后下一步继续安装,看到successful结果,表示成功
(5) # ps -e | grep db2 应该可以看到三个不同名称的进程
(6) # tail /etc/inittab #可以看到最后一行就是启动db2的方法
fmc:2345:respawn:/opt/ibm/db2/V9.1/bin/db2fmcd #DB2 Fault Monitor Coordinator
2.配置IBM/DB2的库开发和CLI/ODBC连接
# su db2inst1
$ cd $DB2_ROOT
## 编目(catalog):
$ ./db2 catalog tcpip node remote server
$ ./db2 catalog db at node
$ ./db2 connect to user using
## 反编目(uncatalog):
$ ./db2 uncatalog db
$ ./db2 uncatalog node
3.修改,使用IBM/DB2的CLI/ODBC进行程序开发
(1)如果不想使用db2实例,而只是想使用CLI/ODBC来开发程序,可以注释 /etc/inittab 中启动db2的那一句,放弃启动IBM/DB2数据库服务。
(2)环境变量配置文件 : /home/db2inst1/sqllib/db2profile
查看 /etc/profile ,保证(添加或者修改)有以下两句
export DB2INSTANCE=db2inst1
export PATH=$DB2_ROOT/binPATH
export LD_LIBRARY_PATH=$DB2_ROOT/lib32LD_LIBRARY_PATH
(3)编目目标机器地址与ODBC的DSN的关系,CLI/ODBC 中最重要的头文件(include)和库(lib)
$DB2_ROOT/lib32 或 其联接 /home/db2inst1/sqllib/lib,其中最重要的是libdb2.so
4.数据库备份及恢复
(1).使用用户名和口令登录服务器
# db2 connect to ecm3000 user using
(2).强制停止所有应用,是异步的
# db2 force applications all
(3).将数据库备份到指定目录下
# db2 backup database to
(4).从指定目录中恢复数据库
# db2 restore database from
5.修改和卸载DB2
请先反编目()如步骤2中
# su db2inst1
$ cd $DB2_ROOT/install
$ ./db2_deinstall -a
等待结束 ...
修改该/etc/inittab 中启动db2的那一句,保证放弃启动IBM/DB2数据库服务。
;B. 求助在linux下安装DB2 v10.5出现的问题
0.环境信息
os: Red Hat Enterprise Linux Server release 6.0 (Santiago)
DB: v10.5fp1_linuxx64_expc
1、部分包缺失,32位包缺失
安装之前一定要先把下面的包直接补充安装一下,默认是不安装的,另外要记得修改配置,直接连32位包也一并安装上。RH6.0以后,好多32包都默认不安装的,会引发不少问题。
echo 'multilib_policy=all' >> /etc/yum.conf
yum install -y glibc* libstdc*
2、关闭iptables和selinux
service iptables stop
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
(或 vi /etc/selinux/config
[root@TSMClt expc]# cat /etc/selinux/config |grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=disabled
)
3、安装之前,做一下db2precheck,检查日志
4、libpam.so问题,不一定遇得上,看人品。
db2setup安装过程中,报错内容如下:
Validating "/lib/libpam.so*" ...
DBT3514W The db2prereqcheck utility failed to find the following 32-bit libr
ary file: "/lib/libpam.so*".
WARNING : Requirement not matched.
解决办法如下:
[root@TSMClt expc]# find / -name libpam.so*
/usr/lib64/libpam.so
/lib64/libpam.so.0.82.2
/lib64/libpam.so.0
很明显,缺失32位包
[root@TSMClt expc]# rpm -qf /usr/lib64/libpam.so
pam-devel-1.1.1-4.el6.x86_64
[root@TSMClt expc]# rpm -qf /lib64/libpam.so.0.82.2
pam-1.1.1-4.el6.x86_64
[root@TSMClt expc]# rpm -qf /lib64/libpam.so.0
pam-1.1.1-4.el6.x86_64
yum install -y pam*
C. linux怎么装db2数据库服务器(linux连接db2数据库命令)
一、安装前准备工作:
1、对于Linux系统,至ibm网站下载软件包
2、Linux内核设置:编辑/etc/sysctl.conf文件
3、创建相应用户以及组:
4、创建相应毁宴明目录用于存放db2的数据文件以及日志文件:
这里在根下面创建一个db2总目录,然后创建了一个15G大小的逻辑卷挂载/db2下面,然后在其下面创建相应的文件夹。
database目录存放数据库实例
db2log1存放db2的主日志文件
db2log2存放镜像日志文件
db2temp存放db2临时表空间
db2用户的家目录的位置
二、安装过程:
安装可以使用root用户安装也可以使用非root用户安装,这里就直接使用root用户安装了。
以root身份执行db2setup,会弹出以下画面:
这里选择安装企业版,点击installnew:
下一步之后,就出现创建用户的画面:
最后点击finish开始安装过程。
三、创建数据库:
如果在安装过程中,没有创建数据库,则后续可以使用db2命令创建数据库。这是一个基于图形界面的管理工具,使用起来也非常方便。执行db2后,会弹出以下画面:
点击祥陪右侧的CreateNewDatabase,创建数据库:
指定数据库名称以及存放位置,选中LetDB2managemystorage,下一步:
点击finish开始创建。默认db2会创建以下三个表空间:
(1)、catalogtablespace用于存放catalog表。
(2)、usertablespace存放所有表和索引数据。
(3)、temporarytablespace临时数据的存放位置。
创建完成后,会看到如下画面:
此时还没有连接到xzxjdb1上,点击右侧的connect进行连接。连接之后,会看到右侧多了好多信息:纤告
使用命令行查看当前数据库中表空间信息:
四、DB2的简单管理:
1、查看表空间信息:
2、查看表信息:
3、查看当前实例下的所有数据库信息:
4、停止数据库:
5、启动数据库:
6、设置实例自动启动:
D. linux磁盘重新挂载
VMware虚拟机中,Linux系统下挂载、卸载新硬盘的方法
装载:
1、启动vm,选择vm->Settings,按向导添加一块SCSI磁盘。进入Linux系统。
2、 fdisk -l 会看到有一块新的设置,如果你先前有一块硬盘(sda1, sda3...),新加的这块应该是(/dev/sdb)。 (如果添加的第二块硬盘是IDE硬盘,应该看到hdb,如果是SCSI硬盘,看到的就是应该sdb)
[root@localhost ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda3 14 1044 8281507+ 83 Linux
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
3、分区:
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): m ##在这里按m ,就会输出帮助;
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition ##这是删除一个分区的动作;
l list known partition types ##:l是列出分区类型,以供我们设置相应分区的类型;
m print this menu
n add a new partition ##添加一个分区;
o create a new empty DOS partition table
p print the partition table ##p列出分区表;
q quit without saving changes ##不保存退出;
s create a new empty Sun disklabel
t change a partition's system id ##t 改变分区类型;
u change display/entry units
v verify the partition table
w write table to disk and exit ##把分区表写入硬盘并退出;
x extra functionality (experts only) ##扩展应用,专家功能;
Command (m for help): n
Command action
e extended ##扩展分区
p primary partition (1-4) ##选p建主分区
p
Partition number (1-4): 1
First cylinder (1-17849, default 1): ##注:这个就是分区的Start 值;这里最好直接按回车,如果你输入了一个非默认的数字,会造成空间浪费;
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-17849, default 17849): 8920
Using default value 500
##这个是定义分区大小的,+200M 就是大小为200M ;当然你也可以根据上面提示的单位cylinder的大小来算,然后来指定 End的数值,在fdisk –l命令中可以看到Units = cylinders of 16065 * 512 = 8225280 bytes,这个就是单位cylinder的大小,我这里选的End的数值是8920,正好是总大小的一半,71G左右
##然后再来建一个主分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (8921-17849, default 8921):8921
Using default value 8921
Last cylinder or +size or +sizeM or +sizeK (8921-17849, default 17849):17849
Using default value 17849
##最后保存并退出,切记,一定要保存,不然不会生效的。
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
##使用fdisk –l命令来查看磁盘状况:
[root@localhost ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda3 14 1044 8281507+ 83 Linux
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 8920 71649868+ 83 Linux
/dev/sdb2 8921 17849 71722192+ 83 Linux
##磁盘/dev/sdb已经被划分为2个分区,每个分区大小大概是71G左右。
##在挂载文件系统之前,需要将/dev/sdb1和/dev/sdb2重新用mkfs -t ext3 命令格式化一下,否则在挂载时会报错。
4、格式化分区:使用mkfs.ext3 /dev/sdb命令格式化磁盘 注:也可以使用mkfs -t ext3 /dev/sdb命令
[root@localhost ~]# mkfs -t ext3 /dev/sdb1 ##指将该磁盘格式化成ext3文件系统
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096474 blocks
104823 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
补充:挂载
挂载文件系统,目前有两种方法:
一是通过 mount 来挂载,使用mount挂载系统,一旦系统重启之后就需要重新挂载。
二是通过/etc/fstab文件来开机自动挂载。
我把/dev/sdb1挂载到/test下
[root@localhost ~]# mkdir /test ## 首先建立挂载的目录test
(或者[root@localhost ~]# cd /
[root@localhost ~]# mkdir test
)
[root@localhost ~]# df –h ##挂载前的分区
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G 5.8G 576M 92% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 233M 0 233M 0% /dev/shm
[root@localhost ~]# mount /dev/sdb1 /test
[root@localhost ~]# df –h ##挂载后的分区
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G 5.8G 576M 92% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 233M 0 233M 0% /dev/shm
/dev/sdb1 7.9G 147M 7.4G 2% /test
6、通过/etc/fstab文件来开机自动挂载(不然重启电脑后系统将不会保存之前的挂载操作):
[root@localhost ~]# vi /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sdb1 /test ext3 defaults 1 1
/dev/sdb2 /test ext3 defaults 1 1
# Beginning of the block added by the VMware software
.host:/ /mnt/hgfs vmhgfs defaults,ttl=5 0 0
# End of the block added by the VMware software
第一字段:设备名,在这里表示是文件系统; 有时我们把挂载文件系统也说成挂载分区;
第二字段:文件系统的挂载点;
第三字段:文件系统类型;
第四字段:mount 命令的选项,和mount 中的-o 同理;defaults包括这些选项 rw, suid, dev, exec, auto, nouser, async;
第五字段:表示文件系统是否需要mp 备份,1是需要,0 是不需要;
第六字段: 是否在系统启动时,通过fsck磁盘检测工具来检查文件系统,1是需要,0是不需要,2是跳过;
卸载:
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
6.7G 5.8G 576M 92% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 233M 0 233M 0% /dev/shm
补充知识:
1. mount可以用来挂载什么:
不同的操作系统使用不同的文件系统格式。MS-DOS支持FAT16文件系统,Windows98支持FAT16、FAT32文件系 统,WindowsNT支持FAT16、NTFS文件系统,Windows2000则支持FAT16、FAT32、NTFS三种文件系统格式,现在的xp 可以支持FAT32,NTFS,现在最新版本的windows 7 引入了新的WinFS文件系统。 而 Linux差不多支持所有的文件系统格式,但一般使用ext2或ext3文件系统。很多用户使用的是windows操作系统,如果想在运行的Linux下 访问其它文件系统中的资源的话,就要用Linux mount命令来实现。
2. mount使用格式:
mount命令[-参数] [设备名称] [挂载点]
说明:
[挂载点]必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。
[设备名称] 可以是一个分区,一个usb设备,光驱,软盘,网络共享等。
常见参数说明:
Mount 挂载文件系统使用帮助
参数 说明
挂载指定的设备类型:adfs, affs, autofs, coda, coherent, cramfs,
devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix,
msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs,
romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs,
xiafs
一般文件类型,可以不需要指定就可以有相同自动检测(adfs, bfs,
cramfs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, ntfs,
qnx4, reiserfs, romfs, udf, ufs, vxfs, xfs, xiafs 等文件系统),如
果探测失败,就将访问/etc/filesystems ,以指定文件系统探测。说
明:如果清楚文件系统,最好指定具体类型。探测错误将带来灾难性
的。
多个文件系统可以用“,”分割开来.
-t vfstype mount -a -t nomsdos,ext
将挂载fstab文件指定所有的文件系统,除了类型为 msdos 和 ext 的
那一些。
E. DB2 删除表后如何释放相应磁盘空间
#说明:由csdn下载,原版为doc格式,有对应的xml表,不过还是应该对每个服务的数据库单独考虑需要的检查表格。
DB2维护手册
目录
DB2维护手册 1
一、 DB2日常维护日操作 3
1、 检查管理服务器是否启动 3
2、 检查DB2实例是否已经启动 3
3、 查看表空间状态是否正常 3
4、 查看表的状态 4
5、 查看磁盘空间 4
6、 检查存储管理软件是否正常 4
7、 检查数据库备份是否正常 5
8、 检查归档日志是否正确归档了 5
9、 查看缓冲池的命中率 5
10、 查看当前运行最频繁的SQL,其命中率是否正常 5
11、 查看当前连接的应用程序,有没有非法连接 5
12、 检查有没有死锁 6
13、 对表和索引进行RUNSTATS 6
14、 检查表是否需要重组 6
15、 对需要重组的表进行重组 7
二、 DB2日常维护月操作 7
1、 查看DB2日志 7
2、 检查备份和日志是否都保存好了 7
三、 DB2日常维护季度操作 7
1、 通过快照监控器,查看系统性能如何 7
2、 数据库补丁级别 8
四、 注意事项 8
1、 不要删除活动日志文件 8
2、 注意交易日志存储空间 8
3、 按照系统的实际工作量配置日志空间 8
4、 设置正确数据库代码页 9
5、 检查许可证(LICENSE)安装情况 9
6、 创建数据库前调整好系统时间 9
7、 不要随便执行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 9
五、 附:以脱机方式重组表 9
六、 附:索引重组 10
七、 附:收集和更新统计信息的准则 11
八、 附:使用 CLP 捕获数据库运行状况快照 13
一、 DB2日常维护日操作
1、 检查管理服务器是否启动
用ps命令查看是否有dasusr1后台进程
#ps -ef | dasusr1
请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:
以管理服务器用户(UNIX默认是DASUSR1)登录
发出db2admin start命令
如果是HA环境,则要保证在脚本中正确配置了启动命令
2、 检查DB2实例是否已经启动
用ps命令查看是否有db2sysc后台进程
#ps -ef | db2sysc
也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)
3、 查看表空间状态是否正常
以db2实例所有者登录
#db2 list tablespaces show detail //在单分区上查看表空间的状态,正常返回0x0000
# db2_all list tablespaces show detail //在所有分区上查看表空间的状态
可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:
db2tbst <tablespace state> 可以查看编号所代表的状态
db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)
4、 查看表的状态
查询系统目录视图以获得关于数据库的有用信息。例如,下面的语句使用 NOT LIKE 断言,返回在 SYSCAT.TABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))
#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema NOT LIKE 'SYS%' ORDER BY tabname
也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:
#db2 load query table test1
5、 查看磁盘空间
查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志
#df -k
查看SMS表空间对应的容器目录空间是否满了
#df -k
查看DMS表空间中是否还有可用页
#db2 list tablespaces show detail //在单分区上查看表空间的是否还有可用页
# db2_all list tablespaces show detail //在所有分区上查看表空间是否还有可用页
6、 检查存储管理软件是否正常
请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。
7、 检查数据库备份是否正常
请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令
# db2 list history backup all for 数据库名
8、 检查归档日志是否正确归档了
请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。
查看活动目录里的日志文件:
#ls -l
9、 查看缓冲池的命中率
# db2 get snapshot for bufferpools on 数据库名
查看缓冲池的命中率,看其是否低于95%(命中率越高越好)
10、 查看当前运行最频繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 数据库名 > log.txt
用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。
比如:
grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,5rn | more
11、 查看当前连接的应用程序,有没有非法连接
#db2 list applications show detail
看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用FORCE APPLICATIONS (应用程序句柄)停下来。
12、 检查有没有死锁
# db2 get snapshot for all on 数据库名 > log.txt
用grep命令查看输出的文件中是否有死锁的记录,比如
grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more
13、 对表和索引进行runstats
#db2 runstats on table 表名 and index all
对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。
14、 检查表是否需要重组
使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:
REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]
UPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表
CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表
TABLE table_name : 对单个表进行分析
TABLE ALL: 对数据库所有的表进行分析
TABLE SYSTEM: 对系统表进行分析
TABLE USER : 对当前用户模式下的所有表进行分析
#db2 reorgchk update statistics on table all
15、 对需要重组的表进行重组
#db2 reorg table 表名 //通过重构行来消除“碎片”数据
#db2 reorg indexes all for table 表名 //只重组索引
比如:
reorg table db2inst1.org index by_id
将根据索引by_id,如果不加INDEX选项将重组表和所有的索引
reorg table db2inst1.org index by_id use tempspace1
使用指定的临时表空间重组表
表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。
二、 DB2日常维护月操作
1、 查看DB2日志
请至少每月查看一次db2diag.log文件,看其中是否有异常。
2、 检查备份和日志是否都保存好了
通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:
# db2 list history backup all for 数据库名
三、 DB2日常维护季度操作
1、 通过快照监控器,查看系统性能如何
通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:
# db2 get snapshot for all on 数据库名 > log.txt
2、 数据库补丁级别
# db2level
四、 注意事项
1、 不要删除活动日志文件
DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。
2、 注意交易日志存储空间
在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:
1)如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会挂起
2)如果该参数没有启用,则 DB2 数据库会停止工作
两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。
3、 按照系统的实际工作量配置日志空间
DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:
日志空间 = (主日志文件 + 二级日志文件) * 日志文件尺寸
其中:
1) 主日志文件由参数 LOGPRIMARY 控制,
2) 二级日志文件由参数 LOGSECOND 控制
3) 日志文件尺寸由参数 LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)
4、 设置正确数据库代码页
由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。
错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。
从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。
5、 检查许可证(License)安装情况
许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况
6、 创建数据库前调整好系统时间
在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:
1)某些对象失效,例如 :
SQL0440N,找不到具有兼容自变量的类型为 “<例程类型>” 的名为 “<例程名>” 的已授权例程
2)数据库日志逻辑错误 -> 宕机
3)常见错误 – 只调整时间,未调整时区
7、 不要随便执行 chown (chmod) –R (UNIX/Linux)
在实例目录下chown (chmod) -R 会造成
1) 在数据库服务器上 db2 connect to <dbname> 能连接上数据库
2) db2 connect to <dbname> user ... using ...连接不上
8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数
五、 附:以脱机方式重组表
以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。
必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的 CONTROL 权限才能重组表。必须具有数据库连接才能重组表。
标识需要重组的表之后,可以对这些表运行 REORG 实用程序,并且可以选择对在这些表上定义的任何索引运行该实用程序。
1. 要使用 CLP 重组表,请发出 REORG TABLE 命令:
db2 reorg table test.employee
要使用临时表空间 mytemp 重组表,请输入:
db2 reorg table test.employee use mytemp
要重组表并根据索引 myindex 对行进行重新排序,请输入:
db2 reorg table test.employee index myindex
2. 要使用 SQL 调用语句重组表,请使用 ADMIN_CMD 过程发出 REORG TABLE 命令:
call sysproc.admin_cmd ('reorg table employee index myindex')
3. 要使用 DB2 管理 API 重组表,请使用 db2REORG API。
在重组表之后,应收集有关表的统计信息,以便优化器具有最准确的数据来评估查询访问方案。
六、 附:索引重组
通过删除和插入操作对表进行更新后,索引的性能会降低,其表现方式如下:
• 叶子页分段
叶子页被分段之后,由于必须读取更多的叶子页才能访存表页,因此 I/O 操作成本会增加。
• 物理索引页的顺序不再与这些页上的键顺序相匹配(此称为不良集群索引)。
叶子页出现不良集群情况后,顺序预取操作的效率将降低,因此会导致更多的 I/O 等待。
• 形成的索引大于其最有效的级别数。
在此情况下应重组索引。
如果在创建索引时设置了 MINPCTUSED 参数,则在删除某个键且可用空间小于指定的百分比时,数据库服务器会自动合并索引叶子页。此过程称为联机索引整理碎片。但是,要复原索引集群和可用空间以及降低叶级别,请使用下列其中一种方法:
• 删除并重新创建索引。
• 使用 REORG INDEXES 命令联机重组索引。
因为此方法允许用户在重建表索引期间对表进行读写操作,所以在生产环境中可能需要选择此方法。
• 使用允许脱机重组表及其索引的选项运行 REORG TABLE 命令。
联机索引重组
在使用 ALLOW WRITE ACCESS 选项运行 REORG INDEXES 命令时,如果同时允许对指定的表进行读写访问,则会重建该表的所有索引。进行重组时,对基础表所作的任何将会影响到索引的更改都将记录在 DB2® 日志中。另外,如果有任何内部内存缓冲区空间可供使用,则还将这些更改放在这样的内存空间中。重组将处理所记录的更改以便在重建索引时与当前写活动保持同步更新。内部内存缓冲区空间是根据需要从实用程序堆中分配的指定内存区域,它用来存储对正在创建或重组的索引所作的更改。使用内存缓冲区空间使索引重组操作能够通过这样的方式来处理更改,即先直接从内存读取,然后读取日志(如有必要),但读取日志的时间要晚得多。在重组操作完成后,将释放所分配的内存。重组完成后,重建的索引可能不是最佳集群的索引。如果为索引指定 PCTFREE,则在重组期间,每页上均会保留相应百分比的空间。
对于分区表,支持对各个索引进行联机索引重组和清除。要对各个索引进行重组,指定索引名:REORG INDEX index_name for TABLE table_name
对于空间索引或多维集群(MDC)表,不支持采用 ALLOW WRITE 方式的联机索引重组。
注: REORG INDEXES 命令的 CLEANUP ONLY 选项不能完全重组索引。CLEANUP ONLY ALL 选项将除去那些标记为“删除”且被认为要落实的键。此外,它还将释放所有标记为“删除”且被认为要落实的键所在的页。在释放页后,相邻的叶子页将会合并,前提是这样做可以在合并页上至少留出 PCTFREE 可用空间。PCTFREE 是指在创建索引时为其定义的可用空间百分比。CLEANUP ONLY PAGES 选项仅删除那些标记为“删除”且被认为要落实的所有键所在的页。
使用 CLEANUP ONLY 选项对分区表的索引进行重组时,支持任何访问级别。如果未指定 CLEANUP ONLY 选项,则缺省访问级别 ALLOW NO ACCESS 是唯一支持的访问级别。
REORG INDEXES 具有下列要求:
• 对索引和表具有 SYSADM、SYSMAINT、SYSCTRL 或 DBADM 权限,或者具有 CONTROL 特权。
• 用于存储索引的表空间的可用空间数量等于索引的当前大小
在发出 CREATE TABLE 语句时,考虑在大型表空间中重组索引。
• 其他日志空间
REORG INDEXES 需要记录其活动。因此,重组可能会失败,尤其是在系统繁忙和记录其他并发活动时。
注: 如果具有 ALLOW NO ACCESS 选项的 REORG INDEXES ALL 命令运行失败,则会标记索引无效并且此项操作不可撤销。但是,如果具有 ALLOW READ ACCESS 选项的 REORG 命令或具有 ALLOW WRITE ACCESS 选项的 REORG 命令运行失败,则可以复原原来的索引对象。
七、 附:收集和更新统计信息的准则
RUNSTATS 命令收集表、索引和统计信息视图的统计信息,以为优化器提供准确信息进行访问方案选择。
在下列情况下,使用 RUNSTATS 实用程序来收集统计信息:
• 当数据已装入表中且已创建适当的索引时。
• 当在表中创建新的索引时。如果自从上次在表中运行 RUNSTATS 以来尚未修改表,则只需要对新的索引执行 RUNSTATS。
• 当一个表已用 REORG 实用程序重组时。
• 当通过数据修改、删除和插入已大量更新表及其索引时。(此处所指的“大量”可能表示有 10% 到 20% 的表和索引数据受影响。)
• 在绑定性能非常重要的应用程序之前
• 当您想要比较当前和先前统计信息时。如果定期更新统计信息,则可以及早发现性能问题。
• 当预取量更改时。
• 当使用了 REDISTRIBUTE DATABASE PARTITION GROUP 实用程序时。
注:
在先前版本的 DB2® 中,此命令使用了 NODEGROUP 关键字,而不是 DATABASE PARTITION GROUP 关键字。
• 使用 RUNSTATS 实用程序来收集关于 XML 列的统计信息。 使用 RUNSTATS 仅收集 XML 列的统计信息时,将保留 LOAD 或上一次执行 RUNSTATS 实用程序已收集的非 XML 列的现有统计信息。如果先前已收集关于一些 XML 列的统计信息,则在当前命令未收集关于该 XML 列的统计信息时,将删除先前收集的 XML 列的统计信息;在当前命令收集了关于该 XML 列的统计信息时,将替换先前收集的 XML 列的统计信息。
要提高 RUNSTATS 性能并保存用来存储统计信息的磁盘空间,考虑仅指定应该收集其数据分布统计信息的列。
理论上,您应在运行统计信息之后重新绑定应用程序。如果查询优化器具有新的统计信息,则它可以选择不同的访问方案。
如果您没有足够的时间一次收集全部的统计信息,则可以运行 RUNSTATS 来每次仅更新几个表、索引或统计信息视图的统计信息,并轮流完成该组对象。如果对选择性部分更新运行 RUNSTATS 期间由于表上的活动而产生了不一致性,则在查询优化期间将发出警告消息(SQL0437W,原因码 6)。例如,如果执行 RUNSTATS 来收集表分布统计信息,以及在某个表活动后,再次执行 RUNSTATS 来收集该表的索引统计信息,则可能发生这种情况。如果由于表上的活动产生了不一致并且在查询优化期间检测到这些不一致,则发出该警告消息。当发生这种情况时,应再次运行 RUNSTATS 来更新分布统计信息。
要确保索引统计信息和表同步,执行 RUNSTATS 来同时收集表和索引统计信息。索引统计信息保留自上次运行 RUNSTATS 以来收集的大部分表和列的统计信息。如果自上次收集该表的统计信息以来已对该表做了大量修改,则只收集该表的索引统计信息将使两组统计信息不能在所有节点上都同步。
对生产系统调用 RUNSTATS 可能会对生产工作负载的性能产生负面影响。RUNSTATS 实用程序现在支持调速选项,在执行较高级别的数据库活动期间,可以使用调速选项来限制执行 RUNSTATS 的性能影响。
在分区数据库环境中收集表的统计信息时,RUNSTATS 仅收集执行该命令的数据库分区上的表的统计信息。将此数据库分区的 RUNSTATS 结果推广到其他数据库分区。如果执行 RUNSTATS 的数据库分区不包含特定表的一部分,则将请求发送到数据库分区组中包含该表一部分的第一个数据库分区。
收集统计信息视图的统计信息时,将收集所有包含该视图引用的基本表的数据库分区的统计信息。
考虑以下技巧来提高 RUNSTATS 的效率和已收集的统计信息的有效性:
• 仅对用来连接表的列或 WHERE、GROUP BY 以及查询的类似子句中的列收集统计信息。如果对这些列建立了索引,则可以用 RUNSTATS 命令的 ONLY ON KEY COLUMNS 子句指定列。
• 为特定表和表中特定列定制 num_freqvalues 和 num_quantiles 的值。
• 使用 SAMPLE DETAILED 子句收集 DETAILED 索引统计信息,以减少对详细的索引统计信息执行的后台计算量。SAMPLE DETAILED 子句减少收集统计信息所需要的时间,并在大多数情况下产生足够的精度。
• 当创建已填写的表的索引时,添加 COLLECT STATISTICS 子句来在创建索引时创建统计信息。
• 当添加或除去了大量表行时,或如果更新了收集其统计信息的列中的数据,则再次执行 RUNSTATS 来更新统计信息。
• 因为 RUNSTATS 仅收集单个数据库分区的统计信息,所以,如果数据不是在所有数据库分区中一致分发的,则统计信息将不太准确。如果您怀疑存在变形数据分发,则您可能想要在执行 RUNSTATS 之前使用 REDISTRIBUTE DATABASE PARTITION GROUP 命令来在各数据库分区之间再分发数据。
八、 附:使用 CLP 捕获数据库运行状况快照
可从 CLP 使用 GET HEALTH SNAPSHOT 命令来捕获运行状况快照。该命令语法支持检索运行状况监视器监视的不同对象类型的运行状况快照信息。
先决条件
必须具有实例连接才能捕获运行状况快照。如果没有实例连接,则创建缺省实例连接。要获取远程实例的快照,必须先连接至该实例。
过程
要使用 CLP 捕获数据库运行状况快照
1. 从 CLP 发出带有期望参数的 GET HEALTH SNAPSHOT 命令。
在以下示例中,将在启动数据库管理器之后立即捕获数据库管理器级别运行状况快照。
db2 get health snapshot for dbm
2. 对于分区数据库系统,可为特定分区捕获专门的数据库快照,或者为所有分区捕获全局的数据库快照。要对特定分区(如分区号 2)上的数据库捕获运行状况快照,请发出以下命令:
db2 get health snapshot for db on sample at dbpartitionnum 2
要对所有分区上的所有应用程序捕获数据库快照,请发出以下命令:
db2 get health snapshot for db on sample global
以下命令捕获的运行状况快照带有附加详细信息,包括公式、附加信息和运行状况指示器历史记录:
db2 get health snapshot for db on sample show detail
3. 对于基于集合状态的运行状况指示器,可对所有集合对象捕获数据库快照,而不考虑这些对象的状态。常规 GET HEALTH SNAPSHOT FOR DB 命令返回所有集合对象,这些对象需要针对所有基于集合状态的运行状况指示器的警报。
要对列示了所有集合对象的数据库捕获运行状况快照,请发出以下命令:
db2 get health snapshot for db on sample with full collection
F. 怎么把windows下db2卸载干净
以下两种方法解决:
1、通过Windows控制面板中的添加/删除程序来卸载DB2 UDB 版本8是最好的方式。 根据不同的Windows操作系统,DB2产品在 添加/删除 程序窗口中可能有“删除” 和/或 “改变”按钮,点击卸载即可。
2、开始,运行,输入cmd进入命令行窗口,输入命令db2unins –f。在弹出的窗口中点击“是”,即可等待完全卸载。
G. DB2数据库在linux操作系统的指令有哪些
DB2数据库命令简介
1.启动数据库
DB2start
2.停止数据库
DB2stop
DB2数据库在linux相关指令之3.连接数据库
DB2 connect to o_yd user DB2 using pwd
4.读数据库管理程序配置
DB2 get dbm cfg
5.写数据库管理程序配置
DB2 update dbm cfg using 参数名 参数值
6.读数据库的配置
DB2 connect to o_yd user DB2 using pwd
DB2 get db cfg for o_yd
7.写数据库的配置
DB2 connect to o_yd user DB2 using pwd
DB2 update db cfg for o_yd using 参数名 参数值
8.关闭所有应用连接
DB2 force application all
DB2 force application ID1,ID2,,,Idn MODE ASYNC
(DB2 list application for db o_yd show detail)
9.备份数据库
DB2 force application all
DB2 backup db o_yd to d:
(DB2 initialize tape on \.tape0)
(DB2 rewind tape on \.tape0)
DB2 backup db o_yd to \.tape0
10.恢复数据库
DB2 restore db o_yd from d: to d:
DB2 restore db o_yd from \.tape0 to d:
DB2数据库在linux相关指令之11.绑定存储过程
DB2 connect to o_yd user DB2 using pwd
DB2 bind c:dfplus.bnd
拷贝存储过程到服务器上的C:sqllibfunction目录中
12.整理表
DB2 connect to o_yd user DB2 using pwd
DB2 reorg table ydd
DB2 runstats on table ydd with distribution and indexes all
13.导出表数据
DB2 export to c:dftz.txt of del select * from dftz
DB2 export to c:dftz.ixf of ixf select * from dftz
14.导入表数据
import from c:123.txt of del insert into ylbx.czyxx
DB2 import to c:dftz.txt of del commitcount 5000 messages c:dftz.msg insert into dftz
DB2 import to c:dftz.ixf of ixf commitcount 5000 messages c:dftz.msg insert into dftz
DB2 import to c:dftz.ixf of ixf commitcount 5000 insert into dftz
DB2 import to c:dftz.ixf of ixf commitcount 5000 insert_update into dftz
DB2 import to c:dftz.ixf of ixf commitcount 5000 replace into dftz
DB2 import to c:dftz.ixf of ixf commitcount 5000 create into dftz (仅IXF)
DB2 import to c:dftz.ixf of ixf commitcount 5000 replace_create into dftz (仅IXF)
15.执行一个批处理文件
DB2 -tf 批处理文件名
(文件中每一条命令用 ;结束)
16.自动生成批处理文件
建文本文件:temp.sql
select 'runstats on table DB2.' || tabname || '
with distribution and detailed indexes all;'
from syscat.tables where tabschema='DB2' and type='T';
DB2 -tf temp.sql>runstats.sql
17.自动生成建表(视图)语句
在服务器上:C:sqllibmisc目录中
DB2 connect to o_yd user DB2 using pwd
DB2look -d o_yd -u DB2 -e -p -c c:o_yd.txt
DB2数据库在linux相关指令之18.其他命令
grant dbadm on database to user bb
19select * from czyxx fetch first 1 rows only
20DB2look -d ylbx -u DB2admin -w -asd -a -e -o a.txt21. 显示当前用户所有表
list tables
22.列出所有的系统表
list tables for system
23.查看表结构
DB2 describe select * from user.tables