DB2 環(huán)境部署-在DB2 UDB V8.1中使用裸(raw)設(shè)備
2024-09-06 23:58:04
供稿:網(wǎng)友
版權(quán)聲明: 本文可以任意轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息。
原文出處: http://www.aiview.com/notes/db2_using_raw.htm
作者: 張洋 alex_doesathotmail.com
最后更新: 2004-7-14
目錄 一般信息 規(guī)劃磁盤分區(qū) 創(chuàng)建raw設(shè)備 創(chuàng)建數(shù)據(jù)庫 規(guī)劃日志以及備份文件存儲 額外信息 參考資源 一般信息
本文中的命令和代碼在以下環(huán)境編譯執(zhí)行通過:
ibm xseriers 345(inter 32位)
redhat enterprise linux 3.0
db2 v8.1 for linux
主機(jī)連接一個ibm emp300 磁盤柜,用于數(shù)據(jù)庫數(shù)據(jù)存儲。磁盤柜共有6塊磁盤,單塊146gb,其中5塊做成raid5,剩余一塊做備用盤。
raid5中,校驗信息不單獨(dú)占用一個磁盤,而是根據(jù)算法平均分布在各個磁盤上,這樣避免了讀寫校驗信息產(chǎn)生的瓶頸。
假設(shè)在主機(jī)上已經(jīng)安裝好了一個db2服務(wù),創(chuàng)建了一個實例,名為db2,還未建立數(shù)據(jù)庫,并且磁盤柜已經(jīng)在系統(tǒng)下安裝好驅(qū)動程序,我們獲得的設(shè)備名為sdb,還未進(jìn)行分區(qū)。
下面分步介紹在磁盤陣列上建立raw設(shè)備并進(jìn)行數(shù)據(jù)規(guī)劃和數(shù)據(jù)放置的操作步驟:
規(guī)劃磁盤分區(qū)
以root登錄,對磁盤陣列進(jìn)行分區(qū),在root提示符下鍵入:
#fdisk /dev/sdb
新增3個主分區(qū)sdb1,sdb2,sdb3,每個分區(qū)20gb,分別劃分給系統(tǒng)目錄表空間、默認(rèn)的系統(tǒng)臨時表空間和新增的32kb的臨時表空間,
剩下空間約527gb全部劃分給第4個擴(kuò)展分區(qū)sdb4,在擴(kuò)展分區(qū)中增加5個邏輯分區(qū)sdb5,sdb6,sdb7,sdb8,sdb9,前兩個邏輯分區(qū)各160gb,用作表存儲的用戶表空間,第三個邏輯分區(qū)為20gb,用作專門放置索引的用戶表空間,余下的2個邏輯分區(qū)分別為80gb、93gb,這兩個邏輯分區(qū)使用ext3進(jìn)行格式化,用于存放日志和數(shù)據(jù)庫備份。
注意:sdb1-sdb7均未進(jìn)行格式化操作,準(zhǔn)備用作raw設(shè)備,由db2自行管理。
以下是分好區(qū)的磁盤狀態(tài):
disk /dev/sdb: 587.2 gb, 587257085952 bytes
254 heads, 63 sectors/track, 71677 cylinders
units = cylinders of 16002 * 512 = 8193024 bytes
device boot start end blocks id system
/dev/sdb1 1 2501 20010469+ 83 linux
/dev/sdb2 2502 5002 20010501 83 linux
/dev/sdb3 5003 7503 20010501 83 linux
/dev/sdb4 7504 71677 513456174 5 extended
/dev/sdb5 7504 27502 160011967+ 83 linux
/dev/sdb6 27503 47501 160011967+ 83 linux
/dev/sdb7 47502 50002 20010469+ 83 linux
/dev/sdb8 50003 60002 80009968+ 83 linux
/dev/sdb9 60003 71677 93411643+ 83 linux
創(chuàng)建raw設(shè)備
打算用作raw設(shè)備的各個邏輯分區(qū)db2不能夠直接使用,需要使用raw命令創(chuàng)建raw設(shè)備名:
在root提示符下鍵入:
# raw -a
查詢當(dāng)前已經(jīng)建立的raw設(shè)備名,目前為空,我們可以從第一個設(shè)備名用起,
在root提示符下鍵入:
# raw /dev/raw/raw1 /dev/sdb1 # 用于system catalog tablespace (4k)
# raw /dev/raw/raw2 /dev/sdb2 # 用于system temp tablespace (4k)
# raw /dev/raw/raw3 /dev/sdb3 # 用于system temp tablespace (32k)
# raw /dev/raw/raw5 /dev/sdb5 # 用于user tablespace1 (32k),存儲表
# raw /dev/raw/raw6 /dev/sdb6 # 用于user tablespace1 (32k),存儲表
# raw /dev/raw/raw7 /dev/sdb7 # 用于user tablespace2 (32k),存儲索引
至此,我們創(chuàng)建了6個raw設(shè)備名,用于交給db2直接管理,查看一下已經(jīng)創(chuàng)建的raw設(shè)備名的情況:
# raw -a
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw5: bound to major 8, minor 21
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7: bound to major 8, minor 23
如果想刪除一個raw設(shè)備名(例如/dev/raw/raw1),在root提示符下鍵入:
# raw /dev/raw/raw1 0 0
接著修改系統(tǒng)的初始化文件,添加如下行到 /etc/rc.d/sysinit 文件:
raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
raw /dev/raw/raw5 /dev/sdb5
raw /dev/raw/raw6 /dev/sdb6
raw /dev/raw/raw7 /dev/sdb7
這樣系統(tǒng)在下次啟動時,會重新建立需要的raw設(shè)備名。
默認(rèn)建立的raw設(shè)備擁有者是disk,必須讓數(shù)據(jù)庫實例的擁有者具有此設(shè)備的存取權(quán)限,在root提示符下鍵入:
# chown db2:disk /dev/raw/raw[1,2,3,4,5,6,7]
將db2用戶更改為7個裸設(shè)備的擁有者,至此,這些裸設(shè)備已經(jīng)可以為db2所引用。
創(chuàng)建數(shù)據(jù)庫
下面準(zhǔn)備使用以上raw設(shè)備創(chuàng)建一個名為newdb的數(shù)據(jù)庫,包含頁size為4kb系統(tǒng)目錄表空間、系統(tǒng)臨時表空間以及用戶表空間各一個;
然后新建頁size為8kb、16kb、32kb的緩沖池各一個;
刪除4kb的用戶表空間,新建2個32kb頁size的用戶表空間,用于用戶表的存儲;
新建一個32kb頁size的用戶表空間,用于存儲索引;
新建一個32kb頁size的系統(tǒng)臨時表空間;
我們將完成以上功能的腳本保存為newdb.sql,并通過如下方式執(zhí)行此腳本:
在root提示符下鍵入如下命令,轉(zhuǎn)到db2用戶下:
# su - db2
執(zhí)行上面的腳本:
$ db2 -td";" -f newdb.sql
至此數(shù)據(jù)庫創(chuàng)建完成。下載腳本代碼
規(guī)劃日志以及備份文件存儲
接下來,還需要規(guī)劃日志和數(shù)據(jù)庫備份的存儲,首先將用于日志和數(shù)據(jù)庫備份的分區(qū)進(jìn)行格式化(此過程花費(fèi)時間較長):
在root提示符下鍵入:
# mkfs.ext3 /dev/sdb8
# mkfs.ext3 /dev/sdb9
創(chuàng)建db2數(shù)據(jù)庫的目錄:
# mkdir /db2
# chown db2:db2 /db2
# su - db2
$ mkdir /db2/db2log
$ mkdir /db2/db2backup
$ exit
mount邏輯分區(qū)到目錄:
# mount /dev/sdb8 /db2/db2log
# mount /dev/sdb9 /db2/db2backup
更新數(shù)據(jù)庫的log文件路徑:
# su - db2
$ db2 connect to newdb
$ db2 update db cfg using newlogpath '/db2/db2log'
停頓數(shù)據(jù)庫使修改生效,使用defer參數(shù)繼續(xù)執(zhí)行已有的事務(wù),拒絕新的連接,停頓成功后發(fā)布激活數(shù)據(jù)庫的命令:
$ db2 quiesce db defer
$ db2 unquiesce db
$ exit
至此我們完成了利用raw設(shè)備進(jìn)行數(shù)據(jù)規(guī)劃和數(shù)據(jù)放置的任務(wù)。
額外信息
當(dāng)已經(jīng)在raw設(shè)備上創(chuàng)建容器之后,若沒有通過正常的步驟刪除表空間所在數(shù)據(jù)庫,也沒有直接刪除容器或者容器所在表空間,則再次利用這些raw設(shè)備時,db2會報錯:
the container is already in use
此時應(yīng)使用db2untag命令釋放container標(biāo)志,而采用重新對磁盤進(jìn)行分區(qū)或者格式化的操作是無濟(jì)于事的。
釋放已經(jīng)在raw設(shè)備raw1上建立的container標(biāo)志:
# su - db2
$ db2untag /dev/raw/raw1
參考資源
下載用于創(chuàng)建數(shù)據(jù)庫的腳本
ibm db2 開發(fā)者園地
http://www-900.ibm.com/developerworks/cn/dmdd/certify/index.shtml
ibm db2 信息中心
http://publib.boulder.ibm.com/infocenter/db2help/index.jsp
dbforums 論壇
http://dbforums.com/
《db2 udb v8.1 for linux, unix, windows 數(shù)據(jù)庫管理》george baklarz, bill wong 合著,機(jī)械工業(yè)出版社出版
《db2數(shù)據(jù)庫管理與應(yīng)用教程》莊濟(jì)誠 著,清華大學(xué)出版社出版