在DB2 UDB V8 1中使用裸 raw 裝置

2021-03-31 08:56:57 字數 4408 閱讀 6695

目錄一般資訊

規劃磁碟分割槽

建立raw裝置

建立資料庫

規劃日誌以及備份檔案儲存

額外資訊

參考資源

一般資訊

ibm xseriers 345(inter 32位)

redhat enterprise linux 3.0

db2 v8.1 for linux

主機連線乙個ibm e***00 磁碟櫃,用於資料庫資料儲存。磁碟櫃共有6塊磁碟,單塊146gb,其中5塊做成raid5,剩餘一塊做備用盤。

raid5中,校驗資訊不單獨占用乙個磁碟,而是根據演算法平均分布在各個磁碟上,這樣避免了讀寫校驗資訊產生的瓶頸。

假設在主機上已經安裝好了乙個db2服務,建立了乙個例項,名為db2,還未建立資料庫,並且磁碟櫃已經在系統下安裝好驅動程式,我們獲得的裝置名為sdb,還未進行分割槽。

下面分步介紹在磁碟陣列上建立raw裝置並進行資料規劃和資料放置的操作步驟:

規劃磁碟分割槽

以root登入,對磁碟陣列進行分割槽,在root提示符下鍵入:

#fdisk /dev/sdb

新增3個主分割槽sdb1,sdb2,sdb3,每個分割槽20gb,分別劃分給系統目錄表空間、預設的系統臨時表空間和新增的32kb的臨時表空間,

剩下空間約527gb全部劃分給第4個擴充套件分割槽sdb4,在擴充套件分割槽中增加5個邏輯分割槽sdb5,sdb6,sdb7,sdb8,sdb9,前兩個邏輯分 區各160gb,用作表儲存的使用者表空間,第三個邏輯分割槽為20gb,用作專門放置索引的使用者表空間,餘下的2個邏輯分割槽分別為80gb、93gb,這兩 個邏輯分割槽使用ext3進行格式化,用於存放日誌和資料庫備份。

注意:sdb1-sdb7均未進行格式化操作,準備用作raw裝置,由db2自行管理。

以下是分好區的磁碟狀態:

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

建立raw裝置

打算用作raw裝置的各個邏輯分割槽db2不能夠直接使用,需要使用raw命令建立raw裝置名:

在root提示符下鍵入:

# raw -a

查詢當前已經建立的raw裝置名,目前為空,我們可以從第乙個裝置名用起,

在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),儲存索引

至此,我們建立了6個raw裝置名,用於交給db2直接管理,檢視一下已經建立的raw裝置名的情況:

# 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裝置名(例如/dev/raw/raw1),在root提示符下鍵入:

# raw /dev/raw/raw1 0 0

接著修改系統的初始化檔案,新增如下行到 /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

這樣系統在下次啟動時,會重新建立需要的raw裝置名。

預設建立的raw裝置擁有者是disk,必須讓資料庫例項的擁有者具有此裝置的訪問許可權,在root提示符下鍵入:

# chown db2:disk /dev/raw/raw[1,2,3,4,5,6,7]

將db2使用者更改為7個裸裝置的擁有者,至此,這些裸裝置已經可以為db2所引用。

建立資料庫

下面準備使用以上raw裝置建立乙個名為newdb的資料庫,包含頁size為4kb系統目錄表空間、系統臨時表空間以及使用者表空間各乙個;

然後新建頁size為8kb、16kb、32kb的緩衝池各乙個;

刪除4kb的使用者表空間,新建2個32kb頁size的使用者表空間,用於使用者表的儲存;

新建乙個32kb頁size的使用者表空間,用於儲存索引;

新建乙個32kb頁size的系統臨時表空間;

我們將完成以上功能的指令碼儲存為newdb.sql,並通過如下方式執行此指令碼:

在root提示符下鍵入如下命令,轉到db2使用者下:

# su - db2

執行上面的指令碼:

$ db2 -td";" -f newdb.sql

規劃日誌以及備份檔案儲存

接下來,還需要規劃日誌和資料庫備份的儲存,首先將用於日誌和資料庫備份的分割槽進行格式化(此過程花費時間較長):

在root提示符下鍵入:

# mkfs.ext3 /dev/sdb8

# mkfs.ext3 /dev/sdb9

建立db2資料庫的目錄:

# mkdir /db2

# chown db2:db2 /db2

# su - db2

$ mkdir /db2/db2log

$ mkdir /db2/db2backup

$ exit

mount邏輯分割槽到目錄:

# mount /dev/sdb8 /db2/db2log

# mount /dev/sdb9 /db2/db2backup

更新資料庫的log檔案路徑:

# su - db2

$ db2 connect to newdb

$ db2 update db cfg using newlogpath '/db2/db2log'

停頓資料庫使修改生效,使用defer引數繼續執行已有的事務,拒絕新的連線,停頓成功後發布啟用資料庫的命令:

$ db2 quiesce db defer

$ db2 unquiesce db

$ exit

至此我們完成了利用raw裝置進行資料規劃和資料放置的任務。

額外資訊

當已經在raw裝置上建立容器之後,若沒有通過正常的步驟刪除表空間所在資料庫,也沒有直接刪除容器或者容器所在表空間,則再次利用這些raw裝置時,db2會報錯:

the container is already in use

此時應使用db2untag命令釋放container標誌,而採用重新對磁碟進行分割槽或者格式化的操作是無濟於事的。

釋放已經在raw裝置raw1上建立的container標誌:

# su - db2

$ db2untag /dev/raw/raw1

參考資源

公升級DB2 UDB V8 1到新版本Stinger

ibm db2的新版本stinger已經發布有一段時間了,從名字就可以嗅出火藥味,stinger,不知道是否真的能夠刺痛對手的神經。雖然作為乙個資料庫的使用者 乙個全部工作幾乎都與資料庫相關的人 的確應該關心自己所使用的軟體產品是否會有乙個更加光明的未來,但這似乎不用更多懷疑,把視線從冒著硝煙的戰場...

DB2 UDB V8 1管理學習筆記 三

正在看的db2教程是 db2 udb v8.1管理學習筆記 三 強制斷開已有連線,停止例項並刪除。db2idrop f instance name 用於在unix下遷移例項。db2imigr instance name 更新例項,用於例項獲得一些新的產品選項或修訂包的訪問權。db2iupdt ins...

db2locate函式 DB2中使用locate

db2中的like的使用是有限制的,它後面不能跟乙個變數或者是字段,因此,在儲存過程或sql語句中就不能like乙個變數或乙個字段。比如有兩個表a a,b,c,d b a,b,c,d 普遍的用法是 select from a where a.b like 張 此語句在任何資料庫都是通用的,但有時也遇...