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