markdown:
This action might not be possible to undo. Are you sure you want to continue?
DB2 Express-C
**Lòi nói dâu: DR. ARVIND KRISHNA
**
Môt cuôn sách cúa công dông dành cho công dông
KHÔNG CHÍ LÀ..DÜ LIÊU
Nhp môn H qun tr c s d liu DB2
1
Xuât bán lân dâu (tháng 11 nãm 2007)
Tài liêu này sú dung cho IBM DB2 Express-C phiên bán 9.1 vói hê diêu hành Linux,
UNIX và Windows
Bán quyên thuôc công ty IBM
Nhp môn H qun tr c s d liu DB2
2
Muc Luc
Thông cáo và Nhãn hiêu hàng hóa................................................................................... 7
Ai nên doc cuôn sách này?............................................................................................... 8
Câu trúc cua quyên sách này nhu thê nào?...................................................................... 8
Môt quyên sách do công dông làm và giành cho công dông........................................... 8
Tác gia và nhung nguoi dóng góp ................................................................................... 8
Loi cam on....................................................................................................................... 9
Loi cam on ban tiêng Viêt ............................................................................................. 10
Loi nói dâu..................................................................................................................... 12
Phân I – Tông quan và Cài dàt ....................................................................................... 13
Chuong 1 - DB2 Express-C là gì?................................................................................... 13
1.1 Tu do phát triên, triên khai và phân phôi…không có gioi han!............................... 13
1.2 Hô tro kÿ thuât ......................................................................................................... 14
1.3 Các máy chu DB2.................................................................................................... 14
1.4 Máy khách DB2....................................................................................................... 15
1.5 Tu do phát triên phân mêm ung dung...................................................................... 16
1.6 Phiên ban và ân ban DB2 (version and edition) ...................................................... 16
1.7 Chuyên sang ân ban DB2 khác ................................................................................ 17
1.8 Bao trì DB2 Express-C............................................................................................ 17
1.9 Môt sô phân mêm miên phí liên quan...................................................................... 17
1.9.1 DB2 Developer Workbench (công cu phát triên) ............................................. 17
1.9.2 DB2 9 Embedded Application Server (máy chu nhúng) ................................. 18
1.9.3 DB2 9 Net Search Extender (mo rông tìm kiêm trên mang) ............................ 18
1.9.4 Bô công cu bát dâu Rails cho DB2................................................................... 18
1.9.5 Bô công cu bát dâu Web 2.0 dành cho DB2..................................................... 18
Chuong 2 – Các tính nàng liên quan và các san phâm................................................. 19
2.1 Các tính náng bao hàm trong dáng ký su dung DB2 Express-C ............................. 20
2.1.1 Các chuong trình sua lôi ................................................................................... 20
2.1.2 Tính sán sàng cao và khôi phuc sau su cô (HADR) ......................................... 20
2.1.3 Kha náng tái tao du liêu (di trú du liêu)............................................................ 20
2.2 Các tính náng không có trong ban DB2 Express-C................................................. 21
2.2.1 Phân vùng co so du liêu.................................................................................... 21
2.2.2 Bô tâp trung kêt nôi........................................................................................... 21
2.2.3 Bô mo rông không gian dia lý .......................................................................... 22
2.2.4 Bô kiêm soát truy vân ....................................................................................... 22
2.3 Các san phâm có tra phí liên quan dên DB2. ........................................................... 22
2.3.1 DB2 Connect..................................................................................................... 22
2.3.2 WebSphere Federation Server .......................................................................... 22
2.3.3 WebSphere Replication Server ......................................................................... 23
Chuong 3 - Cài dàt DB2.................................................................................................. 24
3.1 Các diêu kiên truoc khi cài dát ................................................................................ 24
3.2 Quyên cài dát hê diêu hành...................................................................................... 24
3.3 Cài dát theo huong dân tung buoc........................................................................... 25
3.4 Cài dát hàng loat (Silent Install) .............................................................................. 28
Bài tâp nhanh #1: Cài dát DB2 Express-C và tao ra co so du liêu mâu........................ 30
Chuong 4 - Các công cu DB2.......................................................................................... 32
4.1 Trung tâm diêu khiên (Control Center) ................................................................... 33
4.2 Nhâp lênh truc tiêp................................................................................................... 36
4.3. Trình tro giúp SQL................................................................................................. 38
4.4 Trình bày nút Show SQL......................................................................................... 40
Nhp môn H qun tr c s d liu DB2
3
Bài tâp nhanh #2 - Tao môt CSDL moi voi Trung tâm diêu khiên .............................. 40
4.5 Tao kich ban............................................................................................................. 42
4.5.1 Các kich ban SQL............................................................................................. 42
4.5.2 Các kich ban voi hê diêu hành.......................................................................... 44
Bài tâp nhanh #3 – Tao môt kich ban cài dát cho co so du liêu EXPRESS.................. 45
4.6 Trung tâm tác vu (Task Center) ............................................................................... 48
4.6.1 Co so du liêu Tools Catalog ............................................................................. 48
4.7 Nhât ký..................................................................................................................... 49
4.8 Giám sát tình trang (health) ..................................................................................... 51
4.8.1 Trung tâm tình trang ......................................................................................... 51
Chuong 5 - Môi truòng cua DB2................................................................................... 54
5.1 Câu hình DB2 .......................................................................................................... 62
5.1.1 Các biên môi truong ......................................................................................... 63
5.1.2 Têp câu hình quan tri co so du liêu (dbm cfg).................................................. 63
5.1.3 Têp câu hình co so du liêu (db cfg) .................................................................. 65
5.1.4 Dáng ký lý lich DB2 (profile). .......................................................................... 66
5.2 Máy chu quan tri DB2.............................................................................................. 67
Phân II – Hoc DB2: Quan tri Co so dü liêu .................................................................. 68
Chuong 6 - Kiên trúc cua DB2 ....................................................................................... 68
6.1 Mô hình xu lý cua DB2 ........................................................................................... 68
6.2 Mô hình bô nho cua DB2......................................................................................... 69
6.3 Mô hình luu tru cua DB2......................................................................................... 70
6.3.1 Trang và pham vi .............................................................................................. 70
6.3.2 Vùng nho dêm................................................................................................... 70
6.3.3 Các không gian bang......................................................................................... 73
Chuong 7 – Kêt nôi máy khách DB2.............................................................................. 77
7.1 Tro giúp câu hình..................................................................................................... 77
7.1.1 Nhung cài dát bát buôc trên máy chu ............................................................... 77
7.1.2 Nhung cài dát cân thiêt trên máy khách............................................................ 79
7.1.3 Tao lý lich cho máy khách và máy chu............................................................. 82
Bài tâp nhanh #4 – Su dung Tro giúp thiêt lâp câu hình ............................................... 86
Chuong 8 - Làm viêc vói các dôi tuong dü liêu ............................................................ 88
8.1 So dô ........................................................................................................................ 88
8.2 Bang......................................................................................................................... 88
8.2.1 Kiêu du liêu....................................................................................................... 89
8.2.2 Côt khoá chính (Identity columns) ................................................................... 91
8.2.3 Các dô tuong tuân tu (Sequence object) ........................................................... 92
8.2.4. Các bang danh sách hê thông........................................................................... 92
8.2.5. Khai báo các bang tam thoi.............................................................................. 93
Bài tâp nhanh #5 - Khoi tao môt bang moi.................................................................... 94
8.3 Các khung nhìn (Views) .......................................................................................... 96
8.4 Các chi muc (Index)................................................................................................. 96
8.4.1 Tro giúp thiêt kê (Design Advisor)................................................................... 97
8.5 Tính toàn ven tham chiêu......................................................................................... 98
Chuong 9 – Công cu di chuyên dü liêu........................................................................ 100
9.1 Công cu EXPORT (xuât) ....................................................................................... 101
9.2 Công cu IMPORT (nhâp)....................................................................................... 102
9.3. LOAD (nap) .......................................................................................................... 102
9.4 Công cu db2move .................................................................................................. 104
9.5 Công cu db2look.................................................................................................... 104
Nhp môn H qun tr c s d liu DB2
4
Bài tâp nhanh #6 - Trích xuât DDL tu co so du liêu EXPRESS................................. 107
Chuong 10 – Bao mât co so dü liêu.............................................................................. 110
10.1 Dinh danh............................................................................................................. 111
10.2 Quyên han............................................................................................................ 112
10.3 Quyên quan tri co so du liêu DBADM................................................................ 114
10.4 Nhóm PUBLIC .................................................................................................... 115
10.5 Lênh GRANT và REVOKE................................................................................. 115
10.6 Kiêm tra viêc câp quyên và quyên....................................................................... 115
10.7 Xem xét quyên trên nhóm.................................................................................... 117
Bài tâp nhanh # 7: Cho phép và huy bo (phân quyên) quyên nguoi su dung. ............ 118
Chuong 11 – Sao luu và khôi phuc............................................................................... 121
11.1 Nhât ký co so du liêu ........................................................................................... 121
11.2 Các kiêu nhât ký................................................................................................... 122
11.3 Các kiêu ghi nhât ký............................................................................................. 122
11.3.1 Ghi tuân tu quay vòng................................................................................... 122
11.3.2 Nhât ký luu tru.............................................................................................. 123
11.4 Nhât ký co so du liêu tu Trung tâm diêu khiên.................................................... 123
11.5 Các tham sô cua nhât ký ..................................................................................... 124
11.6 Sao luu co so du liêu............................................................................................ 125
Bài tâp nhanh #8 - Lâp lich sao luu............................................................................. 127
11.7 Khôi phuc co so du liêu....................................................................................... 129
11.7.1 Các kiêu khôi phuc du liêu ........................................................................... 129
11.7.2 Khôi phuc co so du liêu................................................................................ 129
11.8 Các hoat dông khác voi BACKUP và RESTORE............................................... 130
Chuong 12 - Nhiêm vu bao trì ...................................................................................... 131
12.1 REORG, RUNSTATS, REBIND ........................................................................ 131
12.1.1 Lênh REORG................................................................................................ 131
12.1.2 Lênh RUNSTATS......................................................................................... 132
12.1.3 BIND/REBIND............................................................................................. 132
12.1.4 Các công viêc duy trì tu Trung tâm diêu khiên............................................. 133
12.2 Các lua chon bao trì ............................................................................................. 135
Bài tâp nhanh #9 – Câu hình viêc bao trì tu dông ....................................................... 137
Chuong 13 – Truy câp dông thòi và khóa................................................................... 139
13.1 Các giao dich........................................................................................................ 139
13.2 Truy câp dông thoi ............................................................................................... 140
13.3 Các vân dê khi không kiêm tra truy câp dông thoi .............................................. 141
13.3.1 Mât du liêu câp nhât ..................................................................................... 141
13.3.2 Doc voi không cam kêt ................................................................................. 142
13.3.3 Doc không láp lai .......................................................................................... 142
13.3.4 Doc thua........................................................................................................ 143
13.4 Các muc cô lâp..................................................................................................... 144
13.4.1 Doc voi không cam kêt ................................................................................. 144
13.4.2 On dinh con tro ............................................................................................. 144
13.4.3 Doc ôn dinh................................................................................................... 145
13.4.4 Doc láp lai ..................................................................................................... 145
13.4.5 So sánh các muc dô cô lâp du liêu................................................................ 145
13.4.6 Dát muc cô lâp.............................................................................................. 146
13.5 Khóa leo thang..................................................................................................... 147
13.6 Kiêm soát khóa .................................................................................................... 148
13.7 Cho khóa.............................................................................................................. 148
Nhp môn H qun tr c s d liu DB2
5
13.8 Vân dê khóa phu thuôc và phát hiên.................................................................... 149
13.9 Truy câp dông thoi và thuc tiên khóa tôt nhât ..................................................... 150
PHAN 3: HOC DB2 – PHÁT TRIEN UNG DUNG................................................... 152
Chuong 14 – Các thu tuc SQL PL................................................................................ 153
14.1 DB2 Developer Workbench................................................................................. 154
14.1.2 Tao môt thu tuc luu trong DWB................................................................... 154
14.2 Môt sô khái niêm vê thu tuc SQL PL .................................................................. 158
14.2.1 Câu trúc cua thu tuc ...................................................................................... 158
14.2.2 Nhung thuôc tính tùy chon cua thu tuc......................................................... 158
14.2.3 Các loai tham sô............................................................................................ 159
14.2.4 Chú thích trong thu tuc SQL PL................................................................... 159
14.2.5 Câu lênh ghép ............................................................................................... 160
14.2.6 Khai báo biên................................................................................................ 160
14.2.7 Câu lênh gán ................................................................................................. 160
14.3 Các con tro (cursor) ............................................................................................. 161
14.4 Diêu khiên luông.................................................................................................. 161
14.5 Goi thu tuc............................................................................................................ 162
14.6 Lôi và xu lý diêu kiên.......................................................................................... 163
14.7 SQL dông............................................................................................................. 165
Chuong 15 – Hàm nôi tuyên, hàm nguòi dùng dinh nghia, các hàm xu ký các su kiên
bây (Inline SQL PL, UDF, Triggers)............................................................................ 166
15.1 Hàm nôi tuyên SQL............................................................................................. 166
15.2 Bây su kiên (Triggers) ......................................................................................... 167
15.2.1 Các loai bây su kiên...................................................................................... 167
Bài tâp nhanh #10 - Khoi tao môt bây báng Trung tâm diêu khiên............................. 170
15.3 Hàm nguoi dùng dinh nghia (UDF).................................................................... 172
15.3.1 Hàm vô huong .............................................................................................. 172
15.3.2 Hàm bang...................................................................................................... 173
Bài tâp nhanh #11 - Khoi tao UDF su dung DB2 Developer Wordbench .................. 175
Chuong 16 – SQL/XML và XQuery ............................................................................ 176
16.1 Su dung XML voi các co so du liêu.................................................................... 176
16.2 Co so du liêu XML.............................................................................................. 177
16.2.1 co so du liêu hô tro XML ............................................................................. 177
16.2.2 Co so du liêu thuân XML............................................................................. 178
16.3 XML trong DB2................................................................................................... 178
16.3.1 Uu diêm cua công nghê pureXML trong DB2 9 .......................................... 179
16.3.2 Khái niêm co ban vê XPath .......................................................................... 181
16.3.3 Dinh nghia XQuery....................................................................................... 184
16.3.4 Chèn các tài liêu XML.................................................................................. 185
16.3.5 Truy vân du liêu XML.................................................................................. 188
16.3.6 Nôi (join) voi SQL/XML.............................................................................. 193
16.3.7 Nôi (Join) voi XQuery.................................................................................. 194
16.3.8 Các lênh câp nhât và xóa .............................................................................. 194
16.3.9 Chi muc XML............................................................................................... 195
Bài tâp nhanh #12 – SQL/XML và XQuery................................................................ 197
Chuong 17 – Phát triên vói Java, PHP và Ruby......................................................... 198
17.1 Phát triên ung dung báng Java............................................................................. 198
17.1.1 Trình diêu khiên JDBC kiêu 2 (type 2)......................................................... 198
17.1.2 Trình diêu khiên JDBC kiêu 4 ...................................................................... 199
17.2 Phát triên ung dung báng PHP............................................................................. 200
Nhp môn H qun tr c s d liu DB2
6
17.2.1 Lua chon kêt nôi DB2 cho PHP.................................................................... 200
17.2.2 Ung dung công nghê Zend Core dành cho IBM........................................... 201
17.3 Phát triên ung dung Ruby trên nên Rails ............................................................. 203
17.3.1 Bô công cu phát triên DB2 trên nên Rails .................................................... 203
A.1 Thêm thông tin vê mã các lôi................................................................................ 204
A.2 SQLCODE and SQLSTATE ................................................................................ 205
A.3 Nhât ký khai báo quan tri DB2 ............................................................................. 205
A.4 db2diag.log............................................................................................................ 206
A.5 Theo vêt CLI ......................................................................................................... 206
A.6 Khác phuc và sua lôi trong DB2........................................................................... 206
Các trang web .............................................................................................................. 207
Sách.............................................................................................................................. 208
Nhp môn H qun tr c s d liu DB2
7
Vê cuôn sách này
Thông cáo và Nhãn hiêu hàng hóa
Copyright IBM Corporation 2007
All right Reserved.
IBM Canada
8200 Warden Avenue
Markham, ON
L6G 1C7
Canada
Không duoc sao chép hoãc sú dung duói bât ky dang thúc nào hoãc dich sang ngôn
ngü khác toàn bô hoãc bât cú phân nào cúa tài liêu này mà không duoc su cho phép
truóc cúa nguòi giü bán quyên ó trên.
IBM không dám báo hay dai diên cho nhüng nôi dung duoc nêu ra ó dây và không chiu
trách nhiêm vê tính thuong mai hoãc tính hop lý cho bât kì muc dích nào. IBM cho rãng
mình không có trách nhiêm vói bât ky lôi nào trong tài liêu này. Thông tin trong tài liêu
này có thê thay dôi mà không cân báo truóc. IBM giành quyên duoc thay dôi và không
bãt buôc phái thông báo cho bât cú ai vê su thay dôi này. IBM không cam kêt nhüng
thông tin trong tài liêu này là mói nhât.
Các thông tin trong tài liêu này liên quan dên sán phâm không phái cúa IBM dã có duoc
qua các nhà cung câp sán phâm dó. IBM không kiêm tra các sán phâm dó và không
khãng dinh vê tính chính xác khi thuc hiên, tính tuong thích hoãc bât ky thãc mãc nào
liên quan dên sán phâm không phái cúa IBM. Các câu hói vê khá nãng cúa các sán
phâm không phái cúa IBM cân duoc gúi cho các nhà cung câp sán phâm dó.
IBM, biêu tuong IBM, DB2, DB2 Connect, DB2 Universal Database, i5/OS, pureXML,
WebSphere, và z/OS là nhãn hiêu hàng hóa dã dãng ký cúa tâp doàn IBM tai Mÿ, các
nuóc khác, hoãc cá hai.
Java và tât cá các nhãn hiêu Java là nhãn hiêu hàng hóa dãng ký cúa công ty Sun
Microsystem, Inc. tai Mÿ, các nuóc khác, hoãc cá hai.
Microsoft và Windows là nhân hiêu hàng hóa cúa tâp doàn Microsoft tai Mÿ, các nuóc
khác, hoãc cá hai.
Linux là nhãn hiêu dãng ký cúa Linus Torvalds tai Mÿ, các nuóc khác, hoãc cá hai.
Tên cúa công ty khác, sán phâm, hoãc dich vu có thê là nhãn hiêu dãng ký cúa ho.
Trích dân các sán phâm và dich vu cúa IBM trong tài liêu này không có nghïa là IBM dua
chúng dên tât cá các quôc gia mà IBM có hoat dông.
Nhp môn H qun tr c s d liu DB2
8
Ai nên doc cuôn sách này?
Quyên sách này giành cho bât ky ai dang làm viêc hoãc muôn làm viêc vói co só dü
liêu, nhu quán tri hê co só dü liêu (DBAs), nguòi phát triên úng dung, nhà tu vân, kiên
trúc phân mêm, giám dôc sán phâm, giáo viên và sinh viên.
Câu trúc cúa quyên sách này nhu thê nào?
Phân I, Tông quan và Cài dãt, giái thích ân bán DB2 Express-C là gì, giói thiêu ho sán
phâm DB2 và các chúc nãng, giúp dõ cài dãt và tao mói co só dü liêu, và khám phá các
công cu sãn có cúa DB2.
Phân II, Hoc DB2: Quán tri co só dü liêu, duoc thiêt kê dê ban làm quen vói môi truòng,
kiên trúc, kêt nôi tù xa, các dôi tuong dü liêu, chuyên dü liêu (nhâp và xuât dü liêu), an
toàn, sao luu và khôi phuc, truy câp dông thòi và khóa cúa DB2, và các công viêc báo trì
thông thuòng.
Phân III, Hoc DB2: Phát triên úng dung, bao gôm thú tuc, hàm do nguòi dùng dinh
nghïa, các bây su kiên, SQL/XML, XQuery, phát triên úng dung bãng Java, PHP và
Ruby.
Phu luc có các thông tin cân thiêt vê súa lôi.
Bài tâp ó dây là bài tâp nhanh, có ó hâu hêt các chuong, tât cá các têp cân thiêt dê thuc
hiên bài tâp này có thê tìm thây ó têp nén expressc_book_quicklabs.zip di kèm theo
sách này, hoãc së tìm thây ó trang web cúa IBM DB2 Express-C, dia chi
www.ibm.com/db2/express
Tài liêu cúa cuôn sách cüng duoc sú dung làm bài giáng cúa chuong trình “DB2 vói Ðai
hoc” (DB2 on Campus). Cuôn sách này cüng giúp ban chuân bi cho bài kiêm tra cúa
chuong trình “DB2 vói Ðai hoc”, chuong trình dây dú cúa nó bài hoc vói 16 giò trên lóp.
Ban có thê xem thêm thông tin vê chuong trình này ó trang DB2 Express-C, dia chi
www.ibm.com/db2/express/students.html.
Môt quyên sách do công dông làm và giành cho công dông
Ðôi ngü làm DB2 Express-C dã có sáng kiên làm quyên sách này dê cung câp miên phí
cho công dông. Viêt và chinh lý môt cuôn sách là viêc làm khó khãn. Muc dích cúa
chúng tôi là nôi dung cuôn sách së duoc duy trì và mó rông bãng viêc tham gia cúa
công dông DB2 Express-C. Nêu ban muôn dóng góp ý kiên, dóng góp nhüng nôi dung
mói dê nâng cao nôi dung hiên tai hoãc dich cuôn sách này sang ngôn ngü khác, làm
on gúi kê hoach thuc hiên vê dia chi db2x@ca.ibm.com vói tiêu dê “DB2 Express-C
book changes.”
Tác giá và nhüng nguòi dóng góp
Nhüng nguòi sau dây dã cung câp nôi dung và có các dóng góp có ý nghïa cho cuôn
sách này
Tên Ðon vi Chúc danh Tài liêu dóng góp Ngày
Raul F. Chong IBM GÐ chuong trình
“DB2 vói Ðai hoc”
Bán tháo tât cá các
chuong
Tháng 5 –
2007
Ian Hakes IBM Công dông DB2
Express-C
Xem lai và súa chüa Tháng 5, 6
– 2007
Rav Ahuja IBM GÐ sán phâm DB2 Xem lai, câp nhât và
trình bày cuôn sách
Tháng 7-10
- 2007
Nhp môn H qun tr c s d liu DB2
9
Lòi cám on
Chúng tôi chân thành cám on các cá nhân sau dây vói su tro giúp
- Ted Wasserman, Clara Liu và Paul Yip ó phòng thí nghiêm IBM Toronto, nguòi
dã phát triên úng dung trong khuôn khô cuôn sách này
- Don Chamberlin và Cindy Saracco vói các bài báo cúa ho vê XQuery dãng trên
developerWorks, và Matthía Nicola vói bài trình bày vê pureXML.
- Kevin Czap và Grant Hutchingson vói các tài liêu kÿ thuât vê phát triên DB2
- Katherine Boyachok vói thiêt kê bìa
- Susan Visser giúp dõ xuât bán cuôn sách này
Nhp môn H qun tr c s d liu DB2
10
Lòi cám on bán tiêng Viêt
Ðê có duoc bán dich tiêng Viêt này, rât nhiêu các ban sinh viên dã tham gia dich và hiêu
dính. Chúng ta tu hào rãng dây dúng là môt quyên sách do công dông và vì công dông.
Vì trình dô và thòi gian han chê, dù có thê còn nhiêu khiêm khuyêt, nhung rât mong các
ban dón nhân nó nhiêt tình và dóng góp ý kiên cho bán dich hoàn thiên hon. Hy vong
rãng các ban sinh viên së tiêp tuc chuyên dên công dông nhüng ân phâm mói, vói
chât luong chãc chãn tôt hon.
Danh sách sinh viên tham gia dich và hiêu dính:
Ho và tên Truòng
1 Bùi Thanh Son ÐH Bách Khoa Hà Nôi
2 Châu Uyên Minh Hoc viên Công nghê Buu chính Viên thông TPHCM
3 Ðãng Chiên Công Coltech Hà Nôi
4 Ðô Bá Lâm ÐH Bách khoa Hà Nôi
5 Ðô Tuân Anh
6 Ðô Tuân Anh ÐH Khoa hoc Tu nhiên, Tp HCM
7 Hà Thúy Hãng ÐH Khoa hoc Tu nhiên, Tp HCM
8 Hà Tuân Trung ÐH Bách Khoa Hà Nôi
9 Hà Tuân Trung
10 Hoàng Minh Hiên Truòng Ðai Hoc Công Nghê, VNU Hà Nôi
11 Huynh Hüu Hiêp Hoc Viên công nghê BCVT
12 Huynh Minh Tân ÐH Khoa Hoc Tu Nhien, Tp HCM
13 Lê Anh Ðúc ÐH Bách Khoa Hà Nôi
14 Lê Bá Trong ÐH Khoa hoc Tu nhiên, Tp HCM
15 Lê Huynh Công Tháo ÐH Công nghê Thông tin, Tp HCM
16 Lê Nguyên Thúy An ÐH Công nghê Thông tin, Tp HCM
17 Lê Thành Huy ÐH Cân Tho
18 Ngô Phi Thành Ðai hoc Duy Tân, Ðà Nãng
19 Nguyên Anh Khoa ÐH Khoa hoc Tu nhiên, Tp HCM
20 Nguyên Chiên Thãng ÐHBK Ðà Nãmg
21 Nguyên Hái Phong ÐH Bách Khoa Hà Nôi
22 Nguyên Hoàng Minh Quôc
23 Nguyên Hùng Thông ÐH Su pham Kÿ thuât, Tp. HCM
24 Nguyên Hüu Tho ÐH Khoa hoc Tu nhiên, Tp HCM
25 Nguyên Luong Son Ðai hoc Duy Tân, Ðà Nãng
26 Nguyên Minh Châu ÐH Khoa hoc Tu nhiên, Tp HCM
27 Nguyên Minh Tuân ÐH Bách khoa Hà Nôi
28 Nguyên Minh Tuân
29 Nguyên Ngoc Duy
30 Nguyên Ngoc Trí ÐH Su pham Kÿ thuât, Tp. HCM
31 Nguyên Thành Trung ÐH Bách khoa Hà Nôi
32 Nguyên Thê Phúc Ðai hoc Duy Tân, Ðà Nãng
33 Nguyên Thi Diêu Hãng ÐH Khoa hoc Huê
34 Nguyên Thi Hông Hà ÐH Bách Khoa Hà Nôi
35 Nguyên Thi Kim Phung
ÐH Công nghê Thông tin, Tp HCM
36 Vü Thi Lan Chi
ÐH Công nghê Thông tin, Tp HCM
37 Nguyên Trang
38 Nguyên Trung Hiêu ÐH Khoa hoc Tu nhiên, Tp HCM
39 Nguyên Vãn Nam ÐH Khoa hoc Huê
40 Nguyên Vãn Nam ÐH Khoa hoc Huê
Nhp môn H qun tr c s d liu DB2
11
41 Nguyên Xuân Truòng ÐH Khoa hoc Tu nhiên, Tp HCM
42 Pham Ngoc Huy Ðai hoc Công nghê-Ðai hoc quôc gia Hà nôi
43 Pham Thi Minh Hiên ÐH Bách khoa Ðà Nãng
44 Pham Vÿ Tuân
45 Quách Tiêu Thuân Trung tâm Công nghê Phân mêm - ÐH Cân Tho
46 Thái Quang Hòa ÐH Khoa hoc Huê
47 Thái Tuyên Ðai hoc Nông Lâm tp. HCM
48 Trân Anh Huy Ðai hoc Duy Tân, Ðà Nãng
49 Trân Thi Thúy Trinh ÐH Bách Khoa Ðà Nãng
50 Trân Vãn Tân ÐH Bách khoa Hà Nôi
51 Trân Vãn Tân
52 Trân Vuong Trung
53 Tuân Viêt
Nhp môn H qun tr c s d liu DB2
12
Lòi nói dâu
Sáng tao là su dôt phá cúa các tiên bô công nghê. Tai IBM, sáng tao dã tró thành côi
nguôn cúa su phát triên co só dü liêu. Là nguòi di tiên phong trong kÿ thuât quán tri dü
liêu trong nhüng nãm 60 và 70, chúng tôi tiêp tuc dua ra nhüng sáng tao công nghê vê
quán tri thông tin, biêu hiên bãng hàng nghìn dãng ký phát minh vê quán tri dü liêu cúa
nhüng nhà công nghê cúa IBM. Kêt quá là, môt sô các tô chúc lón nhât hành tinh ngày
nay dã tin tuóng vào các sán phâm cúa IBM nhu DB2 dê vân hành các giái pháp có nhu
câu cao nhât, quán tri nhüng dü liêu tôi quan trong cúa ho.
Tuy nhiên DB2 không chi dành cho các doanh nghiêp lón. Vói viêc dua ra bán DB2
Express-C, công nghê nôi tiêng DB2 dã sãn sàng cho các doanh nghiêp vùa và nhó - và
không bãt buôc phái mât chi phí! Mãc dù còn có các sán phâm miên phí hay các phân
mêm nguôn mó khác, DB2 Express-C trao cho ban súc manh duy nhât vuot trên tât cá
các lua chon cùng loai.
Có rât nhiêu sáng tao công nghê hiên diên trong DB2 Express-C. Môt sô trong chúng
nhãm vào khá nãng tiên tiên mói, môt sô khác lai huóng tói giám thiêu gánh nãng quán
tri, môt sô khác nüa lai cái thiên hiêu nãng, giám chi phí ha tâng. Chúng tôi së không
trình bày chúng ó dây, hy vong các ban së bi cuôn hút khi doc quyên sách này – chúng
tôi chi xin mô tá môt vân dê hóc búa nhât.
DB2 Express-C duoc xây dung trên nên công nghê “Viper”, nó là co só dü liêu lai dâu
tiên quán lý cá dü liêu quan hê và dü liêu XML duói dang bâm sinh. Ðiêu này làm cho
DB2 tró nên rât lý tuóng cho các xu huóng mói cúa úng dung SOA và Web 2.0 trong dó
các luông dü liêu XML là rât nhiêu. Không giông vói hê quán tri co só dü liêu cúa các
hãng thuong mai khác, DB2 Express-C không giói han dung luong dü liêu luu trü trong
co só dü liêu hay sô luong co só dü liêu ban có thê tao ra trong hê thông. Và tât nhiên,
nêu ban cân tro giúp hô tro tù IBM, ban chi cân nhân chuôt vào nút Help.
Cuôn sách này dùng dê giúp nhüng nguòi mói bãt dâu sú dung DB2 Express-C, nó së
giúp ban hiêu các khái niêm cúa DB2 và cho phép ban phát triên kÿ nãng quán tri cüng
nhu phát triên úng dung DB2. Kÿ nãng và su hiêu biêt nhân duoc tù cuôn sách này có
liên quan rât nhiêu dên các bán DB2 tiên tiên hon trên Linus, UNIX và Windows.
Mãc dù DB2 Express-C không phái là sán phâm mã nguôn mó, IBM chúng tôi vân rât tin
tuóng vào su hô tro và cô vü tù công dông. Tôi vui mùng duoc thây cuôn sách này do
các thành viên cúa công dông DB2 Express-C phát triên và phát hành miên phí cho
công dông. Tôi mong các ban câp nhât, làm giàu thêm kiên thúc cúa cuôn sách vói hiêu
biêt, kinh nghiêm cúa các ban, và giúp dich cuôn sách này sang các ngôn ngü khác,
nhu vây nhüng nguòi khác së có loi tù su hiêu biêt cúa ban.
Arvind Krishna
Phó chú tich, Co só dü liêu
Ban Quán tri thông tin, Nhóm phân mêm IBM
Nhp môn H qun tr c s d liu DB2
13
1
Phân I – Tông quan và Cài dåt
Chuong 1 - DB2 Express-C là gì?
DB2 Express-C là môt sán phâm thuôc dòng IBM DB2 – phân mêm máy chú dü liêu
quán lý cá dü liêu quan hê và dü liêu XML. DB2 Express-C là ân bán DB2 duoc dùng
miên phí, không han chê và dê sú dung. Chü C trong DB2 Express-C là viêt tãt cúa
Community (Công dông). Nghïa là công dông nhüng nguòi sú dung DB2 Express-C kêt
hop lai dê hô tro lân nhau cá truc tuyên và không truc tuyên. Công dông DB2 Express-C
bao gôm các cá nhân và các công ty thiêt kê, phát triên, triên khai, hay sú dung các giái
pháp co só dü liêu nhu:
• Các nhà phát triên úng dung có nhu câu vê môt phân mêm co só dü liêu chuân
mó dê xây dung các úng dung dôc lâp, dang khách-chú, dang nên web hoãc các
úng dung lón.
• ISVs – các nhà cung câp phân mêm dôc lâp, các nhà cho thuê phân cúng, co só
ha tâng hay nhüng nguòi cung câp giái pháp, muôn dóng gói môt máy chú dü
liêu vói dây dú tính nãng nhu là môt phân trong các giái pháp cúa ho.
• Nguòi cô vân, quán tri dü liêu, và kiên trúc su công nghê thông tin, nhüng nguòi
cân môt máy chú dü liêu manh dê tu hoc tâp, phát triên kÿ nãng, dánh giá hoãc
thú nghiêm.
• Các công ty mói thành lâp, vùa và nhó cân môt máy chú dü liêu tin cây cho công
viêc và úng dung cúa ho.
• Nhüng nguòi yêu thích co só dü liêu, say mê tìm hiêu công nghê muôn có môt
máy chú dü liêu dê sú dung dê xây dung úng dung Web 2.0 hay các úng dung
thê hê sau.
• Sinh viên, giáo viên hay nhüng hoc giá muôn có môt máy chú dü liêu linh hoat
dê giáng day, hoc tâp, nghiên cúu.
DB2 Express-C có dây dú các tính nãng co bán nhu các ân bán DB2 thuong mai trên
nên Linux, UNIX và Windows. DB2 Express-C có thê chay trên cá hê thông 32-bit hoãc
64-bit cúa Linux hay Windows. Nó duoc tôi uu cho các hê thông tôi da 2 bô xú lý, bô
nhó 4GB, và không yêu câu bât ky môt bô nhó chuyên dung hay các cài dãt hê thông
nào khác. DB2 Express-C cüng bao gôm pureXML, pureXML là môt công nghê dãc
trung cúa DB2 dùng dê luu trü và xú lý các vãn bán XML bâm sinh.
1.1 Tu do phát triên, triên khai và phân phôi…không có giói han!
Các tu tuóng côt lõi cúa DB2 Express-C gôm:
• Tu do phát triên: Nêu ban là nguòi phát triên úng dung và cân môt co só dü
liêu cho úng dung cúa mình, ban có thê sú dung DB2 Express-C.
Nhp môn H qun tr c s d liu DB2
14
• Tu do triên khai: Nêu ban dang làm viêc trong lïnh vuc sán xuât và cân môt co
só dü liêu dê luu trü các thông tin quan trong, ban có thê dùng DB2 Express-C.
• Tu do phân phôi: Nêu ban dang phát triên môt úng dung hay môt công cu cân
dóng gói vói môt máy chú dü liêu, ban cüng có thê dùng DB2 Express-C. DB2
Express-C miên phí ngay cá khi duoc dóng gói vào trong úng dung cúa ban,
duoc phân phôi môi khi ban bán úng dung cúa mình. Ban chi cân dãng ký vói
IBM dê tái phân phôi DB2 Express-C. Tât nhiên viêc dãng ký cüng hoàn toàn
miên phí.
• Không giói han: Trong khi các dôi thú canh tranh dua ra các giói han vê kích
thuóc co só dü liêu, nhung DB2 Express-C thì không dãt giói han nào cá. Co só
dü liêu cúa ban có thê duoc tiêp tuc mó rông mà không hê vi pham diêu khoán
sú dung. Cüng không có giói han nào vê sô luong kêt nôi hay sô nguòi sú dung
trên môi máy chú.
1.2 Hô tro kÿ thuât
Nêu ban có bât ky thãc mãc kÿ thuât nào vê DB2 Express-C, ban có thê dãng câu hói
cúa ban lên diên dàn cúa DB2 Express-C. Diên dàn này duoc diêu hành bói môt dôi
DB2 Express-C, nhung chính công dông së là nhüng nguòi giái dáp trên co só tu
nguyên. IBM cüng cho phép nguòi dùng mua bán quyên theo nãm vói giá thâp (còn
duoc goi là Bán quyên 12 tháng hay Bán quyên thòi han cô dinh FTL (Fixed Term
License)). Viêc mua này së cho phép nguòi dùng duoc hô tro kÿ thuât 24×7 cüng nhu
câp nhât phân mêm. Vói khoán phí thâp hãng nãm ($2,995 trên môt máy chú môt nãm ó
Mÿ - có thê thay dôi ó các nuóc khác) ban së duoc huóng các quyên loi vê hô tro và
báo trì phân mêm cho máy chú DB2 Express-C, ban cüng có thêm hai tính nãng nüa là:
tính sãn sàng phuc hôi sau khi gãp su cô (HARD - High Availability Disaster Recovery)
và di trú dü liêu truy vân (SQL replication - dê tái tao lai dü liêu vói các máy chú DB2
khác).
1.3 Các máy chú DB2
Tât cá các ân bán máy chú DB2 dêu có chung các thành phân lõi; Các ân bán này duoc
dóng gói thuân tiên dê nguòi sú dung có thê lua chon các tính nãng cân thiêt vói giá cá
hop lý. Hình 1.1 thê hiên su khác nhau giüa các ân bán cúa DB2.
Hình 1.1 - Các máy chú DB2
Nhu trên hình 1.1, ân bán DB2 Express-C cüng giông nhu ân bán DB2 Express chi thiêu
di môt sô thành phân. DB2 Express-C là hoàn toàn miên phí. Cüng nhu dã nói ó trên,
nguòi dùng luôn duoc sãn sàng hô tro kÿ thuât tù diên dàn, hoãc có thê nhân su hô tro
chính thúc 24x7 cúa IBM nêu trá phí 12 tháng.
Nhp môn H qun tr c s d liu DB2
15
Hình 1.1 cüng cho thây khá nãng nâng câp tù DB2 Express-C lên bât kì ân bán máy chú
DB2 nào khác, vì tât cá các máy chú DB2 dêu có chung thành phân lõi. Ðiêu này có
nghïa là tât cá các úng dung duoc phát triên trên môt ân bán vân së hoat dông trên các
ân bán khác mà không cân phái chinh súa. Và bât kì kÿ nãng nào ban hoc duoc tù môt
ân bán dêu áp dung duoc cho các ân bán khác.
1.4 Máy khách DB2
Môt máy khách DB2 bao gôm các chúc nãng cân thiêt dê kêt nôi vói máy chú DB2. Tuy
nhiên, không phái lúc nào cüng cân cài dãt môt máy khách DB2. Ví du, môt úng dung
JDBC (Java DataBase Connectivity) kiêu 4 có thê nôi thãng tói máy chú DB2, chi cân có
trình diêu khiên thích hop. Máy khách DB2 gôm nhüng loai sau:
• Máy khách DB2: dây dú nhât, bao gôm các công cu dô hoa, các trình diêu khiên.
• Máy khách DB2 runtime client: Có các chúc nãng co bán dê kêt nôi, cüng bao
gôm các trình diêu khiên.
• Máy khách DB2 runtime kêt hop Mô-dun cho Windows: duoc sú dung chú yêu
trên máy khách DB2 runtime nhu là môt phân cài dãt cho các úng dung cúa
Windows.
Hình 1.2 cho ta thây các máy khách khác nhau và các trình diêu khiên sãn có.
Hình 1.2 - Các máy khách DB2 và các trình diêu khiên
Trên phân bên trái cúa hình 1.2, tât cá các máy khách DB2 và trình diêu khiên duoc thê
hiên. Mãc dù tât cá các máy khách DB2 dêu bao gôm trình diêu khiên cân thiêt, trong
DB2 9 chúng tôi vân cung câp nhüng trình diêu khiên riêng biêt. Các máy khách DB2 và
các trình diêu khiên dêu miên phí và có thê duoc tái vê tù trang web DB2 Express-C.
Các máy khách và các trình diêu khiên có thê duoc sú dung dê kêt nôi dên máy chú
DB2 trên nên Linux, Unix, hoãc Windows. Ðê kêt nôi dên DB2 trên máy chú z/OS® hoãc
DB2 trên máy chú i5/OS®, ban cân phái thông qua máy chú kêt nôi DB2 (DB2 Connect
nãm ó giüa hình 2). Chúng ta së tháo luân vê phân mêm DB2 Connect trong Chuong 2.
Nhp môn H qun tr c s d liu DB2
16
1.5 Tu do phát triên phân mêm úng dung
DB2 tao ra môt môi truòng phát triên úng dung dua trên các chuân và trong suôt dôi vói
ho sán phâm DB2. Viêc sú dung SQL chuân trong các dòng sán phâm DB2 së cung câp
môt tâp các giao diên lâp trình úng dung (API) thông dung cho viêc truy nhâp co só dü
liêu.
Thêm vào dó, môi sán phâm DB2 cung câp các bô tiên-dich (pre-compiler) cho phép nhà
phát triên nhúng các câu lênh SQL tïnh và dông trong các chuong trình úng dung khá
chuyên. DB2 còn có môt sãn công cu quán lý .NET có thê tích hop vói các công cu
Microsoft® Visual Studio.
Các ngôn ngü và các chuân có thê duoc sú dung vói DB2 là:
• Ruby trên nên Rails
• C/C++(ODBC và SQL nhúng)
• JDBC và SQLJ
• COBOL
• Borland
• Python
• PHP
• Perl
• Ngôn ngü .NET
• OLE-DB
• ADO
• Dich vu Web (Web Service)
• SQL
• Microsoft Office: Excel, Access, Word
1.6 Phiên bán và ân bán DB2 (version and edition)
Nêu ban mói làm quen vói DB2, ban có thê bi bôi rôi môt chút vê su khác biêt giüa các
phiên bán DB2 (version) và các ân bán DB2 (edition).
Vài nãm môt lân, IBM công bô môt phiên bán mói cúa DB2. Môt phiên bán bao gôm các
tính nãng mói và dua nhüng cái tiên dáng kê vào sán phâm. Hiên tai, phiên bán DB2 8
và DB2 9 duoc hô tro chính thúc bói IBM. Môt phiên bán cüng có thê có môt vài lân
phát hành, có thê bao gôm môt vài chúc nãng mói nhung thông thuòng không dú rõ
ràng dê nói rãng dây là môt phiên bán mói. Ví du 8.1 và 8.2 là các lân phát hành vói
phiên bán DB2 8. Trong thòi gian vùa qua, IBM thuòng dua ra môt lân phát hành mói
cúa DB2 môi nãm môt lân, tuy nhiên nhüng phiên bán mói thuòng duoc dua ra cách
nhau tù 2-3 nãm. Lân phát hành mói nhât dên thòi diêm hiên tai, V9.1 (truóc dây duoc
goi là DB2 “Viper”) tró thành phiên bán chính thúc vào mùa hè nãm 2006. Khi cuôn sách
này duoc viêt (tháng 9/2007), lân phát hành tiêp theo (có tên là DB2 “Viper 2”) dã có
phiên bán beta. Môi lân phát hành cüng có thê chúa nhiêu múc chinh súa, thuòng chúa
nhüng phân vá lôi túc là tuong úng vói các chuong trình súa lôi (fixpack), và rât ít khi
chúa nhüng tính nãng mói. Tai thòi diêm này, phiên bán, phát hành, chinh súa (Version-
Release-Modification/ V-R-M) cúa DB2 là 9.1.2 tuong duong vói phiên bán 9.1 cùng vói
bô chuong trình súa lôi 2.
Trên môt nôi dung khác, các ân bán là nhüng lua chon hoãc nhóm các gói tính nãng
trong môi phiên bán. Nhu dã dê câp, môt ân bán là môt gói nhüng chúc nãng khác nhau
vói giá thành và bán quyên xác dinh. DB2 phiên bán 9 (cüng duoc biêt tói vói tên DB2
9) có nhiêu ân bán; ví du: DB2 express-C 9, DB2 Express 9, DB2 Workgroup 9, và DB2
Enterprise 9 (xem hình 1.1)
Nhp môn H qun tr c s d liu DB2
17
1.7 Chuyên sang ân bán DB2 khác
Khi co só dü liêu cúa ban cân mó rông, có thê ban së cân nâng câp ân bán DB2 hô tro
câu hình phân cúng lón hon. Nêu truòng hop này xáy ra, rât dê dàng dê nâng câp lên
môt ân bán khác cúa DB2:
• Nêu ban nâng câp lên môt ân bán DB2 khác trên cùng môt máy, cài dãt ân bán
DB2 mói dè lên DB2 Express-C, cùng vói bán quyên tuong úng. Co só dü liêu
cúa ban së không bi xóa (nhung chúng ta vân nên sao luu co só dü liêu truóc
khi nâng câp).
• Nêu ban nâng câp DB2 trên môt máy mói, lón hon và sú dung chung môt hê
diêu hành vói máy cü, hãy cài dãt ân bán DB2 mói trên máy mói, sao luu dü liêu
trên máy cü và khôi phuc lai nó trên máy mói. Ban cüng có thê luu các câu hình
trên máy cü (dbm cfg) và cài dãt câu hình này trên máy mói. Các lênh sao luu và
khôi phuc së duoc nói rõ hon trong Chuong 11 Sao luu và Khôi phuc, dbm cfg
së duoc nói rõ hon trong Chuong 5, Môi truòng DB2.
• Trong bât kì truòng hop nào, úng dung cúa ban dêu không phái súa chüa dê sú
dung DB2.
1.8 Báo trì DB2 Express-C
Nhu dã nói truóc dây, có hai lua chon hô tro cho DB2 Express –C:
1. Mua môt bán quyên 12 tháng. Ðiêu này së cung câp cho ban hô tro 24x7 tù bô
phân hô tro kï thuât cúa IBM, dông thòi còn cho ban khá nãng cài dãt các câp nhât
cúa DB2 (còn duoc goi là các chuong trình súa lôi fixpack).
2. Sú dung diên dàn công dông DB2 Express-C truc tuyên. Cách này hoàn toàn
miên phí, tuy nhiên ban së không có duoc su hô tro chính thúc nào tù IBM. Ðông
thòi, vói cách này, IBM không cam kêt cung câp nhüng chúc nãng mói và nhüng
bán vá lôi nhu thòi gian dã dinh. Ðinh nghïa vê môt chuong trình súa lôi, duoc nói
dên trong Chuong 2, cüng së không có ý nghïa ó dây, thay vì vây môt bán cài dãt
mói cúa DB2 Express-C së duoc cüng câp trên trang web cho các nguòi dùng tái
vê. Khi IBM dua ra bât kì su chinh súa mói nào trong DB2, ban có thê tìm thây bán
cài dãt mói này và thay thê cho bán DB2 cü ban dang dùng.
1.9 Môt sô phân mêm miên phí liên quan
Tât cá các phân mêm có thê duoc tái tù trang tái phân mêm cúa DB2 Express-C
(www.ibm.com/db2/express/download.html) dêu là phân mêm miên phí. Bên canh
nhüng bán DB2 Express-C (cho Linux và Windows, cá kiên trúc 32 và 64 bit), còn có
nhüng phân mêm hüu dung có thê duoc tái và sú dung miên phí nhu:
• DB2 Developer Workbench
• DB2 9 Embedded Application Server
• DB2 9 Net Search Extender
Ngoài ra ban có thê tái vê bô công cu khói dâu dua trên DB2 Express-C tù trang web
IBM Alphaworks (www.alphaworks.ibm.com/datamgmt). Bô công cu này bao gôm:
• Starter toolkit for DB2 on Rails
• Web 2.0 Starter Toolkits for DB2
1.9.1 DB2 Developer Workbench (công cu phát triên)
DB2 Developer Workbench (DBW) là môt môi truòng phát triên tích hop manh (IDE) cho
phép ban tao ra, súa chüa, gõ rôi, triên khai và kiêm tra các thú tuc duoc luu trü SQL
PL và Java, cüng nhu các hàm do nguòi dùng dinh nghïa (User defined function UDFs),
các úng dung SQLJ, khói tao và thuc thi các câu lênh SQL và các truy vân XML. Công
Nhp môn H qun tr c s d liu DB2
18
cu này dua trên Eclipse IDE và thay thê IBM Development Center cúa các phiên bán
DB2 truóc dây. Chúng ta së tháo luân DBW trong chuong 14, Các thú tuc luu trü SQL
PL.
1.9.2 DB2 9 Embedded Application Server (máy chú nhúng)
Embedded Application Server cho phép ban chay các úng dung Web duoc hô tro vói
DB2 phiên bán 9.1 mà không yêu câu ban phái mua thêm môt máy chú úng dung riêng
biêt. Các úng dung Web duoc hô tro vói DB2 phiên bán 9.1 bao gôm:
• Các công cu Web DB2 dành cho nguòi quán tri co só dü liêu nên web.
• DB2WebServer, môt úng dung tu dông triên khai các dich vu web .NET tù
Microsoft Visual Studio dên DB2 Embedded Application Server..
1.9.3 DB2 9 Net Search Extender (mó rông tìm kiêm trên mang)
Vói DB2 9 Net Search Extender ban có thê thuc thi nhanh và chi tiêt các tìm kiêm nôi
dung vãn bán (full-text), bao gôm bât cú tài liêu XML nào duoc luu trü bâm sinh trong
DB 9.1
1.9.4 Bô công cu båt dâu Rails cho DB2
Bô công cu bãt dâu Rail cho DB2 là môt tâp các sán phâm và công nghê duoc dóng gói
tiên loi cho phép tao ra nhanh chóng môt môi truòng dê xây dung các úng dung Web
DB2 sú dung công nghê Ruby trên nên Rails. Tât cá các phân mêm duoc yêu câu bao
gôm: DB2 Express-C, trình diêu khiên DB2 cho Ruby, bô thích nghi (adapter) DB2 vói
Rails, bên canh dó là các huóng dân, ví du, và nhüng tài liêu hoc tâp khác. Chúng ta së
tháo luân Ruby trên nên Rails ó Chuong 17, Su phát triên trong Java, PHP và Ruby.
1.9.5 Bô công cu båt dâu Web 2.0 dành cho DB2
Bô công cu bãt dâu Web 2.0 dành cho DB2 là môt cách dê dàng dê bãt dâu vói DB2,
PHP và Dojo. Nó giúp cho ban triên khai các yêu câu phân mêm, cung câp cho ban các
bài huóng dân và các bán úng dung trình diên (demo). Hai trong sô các úng dung trình
diên là Atom Feed Control Panel, nó khói tao các Atom lây tù các báng DB2, và Web
Services Control Panel tao ra các bao phú dich vu Web REST xung quanh các báng
DB2 cúa ban. Cá hai úng dung dêu dua trên Dojo hô tro dây dú khá nãng nôi bât cúa
Ajax và khá nãng mó rông.
Nhp môn H qun tr c s d liu DB2
19
2
Chuong 2 – Các tính nång liên quan và các sán phâm
Chuong này mô tá các tính nãng cúa DB2 di kèm trong viêc mua giây phép sú dung 12
tháng cúa DB2 Express-C. Ngoài ra còn môt sô tính nãng khác không có trong DB2
Express-C, nhung là môt phân cúa nhüng ân bán DB2 khác, trong truòng hop có trá
thêm phí.
Nhüng tính nãng có trong DB2 Express-C có bán quyên 12 tháng
• Bô chuong trình súa lôi (Fixpacks)
• Tính sãn sàng cao và Khôi phuc sau su cô (High Availability and Disaster
Recovery- HADR )
• Di trú dü liêu (SQL hop nhât)
Nhüng tính nãng không có mãt trong DB2 Express-C nhung có mãt trong các ân bán
DB2 khác là:
Các tính nãng cúa ân bán DB2 Enterpirse có phí:
• Tính nãng phân tán co só dü liêu (DPF)
• Tính nãng tôi uu hóa luu trü dü liêu (kê cá nén)
• Ðiêu khiên truy nhâp múc cao (an toàn múc cao và duoc chia nhó tôt)
• Tôi uu su thuc thi (kiêm soát các truy vân, chuyên nghiêp trong thuc thi)
• Quán lý dü liêu do dac
• Su liên kêt hop nhât dü liêu DB2
DB2 Enterprise cüng bao gôm nhüng tính nãng duoc thêm vào miên phí nhu
• Phân tán báng (pham vi)
• Các báng truy vân duoc cu thê hóa (Materializated Query Tables MQT)
• Kÿ thuât bó da chiêu (Multi-dimensional Clustering - MDC)
• Tính sãn sàng cao và khá nãng phuc hôi sau su cô (HADR)
• Bô tâp trung kêt nôi (Connection Concenstrator)
Các tính nãng cúa ân bán DB2 Workgroup và Express có phí
• Tính sãn sàng cao
• Quán lý công viêc (Bô tâp trung kêt nôi, bô kiêm soát truy vân)
• Tôi uu hiêu nãng (MQT, MDC, truy vân song song)
• Su liên kêt hop nhât dü liêu DB2
Các sán phâm có phí có liên quan tói DB2:
• DB2 Connect
• WebSphere® Federation Server - Máy chú nhóm WebSphere
• WebSphere Replication Server - Máy chú di trú WebSphere
Nhp môn H qun tr c s d liu DB2
20
2.1 Các tính nång bao hàm trong dång ký sú dung DB2 Express-C
Phân này diêm qua các chuong trình súa lôi DB2, su di trú HADR và SQL.
2.1.1 Các chuong trình súa lôi
Môt chuong trình súa lôi DB2 là môt tâp các súa lôi duoc áp dung cho môt sán phâm
DB2 dã duoc cài dãt, nhãm muc tiêu súa các vân dê khác nhau duoc báo cáo sau khi
sán phâm duoc phát hành. Vói môt dãng ký sú dung có bán quyên, các chuong trình
súa lôi có thê duoc tái xuông và cài dãt miên phí. Chúng thuòng duoc dua ra ba tháng
môt lân.
Ðê tái chuong trình súa lôi mói nhât, xem trang hô tro kÿ thuât cúa DB2 tai dia chi
http://www.ibm.com/software/data/db2/support/db2_9/
2.1.2 Tính sån sàng cao và khôi phuc sau su cô (HADR)
Tính sãn sàng cao và khôi phuc sau su cô là dô tin cây cúa dü liêu, nó cung câp môt
giái pháp sãn sàng và khôi phuc sau su cô cho su suy sup toàn phân hoãc môt phân.
Môt môi truòng HADR thông thuòng bao gôm hai máy chú dü liêu, máy chú chính và
phu (có thê duoc dãt tai nhüng noi khác nhau). Máy chú chính là noi co só dü liêu gôc
duoc luu trü và truy câp bói các trình úng dung tai máy khách. Trong khi các giao dich
duoc tiên hành trên co só dü liêu chính, các bán ghi nhât ký dü liêu duoc chuyên tu
dông dên máy chú thú câp (máy chú phu) thông qua hê thông mang. Máy chú thú câp
có môt bán sao cúa co só dü liêu chính, thuòng duoc tao ra bãng cách sao luu co só
dü liêu chính và khôi phuc nó tai hê thông thú câp. Khi các bán ghi nhât ký dü liêu duoc
nhân vê, chúng duoc thuc thi lai và áp dung cho co só dü liêu thú hai.Thông qua viêc
thuc hiên lai các bán ghi nhât ký này, co só dü liêu thú hai duoc dông bô hóa vói co só
dü liêu chính và có thê thay thê co só dü liêu chính nêu có su cô xáy ra.
Môt giái pháp HADR hô tro DB2 dây dú cung câp cho ban:
» Khá nãng phuc hôi cuc nhanh, trong suôt tuyêt dôi vói khách hàng và các úng
dung tai máy tram
» Giao dich dây dú tùng thành phân nhó dê tránh mât mát dü liêu
» Khá nãng nãng câp hê thông hoãc nâng câp úng dung mà không gây ngãt quãng
dôi vói dich vu
» Khá nãng thay thê hê thông tù xa, cung câp khã nãng phuc hôi dây dú cho dia
diêm bi su cô
» Quán tri dê dàng vói các công cu dô hoa cúa DB2
» Tât cá các khá nãng trên có ánh huóng không dáng kê vói hiêu nãng tông thê
cúa hê thông
2.1.3 Khá nång tái tao dü liêu (di trú dü liêu)
Tính nãng này cho phép tái tao dü liêu giüa máy chú nguôn noi các thay dôi dü liêu
duoc ghi lai, và môt máy chú dích noi các thay dôi dü liêu duoc áp dung. Hình 2.1 cung
câp tông quan vê cách tái tao dü liêu.
Nhp môn H qun tr c s d liu DB2
21
Hình 2.1 – Khôi phuc SQL
Trong hình 2.1 có hai máy chú, môt máy chú nguôn và môt máy chú dích. Trên máy chú
nguôn, môt chuong trình “chup” ghi nhân lai các thay dôi dôi vói co só dü liêu. Trên
máy chú dích, môt chuong trình “áp dung” thuc hiên các thay dôi cho co só dü liêu nhu
thât. Khá nãng tái tao dü liêu hüu dung cho rât nhiêu muc dích cân dên dü liêu duoc tái
lâp, bao gôm giám tái dung luong truyên, nap dü liêu vào các kho chúa dü liêu hay các
“cho” dü liêu (data marts), và kiêm tra lich sú thay dôi. Sú dung tính nãng tái tao dü liêu,
ban có thê tái tao dü liêu giüa DB2 Express-C và các máy chú DB2 khác, bao gôm cá
nhüng máy sú dung các hê thông khác nhu Linux, UNIX, z/OS và i5/OS.
2.2 Các tính nång không có trong bán DB2 Express-C
Phân này miêu tá môt vài tính nãng có trong các bán DB2 khác mà không trong DB2
Express-C
2.2.1 Phân vùng co só dü liêu
Tính nãng phân vùng co só dü liêu (DPF) chi có trong ân bán DB2 Enterprise vói môt
múc phí dãng ký bô sung. Nó cho phép các co só dü liêu có thê duoc trái ra trên nhiêu
phân vùng khác nhau, dãt trên nhiêu máy tính. DPF dua trên kiên trúc không chia sé
(share-nothing architecture). Môi máy tính, do duoc thêm vào nhóm phân vùng, mang
theo súc manh xú lý dü liêu vói CPU và bô nhó cúa chúng. DPF dãc biêt hüu dung
trong môi truòng máy chú co só dü liêu lón nhu các kho chúa dü liêu noi mà các truy
vân cúa hê tro giúp quyêt dinh (DSS) duoc thuc thi.
2.2.2 Bô tâp trung kêt nôi
Bô tâp trung kêt nôi là tính nãng cho phép hô tro môt luong lón nguòi dùng kêt nôi tai
môt thòi diêm. Truóc dây, môi kêt nôi co só dü liêu cân dên môt tác tú (agent) co só dü
liêu. Bô tâp trung kêt nôi giói thiêu khái niêm tác tú lô-gic, cho phép môt tác tú xú lý
nhiêu kêt nôi. Các tác tú duoc bàn dên kÿ hon trong chuong 6, kiên trúc DB2.
Nhp môn H qun tr c s d liu DB2
22
2.2.3 Bô mó rông không gian dia lý
Bô mó rông không gian dia lý cúa DB2 tôn tai nhu môt lua chon có phí cho ân bán DB2
Enterprise. Phân mó rông này làm viêc phát triên cho các úng dung chính phú diên tú
hoãc các úng dung có qui trình nghiêp vu yêu câu phân tích các vi trí dia lý duoc dê
dàng hon. Bô mó rông không gian dia lý cúa DB2 có thê câu thành môt thê giói dia lý áo
vói bât ky tý lê nào. Hâu hêt các thông tin vi trí duoc thu thâp sú dung các hê thông toàn
câu, nhu hê thông dinh vi vê tinh toàn câu (GPS), và có thê duoc thê hiên trong hê kinh
dô/vï dô. Các dü liêu kinh doanh, nhu dia chi, có thê duoc chuyên dôi thành toa dô kinh
tuyên/vï tuyên nhò bô mó rông không gian cúa DB2 (DB2 Spatial Extender) và các
chuong trình úng dung doanh nghiêp làm viêc tôt hon khi chúng luu trü dü liêu theo
dinh dang này, dê phép chiêu tuong úng lên bán dô duoc thông nhât ó các úng dung
khác nhau: lóp trình bày, dê hiên thi và in các bán dô.
2.2.4 Bô kiêm soát truy vân
Bô kiêm soát truy vân cúa DB2 là môt hê thông quán lý truy vân manh, có thê diêu khiên
luông các truy vân tói co só dü liêu DB2 cúa ban. Nó cho phép ban diêu chinh lai khôi
luong công viêc cúa truy vân dü liêu, do dó các truy vân nhó và có múc uu tiên cao có
thê chay nhanh chóng, dám báo các tài nguyên hê thông duoc sú dung hiêu quá.
2.3 Các sán phâm có trá phí liên quan dên DB2.
2.3.1 DB2 Connect
DB2 Connect là môt phân mêm dua trên viêc trá phí cho phép môt máy khách DB2
Linux, UNIX hay Windows kêt nôi dên môt máy chú DB2 z/OS hay DB2 i5/OS nhu trong
hình 2.2. DB2 Connect không duoc yêu câu trong quá trình liên kêt theo chiêu nguoc
lai, khi ban kêt nôi tù DB2 z/OS hay DB2 i5/OS dên môt máy chú DB2 Linux, UNIX hay
Windows. DB2 Connect có trong hai ân bán chính tùy theo su kêt nôi mà ban cân: DB2
Connect Personal Edition và DB2 Connect Enterprise Edition.
Hình 2.2. DB2 Connect
2.3.2 WebSphere Federation Server
Ðuoc biêt dên truóc dây là WebSphere Infomation Integrator (hô tro tích hop thông tin),
WebSphere Federation Server cho phép su liên kêt hop nhât các co só dü liêu, diêu
này nghïa là ban có thê chay các truy vân co só dü liêu trên nhiêu dôi tuong tù các hê
thông co só dü liêu quan hê khác nhau. Ví du nêu ban mua WebSphere Federation
Server ban có thê chay truy vân duói dây:
Nhp môn H qun tr c s d liu DB2
23
SELECT *
FROM Oracle.Table1 A
DB2.Table2 B
SQLServer.Table3 C
WHERE
A.col1 < 100
And B.col5 = 1000
and C.col2 = ’Test’
Hình 2.3 cung câp su giói thiêu vê khá nãng sú dung cúa WebSphere Federation Server
Hình 2.3 - WebSphere Federation Server
Ðôi vói các hê thông quán lý co só dü liêu quan hê thuôc ho IBM, su hô tro liên kêt hop
nhât dã duoc xây dung sãn trong DB2 Express-C. Ðiêu này nghïa là WebSphere
Federation Server không cân duoc dòi hói., ví du khi ban muôn chay môt truy vân giüa
hai co só dü liêu DB2 khác nhau, hoãc giüa môt co só dü liêu DB2 và môt co só dü
liêu Informix® (Infomix là môt phân trong ho IBM).
2.3.3 WebSphere Replication Server
Ðuoc biêt truóc dây là WebSphere Infomation Integrator (hô tro tích hop thông tin).
WebSphere Replication Server cho phép su tao lai SQL trong các bán ghi co só dü liêu
khi các máy chú không phái cúa IBM tham gia vào. Nó cüng bao gôm môt tính nãng
duoc biêt dên là Q-Replication cho su tái tao dü liêu sú dung các hàng doi thông diêp.
Nhp môn H qun tr c s d liu DB2
24
3
Chuong 3 - Cài dåt DB2
Ðê cài dãt ân bán DB2 Express-C cho Linux hay Windows, dám báo rãng các hê thông
cúa ban thóa mãn các diêu kiên truóc khi cài dãt.
3.1 Các diêu kiên truóc khi cài dåt
Ó khía canh phiên bán hê diêu hành, DB2 Express-C có thê duoc sú dung trên Linux
hay Windows 2000, XP, Vista. Kiên trúc bô xú lý duoc yêu câu là 32 bít, 64 bít và
PowerPC (Linux). Nêu ban cân chay DB2 trên môt nên khác (giông nhu UNIX), ban nên
mua môt trong nhüng ân bán máy chú dü liêu khác dã duoc nói dên truóc dây trong
quyên sách này. Các diêu kiên cúa hê diêu hành truóc khi cài dãt cho tât cá các ân bán
DB2 cüng duoc miêu tá trong tài liêu này.
http://www.ibm.com/software/data/db2/udb/sysregs.html
Trong khía canh vê các tài nguyên phân cúng, DB2 Express-C duoc tôi uu hóa cho các
hê thông lên tói 2 CPU vât lý và 4GB RAM. Các hê thông này có thê là các hê thông vât
lý hay các hê thông áo duoc tao ra bói su phân tán hoãc viêc chay các phân mêm máy
áo. Ban có thê dï nhiên chay nó trong các hê thông nhó hon nêu ban muôn, ví du trong
các hê thông don CPU vói 1GB RAM.
Ðê có duoc nhüng thông tin mói nhât vê các diêu kiên cúa phân cúng truóc khi cài dãt
DB2 Express-C, hãy xem trên trang web DB2 Express-C.
http://www.ibm.com/software/data/db2/udb/db2express/getstarted.html
3.2 Quyên cài dåt hê diêu hành
Ðê cài dãt DB2 Express-C trên Linux hay Windows, ban phái là môt nguòi sú dung hê
diêu hành có dú quyên.
Vói Linux: ban cân phái là root (superuser) dê cài dãt DB2 Express-C.
Vói Windows, tài khoán nguòi sú dung phái thuôc vê nhóm Quán tri trên máy mà ban
së thuc hiên cài dãt. Môt cách khác, môt tài khoán nguòi dùng không thuôc nhóm Quán
tri có thê duoc sú dung, vói diêu kiên là môt thành viên thuôc nhóm Quán tri Windows
dâu tiên câu hình các thiêt lâp nâng quyên Windows dê cho phép môt tài khoán nguòi
dùng không thuôc nhóm Quán tri có thê thuc thi cài dãt.
Vói các tài khoán miên (domain) Windows, dê xác thuc dinh danh (ID) cúa nguòi dùng
trên máy chú DB2, ID cúa nguòi tiên hành cài dãt phái thuôc nhóm Quán tri tai miên
(domain) mà các tài khoán này së duoc tao. Có thê sú dung tài khoán sãn có (built-in)
trên hê thông dê tiên hành cài dãt.
Tài khoán nguòi dùng cüng phái có quyên “Truy câp máy tính này qua mang”
Nhp môn H qun tr c s d liu DB2
25
3.3 Cài dåt theo huóng dân tùng buóc
Có rât nhiêu cách dê tiên hành cài dãt DB2 Express-C, nhung don gián nhât là sú dung
cách cài dãt theo huóng dân tùng buóc dua trên giao diên dô hoa cúa DB2. Sau khi tái
và giái nén DB2 Express-C, ban có thê tiên hành cài dãt nhu sau :
• Windows: chay têp setup.exe trong thu muc EXP/image.
• Linux: chay lênh db2setup trong thu muc exp/disk1.
Viêc cài dãt DB2 Express-C theo huóng dân cài dãt tùng buóc rât don gián. Thông
thuòng, ban chi viêc sú dung các thiêt lâp mãc dinh, vì vây, tât cá các viêc cân làm là
châp nhân diêu khoán sú dung, nhân liên tuc nút “Next” rôi nhân “Finish”. Quá trình cài
dãt së kêt thúc sau vài phút và ban có thê bãt dâu sú dung DB2.
Trên hình 3.1 là cúa sô bãt dâu cài dãt DB2 (DB2 Setup Launchpad), ban nên chon
“Install New” dê cài dãt môt bán sao mói cúa DB2 lên hê thông.
Hình 3.1 – Båt dâu cài dåt DB2 (DB2 Setup Launchpad)
Nhp môn H qun tr c s d liu DB2
26
Sau khi châp nhân diêu khoán sú dung, thông thuòng ban nên chon kiêu cài dãt
“Typical” (mãc dinh) nhu trên hình 3.2.
Hình 3.2 – Các kiêu cài dåt
Trong hình 3.3, ban có các lua chon dê cài dãt sán phâm, tao môt têp biên bán
(response file), hoãc cá hai. Các têp biên bán së duoc tháo luân trong muc 3.4, Cài dãt
hàng loat (Silent Install). Sú dung tùy chon mãc dinh (Cài dãt IBM DB2 Express Edition
trên máy tính này và luu các thiêt lâp ra têp biên bán) là dú.
Nhp môn H qun tr c s d liu DB2
27
Hình 3.3 – Lua chon cài dåt
Trong vài màn hình tiêp theo, hãy chon giá tri mãc dinh cho dên khi ban gãp màn hình
nhu trong hình 3.4. Trong màn hình này ban có thê nhâp vào môt nguòi dùng dã có dê
làm viêc vói bán cài dãt DB2 này (instance) cüng nhu các dich vu khác. Nguòi dùng này
phái nãm trong danh sách Quán tri (Local Administrator) cúa Windows. Nêu nhu ID cúa
nguòi dùng ban nhâp vào không tôn tai, môt nguòi dùng mói së duoc thêm vào nhóm
Quán tri. Ban có thê dê trông “domain” nêu nhu nguòi dùng ban nhâp vào không thuôc
vào môt miên nào dó. ID nguòi dùng mãc dinh duoc tao ra trong windows là db2admin,
trong Linux là db2inst1.
Nhp môn H qun tr c s d liu DB2
28
Hình 3.4 - Nhâp thông tin nguòi dùng cho bán DB2 måc dinh.
Cuôi cùng trong hình 3.5, cài dãt theo huóng dân tùng buóc së hiên thi môt danh sách
tông kêt nhüng phân nào së duoc cài dãt cüng nhu môt vài thông tin, thiêt lâp do ban
nhâp vào. Khi ban nhân “Finish”, quá trình cài dãt DB2 vào hê thông cúa ban bãt dâu.
Hình 3.5 - Danh sách tông kêt nhüng phân së duoc cài
3.4 Cài dåt hàng loat (Silent Install)
Trong nhiêu truòng hop ban cân phái cài dãt máy khách DB2 trên nhiêu máy tính khác
nhau. Hoãc máy chú dü liêu DB2 là môt phân trong úng dung ban xây dung và ban
Nhp môn H qun tr c s d liu DB2
29
muôn quá trình cài dãt DB2 là môt phân cúa quá trình cài dãt chung toàn bô úng dung
dó. Khi dó, cài dãt hàng loat là phuong pháp phù hop cho ban.
DB2 hô tro cài dãt hàng loat nhò têp biên bán (response file) chúa các thông tin cân
thiêt cho quá trình cài dãt. Duói dây là môt trích doan cúa môt têp biên bán mâu.
Têp biên bán mâu:
PROD = UDB_EXPRESS_EDITION
LIC_AGREEMENT=ACCEPT
FILE = C:\Program Files\IBM\SQLLIB\
INSTALL_TYPE = CUSTOM
COMP=TCPIP_DB2_LISTENER_SUPPORT COMP=TCPIP_DB2_CLIENT_SUPPORT
COMP=DB2_SAMPLE_DATABASE
COMP=DB2_SAMPLE_APPLICATIONS
COMP=OLE_DB_SUPPORT
COMP=ODBC_SUPPORT
COMP = JDBC_SUPPORT
COMP = IBM_JRE
...
Các phuong pháp có thê dùng dê tao ra têp biên bán:
• Cài dãt DB2 Express-C truóc môt lân, sú dung phuong pháp cài dãt theo huóng
dân tùng buóc. Môt trong các lua chon dâu tiên khi ban cài dãt theo phuong
pháp này cho phép ban dánh dâu yêu câu DB2 luu lai các thông sô ban nhâp
vào trong quá trình cài dãt vào môt têp biên bán. Khi kêt thúc quá trình cài dãt
têp biên bán së duoc luu vào thu muc và tên têp do ban nhâp vào. Vì têp này là
môt têp vãn bán cho nên sau dó ban có thê súa lai nó tùy ý. Ban có thê xem lai
Hình 3.3 vê phuong pháp này.
• Chinh súa têp biên bán mâu duoc dóng gói kèm theo DB2. Têp mâu này (có
phân mó rông là .rsp) nãm trong thu muc: db2/platform/samples/ directory
• Trong Windows, ban cüng có thê dùng lênh tao têp biên bán:
db2rspgn -d <thu muc luu têp>
• Sau khi ban dã có têp biên bán, trong Windows ban dùng lênh:
setup -u <Tên têp biên ban>
• Ðôi vói Linux, ban dùng lênh:
db2setup -r <Tên têp biên ban>
Nhp môn H qun tr c s d liu DB2
30
Bài tâp nhanh #1: Cài dåt DB2 Express-C và tao ra co só dü liêu mâu
Chú ý: Nêu ban dang sú dung DB2 Express-C V9.1.2 hoãc phiên bán cao hon, nêu ban
chon cài dãt thông qua chê dô dô hoa co só dü liêu mâu có thê duoc tao ra cho ban
môt cách tu dông.
Muc dích
Truóc khi ban có thê bãt dâu nghiên cúu các tính nãng và công cu có trong DB2
Express-C, ban phái cài nó trên hê thông cúa mình. Bài thuc hành này së huóng ban
tùng buóc cách cài dãt DB2 Express-C trên Window.
Các buóc
1. Lây vê ánh cúa DB2 Express-C. Ðê có thê cài dãt DB2, ban có thê tái bô cài duói
dang têp .zip tai dia chi http://www.ibm.com/db2/express. Giái nén các têp vào môt thu
muc do ban dãt tên.
2. Ðinh vi thu muc chính vê thu muc chúa các têp dã giái nén
3. Kích hoat tiên trình cài dãt. Ðê kích hoat tiên trình cài dãt, ban nhân dúp vào têp
setup.exe, sau dó tù cúa sô windows hiên ra ban nhân vào tùy tron Install Product ó
phía bên trái cúa cúa sô.
4. Chay cài dãt DB2 theo tùng buóc (setup wizard). Sau khi ban chon Install Product ó
buóc 3, môt thành phân tro giúp cài dãt goi là “cài dãt tùng buóc” së chay kiêm tra câu
hình phân cúng cúa hê thông dê tiên hành chuân bi cài dãt DB2 Express-C, cüng nhu
kiêm tra xem ban dã cài DB2 truóc dó hay chua. Sau khi chuong trình dã kiêm tra xong
ban nhân vào nút Next dê tiêp tuc cài dãt
5. Châp nhân các diêu khoán ràng buôc, ban hãy doc kÿ các diêu khoán trong giây phép
sú dung và lua chon “I Accept...” và nhân nút Next dê tiêp tuc tiên trình cài dãt.
6. Lua chon kiêu cài dãt. Trong bài thuc hành này ban hãy chon lua kiêu cài dãt là
Typical (ban së thây rãng dây là kiêu cài dãt mãc dinh). Hai kiêu cài dãt khác là Compact
và Custom. Kiêu Compact là kiêu cài dãt co bán còn kiêu Custom cho phép ban thuc
hiên môt sô tùy tron trong quá trình cài dãt. Nhân nút Next dê tiêp tuc.
7. Lua chon thu muc cài dãt. Ban chon thu muc dê cài dãt DB2, chú ý dên dung luong
cúa ô cúng. Trong ví du này ban chon thu muc mãc dinh dê cài dãt DB2 lên hê thông
cúa ban nhu sau:
O cài dåt: C:
Thu muc cài dåt: C:\Program Files\IBM\SQLLIB
Nhân nút Next dê tiêp tuc.
8. Nhâp vào thông tin cúa nguòi sú dung. Môt khi DB2 Express-C dã duoc cài dãt,
nhüng tiên trình DB2 së duoc chay duói tu cách là các dich vu cúa hê thông. Nhüng
dich vu này dòi hói phái duoc dãng nhâp bãng môt tài khoán cúa hê thông dê có thê
thuc hiên. Trong môi truòng Window ban sú dung tài khoán mãc dinh duoc dê nghi là
db2admin, nêu tài khoán này chua tôn tai, DB2 së tao ra cho ban. Chú ý ban phái dãt
mât khâu (password) cho tài khoán. Ban cüng có thê sú dung môt tài khoán sãn có trong
Nhp môn H qun tr c s d liu DB2
31
hê thông thay vì nhò DB2 tao ra môt tài khoán mói cho ban nhung phái ghi nhó rãng dê
có thê chay các dich vu DB2 tài khoán này phái có quyên quán tri (admin).
Nhân nút Next dê tiêp tuc.
9. Câu hình DB2 ínstance. Môt ínstance DB2 có thê duoc coi nhu là môt “kho chúa cho
co só dü liêu”. Môt ínstance này phái tôn tai truóc khi bât kì môt co só dü liêu nào duoc
tao ra và duoc “dãt vào bên trong kho”. Trong môi truòng Window, môt ínstance duoc
goi là DB2 tu dông duoc tao ra, trong khi trong môi truòng Linux tên cúa ínstance mãc
dinh này là db2inst1. Chúng ta së giái thích chi tiêt các dôi tuong này trong các chuong
tiêp theo cúa cuôn sách.
Mãc dinh, ínstance DB2 duoc câu hình dê lãng nghe kêt nôi TCP/IP trên công kêt nôi
5000. Cá hai giao thúc kêt nôi (TCP, UDP) và công kêt nôi dêu có thê duoc cài dãt lai
khi ban nhân vào các nút Protocols và Startup.Tuy nhiên, trong ví du này chúng ta së sú
dung su câu hình mãc dinh dã duoc cài dãt sãn và không thay dôi bât cú câu hình thuôc
vê giao thúc kêt nôi hay công kêt nôi nào cá. Nhân nút Next dê tiêp tuc.
10. Bãt dâu cài dãt. Ðê bãt dâu cài dãt ban nhân vào nút Install, tât cá các câu hình và
các têp cân thiêt së duoc cài dãt vào máy cúa ban môt cách tu dông.
11. First Steps. Sau khi quá trình cài dãt kêt thúc, môt công cu hô tro cài dãt khác duoc
goi là First Steps së duoc chay và hiên thi trên màn hình. First Step cüng có thê duoc
khói chay bãng tay vói câu lênh db2fs trong cúa sô hê diêu hành DOS.
12. Tao ra co só dü liêu Mâu. Trong First Steps, lua chon thé “Database Creation”, và
sau dó theo sau các huóng dân cúa chuong trình dê tao ra co só dü liêu Mâu. Chú ý
ban phái dám báo rãng tùy chon XML and SQL objects and data phái duoc lua chon, và
nhân nút OK.
13. Sau khi ban nhân OK môt cúa sô window sau së duoc hiên ra dê thông báo co só
dü liêu mâu dang duoc tao ra cho ban. Tiên trình này có thê mât môt vài phút.
14. Xác nhân co só dü liêu mâu dã duoc tao ra. Khi viêc tao co só dü liêu dã hoàn tât,
nhân nút OK và dóng công cu First Steps. Quay lai Trung tâm diêu khiên (Control
Center) và kiêm tra rãng môt co só dü liêu tên là SAMPLE dã duoc tao ra trong khung
cúa sô Object Tree (cây dôi tuong). Ban có thê phái làm mói lai Trung tâm diêu khiên dê
nhân biêt duoc su thay dôi này.
15. Khói dông lai máy tính. Mãc dù buóc này là không bãt buôc trong các tài liêu huóng
dân cài dãt DB2, nhung chúng tôi dê nghi ban nên khói dông lai hê thông dê dám báo
rãng tât cá các tiên trình duoc bãt dâu môt cách hoàn háo và giái phóng các tài nguyên
cúa hê thông dã bi chiêm dung trong quá trình cài dãt DB2. Ðây là môt Tùy chon.
Nhp môn H qun tr c s d liu DB2
32
4
Chuong 4 - Các công cu DB2
Trong chuong này chúng tôi së giói thiêu môt sô công cu ban có thê dùng vói DB2.
Trong hình 4.1, phía bên trái là các lênh DB2 khác nhau, SQL, SQL/XML và các câu
lênh XQuery có thê duoc dùng dê tuong tác vói máy chú dü liêu DB2. Phân ó giüa
(duoc dánh dâu bãng hình elip màu dó) liêt kê tên cúa các công cu khác nhau có thê
tuong tác vói máy chú dü liêu DB2. Phía bên phái trong hình vë là môi truòng DB2 co
bán bao gôm môt thê hiên (instance) DB2, môt co só dü liêu và các têp câu hình tuong
úng.
Hình 4.1 - Búc tranh tông thê DB2: Các công cu DB2
Hình 4.2 liêt kê tât cá các công cu DB2 sãn có trong IBM DB2 Start Menu. Hâu hêt các
công cu này giông nhau trên cá Linux và Windows.
Nhp môn H qun tr c s d liu DB2
33
Hình 4.2 - Các công cu DB2 trên IBM DB2 Start Menu
Báng 4.1 cung câp môt danh sách các lênh tãt dê goi môt sô các công cu DB2 phô biên
nhât trong cá môi truòng Linux và Windows.
Tên công cu Lênh
Command Editor Cúa sô nhâp lênh db2ce
Command Line processor Bô xú lý dòng lênh db2
Command Window Cúa sô lênh (Chi dành cho
môi truòng Windows)
db2cmd
Control Center Trung tâm diêu khiên db2cc
Task Center Trung tâm tác vu db2tc
Health Center Trung tâm súc khóe/tình trang db2hc
Configuration Assistant Tro giúp câu hình db2ca
First Steps Buóc khói dâu db2fs
Báng 4.1 - Các lênh tåt cho môt sô công cu DB2
4.1 Trung tâm diêu khiên (Control Center)
Công cu chính cúa DB2 dùng trong viêc quán tri co só dü liêu là Trung tâm diêu khiên
có giao diên nhu trong hình 4.3
Nhp môn H qun tr c s d liu DB2
34
Hình 4.3 - Trung tâm diêu khiên cúa DB2
Trung tâm diêu khiên là môt công cu quán lý tâp trung cho phép ban:
• Xem xét hê thông cúa ban, các bán cài dãt DB2, các co só dü liêu và các dôi
tuong trong co só dü liêu;
• Tao, súa và quán lý co só dü liêu và các dôi tuong co só dü liêu;
• Khói dông các công cu dô hoa khác cúa DB2
Khung bên trái cung câp môt cây phân câp truc quan phán ánh câu trúc cúa các dôi
tuong co só dü liêu trong hê thông cúa ban, vói các “thu muc” dai diên cho báng
(Tables), thê hiên (Views)… Khi ban nhân dúp vào môt thu muc (ví du thu muc Tables,
nhu trong hình 4.3), khung trên cùng bên phái së liêt kê tât cá các dôi tuong liên quan,
trong truòng hop này là tât các báng liên quan dên co só dü liêu SAMPLE. Nêu ban
chon môt báng nào dó ó khung trên bên phái, thì khung phía duói bên phái së cung câp
các thông tin chi tiêt hon vê báng dó.
Nhân chuôt phái vào các thu muc/dôi tuong khác nhau trong Cây dôi tuong (Object
tree) së hiên lên môt báng chon thích hop vói thu muc/dôi tuong dó. Ví du, nhân phái
chuôt lên môt cài dãt DB2 và chon “Configure parameters” cho phép ban xem và câp
nhât têp câu hình cho chuong trình quán tri co só dü liêu. Tuong tu, nêu ban nhân
chuôt phái vào môt co só dü liêu và chon “Configure parameters”, ban có thê xem và
câp nhât têp câu hình cho co só dü liêu dó. Môi truòng DB2 và các thông sô câu hình
së duoc nhãc tói kÿ hon ó chuong 5, Môi truòng DB2.
Lân dâu tiên chay Trung tâm diêu khiên, ban duoc hói và lua chon cách trung tâm diêu
khiên së hiên thi theo cách nào. Úng vói môi cách hiên thi, các dôi tuong co só dü liêu
së duoc thê hiên thi theo kiêu tuong úng. Hình 4.4 là hôp thoai dùng dê lua chon cách
hiên thi cúa Trung tâm diêu khiên.
Nhp môn H qun tr c s d liu DB2
35
Hình 4.4 - Hôp thoai chon cách hiên thi Trung tâm diêu khiên
Cách hiên thi co bán (basic) cung câp các chúc nãng nòng côt cúa DB2.
Cách hiên thi nâng cao (advanced) thê hiên nhiêu lua chon và chúc nãng hon.
Cách hiên thi tùy chon (custom) cho phép ban tùy biên các hình thúc thê hiên các chúc
nãng, các lua chon và các dôi tuong theo ban muôn.
Ðê bât lai hôp thoai này, ban chon “Customize Control Center” tù báng chon Tools nhu
trong hình 4.5
Hình 4.5 - Tùy biên Trung tâm diêu khiên
Nhp môn H qun tr c s d liu DB2
36
Khói dông Trung tâm diêu khiên
Có nhiêu cách dê khói dông Trung tâm diêu khiên:
• Sú dung tù Menu Start cúa Windows
• Chay lênh db2cc tù dâu nhãc lênh
• Nhân dúp vào biêu tuong Trung tâm diêu khiên trên bât ky thanh công cu
nào cúa các công cu giao diên dô hoa DB2.
• Tù biêu tuong DB2 trên khay hê thông cúa Windows nhu trong hình 4.6 (Nhân
phái chuôt vào biêu tuong DB2 và chon DB2 Trung tâm diêu khiên)
Hình 4.6 - Khói dông Trung tâm diêu khiên DB2 tù khay hê thông cúa Windows
4.2 Nhâp lênh truc tiêp
Sú dung cúa sô nhâp lênh cúa DB2 (Command Center), ban có thê thuc thi các lênh
DB2, SQL và các câu lênh XQuery, phân tích kê hoach thuc hiên cúa môt câu lênh, xem
hay súa kêt quá cúa câu truy vân.
Hình 4.7 thê hiên Cúa sô nhâp lênh cùng vói mô tá ngãn gon các thành phân cúa nó.
Hình 4.7 - Cúa sô nhâp lênh cúa DB2
Trong vùng nhâp lênh (input area), ban có thê nhâp nhiêu câu lênh cùng lúc, nhung cân
dám báo các câu lênh kêt thúc vói ký tu kêt thúc do ban chon. Khi ban bâm nút thuc
hiên (xem hình 4.8), các câu lênh së duoc thuc hiên lân luot. Nêu nhu ban dánh dâu
môt câu lênh nào dó thì chi mình câu lênh này së duoc thuc hiên. Môt kêt nôi tói co só
dü liêu cân phái duoc thiêt lâp truóc khi thuc hiên bât ky câu lênh SQL nào, tuy nhiên
ban cüng có thê chèn câu lênh thuc hiên kêt nôi vào doan lênh cúa mình.
Quay tró lai Trung
tâm diêu khiên
Vùng nhâp lênh
Vùng kêt quá
Ðang chon Cúa sô
nhâp lênh
Thêm môt kêt nôi
vói co só dü liêu
Co só dü liêu
dang kêt nôi
Ký tu duoc dùng dê xác
dinh kêt thúc cúa câu lênh
Nhp môn H qun tr c s d liu DB2
37
Hình 4.8 - Cúa sô nhâp lênh – Thé Lênh
Khói dông Cúa sô nhâp lênh
Ban có thê khói dông cúa sô nhâp lênh bãng môt sô cách:
» Tù Menu Start cúa Windows:
Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Editor
» Tù môt cúa sô nhâp lênh (cúa windows hoãc linux), gõ db2ce
» Tù menu Tools cúa Trung tâm diêu khiên
» Nhúng trong Trung tâm diêu khiên:
- Nhân phái chuôt vào biêu tuong co só dü liêu SAMPLE trong khung hiên
thi các dôi tuong cúa Trung tâm diêu khiên sau dó chon menu Query.
- Bât ky khi nào môt dôi tuong mà ban có thê truy vân, duoc chon (co só
dü liêu, báng..), ban có thê khói dông Cúa sô nhâp lênh bãng cách nhân
vào duòng dân Query trong khung thông tin chi tiêt vê dôi tuong cúa
Trung tâm diêu khiên (khung duói bên tay phái).
» Tù Trung tâm diêu khiên, nhân chon biêu tuong Cúa sô nhâp lênh trên
thanh công cu cúa Trung tâm diêu khiên nhu trong hình 4.9
Hình 4.9 - Biêu tuong Cúa sô nhâp lênh trong Trung tâm diêu khiên
Thêm môt kêt nôi tói co só dü liêu
Ðê thêm môt kêt nôi tói môt co só dü liêu nhân vào nút Add. Môt hôp thoai nhu trong
hình 4.10 së xuât hiên.
Thuc hiên câu lênh
(Có thê dùng tô hop phím
tãt Ctrl+Enter)
Thuc hiên câu lênh và sinh
ra môt kê hoach truy câp
(Së nói kÿ hon ó phân sau)
Sinh ra môt kê hoach truy câp mà
không thuc hiên câu lênh
(Së nói kÿ hon ó phân sau)
Nhp môn H qun tr c s d liu DB2
38
Hình 4.10 - Thêm môt kêt nôi co só dü liêu
4.3. Trình tro giúp SQL
Nêu ban không quen thuôc vói ngôn ngü SQL và thích sú dung môt trình hô tro hoãc
huóng dân tu dông sinh mã SQL, lúc này trình tro giúp “SQL Assist Wizard” là môt
công cu sãn có tù trình soan tháo dòng câu lênh (Command Editor) së giúp ban giái
quyêt. Nhu hình 4.11 bên duói, ban có thê triêu goi nó tù Command Editor bãng viêc
nhâp chuôt vào biêu tuong sau vói ký hiêu SQL (nôi lên trong hình vói vòng tròn dó).
Chon ô này
nêu ban muôn
sú dung ID và
mât khâu cúa
nguòi dùng
dang dãng
nhâp vào hê
diêu hành.
Lua chon môt
co só dü liêu
trong hê thông
ID và mât
khâu cúa môt
nguòi dùng
cúa hê diêu
hành.
Nhp môn H qun tr c s d liu DB2
39
Hình 4.11 – Goi trình tro giúp SQL Assist Wizard.
Hình 4.12 trình bày vê trình tro giúp SQL Assist Wizard. Nó cho phép sú dung song
hành dông thòi cá hai chê dô. Ðâu tiên chi ra kiêu cúa câu lênh SQL ban hô tro vói
(SELECT, INSERT, UPDATE, DELETE). Nó còn phu thuôc vào câu lênh ban chon, các
tùy chon khác nhau së duoc hiên thi ra. Ó phân cuôi cùng cúa cúa sô ban së nhìn thây
làm thê nào dê câu lênh SQL duoc xây dung nên giông nhu ban chon nhüng lua chon
khác trong trình huóng dân.
Nhp môn H qun tr c s d liu DB2
40
Hình 4.12 – Trình tro giúp SQL Assist Wizard
4.4 Trình bày nút Show SQL
Hâu hêt các công cu tro giúp dô hoa (GUI) và các trình huóng dân trong DB2 cho phép
ban xem lai câu lênh hiên thòi hoãc câu lênh SQL dã duoc thuc thi ra kêt quá bãng viêc
sú dung công cu hay trình huóng dân dê thuc hiên môt công viêc. Ðê xem phân này,
nhâp chuôt vào nút Show SQL trong công cu ban dang làm viêc, nhu hình 4.13 và hình
4.14.
Hình 4.13 – Trình bày nút Show SQL
Hình 4.14 – Ðâu ra cúa môt phân trình bày vê nút Show SQL.
Khá nãng hiên thi lai nhüng câu lênh SQL và nhüng dòng lênh là rât có ích trong viêc
hoc cú pháp SQL, rút gon và tái sú dung nhüng lênh và nhüng dòng lênh trong môt têp
dê sú dung vê sau này. Ban cüng có thê xây dung các kich bán bãng viêc dùng lai
nhüng lênh và nhüng dòng lênh dã duoc tao ra này.
Bài tâp nhanh #2 - Tao môt CSDL mói vói Trung tâm diêu khiên
Muc dích
Trong bài tâp nhanh này, ban së tao ra môt CSDL mói sú dung trình huóng dân tao
CSDL trong Trung tâm diêu khiên.
Thú tuc thuc hiên:
1. Tù ô cây dôi tuong cúa Trung tâm diêu khiên, nhâp phái chuôt vào thu
muc All Databases, chon danh sách Create Database, và chon danh sách
Nhp môn H qun tr c s d liu DB2
41
With Automatic Maintenance. Bãt dâu chay Creat Database Wizard.
2. Ðãt tên cho CSDL và vi trí luu têp trong trang Name cúa trình huóng dân.
Sú dung các giá tri duói dây:
• Tên CSDL: EXPRESS
• Ó dïa mãc dinh (cúa Windows): C:
• Ðuòng dân mãc dinh (cúa Linux): /home/db2inst1
• Bí danh: Truòng hop này mãc dinh là EXPRESS nêu bên trái dê
trông.
• Ghi chú: Truòng hop này có thê tùy chon, bên trái có thê dê trông.
Nhâp chuôt vào CSDL có sãn Enable cho hôp chon XML, và sau dó nhâp
chuôt vào nút Next dê tiêp tuc trang kê cúa trình huóng dân.
3. Trong Specify cân chi rõ noi luu trang dü liêu, không thêm bât ky su thay
dôi nào, và nhâp Next.
4. Trong trang chon chiên luoc báo trì, lây giá tri mãc dinh (Yes, I can
specify an offiline…), và nhâp Next.
5. Chi dinh khe thòi gian báo trì trong trang Timing. Chi rõ hai hoãc hon 4
giò môt tuân khi DB2 có thê thuc hiên tu dông duy trì các công viêc dê
giü viêc hoat dông bình thuòng cúa CSDL. Bây giò, câu hình khe thòi
gian bãt dâu lúc 1 giò sáng tù thú hai tói thú nãm, kéo dài 6 tiêng. Nhâp
vào nút Next.
6. Câu hình thông diêp trên trang Mail Server cúa trình huóng dân. DB2 có
thê tu dông gúi môt email hay môt trang nêu có môt su cô hay môt diêu
kiên bât thuòng duoc phát hiên thây. Nêu ban muôn cài dãt lai diêu này,
hãy chi ra môt máy chú SMTP có sãn nào dó dê DB2 dùng trong viêc gúi
email. Vói bài tâp này, chúng ta không có môt máy chú SMTP nào, vì thê
cho phép dê trông phân này và nhâp nút Next.
7. Xem lai các tùy chon dã chon trong trang Summary trong trình huóng
dân. Nhâp vào nút Finish dê bãt dâu quá trình tao ra CSDL. CSDL duoc
tao ra thuòng phái mât môt vài phút, trong thòi gian này chi thi báo tiên
trình dang thuc hiên së hiên ra.
8. Bây giò môt CSDL dã duoc tao, nôi trú ngay trong nó là môt vài báng và
ít dü liêu duoc tao ra. Ðê tao cho ban su thuân loi, hai kich bán có tên là
quicklab2.db2 và quicklab2.dat dã sãn có dê giúp ban. Kich bán
quicklab2.db2 chúa nhüng lênh duoc dùng dê tao các báng và do dó
phái duoc chay dâu tiên. Kich bán quicklab2.dat chúa nhüng câu lênh
chèn dü liêu vào các báng. Cá hai kich bán này có thê tìm thây trong têp
nén ex-pressc_book_quicklabs.zip di cùng cuôn sách này. Ðê chay nhüng
kich bán này, sú dung cúa sô nhâp lênh.
a. Hãy chãc rãng CSDL mói ban dã tao duoc chon (bôi den) trong
danh sách thá xuông trong thanh công cu Command Editor. Nêu
CSDL mói không hiên lên trong danh sách, sú dung nút Add dê
thêm môt kêt nôi tói nó (xem gân hình 4.10)
b. Nhâp vào lênh Select -> Open hoãc nhân nút mó
trong
Command Editor và chuyên tói thu muc noi chúa các kich bán dã
duoc luu. Ðánh dâu têp quicklab2.db2 và nhâp nút OK. Các nôi
dung cúa têp bây giò duoc hiên thi trong vùng dâu vào dü liêu
cúa Command Editor. Chon nút Run dê chay kich bán. Xác
Nhp môn H qun tr c s d liu DB2
42
dinh không có lôi nào duoc tìm thây khi chay kich bán này.
9. Lãp lai buóc 8 cho têp quicklab2.dat.
CSDL mói này là môt ví du don gián cho môt cúa hàng sách trên Internet. Báng BOOKS
chúa tât cá thông tin vê nhüng cuôn sách duoc luu trü. Báng CUSTOMERS chúa thông
tin vê môi khách hàng cúa cúa hàng. Cuôi cùng báng SALES chúa dü liêu vê viêc bán
hàng. Bât ky lúc nào khách hàng dãt mua môt cuôn sách, môt bán ghi duoc tao ra trong
báng SALES. So dô duói dây trình bày thiêt kê và quan hê giüa các báng.
4.5 Tao kich bán
Nó rât hüu ích dê cho phép tao ra nhüng têp kich bán, nhüng têp thuc thi nhüng lênh
DB2 hoãc nhüng câu lênh SQL lãp lai nhiêu lân. Ví du, môt nguòi quán tri (DBA) có thê
muôn chay môt kich bán dua ra hàng ngày dê kiêm tra sô hàng cúa nhüng báng quan
trong.
Có hai dang kich bán thông thuòng:
1. Các kich bán SQL.
2. Các kich bán (vó) hê diêu hành.
4.5.1 Các kich bán SQL
Các kich bán SQL bao gôm các câu lênh truy vân và các lênh CSDL. Các kich bán này
là môi quan hê don gián dê hiêu và là nên dôc lâp. Tuy nhiên, các biên hay các tham sô
không duoc hô tro.
Cho ví du, các lênh duói dây duoc luu lai trong têp có tên script1.db2.
CONNECT TO EXPRESS;
CREATE TABLE user1.mytable
( col1 INTEGER NOT NULL,
col2 VARCHAR(40),
col3 DECIMAL(9,2));
SELECT * FROM user1.mytable FETCH FIRST 10 ROWS ONLY;
Nhp môn H qun tr c s d liu DB2
43
COMMIT;
Têp script1.db2
Trong phân kich bán trên, tât cá các câu lênh là các câu lênh SQL, và môi câu lênh
duoc cách nhau bói môt dâu phân cách và trong truòng hop này là dâu châm phây. Tên
têp không nhât thiêt sú dung duôi mó rông là “db2”. Bât ky phân mó rông nào cüng
dùng duoc.
Thuc thi các kich bán SQL:
Môt kich bán SQL có thê duoc thuc thi bãng nhiêu cách khác nhau có thê tú cúa sô
lênh hoãc DB2 Command Window trên Windows, hoãc thông qua Linux shell. Ðê chay
kich bán tù DB2 Command Window hoãc Linux shell, ban có thê dùng các lênh duói
dây:
db2 -t -v -f script1.db2 -z script1.log hoãc,
db2 –tvf script1.db2 –z script1.log
Trong câu lênh này:
-t Chi ra các câu lênh dùng dâu kêt thúc mãc dinh (dâu châm phây).
-v Chê dô “lãm lòi”, dê db2 hiên thi các lênh khi thuc hiên.
-f Chi ra rãng tên têp sau cò này là têp kich bán.
-z Chi ra rãng theo sau thông báo tên têp së duoc sú dung dê hiên giá tri dâu ra
cho viêc phân tích sau này (dây là chon, nhung nên làm).
Khi cò hiêu –t duoc dùng và không có dâu phân cách dòng nào duoc chi rõ, dâu châm
phây së duoc chon. Có môt sô hoàn cánh mà ta cân dên môt dâu phân cách khác. Ví du
môt kich bán chúa mã SQL PL cân dùng môt dâu phân cách câu lênh khác vói ký tu
mãc dinh (dâu châm phây), bói vì nhüng dâu châm phây này dã duoc dùng bên trong
các dinh nghïa dôi tuong SQL PL dê phân cách các câu lênh thuôc vê thú tuc.
Ví du, trong têp kich bán ó duói dây có tên “functions.db2”, nó chúa ngôn ngü dinh
nghïa dü liêu DDL dê tao môt hàm, môt dâu châm phây là cân thiêt ó cuôi cúa cú pháp
SELECT ó bên trong hàm. Vói câu lênh CREATE FUNCTION dâu phân cách chúng ta
phái sú dung môt dâu châm than (!). Nêu chúng ta lai dùng môt dâu châm phây vào viêc
ngãn cách câu lênh, khi chay së xáy ra xung dôt tù kich bán, kêt quá là có môt lôi trong
thông báo tù DB2.
CREATE FUNCTION f1() SELECT
… ;
… END!
Têp functions.db2
Ðê cho DB2 biêt rãng môt ký tu dâu phân cách khác duoc dùng, sú dung cò hiêu –d,
tiêp sau là ký tu phân cách mong muôn (dâu !) nhu trình bày duói dây:
db2 –td! –v –f functions.db2 –z functions.log
Ðê có các mô tá vê các cò hiêu khác bãng cách chay câu lênh duói dây trong
Command Window hoãc Linux shell:
db2 list command option
Nhp môn H qun tr c s d liu DB2
44
4.5.2 Các kich bán vói hê diêu hành
Các kich bán vói hê diêu hành cung câp dô linh hoat và tính nãng manh më hon, nhu
cho ta khá nãng thêm vào nhüng doan mã lâp trình có tính logic. Nhüng doan kich bán
này phu thuôc vào hê diêu hành nên, tuy nhiên chúng có hô tro các tham sô và các biên.
Duói dây là ví du cúa môt kich bán trong hê diêu hành Windows.
set DBPATH=c;
set DBNAME=PRODEXPR
set MEMORY=25
db2 CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE USING
MEM_PERCENT %MEMORY% APPLY DB AND DBM
db2 CONNECT TO %DBNAME% USER %1 USING %2
del schema.log triggers.log app_objects.log
db2 set schema user1
db2 –t –v –f schema.db2 –z schema.log
db2 –td@ -v –f triggers.db2 –z triggers.log
db2 –td@ -v –f functions.db2 –z functions.log
Têp create_database.bat
Ðê thuc hiên kich bán vói hê diêu hành này tù dòng lênh, ban gõ lênh sau trong
Windows:
create_database.bat db2admin ibmdb2
Trong Windows sú dung phân mó rông “bat” dê nói cho hê diêu hành biêt rãng dây là
môt tâp tin thuc thi xú lý theo lô.
Trong Linux, ban cân thay dôi kiêu trên tâp tin dê chi dinh rãng tâp tin này là môt tâp tin
thuc thi bãng cách sú dung lênh nhu chmod +x. Sau dó, ban có thê chay tâp tin này vói
cách thúc giông nhu ó phân trên.
Nhp môn H qun tr c s d liu DB2
45
Bài tâp nhanh #3 – Tao môt kich bán cài dåt cho co só dü liêu EXPRESS
Muc tiêu
Các kich bán là môt co chê manh më trong viêc thuc hiên nhüng công viêc có tính chât
lãp di lãp lai nhu tâp hop thông kê cho co só dü liêu, sao luu, và triên khai co só dü
liêu. Các kich bán hê diêu hành có loi diêm cúa viêc hô tro các tham sô kich bán, diêu
này giúp cho chúng linh hoat hon. Trong bài tâp nhanh này, ban së tao ra môt kich bán
hê diêu hành dê triên khai co só dü liêu EXPRESS. Các kich bán này së goi kich bán
vói SQL dã duoc tao ra truóc dó cho các dôi tuong co só dü liêu. Nhãm muc dích tiêt
kiêm không gian, bài tâp nhanh này chi hiên thi nhüng kich bán và câu lênh dành riêng
cho nên Windows. Nêu ban muôn làm viêc trên Linux, hãy dám báo rãng ban thuc hiên
nhüng thay dôi phù hop vói nhüng su huóng dân sau dây.
Thú tuc
1. Mó môt chuong trình soan tháo vãn bán, nhu Notepad hay Wordpad và nhâp vào
thông tin duoc hiên thi duói dây.
2. Luu lai tâp tin kich bán trong môt thu muc và dãt tên cho tâp tin này là
create_database.bat. Trong hôp thoai cúa sô Save As, dám bám rãng ban dã
chon muc tùy chon MS-DOS Format (trong Wordpad). Nêu ban luu tâp tin này duói môt
dinh dang khác, Wordpad có thê së tao thêm môt sô ký tu ân và viêc này có thê gây ra
nhüng vân dê trong khi quá trình thuc thi cúa kich bán. Thêm vào dó, hãy dãt dâu ngoãc
kép bao lây tên cúa tâp tin dê dám báo rãng Windows không tu dông thêm phân mó
rông .TXT cho tâp tin nhu hình vë duói dây.
Nhp môn H qun tr c s d liu DB2
46
3. Ðê chay kich bán tuong tác vói DB2, ban phái có môt môi truòng dòng lênh DB2. Ðê
mó cúa sô lênh DB2, hãy vào Start -> Program Files -> IBM DB2 -> DB2COPY1
(default) -> Command Line Tools -> Command Window.
Cách khác, ban có thê sú dung Start -> Run, gõ vào db2cmd và ân enter nhu hình vë
duói dây
4. Sau dó dê chay kich bán, nhâp vào các lênh sau:
cd C:\express
create_database.bat db2admin ibmdb2
Nhp môn H qun tr c s d liu DB2
47
5. Ban hãy dành chút thòi gian dê làm quen vói kich bán mà ban vùa tao xong. Ban có
hiêu nhüng gì dang xáy ra tai tùng dòng không?
6. Hãy cô gãng trá lòi nhüng câu hói sau dây:
a. Kêt nôi co só dü liêu duoc thiêt lâp ó dâu?
b. Các ký hiêu %1 và %2 nghïa là gì?
c. Dòng lênh sau dây dùng dê làm gì? Nó duoc sú dung khi nào? Cho muc dích gì?
SET DBPATH=C:
d. Dòng lênh sau dây duoc dùng dê làm gì?
del schema.log, triggers.log, app_objects.log
e. Ðiêu gì së xáy ra khi kich bán duoc goi mà lai không có bât cú tham sô nào?
f. Tai sao nhüng kich bán SQL duoc goi lai không chúa các câu lênh CONNECT
TO? Chúng kêt nôi dên co só dü liêu nhu thê nào?
Nhp môn H qun tr c s d liu DB2
48
4.6 Trung tâm tác vu (Task Center)
Công cu Trung tâm tác vu vói giao diên dô hoa nguòi dùng cho phép ban tao ra nhüng
tác vu: là môt tâp hop nhüng hoat dông nhu chay các lênh DB2, các lênh cúa hê diêu
hành, hay nhüng kich bán. Các hành dông ó phía sau có thê duoc thuc hiên ngay cá khi
tác vu truóc thât bai hay thành công. Ví du, nêu môt tác vu bao gôm công viêc sao luu
môt co só dü liêu quan trong vào lúc 3h sáng duoc thuc hiên thành công, môt email së
duoc gúi dên cho DBA dê cung câp thông tin này. Mãt khác, nêu tác vu sao luu thât bai
thì Trung tâm tác vu së dánh dâu trang (page) cho nguòi quán tri biêt. Hình 4.15 minh
hoa Trung tâm Tác vu
Hình 4.15 – Trung tâm Tác vu
4.6.1 Co só dü liêu Tools Catalog
Tât cá các thông tin chi tiêt vê các tác vu cúa ban và lich thuc hiên tác vu dó duoc luu
trü trong môt co só dü liêu DB2 riêng biêt goi là co só dü liêu Tools Catalog. Co só dü
liêu này phái duoc tôn tai sãn dê có thê lên lich cho các tác vu. Ðê tao môt co só dü liêu
Tools Catalog ban có thê sú dung lênh này:
CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb
Trong ví du ó trên, systools là tên so dô (schema name) cúa tât cá các báng trong co só
dü liêu, và tên cúa co só dü liêu là toolsdb. Chúng ta së nói nhiêu hon vê các so dô
(schemas) trong chuong 8 - Làm viêc vói các dôi tuong co só dü liêu.
Khói dông Trung tâm Tác vu
Ban có thê khói dông Trung tâm Tác vu tù Trung tâm Ðiêu khiên (Control Center) bãng
cách nhân vào Tools -> Task Center nhu minh hoa trong hình 4.16. Môt cách khác, ban
Nhp môn H qun tr c s d liu DB2
49
có thê bãt dâu công cu này tù menu Start cúa Windows: Start -> Programs ->IBM DB ->
DB2COPY1 -> General Administration Tools -> Task Center
Hình 4.16 – Khói dông Trung tâm Tác vu
Lên lich vói Trung tâm Tác vu
Bât cú loai kich bán nào cüng có thê duoc lên lich bãng cách sú dung Trung tâm Tác vu
(kich bán dó có thê duoc hay không duoc tao thông qua môt công cu cúa DB2 có giao
diên dô hoa nguòi dùng). Các tác vu duoc chay tai thòi diêm dã lên lich tù hê thông noi
mà ban dã tao co só dü liêu Tools Catalog. Chúng tôi khuyên khích ban tu mình khám
phá Trung tâm Tác vu. Viêc tao môt tác vu khá don gián.
4.7 Nhât ký
Công cu Nhât ký có giao diên dô hoa cúa DB2 cung câp cho nguòi quán tri co só dü
liêu môt nhât ký vê các hoat dông trên biêu mâu truc tuyên (online form). Hình 4.17 mô
tá vê Nhât ký trong DB2 và Báng 4.2 mô tá nhüng thông tin mà ban có thê thu duoc tù
Nhât ký.
Nhp môn H qun tr c s d liu DB2
50
Hình 4.17 – Nhât ký
Kiêu thông tin Mô tá
Lich sú tác vu
(Task History)
Tât cá các công viêc duoc lên lich dã duoc thuc hiên và
tình trang hoat dông cúa chúng
Lich sú cúa co só dü liêu
(Database History)
Bán ghi nhó vê các tác dông lên co só dü liêu (sao luu,
phuc hôi, tô chúc lai (REORG), v.v…)
Thông diêp Nhât ký cúa các thông diêp duoc phán hôi tù các công
cu cúa DB2. Ðiêu này rât hüu ích nêu ban muôn triêu
hôi và dôi chiêu các thông diêp lôi cü, hoãc nêu ban
dóng hôp thoai quá nhanh hay do truc trãc.
Bán ghi các thông báo Luu trü thông diêp câp hê thông. Các lôi nghiêm trong
duoc ghi lai ó dây
Báng 4.2 – Các thông tin duoc mô tá trong Nhât ký.
Khói chay Nhât ký
Ban có thê khói dông Nhât ký tù Trung tâm diêu khiên (Control Center) bãng cách bâm
chuôt vào Tools -> Journal, nhu duoc mô tá trong Hình 4.18. Bãng cách khác, ban có
thê chay công cu này tù trình don Start cúa Windows: Start -> Programs -> IBM DB2->
DB2COPY1 -> General Administration Tools -> Journal.
Nhp môn H qun tr c s d liu DB2
51
Hình 4.18 – Khói dông Nhât kí.
4.8 Giám sát tình trang (health)
Giám sát tình trang là môt tác nhân mãc dinh chay bên trong bô máy DB2, giám sát tât
cá các mãt cúa tình trang co só dü liêu (bô nhó, quán lý không gian, các hoat dông
duoc tu dông hóa dã duoc dinh rõ truóc…). Khi mà môt sô tính nãng cúa DB2 duoc
thuc thi bên ngoài các tham sô dã thiêt lâp, së xuât hiên ngoai lê, nguòi quán tri co só
dü liêu së duoc luu ý tói. Có 3 kiêu cánh báo:
» Chú ý: Tình trang không bình thuòng.
» Cánh báo: Tình trang chua nghiêm trong, không yêu câu su quan tâm
ngay lâp túc nhung có thê báo hiêu hê thông không còn trong tình trang
tôi uu.
» Báo dông: Tình trang nghiêm trong yêu câu có các hành dông can thiêp
ngay lâp túc.
Giám sát hê thông có thê bât hoãc tãt sú dung tham sô câu hình quán lý co só dü liêu
HEALTH_MON.
4.8.1 Trung tâm tình trang
Trung tâm tình trang là môt công cu dô hoa dê tuong tác vói tác nhân Giám sát tình
trang. Công cu Trung tâm tình trang phân tích cánh báo tình trang trong hê thông dôi vói
tùng thê hiên (instance), co só dü liêu, và không gian báng. Hình 4.19 mô tá vê công cu
Trung tâm tình trang.
Nhp môn H qun tr c s d liu DB2
52
Hình 4.19 – Công cu Trung tâm tình trang
Khói chay Trung tâm tình trang.
Ban có thê khói dông Trung tâm tình trang tù Control Center bãng cách nhân vào Tools
Menu và chon Health Center. Ðiêu này duoc biêu diên qua Hình 4.20. Ban cüng có thê
chay công cu này tù Start -> Programs -> IBM DB2 -> DB2COPY1 -> Monitoring Tools -
> Health Center.
Hình 4.20 – Khói chay Trung tâm súc khóe
Thiêt lâp cánh báo tình trang
Môt khi Trung tâm tình trang cúa ban dã duoc khói dông, ban có thê thiêt lâp các khai
báo cho lòi cánh báo (Alert notification) bãng cách nhân vào Health Center menu ->
Configure -> Alert Notification nhu trong Hình 4.21. Cánh báo tình trang cho phép ban
nhâp vào danh ba vói dia chi email hay sô máy nhãn tin cúa nhüng nguòi cân phái liên
lac nêu xuât hiên cánh báo.
Chon thòi gian
làm mói màn hình
Hiêu chinh các
thiêt lâp chi thi
tình trang
Lua chon kiêu
thông báo dê
sú dung
Nhâp dúp chuôt
vào bât cú lòi
cánh báo nào
thì các chi tiêt
vê thông báo
xuât hiên ó dây
Nhp môn H qun tr c s d liu DB2
53
Hình 4.21 – Khai báo cánh báo
Nhp môn H qun tr c s d liu DB2
54
5
Chuong 5 - Môi truòng cúa DB2
Trong chuong này, chúng ta së tháo luân vê Môi truòng DB2: các thê hiên, co só dü
liêu và các file câu hình. Hình 5.1 mô tá các vân dê bao bói e-líp màu dó së duoc chúng
ta tháo luân trong chuong này.
Hình 5.1 - Búc tranh tông thê vê DB2: Môi truòng DB2
Ðê mô tá môi truòng DB2, hãy mô tá dân dân tùng phân tú thành phân. Hình 5.2 cho
thây hình tuong vê máy chú dü liêu DB2 sau khi cài dãt DB2 Express-C 9
Nhp môn H qun tr c s d liu DB2
55
Hình 5.2 – Hình mâu vê máy chú dü liêu DB2 sau khi cài dåt DB2 Express-C 9
Ðây là môt phân cúa quá trình cài dãt trong môi truòng Windows, tao ra môt thê hiên
mãc dinh goi là DB2 (hay “db2inst1” trên môi truòng Linux). Ðiêu này duoc mô tá bãng
môt hôp màu xanh trong Hình 5.3. Thê hiên này don gián là môt môi truòng dôc lâp
trong dó có thê chay các úng dung và tao ra các co só dü liêu. Ban có thê tao nhiêu thê
hiên trên cùng môt máy chú dü liêu và sú dung chúng cho các muc dích khác nhau. Ví
du, môt thê hiên có thê duoc dùng dê luu trü co só dü liêu cho sán phâm, thê hiên khác
duoc dùng dê kiêm tra môi truòng co só dü liêu, và môt cái khác dùng cho môi truòng
phát triên. Tât cá các thê hiên này là dôc lâp vói nhau; nghïa là, các thao tác thuc hiên
trên môt thê hiên së không làm ánh huóng tói các thê hiên còn lai.
Hình 5.3 – Thê hiên måc dinh DB2 duoc tao ra.
Ðê tao môt thê hiên DB2 mói, sú dung câu lênh bd2icrt <instance name>, chô
<instance name> duoc thay thê bói bât cú tên nào gôm 8 kí tu. Ví du, dê tao ra thê
hiên myinst, ta sú dung câu lênh: bd2icrt myinst.
Hình 5.4 cho thây môt thê hiên mói tên myinst nhu môt hôp màu xanh riêng biêt
Nhp môn H qun tr c s d liu DB2
56
Hình 5.4 – Môt máy chú DB2 vói 2 thê hiên.
Chú ý rãng môi thê hiên có môt dia chi công (port) riêng. Ðiêu này giúp phân biêt giüa
các thê hiên khi mà ban muôn kêt nôi tói môt co só dü liêu trong môt thê hiên nhât dinh
tù môt máy khách ó xa. Nêu ban sú dung cúa sô dòng lênh DB2 (DB2 Command
Window), ban có thê làm bât cú thê hiên nào cúa DB2 tró thành môt thê hiên hoat dông
bãng cách sú dung môt lênh hê diêu hành trên môi truòng Windows:
set db2instance = myinst
Trong ví du này, nêu ban tao môt co só dü liêu tù Cúa sô dòng lênh, nó së duoc tao
trong thê hiên myinst.
Ðê liêt kê các thê hiên, gõ lênh:
db2ilist
Trên Linux, môt thê hiên phái gãn liên vói môt nguòi dùng trên Linux; do dó, dê chuyên
dôi giüa các thê hiên, ban chi cân chuyên dôi nguòi dùng (vói câu lênh su).
Báng 5.1 mô tá vài lênh hüu ích trên thê hiên
Câu lênh Mô tá
db2start Khói dông thê hiên hiên tai
db2stop Ngùng thê hiên hiên tai
db2icrt Tao môt thê hiên mói
db2idrop Loai bó môt thê hiên
db2ilist Liêt kê các thê hiên ban có trong hê thông
db2 get instance Liêt kê các thê hiên hoat dông hiên tai
Báng 5.1 – Các lênh DB2 hüu dung trên thê hiên.
Vài câu lênh ó trên có thê thuc hiên thay thê thông qua trung tâm diêu khiên (Control
Center). Ví du, trong cúa sô trung tâm diêu khiên, nêu ban mó rông thu muc Instances
và nhân chuôt phái vào thê hiên mong muôn, ban có thê chon Start cüng giông nhu sú
dung lênh db2start tù cúa sô dòng lênh cúa DB2, hay Stop, cüng nhu sú dung lênh
db2stop nhu trong hình 5.5
Nhp môn H qun tr c s d liu DB2
57
Hinh 5.5 – Các lênh trên thê hiên trong cúa sô Control Center
Ðê tao môt co só dü liêu trong môt thê hiên hoat dông, thuc hiên lênh này tù cúa sô
dòng lênh DB2:
db2 create database mydb1
Ðê liêt kê tât cá các co só dü liêu duoc tao, chay lênh:
db2 litst db directory
Bên trong bât kì thê hiên nào, ban có thê tao nhiêu co só dü liêu. Môt co só dü liêu là
môt tâp hop cúa các dôi tuong nhu là các báng, các khung nhìn, chi muc và nhiêu thú
khác. Các co só dü liêu là các chú thê dôc lâp, và do vây, không chia sé các dôi tuong
vói các co só dü liêu khác. Hình 5.6 mô tá môt cách hình tuong co só dü liêu “MYDB1”
duoc tao ra bên trong thê hiên “DB2”.
Nhp môn H qun tr c s d liu DB2
58
Hình 5.6 – Co só dü liêu “MYDB1” duoc tao trong thê hiên “DB2”.
Báng 5.2 Môt sô lênh ban có thê sú dung ó lóp co só dü liêu.
Lênh/ Câu lênh SQL Mô tá
db2 create database Tao môt co só dü liêu mói
db2 drop database Loai bó môt co só dü liêu
db2 connect to <database_name> Kêt nôi tói co só dü liêu
db2 create table / create view / create index Câu lênh SQL dê tao ra báng biêu,
khung nhìn, và chi muc tuong úng
Báng 5.2 – Các lênh/câu lênh SQL trên co só dü liêu.
Nêu muôn tao môt co só dü liêu khác cüng có trùng tên (MYDB1) nhung trong thê hiên
“myinst”, thuc hiên các lênh sau dây trên cúa sô dòng lênh cúa DB2
db2 list db directory
set db2instance = myinst
db2 create database mydb1
set db2instance = db2
Hình 5.7 mô tá co só dü liêu mói “MYDB1” duoc tao trong thê hiên “myinst”.
Nhp môn H qun tr c s d liu DB2
59
Hình 5.7 – Co só dü liêu “MYDB1” trong khung nhìn “myInst”.
Khi môt co só dü liêu duoc tao, môt vài dôi tuong cüng duoc tao ra theo mãc dinh:
không gian báng, báng, vùng dêm dü liêu và các tâp tin nhât ký (log file). Tao các dôi
tuong này së mât môt ít thòi gian, dó là lý do tai sao lênh create database yêu câu vài
phút dê xú lý. Hình 5.8 mô tá 3 không gian báng mãc dinh duoc tao. Không gian báng
së duoc tháo luân chi tiêt hon trong Chuong 6, Kiên trúc cúa DB2; nhung hiên tai, hãy
cú coi không gian báng nhu là các lóp theo logic giüa các báng logic (logical table), và
nhu tài nguyên hê thông nhu là các ô dïa và bô nhó-- vùng dêm dü liêu.
Hình 5.8 – Không gian báng duoc tao måc dinh khi môt Co só dü liêu duoc tao
ra.
Không gian báng SYSCATSPACE chúa các báng danh muc (Catalog). Báng danh muc
này cüng duoc biêt dên trong các hê thông quán lý co só dü liêu quan hê khác nhu là
tù diên dü liêu (data dictionary). Vê co bán, báng này chúa thông tin hê thông mà ban
Nhp môn H qun tr c s d liu DB2
60
không duoc súa dôi cüng nhu xóa di; nêu không co só dü liêu cúa ban së hoat dông
không chính xác. Không gian báng TEMPSPACE1 duoc DB2 sú dung khi mà cân thêm
không gian cho xú lý môt sô thao tác nhu là sãp xêp. Không gian báng USERSPACE1
thông thuòng duoc dùng dê luu trü các báng co só dü liêu nguòi dùng khi môt báng
duoc tao ra mà không có không gian báng riêng biêt dê luu trü nó.
Ban cüng có thê tao cho riêng mình các không gian báng khi sú dung câu lênh CREATE
TABLESPACE. Hình 5.9 mô tá cách tao không gian báng MYTBLS1 trong co só dü liêu
MYDB1 cúa thê hiên DB2. Khi ban tao ra môt không gian báng, ban cüng chi dinh các ô
dïa và vùng dêm dü liêu dê sú dung. Do dó, nêu ban có môt báng “nóng”, dó là môt
báng duoc sú dung thuòng xuyên, ban có thê dùng nhüng ô dïa nhanh nhât và phân
lón bô nhó thông qua viêc ân dinh các dãc tính này cho không gian báng.
Trong hình 5.9, ta thây có 2 dôi tuong khác duoc mãc dinh tao ra: môt vùng dêm dü liêu
IBMDEFAULTBP, và các têp nhât ký.
Vùng dêm dü liêu vê co bán là môt vùng nhó duoc sú dung bói co só dü liêu. Ban có
thê tao môt hay nhiêu vùng dêm, nhung luôn luôn phái có môt vùng dêm vói kích cõ môt
trang nhó ngang bãng kích thuóc trang nhó cúa không gian báng có sãn. Trang nhó và
kích thuóc trang nhó së duoc tháo luân chi tiêt hon vào Chuong 6, Kiên trúc cúa DB2.
Các têp nhât ký (log) dùng dê phuc hôi. Khi ban làm viêc trên môt co só dü liêu, các
thông tin không chi duoc luu trü trên các ô dïa dành cho co só dü liêu dó, mà trong khi
ban dang làm còn có cá các têp nhât ký luu trü tât cá thao tác xú lý trên dü liêu dây. Cú
coi các têp nhât ký nhu các têp luu tam mà trên dó lênh “autosave” duoc thi hành. Các
têp nhât ký së duoc nói kï hon ó Chuong 11: Sao luu và phuc hôi.
Hình 5.9 – Vùng dêm dü liêu và các têp nhât ký.
Phân truóc, chúng ta dã trao dôi rãng các thê hiên là các môi truòng dôc lâp, và do dó,
môt co só dü liêu trùng tên có thê duoc tao trong các thê hiên khác nhau. Cüng giông
nhu các thê hiên, các co só dü liêu cüng là các chú thê dôc lâp; do dó, các dôi tuong
trong môt môt co só dü liêu này không có liên hê nào vói các dôi tuong trong môt môt
co só dü liêu khác. Viêc tao môt không gian báng cùng tên “mytbls1” trong môt co só
dü liêu MYDB1 và môt co só dü liêu SAMPLE trong thê hiên DB2 duoc mô tá nhu trong
Nhp môn H qun tr c s d liu DB2
61
hình 5.10. Ðiêu này là hop lê bói vì các co só dü liêu là riêng biêt. Luu ý rãng hình 5.10
không mô tá các dôi tuong mãc dinh khác cúa môt co só dü liêu SAMPLE do giói han
không gian trong hình vë.
Hình 5.10 – Vùng báng có cùng tên trong các co só dü liêu khác nhau.
Môt khi ban tao ra môt không gian báng, ban cüng có thê tao các dôi tuong trong không
gian báng nhu báng biêu, khung nhìn và chi muc. Ðiêu này duoc mô phóng nhu trong
Hình 5.11.
Nhp môn H qun tr c s d liu DB2
62
Hình 5.11 – Báng, khung nhìn và chi muc duoc tao trong vùng báng.
5.1 Câu hình DB2
Ta có thê câu hình các tham sô cúa DB2 bãng cách sú dung công cu Configuration
Advisor Tool – công cu tro giúp câu hình. Ðê kêt nôi công cu tro giúp câu hình thông
qua trung tâm diêu khiên, nhân chuôt phái lên môt co só dü liêu và chon “Configuration
Advisor”. Dua trên cách trá lòi cúa ban vê môt sô câu hói liên quan dên tài nguyên hê
thông, khôi luong công viêc, công cu hô tro câu hình së cung câp môt danh sách các
tham sô cúa DB2 nên thay dôi úng vói các giá tri phù hop. Nêu ban muôn biêt chi tiêt
hon vê câu hình trên DB2, hãy doc tiêp; nêu không, sú dung công cu tro giúp câu hình
cüng giúp ban hoàn thành tôt công viêc trên DB2.
Môt máy chú DB2 có thê câu hình trên 4 câp dô:
- Các biên môi truòng.
- Têp câu hình quán tri co só dü liêu (dbm cfg).
- Têp câu hình co só dü liêu (db cfg).
- Ðãng kí lý lich DB2.
Ðiêu này duoc mô tá trong Hình 5.12. Trong hình, hãy chú ý vi trí cúa môi chiêc hôp. Ví
du, các biên môi truòng duoc thiêt lâp ó câp dô hê diêu hành cúa máy chú, trong khi
các tham sô têp câu hình quán lý co só dü liêu duoc thiêt lâp ó lóp thê hiên . Tham sô
câu hình co só dü liêu duoc quán lý ó lóp có só dü liêu, và dãng ký lý lich (profile DB2)
duoc thiêt lâp hoãc ó hê diêu hành hoãc lóp thê hiên.
Nhp môn H qun tr c s d liu DB2
63
Hình 5.12 – Câu hình DB2.
5.1.1 Các biên môi truòng
Các biên môi truòng là các biên duoc thiêt lâp ó hê diêu hành. Môt biên môi truòng
chính là DB2INSTANCE. Biên này cho biêt thê hiên dang hoat dông mà ban dang làm
viêc, và các lênh DB2 ban së áp dung dên. Ví du, dê thiêt lâp thê hiên hoat dông là
“myinst” trên Windows, ban có thê chay lênh hê diêu hành sau:
set db2instance = myinst
5.1.2 Têp câu hình quán tri co só dü liêu (dbm cfg)
Têp câu hình quán tri có só dü liêu (dbm cfg) bao gôm các tham sô ánh huóng tói thê
hiên và tât cá co só dü liêu chúa trong dó. Têp câu hình quán tri co só dü liêu có thê
duoc xem xét hay súa dôi bãng cách sú dung dòng lênh, hoãc thông qua Trung tâm
diêu khiên cúa DB2.
Ðê làm viêc vói DBM CFG tù Trung tâm diêu khiên, lua chon dôi tuong thê hiên tù thu
muc !nstance cúa trung tâm diêu khiên, nhân chuôt phái dê cho trình don bât lên và lua
chon Configuration Parameters. Công viêc này duoc mô tá trong Hình 5.13.
Nhp môn H qun tr c s d liu DB2
64
Hình 5.13 – Câu hình dbm tù Trung tâm diêu khiên.
Sau khi chon Configuration Parameters, môt màn hình së hiên thi lên nhu trong Hình
5.14 vói danh sách các tham sô dbm cfg.
Hình 5.14 – Danh sách dbm cfg.
Phân lón tham sô là dông, nghïa là các thay dôi së có hiêu luc ngay lâp túc; tuy nhiên,
thay dôi môt sô tham sô yêu câu phái khói dông lai thê hiên dê có hiêu luc. Tù công cu
dòng lênh, diêu này có thê thuc hiên thông qua các lênh db2stop và db2start.
Nhp môn H qun tr c s d liu DB2
65
Truóc khi môt thê hiên ngùng, tât cá các úng dung phái duoc ngãt kêt nôi, hay tam
dùng. Nêu ban muôn ngùng môt thê hiên ngay lâp túc, ban có thê dùng lênh db2stop
force.
Môt thê hiên cüng có thê ngùng bãng cách nhân chuôt lên dôi tuong thê hiên và lua
chon Stop hay Start thông qua Control Center.
Báng 5.3 Mô tá môt sô lênh hüu hiêu dê quán tri công cu dbm cfg tù dòng lênh.
Lênh Mô tá
db2 get dbm cfg Thu thâp thông tin vê dbm cfg
db2 update dbm cfg
using <parameter_name> <value>
Câp nhâp giá tri cúa tham sô dbm cfg.
Báng 5.3 – Các lênh diêu khiên dbm cfg.
5.1.3 Têp câu hình co só dü liêu (db cfg)
Têp câu hình co só dü liêu (db cfg) bao gôm các tham sô tác dông dên tùng co só dü
liêu. Têp câu hình co só dü liêu có thê xem xét hay súa dôi bãng dòng lênh, hay thông
qua Trung tâm diêu khiên cúa DB2.
Ðê làm viêc vói DB CFG tù Trung tâm diêu khiên, chon dôi tuong co só dü liêu tù thu
muc co só dü liêu cúa màn hình Trung tâm diêu khiên, nhân chuôt phái dê cho trình
don bât lên và lua chon Configuration Parameters. Viêc này duoc mô tá nhu trong Hình
5.15.
Hình 5.15 – Câu hình db cfg tù Trung tâm diêu khiên.
Sau khi chon Configuration Parameters, môt màn hình së hiên thi lên nhu trong Hình
5.16 vói danh sách các tham sô db cfg.
Nhp môn H qun tr c s d liu DB2
66
Hình 5.16 – Câu hình co só dü liêu.
Báng 5.4 Mô tá môt sô lênh hüu hiêu dê quán lý db cfg tù dòng lênh.
Lênh Mô tá
get db cfg for <database_name> Thu thâp thông tin vê db cfg cúa có só dü
liêu mong muôn.
update db cfg for <database_name>
using <parameter_name>
<value>
Câp nhâp giá tri cho môt tham sô cúa db
cfg.
Báng 5.4 – Lênh diêu khiên db cfg.
5.1.4 Ðång ký lý lich DB2 (profile).
Các biên dãng ký lý lich DB2 bao gôm các tham sô có thê trên môt nên cu thê và có thê
thiêt lâp thành toàn cuc (ánh huóng tói tât cá thê hiên), hay ó tùng lóp thê hiên (ánh
huóng riêng tùng thê hiên).
Báng 5.5 Mô tá môt sô lênh hüu hiêu dê diêu khiên các biên dãng ký lý lich DB2.
Lênh Mô tá
db2set –all Liêt kê tât cá các biên dãng ký lý lich DB2
hiên tai duoc thiêt lâp.
db2set –lr Liêt kê tât cá biên dãng ký lý lich DB2.
db2set <parameter>=<value> Thiêt lâp môt giá tri cho môt tham sô.
Báng 5.5 – Các lênh diêu khiên dång ký lí lich DB2.
Báng 5.6 Môt sô biên dãng ký DB2 hay duoc dùng nhât.
Nhp môn H qun tr c s d liu DB2
67
Biên dång ký Mô tá
DB2COMM Chi dinh nhüng quán tri giao tiêp së khói dông khi bãt
dâu công cu quán tri co só dü liêu.
DB2_EXTSECURITY Trên Windows, ngãn chãn nhüng nguòi chua duoc dinh
danh kêt nôi tói DB2 bãng cách khóa têp tin hê thông
DB2.
DB2_COPY_NAME Luu trü tên cúa bán sao DB2 hiên tai dang dùng.
Ðê chuyên sang môt bán sao DB2 dã cài khác, chay
dòng lênh path\bin\db2envars.bat. Biên này không
thê dùng cho muc dích này.
Báng 5.6 – Các biên dång ký DB2 hay duoc dùng.
Ví du, dê cho phép giao tiêp sú dung giao thúc TCP/IP, thiêt lâp biên dãng ký
DB2COMM thành TCPIP nhu ó duói:
db2set db2comm = tcpip
5.2 Máy chú quán tri DB2
Máy chú quán tri DB2 (DAS) là môt quá trình nên chay trên máy chú DB2 cho phép các
máy khách tù xa có thê quán tri máy chú DB2 thông qua công cu dô hoa. Ó dây chi có
môt DAS trên môi máy tính nhu trên Hình 5.16.
Hình 5.16 – Máy chú quán tri DB2 (DAS).
Nhp môn H qun tr c s d liu DB2
68
6
Phân II – Hoc DB2: Quán tri Co só dü liêu
Chuong 6 - Kiên trúc cúa DB2
Trong chuong này chúng ta së tháo luân nhüng nét chính vê
- Mô hình xú lý cúa DB2
- Mô hình bô nhó cúa DB2
- Mô hình luu trü cúa DB2
6.1 Mô hình xú lý cúa DB2
Hình 6.1 mô tá mô hình xú lý cúa DB2. Trong hình, bên trái duòng thãng dúng màu
xanh tuong trung cho môt máy tram tù xa (remote client machine), và bên phái tuong
trung cho máy chú (server machine). Khi môt úng dung trên máy tram kêt nôi dên máy
chú bãng lênh SQL CONNECT, các bô doi kêt nôi (listener) cho giao thúc truyên thông
së nhân duoc yêu câu này và liên lac vói môt tác nhân kêt hop DB2 (DB2 coordinator
agent). Tác nhân DB2 có chúc nãng thuc hiên các thao tác thay cho DB2. Nêu úng
dung dó là cuc bô (chay trên cùng máy chú vói DB2), các buóc rât giông nhau, chi có
tác nhân db2ipccm xú lý yêu câu thay cho db2tcpcm. Trong vài truòng hop, nhu khi xú
lý song song, môt tác nhân db2 có thê sinh ra các tác nhân khác (db2agntp). Các tác
nhân khác nhu db2pfchr, db2loggr, db2dlock cüng có thê duoc sú dung cho nhüng muc
dích khác nhau. Nhüng xú lý thông dung nhât duoc mô tá trong báng 6.1.
Hình 6.1 – Mô hình xú lý cúa DB2
Nhp môn H qun tr c s d liu DB2
69
Tên xú lý Mô tá
db2sync Xú lý cúa thê hiên co só dü liêu (môt xú lý cho môt thê hiên).
db2tcpcm Truyên thông/listener TCP/IP.
db2agent Tác nhân kêt hop thuc thi nhüng thao tác co só dü liêu thay cho
các úng dung (ít nhât môt tiên trình trên môt kêt nôi, phu thuôc
vào bô tâp trung kêt nôi có duoc kích hoat không).
db2agntp Tác nhân con chú dông duoc sinh ra nêu truòng
INTRA_PARALLEL là YES. Së thuc thi các thao tác co só dü liêu
thay cho úng dung. db2agent së kêt hop công viêc cúa các tác
nhân con db2agntp.
db2pfchr Bô doc dü liêu nhâp/xuât bât dông bô (NUM_IOSERVERS).
db2pclnr Bô ghi dü liêu nhâp/xuât bât dông bô (NUM_IOCLEANERS).
Báng 6.1- Các xú lý thông dung cúa DB2
6.2 Mô hình bô nhó cúa DB2
Mô hình bô nhó DB2 gôm nhiêu vùng nhó khác nhau tai múc thê hiên, múc co só dü
liêu và múc úng dung và tác nhân (hình 6.2).
Nhp môn H qun tr c s d liu DB2
70
Hình 6.2 – Mô hình bô nhó cúa DB2
Khi bãt dâu môt thê hiên, vùng nhó chia sé quán lý co só dü liêu duoc câp phát.
Thuòng vùng nhó này không nhiêu. Lân dâu tiên kêt nôi dên co só dü liêu, vùng nhó
toàn cuc co só dü liêu së duoc câp phát. Trong khôi này, vùng dêm (buffer pool) là môt
trong nhüng thành phân quan trong nhât, dãc biêt khi cân cái thiên viêc thuc thi truy vân.
Kích thuóc cúa vùng dêm quyêt dinh dô lón cúa toàn bô vùng nhó toàn cuc co só dü
liêu.
Vùng nhó riêng tác nhân là vùng nhó duoc sú dung cho môi tác nhân DB2. Nêu không
dùng bô tâp trung kêt nôi thì môi kêt nôi cân môt tác nhân. Môt tác nhân sú dung khoáng
3–5MB. Nêu sú dung bô tâp trung kêt nôi, nhiêu kêt nôi có thê dùng chung môt tác
nhân, giám nhu câu sú dung bô nhó vât lý.
6.3 Mô hình luu trü cúa DB2
Trong muc này chúng ta së mô tá nhüng khái niêm sau:
- Trang và pham vi
- Vùng nhó dêm
- Không gian báng
6.3.1 Trang và pham vi
Trang là don vi luu trü nhó nhât cúa DB2, vói các kích thuóc 4K, 8K, 16K và 32K. Môt
pham vi là môt nhóm các trang. Tai môt thòi diêm nêu chi làm viêc vói môt trang thì lãng
phí khá nãng thuc thi, do vây DB2 làm viêc vói các pham vi tai môt thòi diêm. Kích
thuóc cúa trang và pham vi duoc dinh nghïa khi làm viêc vói vùng nhó dêm và các
không gian báng nhu trong phân tiêp theo.
6.3.2 Vùng nhó dêm
Môt vùng nhó dêm là vùng nhó thuc (real cache) cho dü liêu báng và chi muc. Nó cái
thiên thuc thi bãng cách giám nhâp/xuât tuân tu truc tiêp và nâng câp doc ghi không
dông bô. Có nghïa là DB2 doán truóc trang nào së cân dên, doc chúng tù dïa vào vùng
dêm, nên chúng sãn sàng duoc sú dung.
Vùng dêm duoc câp phát vói các don vi nhó là các trang 4K, 8K, 16K, và 32K. Nên có ít
nhât môt vùng dêm trên môt co só dü liêu, và ít nhât môt vùng dêm phù hop cho môt
không gian báng có kích thuóc trang dã biêt.
Tao môt vùng dêm
Có thê dùng lênh CREATE BUFFERPOOL dê tao vùng dêm. Cüng có thê vào trung tâm
diêu khiên, nhân chuôt phái lên thu muc Buffer pool trong co só dü liêu dã biêt và chon
Create nhu trong hình 6.3.
Nhp môn H qun tr c s d liu DB2
71
Hình 6.3 – Tao môt vùng dêm
Nhp môn H qun tr c s d liu DB2
72
Sau khi chon Create, hôp thoai Create Buffer Pool xuât hiên nhu trong hình 6.4.
Hình 6.4 - Hôp thoai tao vùng dêm
Phân lón các muc trong hình 6.4 duoc tu giái thích. Các truòng ‘Non-blocked’ và
‘Blocked’ chi dinh sô luong trang tôn tai là không dóng khôi (non-blocked) hay dóng khôi
(blocked). Vùng dêm dua trên khôi báo dám rãng các trang liên tuc trên dïa di chuyên
vào vùng dêm cüng liên tuc trong môt vùng dóng khôi. Cách này có thê cái thiên viêc
thuc thi. Sô luong trang không thê lón hon 98% sô luong trang cúa vùng dêm. Ðãc biêt,
giá tri 0 së vô hiêu hóa nhâp/xuât khôi.
Môi lân vùng dêm duoc tao ra, nó së duoc trình bày trong trung tâm diêu khiên nhu
trong hình 6.5.
Nhp môn H qun tr c s d liu DB2
73
Hình 6.5 – Trung tâm diêu khiên sau khi tao vùng dêm ‘SAMP16K’
6.3.3 Các không gian báng
Không gian báng là môt là môt giao diên logic giüa các báng logic và các vùng nhó cúa
hê thông (bao gôm vùng nhó dêm và các dïa). Ban có thê sú dung câu lênh CREATE
TABLESPACE dê tao môt không gian báng mà ban dãc tá:
• Kích thuóc trang cúa không gian báng (4KB, 8KB, 16KB, or 32KB). Kích thuóc
trang này phái tuong úng vói kích thuóc trang cúa vùng dêm.
• Tên cúa vùng dêm mà liên kêt vói không gian báng
• Kích thuóc cúa pham vi
• Kích thuóc nap truóc
Các loai không gian báng
Có ba loai không gian báng:
- Thông thuòng
Loai này dành cho các báng cúa nguòi dùng. Ví du nhu USERSPACE1 là môt
không gian báng thông thuòng vì nó duoc tao ra môt cách mãc dinh.
- Lón
Loai này duoc sú dung tùy chon dê phân chia các dü liêu LOB vê không gian
báng cúa nó. Nó cüng duoc sú dung dê luu trü các dü liêu XML dê tao ra các
CSDL có hô tro PureXML – sú dung UNICODE và XML làm kiêu cúa các côt.
Các không gian báng loai lón là mãc dinh.
- Tam thòi
Có hai loai không gian báng tam thòi:
Nhp môn H qun tr c s d liu DB2
74
Không gian báng tam thòi cúa hê thông
Ðây là loai không gian báng duoc sú dung bói DB2 cho các thao tác nôi
bô (hê thông) nhu sãp xêp. Ví du TEMPSPACE1 là không gian báng
duoc tao ra tu dông khi ban tao môt CSDL, nó là môt không gian báng
tam thòi cúa hê thông.
Không gian báng tam thòi cúa nguòi dùng
Ðây là loai không gian báng duoc sú dung dê tao ra các báng tam thòi
toàn cuc do nguòi dùng dinh nghïa. Chúng thuòng hay bi nhâm lân vói
các không gian báng tam thòi cúa hê thông.
Quán lý các không gian báng
Các không gian báng có thê duoc phân loai theo cách quán lý. Viêc này có thê duoc chi
dinh trong câu lênh CREATE TABLESPACE
Không gian báng duoc quán lý bói hê thông
Loai không gian báng này duoc goi là System Managed Storage (SMS). Ðiêu này có
nghïa là hê diêu hành së quán lý không gian nhó này. Chúng dê dàng duoc quán lý và
duoc chúa trong các thu muc hê thông têp. Không gian báng loai này không duoc câp
phát truóc, nhung dung luong các têp duoc tãng lên tu dông. Môt khi ban dã xác dinh
các chô chúa (thu muc), thì chúng së duoc cô dinh lúc tao ra và không thê thay dôi vê
sau, trù khi viêc phuc hôi tái dinh huóng duoc dùng. Khi sú dung các không gian báng
SMS, dü liêu, chi muc, dü liêu LOB không thê duoc trái trên các không gian báng khác
nhau.
Không gian báng duoc quán lý bói CSDL
Loai không gian báng này duoc goi là Database Managed Storage (DMS). Ðiêu này có
nghïa là DB2 së quán lý loai không gian luu trü này. Viêc quán lý dòi hói su can thiêp
cúa nguòi quán tri co só dü liêu. Các chô chúa (container) có thê là các têp duoc câp
phát truóc hoãc các thiêt bi thô (thiêt bi thô duoc hiêu nhu thiêt bi luu trü duoc ghi theo
dinh huóng ký tu, không cân hê thông têp cúa hê diêu hành). Vói các thiêt bi thô, dü liêu
duoc ghi truc tiêp mà không qua bô dêm cúa hê diêu hành.
Các chô chúa (hê thông têp) có thê duoc thêm, bó, thay dôi kích thuóc. DMS có hiêu
suât tôt nhât, vì dü liêu, chi muc hay dü liêu LOB có thê duoc nãm trên các không gian
báng khác nhau dê nâng cao hiêu suât.
Không gian báng duoc quán lý tu dông
Loai không gian báng này duoc quán lý bói bô nhó tu dông, ích loi cúa chúng là sú
dung tuong tu nhu các không gian báng SMS, nhung lai có hiêu suât tôt và tính linh
hoat cúa không gian báng DMS. Do dó trong DB2 9, dây là loai không gian báng mãc
dinh. Vói loai không gian báng này, nguòi dùng chi cân phái chi ra nhóm các thiêt bi luu
trü logic. Không phái dinh nghïa tuòng minh chô chúa. Các chô chúa duoc tao tu dông
theo các duòng dân. Viêc tãng kích thuóc hay bô sung thêm chô chúa mói hoàn toàn
do DB2 quán lý.
Ðê cho phép luu trü tu dông, dâu tiên ban cân tao môt CSDL vói chúc nãng luu trü tu
dông duoc kích hoat (mãc dinh) và liên kêt các duòng dân luu trü tói nó (CSDL). Sau
khi tao xong, nêu cân thiêt ban có thê tái dinh nghïa các duòng dân luu trü bãng cách
sú dung thao tác RESTORE co só dü liêu. Sau dó ban có thê tao các không gian báng
sú dung luu trü tu dông (dây là chê dô mãc dinh)
Ví du luu trü tu dông
Nhp môn H qun tr c s d liu DB2
75
Ðâu tiên, hãy tao môt CSDL vói luu trü tu dông duoc cho phép theo các ví du sau:
Luu trü tu dông duoc cho phép theo mãc dinh:
CREATE DATABASE DB1
Luu trü tu dông duoc chi dinh tuòng minh:
CREATE DATABASE DB1 AUTOMATIC STORAGE YES
Luu trü tu dông duoc cho phép theo mãc dinh nhung duòng dân duoc chi ra:
CREATE DATABASE DB1 ON /data/path1, /data/path2
Luu trü tu dông không duoc phép:
CREATE DATABASE DB1 AUTOMATIC STORAGE NO
Tiêp theo, chúng ta tao không gian báng vói luu trü tu dông duoc cho phép theo các ví
du sau:
Luu trü tu dông cho không gian báng duoc cho phép theo mãc dinh:
CREATE TEMPORARY TABLESPACE TEMPTS
Luu trü tu dông duoc chi dinh môt cách tuòng minh cho không gian báng:
CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE
Luu trü tu dông duoc chi dinh không tuòng minh, kích thuóc ban dâu duoc câp
phát, kích thuóc tãng theo tùng lân, và kích thuóc tôi da có thê tãng dên.
CREATE TABLESPACE TS1
INITIALSIZE 500 K
INCREASESIZE 100 K
MAXSIZE 100 M
Dü liêu duoc luu trü nhu thê nào trong không gian báng
Theo mãc dinh, DB2 së ghi vào các pham vi dïa (disk extent) tai thòi diêm chia bãng
(stripe) qua các chô chúa. Ví du nêu ban có môt không gian báng 4K vói kích thuóc mó
rông là 8, sú dung 3 chô chúa thô trong không gian báng DMS, diêu này có nghïa rãng
32K dü liêu (4K x 8 trang trên môt pham vi = 32K) së duoc ghi vào môt dïa truóc khi ghi
vào dïa tiêp theo. Ðiêu này duoc chi ra trong Hình 6.6. Chú ý rãng các báng không chia
sé các pham vi.
Hình 6.6 – Ghi dü liêu vào không gian báng
Nhp môn H qun tr c s d liu DB2
76
Tao không gian báng sú dung trung tâm diêu khiên
Ðê tao môt không gian báng tù trung tâm diêu khiên, kích chuôt phái vào thu muc Table
Spaces trong CSDL duoc chon và chon Create theo Hình 6.7. Tro giúp tùng buóc tao
không gian báng së xuât hiên nhu Hình 6.8.
Hình 6.7 – Tao không gian báng tù trung tâm diêu khiên
Hình 6.8 – Tao môt không gian báng sú dung tro giúp
Nhp môn H qun tr c s d liu DB2
77
7
Chuong 7 – Kêt nôi máy khách DB2
Chuong này trình bày các buóc thiêt lâp cân thiêt dê kêt nôi tù máy khách DB2 dên máy
chú DB2 sú dung giao thúc TCPIP. Chú ý rãng môt máy chú DB2 cüng duoc xem nhu
môt thành phân máy khách, vì thê máy chú DB2 cüng có hành vi cúa môt máy khách khi
kêt nôi dên môt máy chú DB2 khác. Hiên tai có môt sô cách khác nhau dê thiêt lâp kêt nôi
máy khách DB2; tuy nhiên, trong pham vi cúa chuong này chúng ta chi tháo luân môt
phuong thúc don gián nhât dó là sú dung công cu Tro giúp câu hình (Configuration
Assistant).
7.1 Tro giúp câu hình
Sú dung giao diên truc quan cúa công cu Tro giúp câu hình, ban có thê dê dàng câu hình
kêt nôi giüa môt máy khách DB2 và môt máy chú DB2.
Ðê thuc thi Tro giúp câu hình trên Windows, ban có thê chon: Start -> Programs -> IBM
DB2 -> DB2COPY1 -> Set-up Tools -> Configuration Assistant.
Nêu sú dung dòng lênh, ban có thê bãt dâu công cu này bãng cách sú dung lênh db2ca.
Hình 7.1 mô tá công cu tro giúp câu hình.
Hình 7.1 - Công cu tro giúp câu hình
7.1.1 Nhüng cài dåt båt buôc trên máy chú
Có hai viêc cân duoc thiêt lâp tai máy chú:
1) Biên DB2COMM
Nhp môn H qun tr c s d liu DB2
78
Biên dãng kí này xác dinh giao thúc truyên thông duoc sú dung dê lãng nghe các yêu câu
dên tù máy khách. Bô giao thúc TCPIP là bô các giao thúc truyên thông duoc sú dung
phô biên nhât. Khi thay dôi giá tri cúa tham sô này, hê thông cân duoc khói dông lai. Ðê
xem và thay dôi giá tri cúa biên DB2COMM trong tro giúp câu hình, chon Configure ->
DB2 Registry nhu duoc mô tá trong Hình 7.2 và Hình 7.3
Hình 7.2 – Truy câp DB2 Registry
Hình 7.3 – Kiêm chúng giá tri cúa biên DB2COMM trong DB2 Registry
2) Biên SVCENAME
Nhp môn H qun tr c s d liu DB2
79
Tham sô dbm cfg së duoc thiêt lâp dên tên dich vu (nhu duoc dinh nghïa trong têp dich
vu TCPIP) hoãc dên sô hiêu công giao tiêp dê sú dung khi ban muôn truy câp co só dü
liêu cúa thê hiên này. Tù công cu tro giúp câu hình, chon Configure -> DBM configuration
nhu duoc mô tá trong Hình 7.4
Hình 7.4 – Xem xét dbm cfg tù Tro giúp câu hình
Môt khi ban dã vào trong cúa sô câu hình cúa DBM, tìm dên muc Communications, và
tìm kiêm tên SVCENAME. Ban có thê thay dôi giá tri cúa SVCENAME thành môt chuôi
hay thành sô hiêu công giao tiêp khi cân thiêt. Ðiêu này duoc mô tá trong Hình 7.5
Hình 7.5 – Xem xét tham sô dbm cfg cúa SVCENAME
7.1.2 Nhüng cài dåt cân thiêt trên máy khách
Tai máy khách, ban cân biêt nhüng thông tin sau:
1. Tên co só dü liêu mà ban muôn kêt nôi dên
2. Sô hiêu công giao tiêp cúa thê hiên DB2 tai máy chú noi co só dü liêu duoc cài
dãt. Ban cüng có thê sú dung tên cúa dich vu, miên là tôn tai môt thuc thê tuong
Nhp môn H qun tr c s d liu DB2
80
úng trong têp dich vu TCPIP
3. ID cúa nguòi dùng hê thông và mât khâu dê dãng nhâp vào co só dü liêu. ID
cúa nguòi sú dung này cân duoc dinh nghïa truóc tai máy chú
Nhüng thông tin trên có thê duoc nhâp vào tù máy khách DB2 sú dung Configuration
Assistant. Ðâu tiên, thuc hiên chúc nãng Add Database Wizard bãng cách kích chon
Selected -> Add Database Using Wizard, nhu duoc mô tá trong Hình 7.6
Hình 7.6 – Sú dung chúc nång Add Database Wizard
Ban cüng có thê thuc hiên chúc nãng này bãng cách nhâp chuôt phái vào vùng trông
trong cúa sô tro giúp câu hình và chon “Add Database Using Wizard”.
Hình 7.7 mô tá chúc nãng Add Database Wizard:
Hình 7.7 – Thêm CSDL (Add Database Wizard)
Trong Add Database Wizard, có ba tùy chon:
Nhp môn H qun tr c s d liu DB2
81
Sú dung lý lich (Profile)
Có thê xãy ra nhiêu tình huông khi ban cân dinh câu hình nhiêu máy khách kêt nôi dên
cùng môt máy chú DB2. Trong nhüng tình huông nhu vây, tùy chon này thuân tiên dê
thuc hiên tât cá các câu hình tù môt máy khách, và luu câu hình này vào trong môt têp
“lý lich”. Vói têp này, ban có thê nap tât cá thông tin truc tiêp dên nhüng máy khách
khác. Trong Hình 7.7, nêu ban chon “Use a Profile”, ban së nap thông tin tù môt “lý lich”
dang tôn tai. Chi tiêt cúa tùy chon duoc cung câp trong muc sau cúa chuong này së mô
tá cách tao lý lich cho máy khách và máy chú.
Tìm kiêm trong hê thông mang
Phuong pháp này cüng duoc biêt dên nhu “Su khám phá” (Discovery), yêu câu DB2 tìm
kiêm hê thông mang tuong úng vói môt máy chú, thê hiên và co só dü liêu cho truóc.
Ðê phuong pháp này hoat dông, DAS phái duoc chay trên môi máy chú DB2 noi mà co
só dü liêu duoc tìm thây. Vói phuong pháp này, có hai cách dê thuc hiên viêc tìm kiêm:
- Tìm kiêm (Search):
Tìm kiêm trên toàn bô hê thông mang. Phuong pháp này không duoc khuyên
khích sú dung nêu hê thông mang cúa ban lón và có nhiêu bô tâp trung mang
(Hub/Switch), vì nó së mât nhiêu thòi gian truy vân dü liêu tù môi hê thông
- Ðã biêt (Known):
Tìm kiêm trên hê thông mang cho môt máy chú dã biêt tai dia chi mà ban cung
câp.
Hai phuong pháp duoc minh hoa trong Hình 7.8
Hình 7.8 – Phuong pháp tìm kiêm Search và Known
Trong môt sô truòng hop, nguòi quán tri hê thông không muôn các máy khách duoc tìm
kiêm trên mang vói co só dü liêu luu trü nhüng thông tin cân báo mât. Ðiêu này có thê
duoc ngãn chãn tai câp dô DAS, câp dô thê hiên hay co só dü liêu. Hình 7.9 cung câp chi
tiêt vê vân dê này.
Nhp môn H qun tr c s d liu DB2
82
Hình 7.9 – Câu hình các tham sô cho phép dùng Su khám phá (discovery)
Hình 7.9 mô tá nhüng câp dô khác nhau trong dó ban có thê cho phép hay ngãn cán sú
dung Su khám phá. Tai câp dô DAS, ban có thê gán tham sô cho truóc DISCOVER môt
giá tri là SEARCH hay KNOWN. Tai câp dô thê hiên, tham sô dbm cfg là
DISCOVER_INST có thê duoc thiêt lâp thành DISABLE hay ENABLE. Cuôi cùng, tai câp
dô co só dü liêu, tham sô DISCOVER_DB cüng có thê duoc thiêt lâp là ENABLE hay
DISABLE. Viêc thiêt lâp nhüng tham sô này môt cách hop lý së cung câp cho ban cách
thúc tìm ra co só dü liêu.
Câu hình môt cách thú công kêt nôi dên co só dü liêu
Sú dung phuong pháp này, ban thuc hiên thú công viêc thêm tên máy chú, sô hiêu công
giao tiêp và thông tin vê co só dü liêu cho công cu Tro giúp câu hình, noi së phát sinh ra
“danh muc” câu lênh dê thuc thi viêc câu hình kêt nôi. Công cu Tro giúp câu hình së không
kiêm tra thông tin có chính xác không. Chính ban së biêt nó không dúng khi ban không kêt
nôi duoc dên máy chú. Tuong tu, ban phái chãc rãng ID và mât khâu ban cung câp dê kêt
nôi tù xa dên co só dü liêu là dúng. Quá trình xác minh thông tin duoc mãc dinh thuc hiên
trên máy chú DB2 mà ban dang cô gãng kêt nôi dên, vì vây, ban phái cung câp môt ID
nguòi dùng cùng vói mât khâu dã duoc dinh nghïa trên máy chú dó.
7.1.3 Tao lý lich cho máy khách và máy chú
Nêu ban dang câu hình cho môt sô luong lón máy chú hay máy khách, hon nüa viêc thiêt
lâp cho môi máy dôc lâp nhau, ban có thê chi cân thiêt lâp cho môt máy duy nhât, sau dó
xuât ra môt lý lich (xuât têp câu hình chãng han), khi dó áp dung lý lich này dên các máy
khách/ máy chú khác. Ðiêu này giúp tiêt kiêm rât nhiêu thòi gian cho nguòi quán tri hê
thông khi thiêt lâp môi truòng.
Ðê tao môt lý lich tùy chinh theo yêu câu, tù Tro giúp câu hình, kích vào trình don
Configure, sau dó chon Export Profile -> Customize, nhu duoc mô tá trong Hình 7.10
Nhp môn H qun tr c s d liu DB2
83
Hình 7.10 – Xuât môt lý lich
Hình 7.11 mô tá nhüng truòng cân duoc hoàn thành dê xuât môt lý lich
Hình 7.11 – Hôp thoai tùy chinh xuât lý lich
Hình 7.12 mô tá kêt quá sau khi kích “Export” trong hôp thoai Customize Export Profile.
Nhp môn H qun tr c s d liu DB2
84
Hình 7.12 – Xuât kêt quá lý lich
Ðê nhâp môt lý lich dã duoc tùy chinh tù Tro giúp câu hình, kích vào trình don Configure,
sau dó chon Import Profile -> Customize, nhu duoc mô tá trong Hình 7.13
Hình 7.13 – Nhâp môt lý lich
Hình 7.14 mô tá nhüng truòng cân duoc hoàn thành dê nhâp môt lý lich
Nhp môn H qun tr c s d liu DB2
85
Hình 7.14 – Nhâp lý lich duoc tùy chinh
Nhp môn H qun tr c s d liu DB2
86
Bài tâp nhanh #4 – Sú dung Tro giúp thiêt lâp câu hình
Muc tiêu
Chuong trình Tro giúp thiêt lâp câu hình có thê duoc sú dung dê câu hình các kêt nôi
co só dü liêu tù xa môt cách nhanh chóng và dê dàng. Trong bài tâp nhanh này, ban së
tao chi muc cho môt co só dü liêu nãm trên môt máy chú DB2 ó xa (remote DB2 server
- duoc thê hiên bãng máy tram cúa nguòi ngôi bên canh ban, sú dung cá hai cách Tìm
kiêm và Khám phá). Môt khi co só dü liêu dó dã duoc liêt kê, ban së có thê truy câp co
só dü liêu này giông nhu là nó dang ó ngay trên hê thông máy cúa mình. DB2 thuc hiên
tât cá các quá trình giao tiêp môt cách thâm lãng.
Ghi chú
Bài tâp nhanh này giá dinh rãng ban dang làm viêc trong 1 mang máy tính. Nêu không
phái nhu vây, ban luôn có thê sú dung chính máy tính cúa mình vùa làm máy chú vùa
làm máy khách và làm theo các chi dân cho công viêc câu hình duói dây dê kêt nôi dên
chính hê thông cúa ban.
Thú tuc
1. Hói nguòi bên canh (hay nguòi huóng dân ban) các thông tin sau dây :
Thông tin co só dü liêu tù xa:
(PR) Giao thúc _TCPIP__
(IP) Ðia chi IP hay tên máy chú _________
(PN) Sô công cúa thê hiên (instance) _________
(DB) Tên cúa co só dü liêu _SAMPLE_
Các meo :
- Trong môi truòng Windows, dê lây tên cúa máy ta gõ lênh hostname tù cúa sô
dòng lênh
- Trong môi truòng Windows, dê lây dia chi IP ta gõ lênh ipconfig tù cúa sô
dòng lênh
2. Mó chuong trình Tro giúp thiêt lâp câu hình (Meo: chuong trình này có thê truy
câp thông qua lênh Start)
3. Mó báng chon Selected và chon muc Add Database Using Wizard
4. Trong trang Source cúa trình tro giúp, chon muc Manually Configure a
Connection to a Database. Nhân nút Next dê di chuyên dên trang tiêp theo cúa
trình tro giúp.
5. Trong trang Protocol cúa trình tro giúp, chon muc TCP/IP. Nhân nút Next dê di
chuyên dên trang tiêp theo cúa trình tro giúp.
6. Trong trang TCP/IP cúa trình tro giúp, nhâp vào tên dây dú cúa máy chú hoãc là
dia chi IP mà ban dã ghi lai trong buóc 1. Nhâp vào sô công ban dã ghi trong
buóc 1. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.
Ghi chú: Tùy chon Service Name có thê duoc sú dung nêu ban có môt muc
(entry) trong tâp tin Services nôi bô vói môt công có sô duoc dinh nghïa dua trên
công mà máy chú tù xa dang lãng nghe. Khi ban sú dung tùy chon này, DB2 së
tìm kiêm trong tâp tin dich vu trên máy cúa ban chú không phái trên máy chú.
Ban cân phái thêm môt muc vào tâp tin này nêu ban muôn sú dung tùy chon
trên.
Nhp môn H qun tr c s d liu DB2
87
7. Trong trang Co só dü liêu cúa trình tro giúp, nhâp vào tên cúa co só dü liêu
duoc dinh nghïa trên máy chú tù xa mà ban dã ghi lai trong buóc 1 ó truòng
Database Name. Ðê ý viêc truòng Database Alias duoc diên môt cách tu dông
vói cùng giá tri dó nhu thê nào. Bí danh co só dü liêu (database alias) là môt cái
tên mà nhüng úng dung nôi bô trên máy cúa ban së sú dung dê kêt nôi dên co
só dü liêu này. Bói vì ban dã có môt co só dü liêu trên máy cúa mình duoc dinh
nghïa sãn vói tên là SAMPLE, DB2 së không cho phép ban tao tên môt co só dü
liêu khác có cùng tên. Vì thê ban phái sú dung môt tên bí danh khác. Trong ví du
này, hãy dôi bí danh co só dü liêu thành SAMPLE1. Ban có thê nhâp vào môt lòi
chú thích tùy ý vê co só dü liêu này nêu ban muôn. Nhân nút Next dê di chuyên
dên trang tiêp theo cúa trình tro giúp.
8. Trong trang Data source cúa trình tro giúp, ban có thê (không bãt buôc) dãng ký
co só dü liêu (nguôn dü liêu) mói này nhu môt nguôn dü liêu ODBC. Viêc này
së tu dông dãng ký co só dü liêu dó trong chuong trình quán lý ODBC cúa
Windows (Windows ODBC Manager) cho ban. Trong ví du này, bó dâu dánh ó
muc “Register this database for ODBC” tai vì ban së không sú dung ODBC. Nhân
nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.
9. Trong trang Node Options cúa trình tro giúp, xác dinh hê diêu hành cúa máy chú
noi mà co só dü liêu tù xa dang nãm tai dó. Bói vì tât cá các máy tram trong
phòng máy này dêu sú dung Microsoft Windows, hãy dám báo rãng muc
Windows trong danh sách sô xuông duoc chon. Truòng Instance name nên
duoc dãt là DB2. Nêu truòng này chua duoc dãt thì hãy dãt giá tri cho nó là
DB2. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.
10. Trang System Options cúa trình tro giúp cho ban co hôi dê dám báo rãng hê
thông và tên máy chú dã duoc diên chính xác và xác nhân nhüng cài dãt cúa hê
thông. Nhân nút Next dê di chuyên dên trang tiêp theo cúa trình tro giúp.
11. Trang Security Options cúa trình tro giúp cho phép ban xác dinh noi ban muôn
viêc xác thuc nguòi dùng xáy ra và phuong thúc ban muôn sú dung. Chon muc
Use authentication value in server’s DBM Configuration. Cách làm này së sú
dung phuong thúc duoc xác lâp bói tham sô AUTHENTICATION trong tâp tin
câu hình cúa thê hiên (instance) ó xa. Nhân nút Finish dê tao danh muc co só
dü liêu tù xa và dóng trình tro giúp lai. Môt hôp thoai xác nhân së hiên ra. Nhân
nút Test Connection dê dám báo ban có thê kêt nôi thành công dên co só dü
liêu. Thêm vào dó, dê dám báo tên nguòi dùng và mât khâu mà ban cung câp là
hop lê trên máy chú ó xa (bói vì có thê tham sô AUTHENTICATION cúa máy chú
duoc dãt giá tri là SERVER). Nêu viêc thú kêt nôi thành công, ban dã tao danh
muc co só dü liêu ó xa môt cách thành công. Nêu viêc kêt nôi không thành công,
ban hãy quay tró lai trình tro giúp và dám báo rãng tât cá các giá tri dã duoc xác
lâp dúng (Nhân nút Change dê quay lai nhüng cài dãt trong trình tro giúp)
12. Mó trung tâm diêu khiên và thú xem nhüng báng khác nhau trong co só dü liêu
tù xa vùa mói duoc tao danh muc
13. Quay tró lai chuong trình Tro giúp thiêt lâp câu hình và thú tao danh muc vói
môt co só dü liêu khác, lân này sú dung tuy chon Search the Network. Làm tùng
buóc trong trình tro giúp giông nhu ban dã câu hình kêt nôi bãng tay. Luu ý
rãng, trên nhüng mang lón, viêc tìm kiêm có thê së tôn thòi gian dê trá vê các kêt
quá
Nhp môn H qun tr c s d liu DB2
88
8
Chuong 8 - Làm viêc vói các dôi tuong dü liêu
Chuong này tháo luân các dôi tuong dü liêu nhu là dang so dô (schemas), dang báng
(table), khung nhìn (view), chi muc (indexes), chuôi (sequences)… Môt sô các dôi tuong
dü liêu cao câp nhu là các bây su kiên (triggers), các hàm do nguòi dùng dinh nghïa
(UDFs) và nhüng thú tuc duoc luu trü së duoc tháo luân trong chuong 14, SQL PL luu
trü các thú tuc, và chuong 15, trong dòng SQL PL, UDFs, Triggers.
8.1 So dô
So dô là không gian tên (name spaces) cho tâp hop các dôi tuong dü liêu. Chúc nãng
chính cúa chúng nhu sau:
- Cung câp cho ban các chi dân cúa quyên só hüu các dôi tuong hay các môi
quan hê dôi vói môt úng dung.
- Gom nhóm các dôi tuong có môi quan hê vói nhau.
Tât cá các dôi tuong dü liêu trong DB2 có hai phân tên theo tiêu chuân; so dô là núa
phân dâu tiên cúa tên:
<tên_so dô>.<tên_dôi tuong>
Tên dôi tuong theo quy chuân phái là duy nhât. Khi ban kêt nôi co só dü liêu và tao hay
tham chiêu dên môt dôi tuong mà không dinh rõ tên so dô, DB2 së lây mã tài khoán mà
ban kêt nôi vói co só dü liêu làm tên so dô. Ví du, nêu ban kêt nôi dü liêu mâu vói tên
sú dung là “arfchong”, và tao môt báng bãng cách sú dung phát biêu CREATE TABLE
CREATE TABLE artist …
Tên theo quy chuân dây dú cúa báng duoc tao ra së là arfchong.artists.
8.2 Báng
Môt báng là môt tâp hop các dü liêu có môi quan hê vói nhau môt cách hop lý theo các
côt và hàng. Phát biêu bên duói cung câp cho ban ví du vê viêc làm cách nào dê tao ra
môt báng bãng cách sú dung phát biêu CREATE TABLE
CREATE TABLE artists
{
artno SMALLINT not null,
name VARCHAR (50) with default ‘abc’,
classification CHAR (1) not null,
bio CLOB (100K) logged,
picture BLOG (2M) not logged compact
}
Nhp môn H qun tr c s d liu DB2
89
In mytblsl
Trong các phân tiêp theo dây, chúng ta có thê mô tá các phân chính cúa phát biêu
CREATE TABLE này.
8.2.1 Kiêu dü liêu
Hình 8.1 Danh sách các kiêu dü liêu duoc hô tro trong DB2
Hình 8.1 – Các kiêu dü liêu cúa DB2
Các kiêu dü liêu dôi tuong lón (LOB)
Các kiêu dü liêu dôi tuong lón duoc dùng dê luu trü các chuôi lý tu lón, các chuôi nhi
phân lón, hay các tâp tin duoc chi ra trong hình 8.2
Nhp môn H qun tr c s d liu DB2
90
Hình 8.2 – Các kiêu dü liêu LOB
Các dôi tuong kiêu nhi phân lón này thuòng duoc viêt tãt dê cho dê hiêu: Môt dôi tuong
nhi phân lón phái là môt BLOB, môt dôi tuong ký tu lón là CLOB, và dôi tuong ký tu lón
2 byte cüng duoc biêt nhu là DBCLOB.
Các kiêu dü liêu duoc dinh nghïa bói nguòi dùng
DB2 cho phép ban có thê tu dinh nghïa kiêu dü liêu cúa chính mình, dua trên kiêu dü
liêu cúa hê thông. Ðiêu này duoc xem nhu là viêc có bô kiêu dü liêu do nguòi dùng tu
dinh nghïa (UDTs). UDTs duoc dùng khi:
- Có nhu câu thiêt lâp ngü cánh cho các giá tri
- Có nhu câu cân ép kiêu dü liêu DB2.
Các phát biêu theo sau dâu mô tá môt ví du vê viêc sú dung UDTs nhu thê nào và khi
nào
CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS
CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS
CREATE TABLE person
{
F_name VARCHAR (30),
Weight_p POUND NOT NULL,
Weight_k KILOGRAM NOT NULL
}
Trong ví du này, có 2 UDTs duoc tao ra là: POUND and KILOGRAM. Cá hai dêu duoc
xây dung dua trên kiêu dü liêu sãn có cúa hê thông INTEGER. Mênh dê WITH
COMPARISIONS duoc dinh nghïa nhu là phân cú pháp chi ra rãng viêc thay các hàm
vói cùng tên cüng giông nhu viêc các kiêu dü liêu së duoc tao ra.
Báng person dùng 2 UDTs mói trong côt weight_p và weight_k theo tuân tu. Nêu
bây giò chúng ta dua ra phát biêu sau:
SELECT F_NAME FROM PERSON
WHERE weight_p > weight_k
Nhp môn H qun tr c s d liu DB2
91
Ban së nhân duoc môt thông báo lôi vì viêc so sánh 2 côt vói kiêu dü liêu khác nhau.
Thâm chí weight_p và weight_k dùng dü liêu là POUND và KILOGRAM, theo thú tu, cá
hai truòng này dêu duoc dua trên kiêu dü liêu là INTEGER. Tuy nhiên bãng viêc tao
UDTs thì ban không thê thuc hiên loai so sánh này. Ðây chính là nhüng gì ban muôn,
bói vì trong cuôc sông thuc, làm thê nào dê so sánh giüa pound và kilogram? Nó së vô
lý.
Trong ví du kê tiêp, ban muôn so sánh côt weight_p vói kiêu dü liêu integer. Tuy nhiên
hai kiêu dü liêu này khác nhau, vì thê ban së nhân duoc thông báo lôi trù khi ban sú
dung môt hàm dã ép kiêu.
Nhu ban thây trong phát biêu bên duói, chúng tôi së dùng hàm ép kiêu POUND() dê
diêu so sánh này có thê thuc hiên duoc. Nhu dã nêu ó trên hàm ép kiêu POUND() duoc
tao ra vói UTD khi triêu goi WITH COMPARISIONS cúa phát biêu CREATE DISTINCT
TYPE.
SELECT F_NAME FROM PERSON
WHERE weight_p > POUND (30)
Các giá tri NULL
Môt giá tri null dai diên cho môt rang thái không xác dinh. Tuy nhiên, phát biêu CREATE
TABLE có thê dinh nghïa môt côt bãng cách sú dung mênh dê NOT NULL. Ðiêu này
dám báo rãng côt này së chúa giá tri dü liêu duoc biêt dên. Ban cüng có thê chi dinh giá
tri mãc dinh cho côt nêu NOT NULL duoc khai báo. Phát biêu kê tiêp cung câp ví du cho
diêu này:
CREATE TABLE Staff
{
ID SMALLINT NOT NULL,
NAM E VARCHAR (9),
DEPT SMALLINT NOT NULL with default 10,
JOB CHAR (5),
YEARS SMALLINT,
SALARY DECIMAL (7, 2),
COMM DECIMAL (7, 2) with default 15
}
8.2.2 Côt khoá chính (Identity columns)
Côt khoá chính này là môt con sô duoc tao ra tu dông, sô này là duy nhât cho môi dòng.
Chi có môt côt khoá chính cho môt báng.
Có hai cách tao ra giá tri cho côt khoá chính, diêu này phu thuôc vào viêc nó duoc dinh
nghïa nhu thê nào:
- Luôn luôn duoc sinh ra: nhüng giá tri luôn luôn duoc DB2 sinh ra. Các úng dung
thì không duoc phép cung câp nhüng giá tri cu thê.
- Sinh ra mãc dinh: giá tri có thê duoc cung câp cu thê bói môt úng dung hoãc,
nêu không có giá tri cho truóc, thì DB2 së sinh ra. DB2 không thê dám báo duoc
tính duy nhât. Tùy chon này duoc du dinh phuc vu cho viêc truyên dü liêu, và
cho viêc unload và reload cúa môt báng.
Hãy xem qua ví du sau:
Nhp môn H qun tr c s d liu DB2
92
CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100 INCREMENT BY 100),
firstname VARCHAR (50),
lastname VARCHAR (50))
Trong ví du này, côt subscriberID là môt INTEGER duoc dinh nghïa nhu là môt côt khoá
chính thuôc loai luôn luôn duoc sinh ra tu dông. Giá tri duoc sinh ra së bãt dâu tù 100,
và nó së duoc tãng lên vói buóc là 100.
8.2.3 Các dô tuong tuân tu (Sequence object)
Các dôi tuong tuân tu sinh ra môt con sô duy nhât dua vào co só dü liêu. Không giông
nhu các côt khóa chính, các dôi tuong tuân tu này là nhüng báng dôc lâp, xem ví du
minh hoa ó phát biêu sau:
CREATE TABLE t1 (salary int)
CREATE SEQUENCE myseq
START WITH 10
INCREMENT BY 1
NO CYCLE
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
SELECT * FROM t1
SALARY
-----------------
10
11
12
3 record(s) selected
SELECT prevval for myseq FROM sysibm.sysdummy1
1
-----------------
12
1 record(s) selected
PREVVAL cung câp cho ban giá tri hiên tai cúa dãy tuân tu, trong khi NEXTVAL cung
câp giá tri kê tiêp.
Ví du bên trên cüng sú dung SYSIBM.SYSDUMMY1. dây là môt báng danh muc hê
thông mà nó chi có môt côt và môt hàng. Nó có thê duoc dùng trong tình huông nhu môt
câu truy vân yêu câu trá vê chi môt giá tri. Các báng danh muc hê thông duoc mô tá
trong phân kê tiêp.
8.2.4. Các báng danh sách hê thông
Môi co só dü liêu có các báng danh sách hê thông cúa riêng nó. Các báng này luu trü
siêu dü liêu vê các dôi tuong co só dü liêu. Ban có thê truy vân nhüng báng này nhu
bât ky báng co só dü liêu bình thuòng khác.
Ba so dô duoc sú dung dê nhân dang các báng danh sách hê thông:
• SYSIBM: các báng co só, tôi uu hóa sú dung DB2
• SYSCAT: khung nhìn (view) dua trên báng SYSIBM, tôi uu su dê sú dung.
Nhp môn H qun tr c s d liu DB2
93
• SYSSTAT: các sô liêu thông kê co só dü liêu
Sau dây là môt vài ví du vê các khung nhìn cúa danh muc:
• SYSCAT.TABLES
• SYSCAT.INDEXES
• SYSCAT.COLUMNS
• SYSCAT.FUNCTIONS
• SYSCAT.PROCEDURES
8.2.5. Khai báo các báng tam thòi
Khai báo báng tam thòi là các báng duoc tao ra trong bô nhó, duoc sú dung bói môt
úng dung và duoc tu dông xóa khi úng dung kêt thúc. Nhüng báng này chi có thê duoc
truy nhâp bói úng dung tao ra chúng. Không có bán ghi nào duoc sinh trong báng danh
sách cúa DB2. Truy nhâp nhüng báng này có hiêu quá rât cao bói vì không có su tranh
châp danh sách, các hàng không bi khóa, không ghi nhât ký (tùy chon), và không kiêm
tra quyên. Cüng có hô tro chi muc cho các báng tam thòi này, dó là, bât cú chi muc
chuân nào cüng có thê duoc tao trên môt báng tam thòi. Ban cüng có thê chay lênh
RUNSTATS vói các báng này.
Khai báo các báng tam thòi ó bên trong môt không gian sú dung cúa báng tam thòi, dây
là cái phái duoc dinh nghïa truóc khi tao ra bât cú báng tam thòi nào. Các phát biêu
duói dây cung câp môt ví du làm thê nào dê tao ba khai báo báng tam thòi:
CREATE USER TEMPORARY TABLESPACE apptemps
MANAGED BY SYSTEM USING ('apptemps');
DECLARE GLOBAL TEMPORARY TABLE temployees
LIKE employee NOT LOGGED;
DECLARE GLOBAL TEMPORARY TABLE tempdept
(deptid CHAR(6), deptname CHAR(20))
ON COMMIT DELETE ROWS NOT LOGGED;
DECLARE GLOBAL TEMPORARY TABLE tempprojects
AS (fullselect) DEFINITION ONLY
ON COMMIT PRESERVE ROWS NOT LOGGED
WITH REPLACE IN TABLESPACE apptemps;
Khi môt khai báo báng tam thòi duoc tao ra, so dô cúa nó là SESSION, và phái duoc
chi tuòng minh. ID nguòi dùng duoc sú dung dê tao môt báng tam thòi së có tât cá
quyên trên báng. Môi úng dung tao môt báng tam thòi së quyên dôc lâp cúa riêng nó
duoc chi ra trong Figure 8.5.
Nhp môn H qun tr c s d liu DB2
94
Figure 8.5 – Pham vi cúa các báng tam thòi toàn cuc công khai
Bài tâp nhanh #5 - Khói tao môt báng mói
Muc tiêu
Ðên dây, ban có thê sú dung nhüng báng có sãn trong co só dü liêu SAMPLE dê minh
hoa các khái niêm. Cuôi cùng, ban së cân tao môt co só dü liêu gôm các báng cúa riêng
mình. Trong phân bài tâp này, ban së sú dung tao báng theo huóng dân tùng buóc dê
tao hai báng mói trong co só dü liêu SAMPLE.
Thú tuc
1. Mó Create Table Wizard nhu dã chi ra ó trên trong phân giói thiêu.
(Control Center -> All Databases -> SAMPLE -> (nhân phái chuôt) Tables object
-> Create …)
2. Ðinh nghïa tên báng, dinh nghïa côt và các ràng buôc. Báng së duoc sú dung dê luu
trü thông tin vê cung câp vãn phòng phâm, duoc sú dung bói môt du án trong co só
dü liêu SAMPLE. Môi lân vãn phòng phâm duoc mua, môt hàng së duoc thêm vào
trong báng này. Báng së có sáu côt:
• product_id: nhân dang duy nhât cúa sán phâm dang duoc mua
• description: mô tá vê sán phâm
• quantity: sô luong mua
• cost: giá cúa sán phâm
• image: môt búc ánh cúa sán phâm (nêu dùng duoc)
• project_num: Mã sô cúa du án mua sán phâm này
3. Ó trang dâu tiên cúa huóng dân tùng buóc, dôi vói tên so dô, gõ vàp ID ban sú
dung dê dãng nhâp, và sú dung tên báng là SUPPLIES. Ban cüng có thê gõ vào môt
ghi chú tùy ý. Nhân vào nút Next dê tiêp tuc tói trang sau cúa huóng dân.
4. Tù trang này, ban có thê thêm các côt vào báng. Nhân nút ADD dê thêm các côt.
Nhp môn H qun tr c s d liu DB2
95
Gõ “product_id” vào Column name và chon kiêu là INTEGER. Bó dâu kiêm ó
Nullable, và nhân vào nút Apply dê dinh nghïa côt.
Lãp lai buóc này cho nhüng côt còn lai cúa báng sú dung các tùy chon duoc chi
trong báng ó trên. Khi tât cá các côt dã duoc thêm vào, nhân nút OK và danh sách
các côt ban vùa tao së duoc tông kêt. Nhâm nút Next dê tiêp tuc tói trang kê tiêp
cúa huóng dân.
Tên côt Thuôc tính
product_id (completed) INTEGER, NOT NULL
description VARCHAR, length 40, NOT NULL
quantity INTEGER, NOT NULL
cost DECIMAL, Precision 7, Scale 2, NOT NULL
image BLOB, 1MB, NULLABLE, NOT LOGGED
project_num CHAR, length 6, NOT NULL
Chú ý: Tùy chon NOT LOGGED có thê duoc chi rõ khi khai báo các côt LOB. Ðiêu
này là bãt buôc vói các côt có kích thuóc lón hon 1GB. Nó cüng duoc khuyên dùng
cho các côt LOB lón hon 10MB bói vì su thay dôi các côt lón có thê làm dây têp này
rât nhanh. Ngay cá nêu NOT LOGGED duoc sú dung, su thay dôi các têp LOB
trong quá trình giao dich xáy ra, vân có thê quay lui vê trang thái lúc dâu. Cüng chú ý
rãng môt mình côt hình ánh duoc dinh nghïa nhu môt côt “NULLABLE”. Ban có nghï
tai sao côt duoc dinh nghïa nhu thê?
5. Ó dây, tât cá thông tin bãt buôc cho viêc tao báng dêu duoc cung câp. Bãng cách
nháy sang các trang khác, ban coi nhu dang chon các giá tri mãc dinh cho nhüng tùy
chon dó. Ban có thê thêm các khóa và ràng buôc sau khi môt báng vùa duoc tao.
Nhp môn H qun tr c s d liu DB2
96
6. Thêm môt ràng buôc tói báng dê han chê các giá tri trên côt quantity. Trên trang
Constraint cúa cúa sô thao tác, nhân nút ADD. Trong truòng Check Name, gõ vào:
valid_quantities. Trong truòng Check Condition, gõ vào: quantity > 0.
Nhân nút OK. Ban nên nhìn môt tông kêt cúa ràng buôc ban vùa thêm vào trong
trang Constraint cúa cúa sô thao tác. Nhân nút Next dê tiêp tuc tói trang tiêp theo
cúa màn hình thao tác.
7. Ban có thê tiêp tuc hoàn thành thao tác, thay dôi các tham sô khác cúa báng. Hoãc,
ban có thê nháy dên trang Summary, hay don gián là nhân vào nút Finish dê tao
báng.
8. Tù trung tâm diêu khiên, nhân vào thu muc Tables duói co só dü liêu SAMPLE
trong khung cây dôi tuong. Báng ban vùa tao bây giò së xuât hiên trong danh sách.
Có thê phái làm tuoi cúa sô trung tâm diêu khiên dê thây duoc su thay dôi này.
8.3 Các khung nhìn (Views)
Các khung nhìn là su trình bày hay hiên thi cúa dü liêu trong báng. Dü liêu cúa các
khung nhìn không duoc chúa riêng biêt, nhung së duoc tôn tai khi duoc goi tói. Vói các
khung nhìn lông nhau, môt khung nhìn duoc tao làm nên cho các khung nhìn khác. Các
thông tin vê khung nhìn ó trong muc luc khung nhìn DB2: SYSCAT.VIEWS,
SYSCAT.VIEWDEP và SYSCAT.TABLES. Sau dây là cách tao và sú dung khung nhìn:
CONNECT TO MYDB1;
CREATE VIEW MYVIEW1 AS SELECT ARTNO, NAME, CLASSIFICATION
FROM ARTISTS;
SELECT * FROM MYVIEW1;
Kêt quá dâu ra:
Artno Name Classification
--------- ---------------- ------------------------------
10 HUMAN A
20 MY PLANT C
30 THE STORE E
8.4 Các chi muc (Index)
Chi muc là tâp các khóa duoc sãp xêp theo muc ó các dòng trong báng. Chi muc cho
phép trùng, và nó duoc phép thay dôi. Môt sô dãc diêm ban có thê dinh nghïa chi muc:
• Kiêu chi muc tãng hoãc giám.
• Khóa cúa chi muc có thê là duy nhât hoãc không duy nhât.
• Nhiêu côt có thê sú dung làm chi muc (duoc goi là các chi muc ghép).
• Nêu chi muc và các dü liêu vât lý hop lai giông nhu các chuôi chi muc, duoc goi
là các bó chi muc.
Ví du:
CREATE UNIQUE INDEX artno_ix ON artists (artno)
Nhp môn H qun tr c s d liu DB2
97
8.4.1 Tro giúp thiêt kê (Design Advisor)
Tro giúp thiêt kê là môt công cu khá tôt dê giúp ban tôi uu thiêt kê co só dü liêu cho môt
công viêc dã biêt. Tro giúp thiêt kê có thê giúp ban bãng cách thiêt kê các chi muc cho
ban, Materialized Query Tables (MQTs), Multi-demension clustering (MDC) và các tính
nãng phân tán co só dü liêu. Tro giúp thiêt kê duoc goi tù Trung tâm diêu khiên, bâm
chuôt phái trên co só dü liêu và chon “Design Advisor” nhu hình 8.6:
Hình 8.6 – Thuc hiên tro giúp thiêt kê tù Trung tâm diêu khiên
Hình 8.7 Cho thây tro giúp thiêt kê. Theo sau là các buóc huóng dân dat duoc cách
thiêt kê goi ý tù DB2.
Nhp môn H qun tr c s d liu DB2
98
Hình 8.7 – Tro giúp thiêt kê
8.5 Tính toàn ven tham chiêu
Toàn ven tham chiêu cho phép co só dü liêu quán lý duoc các quan hê giüa các báng.
Ban có thê thiêt lâp kiêu cha-con (parent-child) cúa các quan hê giüa các báng nhu hình
8.8. Trong hình có hai báng DEPARTMENT và EMPLOYEE duoc liên kêt bói mã sô cúa
phòng (department). Côt WORKDEPT trong báng EMPLOYEE chi có thê chúa mã sô
cúa phòng dã tôn tai trong báng DEPARTMENT. Ðó là lý do trong ví du này, báng
DEPARTMENT duoc goi là báng cha, báng EMPLOYEE duoc goi là báng con hoãc
báng phu thuôc. Hình sau trình bày cách dùng CREATE TABLE dê tao báng
EMPLOYEE cân cho thiêt lâp các quan hê.
DEPARTMENT table (Parent table)
DEPTNO
(Primary key)
Or unique constraint
DEPTNAME MGRNO
EMPLOYEE table (Dependent table)
create table employee (empno ………
primary key empno
foreign key workdept
reference department on delete no action)
in DMS01
Hình 8.8 - Ví du vê toàn ven tham chiêu giüa các báng.
Trong toàn ven tham chiêu, thuòng sú dung các khái niêm sau:
EMPNO
(Primary key)
FISTHNAME LASTNAME WORKDEPT
(Foreign key)
PHONENO
Nhp môn H qun tr c s d liu DB2
99
Khái niêm Mô tá
Báng cha (Parent table) Báng dü liêu diêu khiên chúa khóa chính
Báng phu thuôc
(Dependant table)
Báng dü liêu phu thuôc vào báng cha. Chúa khóa ngoai,
môi dòng tôn tai trong báng phu thuôc phái phù hop vói các
dòng trong báng cha.
Khóa chính (Primary key) Ðinh nghïa khóa chính cúa báng cha, nó không duoc có giá
tri NULL và phái là duy nhât. Khóa chính có thê là môt hoãc
nhiêu côt trong báng.
Khóa ngoai (Foreign key) Tham chiêu dên khóa ngoai cúa báng cha.
Dü liêu trong môt báng có thê liên kêt vói dü liêu cúa môt hoãc nhiêu báng thông qua
toàn ven tham chiêu. Các ràng buôc có thê duoc áp dãt dê dü liêu phù hop vói dãc tính
nào dó hoãc các quy tãc trong kinh doanh cúa dü liêu. Ví du, nêu môt côt cúa báng là
giói tính, nó có thê duoc ép dê chúa môt trong hai giá tri là “M” cho nam và “F” cho nü.
Nhp môn H qun tr c s d liu DB2
100
9
Chuong 9 – Công cu di chuyên dü liêu
Nhüng công cu hay câu lênh duoc mô tá trong phân này duoc sú dung dê di chuyên dü
liêu trong cùng môt co só dü liêu hay qua nhüng co só dü liêu khác nhau nãm trên
cùng môt nên (platform) hoãc có thê khác nên.
Hình 9.1 mô tá tông quan vê công cu di chuyên dü liêu
Hình 9.1 - Công cu di chuyên dü liêu.
Trong hình 9.1 có 2 co só dü liêu: A và B. Bãng cách sú dung công cu EXPORT, ta có
thê kêt xuât dü liêu tù môt báng sang môt têp. Têp có thê thuôc các dinh dang sau:
ASC = ASCII
DEL = Delimited ASCII – ASCII có dinh giói han.
WSF = Worksheet format – Ðinh dang kiêu báng tính.
IXF = Integrated Exchange Format – Ðinh dang trao dôi thông nhât.
Nhüng têp dang ASC hoãc DEL là nhüng têp vãn bán và có thê mó và xem lai bãng bât
ky trình soan tháo vãn bán nào. WSF là môt loai dinh dang mà có thê di chuyên dü liêu
sang báng tính chãng han Excel hay là Lotus® 1-2-3. IXF là môt dinh dang không chi
bao gôm dü liêu mà còn là môt ngôn ngü dinh nghïa dü liêu (Data Definition Language-
DDL). Ðiêu này rât tiên dung, vì khi môt báng cân duoc xây dung lai, ta có thê xây dung
môt cách truc tiêp tù têp có dinh dang IXF, còn nhüng têp ó dinh dang khác thì ta không
thê làm duoc viêc này.
Khi dü liêu duoc kêt xuât sang dang têp, công cu IMPORT có thê duoc dùng dê chuyên
dü liêu tù dang têp sang dang báng. Báng phái tôn tai sãn duói khuôn mâu ASC, DEL
và WSF, ngoai trù dinh dang IXF. Môt phuong thúc khác là công cu LOAD dùng dê
chuyên nap dü liêu vào trong báng. Công cu LOAD thì nhanh hon vì nó di truc tiêp dên
nhüng trang co só dü liêu mà không cân tuong tác dên hê thông DB2; tuy nhiên,
phuong thúc này không thê tao ra nhüng kiêm tra ràng buôc dôi vói dü liêu, và së
Nhp môn H qun tr c s d liu DB2
101
không thuc hiên duoc các bây su kiên (nêu có). Ðê dám báo môt cách kiên dinh viêc
nap dü liêu dùng công cu LOAD, lênh SET INTEGRITY thuòng duoc sú sung theo sau.
Nhüng phân tiêp theo sau dây së mô tá nhüng công cu EXPORT, IMPORT và LOAD
môt cách chi tiêt.
9.1 Công cu EXPORT (xuât)
Công cu EXPORT duoc dùng dê trích dü liêu tù báng thành môt têp nhu dã dê câp
truóc dây. Bên duói dây, môt thao tác SQL SELECT duoc goi thuc thi. Ví du duói dây
kêt xuât thành têp employee.ixf thuôc dinh dang IXF có 10 dòng tù báng employee.
EXPORT TO employee.ixf OF IXF
SELECT * FROM employee
FETCH FIRST 10 ROWS ONLY
Chúng tôi khuyên khích ban nên thú chay ví du trên. Báng employee là môt bô phân cúa
co só dü liêu SAMPLE, vì thê truóc hêt ban nên kêt nôi dên co so dü liêu này, nó dã
duoc tao ra trong chuong truóc.
Nêu ban thích làm viêc vói nhüng công cu có giao diên dô hoa (GUI), công cu EXPORT
cüng có thê duoc thuc hiênn tù Trung tâm diêu khiên (Control Center) nhu trong hình
9.2 bên duói.
Hình 9.2 - Hiên thi hôp thoai báng EXPORT
Nhu dã thây trên hình, truóc hêt ban phái chon báng employee bãng cách nhân vào nó
môt lân, và kê dó thì nhân chuôt phái trên báng dê mó môt báng chon con (popup menu)
tù dó ban có thê chon Export. Sau khi chon muc này, cúa sô huóng dân tùng buóc së
hiên lên. Chi cân don gián làm theo nhüng buóc cung câp sãn trong huóng dân này dê
hoàn thành quá trình thuc hiên.
Nhp môn H qun tr c s d liu DB2
102
9.2 Công cu IMPORT (nhâp)
Công cu IMPORT duoc dùng dê nap dü liêu tù môt têp sang môt báng nhu dã nói truóc
dây. Ðãng sau nó, môt thao tác SQL INSERT duoc thuc thi thuc su. Khi môt lênh
INSERT duoc thuc thi, các bây su kiên së duoc kích hoat, tât cá các ràng buôc së có
hiêu luc ngay lâp túc, và vùng nhó dêm cúa co só dü liêu së duoc sú dung. Ví du sau
dây nap tât cá dü liêu tù môt têp employee.ixf có dinh dang IXF vào trong báng
employee_copy. Lua chon REPLACE_CREATE là môt trong nhüng lua chon có sãn vói
công cu IMPORT. Lua chon này së thay thê nôi dung cúa báng employee_copy nêu nhu
nó dã tôn tai truóc khi công cu IMPORT duoc thuc thi, hoãc là nó së tao môt báng và
nap dü liêu nêu báng chua tôn tai truóc dó. Chúng tôi khuyên khích ban nên chay thú ví
du duói dây, nhung truóc hêt ban phái chay công cu EXPORT trong phân truóc.
IMPORT FROM employee.ixf OF IXF
REPLACE_CREATE
INTO employ_copy
Nêu ban thích làm viêc vói Trung tâm diêu khiên, ban có thê thuc hiên công cu IMPORT
bãng cách chon bât ky báng nào, nhân chuôt phái trên nó, và chon chúc nãng Import
nhu hình 9.3
Hình 9.3 – Hôp hôi thoai thuc hiên công cu IMPORT
9.3. LOAD (nap)
Công cu LOAD là môt cách nap dü liêu tù têp sang báng nhanh hon. Nhu dã tháo luân
truóc dây, công cu LOAD không di qua hê thông DB2, vì thê các bây su kiên không
duoc kích hoat, vùng dêm së không duoc dùng và các ràng buôc së không có hiêu luc.
Mãt khác, môt thao tác LOAD së nhanh hon IMPORT vì nó là môt công cu nap dü liêu
câp thâp truc tiêp truy xuât dên trang dü liêu trên dïa. Nó làm viêc theo 3 giai doan:
LOAD, BUILD và DELETE.
Ví du sau dây nap tât cá các dü liêu tù têp employee.ixf có dinh dang IXF vào trong
báng employee_copy. Lua chon REPLACE là môt trong nhüng lua chon có sãn trong
Nhp môn H qun tr c s d liu DB2
103
LOAD. Trong truòng hop này, nó duoc sú dung dê REPLACE tât cá các dü liêu có
trong báng employe_copy.
LOAD FROM employee.ixf OF IXF
REPLACE INTO employ_copy
Sau khi thuc thi câu lênh trên, không gian cúa báng, noi mà báng cúa ban trú ngu, có
thê duoc dua dên trang thái CHECK PENDING. Ðiêu này có nghïa là ban cân phái chay
câu lênh SET INTEGRITY dê kiêm tra tính chãc chãn dü liêu cúa ban. Ví du sau dây së
chi cho ban làm thê nào.
SET INTEGRITY FOR employee_copy
ALL IMMEDIATE UNCHECKED
Nêu ban thích làm viêc vói Trung tâm diêu khiên hon, ban có thê thuc hiên công cu
LOAD và SET INTEGRITY nhu trong hình 9.4 và 9.5 tuong úng.
Hình 9.4 - Thuc hiên công cu LOAD
Nhp môn H qun tr c s d liu DB2
104
Hình 9.5 - Thuc hiên công cu SET INTEGRITY
9.4 Công cu db2move
Tai môt thòi diêm, công cu EXPORT, IMPORT, và LOAD chi làm viêc trên môt báng.
Mãc dù ban có thê viêt môt kich bán dê phát sinh các lênh trên cho tùng báng trong co
só dü liêu, nhung công cu db2move së giúp ban làm diêu dó. Công cu db2move chi làm
viêc vói têp IXF, và tên têp së tu dông duoc phát sinh bói db2move. Ví du bên duói së
biêu diên chay db2move vói export, import nhu thê nào dê sú dung co só dü liêu
SAMPLE:
db2move sample export
db2move sample import
Trung tâm diêu khiên không có tùy chon cho db2move.
9.5 Công cu db2look
Trong khi các công cu EXPORT, IMPORT, LOAD và db2move cho phép ban di chuyên
dü liêu tù môt báng này tói môt báng khác, trong cùng môt co só dü liêu hay qua vài co
só dü liêu, công cu db2look có thê duoc sú dung dê rút trích các câu lênh DDL, các co
só dü liêu tïnh, các dãc tính không gian báng cho môt co só dü liêu, và luu trü chúng
trong môt têp kich bán mà có thê sau này duoc chay trên môt hê thông khác. Ví du, nêu
ban muôn sao chép môt co só dü liêu tù máy chú DB2 dang chay trên Linux sang môt
máy chú DB2 dang chay trên Windows; dâu tiên ban chay công cu db2look trên máy
chú DB2 Linux dê lây duoc câu trúc cúa co só dü liêu và luu câu trúc này trên môt têp
kich bán. Sau dó ban chép têp kich bán này sang máy chú DB Windows, và thuc thi kich
bán dó dê bãt dâu xây dung bán sao co só dü liêu. Tói dây, câu trúc cúa co só dü liêu
dó dã duoc sao chép. Buóc kê tiêp, së chay công cu db2move vói tùy chon export trong
máy chú DB2 Linux, và sau dó chép tât cá các têp duoc phát sinh sang máy chú DB2
Windows, sau dó thuc thi db2move vói tùy chon là import hoãc load. Hoàn thành buóc
này, co só dü liêu cúa ban së duoc sao chép toàn bô tù môt máy chú này sang môt
máy chú khác hoat dông trên môt nên táng khác.
Nhp môn H qun tr c s d liu DB2
105
Kich bán trên cân thiêt khi làm viêc vói co só dü liêu trên các nên táng khác nhau nhu
Linux và Windows. Nêu cá hai máy chú dêu hoat dông trên cùng môt nên táng, ban së
dùng nhüng lênh sao luu du phòng và khôi phuc së làm cho xú lý dê dàng hon và rõ
ràng hon. Nhüng lênh sao luu và khôi phuc së duoc mô tá chi tiêt hon trong chuong
sau cúa cuôn sách này.
Nhüng ví du sau së rút trích không gian báng và bô trí vùng dêm dü liêu, cùng vói
nhüng lênh DDL tù co só dü liêu SAMPLE, và luu trü chúng trong têp sample.ddl.
Chúng tôi khuyên khích ban chay lênh bên duói và xem lai têp kêt quá xuât (vãn bán)
“sample.ddl”.
Lênh db2look có quá nhiêu tùy chon không thê mô tá hêt trong cuôn sách này; tuy nhiên
ban có thê sú dung cò -h dê lây duoc phân mô tá tóm luoc các tùy chon sãn có:
db2look -h
Công cu db2look cüng có thê duoc goi tù trung tâm diêu khiên nhu biêu diên trong Hình
9.6
Nhp môn H qun tr c s d liu DB2
106
Trong Hình 9.6 chon co só dü liêu mà ban muôn lây DDL, nhân chuôt phái lên nó, và
chon “Generate DDL”. Cúa sô Generate DDL xuât hiên, hiên thi môt sô tùy chon rút
trích, thê hiên nhu trong hình 9.7.
Nhp môn H qun tr c s d liu DB2
107
Bài tâp nhanh #6 - Trích xuât DDL tù co só dü liêu EXPRESS
Muc tiêu:
Khi ban sao luu môt co só dü liêu, muc tiêu cúa ban là phái tao lai co só dü liêu bãng
cách don gián và hop lý. Thông thuòng sú dung kich bán SQL, nó có thê duoc thuc
hiên sau khi DB2 duoc cài dãt. Trong bài tâp nhanh này, ban së rút ra nhüng dinh nghïa
dôi tuong tù co só dü liêu EXPRESS (dã tao trong bài tâp nhanh #3) sú dung Trung
tâm diêu khiên.
Quy trình:
1. Mó Trung tâm diêu khiên.
2. Nhân chuôt phái vào co só dü liêu EXPRESS trên cây dôi tuong và chon muc
Generate DDL. Viêc này mó cúa sô hôp thoai Generate DDL.
3. Trong cúa sô Generate DDL, chi rõ nhüng tùy chon cho Generate DDL nhu duói
dây. Nêu ban tao ra thêm nhüng dôi tuong bô sung trong môi truòng cúa ban
nhu không gian bàng, bô dêm.., ban së chon chúng ó dây. Khi ban không tao ra
bât ky loai dôi tuong nào, dùng dánh dâu vào hôp kiêm. Thông kê co só dü liêu
không duoc thêm vào vì môi truòng sán xuât có khá nãng chúa môt tâp hop
thông kê khác hon môi truòng phát triên. Tuong tu, nhüng thông sô câu hình së
có khá nãng khác di môt chút. Trong môi truòng mà ban só hüu, nêu moi thú
câu hình chính xác theo cách nó duoc triên khai, ban có thê chon thêm vào cái
tùy chon bô sung.
4. Chuyên qua trang Object. Ban có thê chi dinh chon nhüng dôi tuong mà ban
muôn phát sinh ra DDL. Trong truòng hop này, chon nguòi dùng và gián dô mà
ban dùng dê tao ra tât cá các dôi tuong cúa ban và phát sinh ra DLL cho tât cá
các dôi tuong trong gián dô này. Nhân nút Generate dê bãt dâu tao DLL.
Nhp môn H qun tr c s d liu DB2
108
5. Xem lai kêt quá DDL. Kêt quá cúa buóc thuc hiên truóc là môt kich bán vói tât
cá các câu lênh SQL cho các dôi tuong duoc chon. Ban së tô chúc các kich bán
này vào trong nhüng nhóm hop lý.
6. Tao thu muc C:\express trong tâp tin hê thông và luu tâp tin phát sinh DDL vào
trong thu muc này vói vói tên là schema.ddl, Nhân nút “Save”.
7. Mó têp duoc luu gân dây nhât trong cúa sô nhâp lênh. (Goi ý: tù cúa sô nhâp
lênh, chon File -> Open)
8. Mãc dù chúng tôi chi thuc su muôn DDL cúa các báng, ban së thây các DDL cho
cá nhüng dôi tuong khác nüa cüng duoc sinh ra. Chuyên tât cá nhüng khai báo
CREATE TRIGGER tói môt têp mói riêng biêt duoc goi là triggers.ddl.
Thâm chí dù chúng tôi chi tao ra có môt bây su kiên cüng dê riêng ra, nó là môt
thói quen tôt dê phân biêt các dôi tuong theo kiêu cúa nó.
9. Bây giò chúng tôi cüng khuyên cáo loai bó:
Nhp môn H qun tr c s d liu DB2
109
• Các lênh co só dü liêu CONNECT TO.
• Các lênh DISCONNECT.
Ban phái có hai kich bán tai diêm này:
C:\express\schema.ddl DDL cho các báng, các cách hiên thi, các chi muc
và các ràng buôc.
C:\express\triggers.ddl DDL cho các bây su kiên
10. Chuân bi kich bán cho su triên khai:
• Xóa nhüng chú thích không cân thiêt (ví du: -- CONNECT TO…)
• Tách các hàm và các thú tuc vào nhüng têp tin riêng (rât hüu dung khi có
quá nhiêu hàm và thú tuc). Ban cüng có thê nhóm chúng lai theo chúc
nãng hay úng dung (ví du: stringfunc.ddl, billing.ddl,
math.ddl, , …)
11. Ban có thê phái chú ý dên nhüng kí tu dãc biêt duoc dùng dê giói han kêt thúc
các bây, các hàm và các thú tuc (@). Ðiêu dó là cân thiêt dê dãt giói han kêt thúc
cúa lênh CREATE <••i t••ng> khác vói kêt thúc cúa môt khai báo thú tuc
nãm bên trong dôi tuong.
Nhp môn H qun tr c s d liu DB2
110
10
Chuong 10 – Báo mât co só dü liêu
Chuong này bàn vê su báo mât duoc xú lý nhu thê nào trong DB2. Hình 10.1 cung câp
môt cái nhìn tông quan co bán
Hình 10.1 – Tông quan vê su báo mât trong DB2
Nhu trong hình 10.1, su báo mât DB2 có hai phân:
Ðinh danh
Nó là môt tiên trình qua dó kiêm tra tính hop lê cúa thông tin dãng nhâp cúa nguòi dùng.
Tiên trình dinh danh duoc thuc thi bói môt chuong trình báo mât bên ngoài DB2 (diên
hình là bói môt hê diêu hành, môt phuong thúc dinh danh cúa môt mang nào dó, hoãc
là môt phân mêm dinh danh duoc thiêt kê theo yêu câu). Tiên trình dinh danh cúa hê
diêu hành duoc xác lâp mãc dinh. Khi sú dung tiên trình dinh danh cúa hê diêu hành,
tên nguòi dùng (userid) và mât mã duoc chuyên tói co só dü liêu ó máy chú (nhu là
môt phân cúa câu lênh kêt nôi). Sau dó, co só dü liêu ó máy chú së goi tiên trình dinh
danh cúa hê diêu hành dê kiêm tra tính hop lê cúa tên nguòi dùng và mât mã.
Quyên han
Ó phân này, DB2 kiêm tra xem nguòi dùng, dã qua dinh danh ó trên, có thê thi hành
thao tác nguòi dó yêu câu hay không. Thông tin vê quyên han duoc luu trü trong môt
danh muc DB2 và môt tâp tin câu hình DBM.
Ví du, trong hình 10.1, nguòi dùng ‘bob’ kêt nôi vói co só dü liêu SAMPLE bãng câu
lênh :
CONNECT TO sample USER bob USING pwd
Cá “bob” và “pwd” duoc chuyên tói hê diêu hành hoãc môt chuong trình dinh danh bên
ngoài dê kiêm tra xem tên nguòi dùng “bob” dã duoc dinh nghïa chua và mât mã dó có
Nhp môn H qun tr c s d liu DB2
111
duoc nôi vói nguòi dùng này hay không. Nêu phân này thành công, hê diêu hành së trá
lai quyên kiêm soát báo mât cho DB2. Tiêp theo, khi nguòi dùng “bob” thi hành lênh sau:
SELECT * FROM mytable
Bây giò DB2 tiêp tuc dùng quyên kiêm soát báo mât dê thi hành viêc kiêm tra quyên han
và xác nhân nguòi dùng “bob” có quyên SELECT trên báng “mytable” hay không. Nêu
quyên dó không hop lê, DB2 së trá vê môt thông báo lôi, nguoc lai câu lênh së duoc
thuc thi dua trên báng “mytable”.
10.1 Ðinh danh
Mãc dù tiên trình dinh danh thuc su duoc thuc hiên bói hê diêu hành (hoãc môt chuong
trình báo mât khác bên ngoài), DB2 vân quyêt dinh tâng mà tiên trình dinh danh xáy ra.
Tham sô AUTHENTICATION trong DBM CFG, thiêt lâp ó máy chú DB2, có môt dãy các
giá tri hop lê. Ví du khi tham sô duoc thiêt lâp là SERVER (giá tri mãc dinh), tiên trình
dinh danh së duoc thuc thi bói hê diêu hành hoãc chuong trình báo mât bên ngoài ó
trên máy chú.Tuy nhiên, nêu AUTHENTICATION duoc thiêt lâp là CLIENT, tiên trình
dinh danh së duoc thuc thi bói hê diêu hành hoãc chuong trình báo mât bên ngoài ó
trên máy khách. Vân dê này duoc minh hoa ó hình 10.2
Hình 10.2 – Noi tiên trình dinh danh xáy ra
Tham sô AUTHENTICATION có thê duoc thiêt lâp bãng môt trong nhüng giá tri duoc
kiêt kê trong báng 10.1
Lênh Mô tá
SERVER (mãc dinh) tiên trình dinh danh diên ra ó máy chú
CLIENT tiên trình dinh danh diên ra ó máy
khách
SERVER_ENCRYPT tuong tu nhu SERVER nhung tên
cúa nguòi dùng và mât mã duoc mã
hóa
KERBEROS tiên trình dinh danh diên ra dùng co
chê báo mât Kerberos
SQL_AUTHENTICATION_DATAENC tiên trình dinh danh máy chú công
thêm su kêt nôi phái dùng su mã hóa
Nhp môn H qun tr c s d liu DB2
112
dü liêu
SQL_AUTHENTICATION_DATAENC_CMP giông nhu ó trên nhung su mã hóa
dü liêu chi dùng khi có sãn
GSSPLUGIN tiên trình dinh danh dùng co chê báo
mât bên ngoài dua trên GSS API
Báng 10.1 - Nhüng giá tri tham sô AUTHENTICATION hop lê
10.2 Quyên han
Quyên han bao gôm các dãc quyên và quyên duoc luu trü trong nhüng báng hê thông
DB2 và duoc DB2 quán lý.
Môt dãc quyên cho phép nguòi dùng thi hành môt loai thao tác don dua trên co só dü
liêu nhu là CREATE, UPDATE, DELETE, INSERT, ….
Môt quyên là môt hành dông duoc xác dinh truóc bao gôm nhiêu dãc quyên. Hình 10.3
minh hoa các quyên và dãc quyên khác nhau trong DB2.
Nhp môn H qun tr c s d liu DB2
113
Hình 10.3 - Nhüng quyên và dåc quyên
Báng 10.2 nêu ra nhüng hàm khác nhau mà môi quyên có thê thuc hiên. Nhu ban thây
SYSADM có hâu hêt các quyên trong khi SYSMON có ít quyên nhât.
Chúc nång SYSADM SYSCTRL SYSMAINT SYSMON DBADM LOAD
Câp nhât DBM
CFG
Y
Câp phép/Húy bó
DBADM
Y
Thiêt lâp/Thay
dôi SYSCTRL
Y
Thiêt lâp/Thay
dôi SYSMAINT
Y
Thiêt lâp/Thay
dôi SYSMON
Y
Buôc nguòi dùng
ra khói co só dü
liêu
Y Y
Nhp môn H qun tr c s d liu DB2
114
Tao/Bó co só dü
liêu
Y Y
Khôi phuc thành
co só dü liêu
mói
Y Y
Câp nhât DB CFG Y Y Y
Sao luu co só dü
liêu/không gian
báng
Y Y Y
Khôi phuc thành
co só dü liêu dã
tôn tai
Y Y Y
Khôi phuc tiên Y Y Y
Båt dâu/kêt thúc
môt thê hiên
Y Y Y
Phuc hôi không
gian báng
Y Y Y
Thuc hiên theo
vêt
Y Y Y Y
Lây hình ánh
màn hình
Y Y Y
Truy vân trang
thái không gian
báng
Y Y Y
Luoc bót tâp tin
nhât ký
Y Y Y
Quiesce không
gian báng
Y Y Y Y Y
Nap báng Y Y Y
Thíêt lâp/gõ bó
trang thái treo
Y Y
Tao/húy bó su
kiên màn hình
Y Y
Báng 10.2 – Các quyên và dåc quyên DB2
Ðê câp quyên SYSADM, SYSCTRL, hoãc SYSMAINT cho môt nhóm, nhüng tham sô
SYSADM_GROUP, SYSCTRL_GROUP, hoãc SYSMAINT_GROUP trong DBM CFG
phái duoc gán cho nhóm hê diêu hành
Ví du, dê câp quyên SYSADM cho nhóm hê diêu hành ‘db2admns’, ban có thê dùng câu
lênh này:
update dbm cfg using SYSADM_GROUP db2admns
Môi thê hiên DB2 có nhüng dinh nghïa vê nhóm quyên riêng.
Trên Windows, nhüng tham sô này duoc mãc dinh là rông, diêu dó có nghïa là nhóm
nhüng nguòi quán tri Windows là SYSADM. Trên Linux, nhóm nhüng nguòi só hüu thê
hiên duoc mãc dinh là nhóm SYSADM.
10.3 Quyên quán tri co só dü liêu DBADM
DBADM (DataBase ADMinistrator) là nguòi có quyên cao nhât vê quán tri co só dü liêu.
Ðây không phái là quyên ó câp dô cu thê; do dó không duoc nêu ra trong phân truóc.
Ðê gán quyên quán tri co só dü liêu DBADM, ta sú dung lênh GRANT, thí du:
connect to sample
grant DBADM on database to user <userid>
Nhp môn H qun tr c s d liu DB2
115
Trong thí du trên, truóc hêt ban cân kêt nôi dên co só dü liêu, ó dây co só dü liêu có
tên là “sample”, và sau dó gán quyên DBADM cho nguòi dùng. Ðê có thê gán quyên
quán tri co só dü liêu DBADM, ban phái là SYSADM.
Ghi chú: DBADM không có quyên tao các không gian báng, cho dù nhüng không gian
báng này là các dôi tuong bên trong co só dü liêu. Nguyên nhân là vì môt không gian
báng có liên quan dên các vùng chúa dü liêu (containers) nhu dïa và các vùng dêm (bô
nhó) dó là các tài nguyên vât lý cúa hê thông.
10.4 Nhóm PUBLIC
DB2 dinh nghïa môt nhóm bên trong duoc goi là PUBLIC. Bât cú nguòi dùng nào dã
duoc dinh danh bói hê diêu hành hoãc dich vu chúng thuc mang dêu duoc ngâm dinh
là thành viên cúa nhóm PUBLIC. Khi môt co só dü liêu duoc tao ra, môt sô quyên cu
thê së duoc gán môt cách tu dông cho nhóm PUBLIC:
• CONNECT,
• CREATETAB,
• IMPLICIT SCHEMA,
• BINDADD
Ðê thêm vào múc dô báo mât, chúng ta nên thu hôi, húy bó moi nguyên tù nhóm
PUBLIC nhu sau:
REVOKE CONNECT ON DATABASE FROM PUBLIC
REVOKE CREATETAB ON DATABASE FROM PUBLIC
REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
REVOKE BINDADD ON DATABASE FROM PUBLIC
10.5 Lênh GRANT và REVOKE
Lênh GRANT và REVOKE là lênh SQL chuân, duoc dùng dê gán hoãc húy bó quyên
cúa môt nguòi dùng hoãc môt nhóm. Sau dây là môt sô ví du vê các câu lênh này:
Gán quyên SELECT trên báng T1 cho nguòi dùng USER1:
GRANT SELECT ON TABLE T1 TO USER user1
Gán tât cá các quyên trên báng T1 cho nhóm GROUP1:
GRANT ALL ON TABLE T1 TO GROUP group1
Húy bó tât cá các quyên trên báng T1 cúa GROUP1:
REVOKE ALL ON TABLE T1 FROM GROUP group1
Gán quyên EXECUTE trên thú tuc p1 cho nguòi dùng USER1:
GRANT EXECUTE ON PROCEDURE p1 TO USER user1
Húy bó quyên EXECUTE trên thú tuc p1 cúa nguòi dùng USER1:
REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1
10.6 Kiêm tra viêc câp quyên và quyên
Cách tôt nhât dê kiêm tra viêc câp quyên và kiêm tra quyên là thông qua trung tâm diêu
Nhp môn H qun tr c s d liu DB2
116
khiên.
Hình 10.4 mô tá cách mó hôp thoai Table Privileges cho báng EMPLOYEE tù trung tâm
diêu khiên.
Hình 10.4 – Mó hôp thoai Privileges
Trong hình 10.4, ban chon báng mong muôn, nhâp phái chuôt vào báng này và chon
Privileges. Môt khi duoc chon, hôp thoai Privileges hiên thi nhu hình 10.5. Hình này có
mô tá các truòng và các thành phân cúa hôp thoai.
Hình 10.5 – Hôp thoai Privileges
Nhp môn H qun tr c s d liu DB2
117
Môt cách khác, ban có thê truy vân các thê hiên danh muc DB2 SYSCAT là noi chúa
các thông tin vê viêc câp quyên. Ví du, nêu ban muôn biêt nguòi dùng DB2ADMIN có
quyên SELECT trên báng T2 hay không, và muôn biêt ai dã gán quyên này, ban có thê
thuc hiên câu truy vân nhu sau:
SELECT grantor, grantee, selectauth
FROM syscat.tabauth
WHERE tabname = 'T2'
GRANTOR GRANTEE SELECTAUTH
-------------------------------------------------
ARFCHONG DB2ADMIN Y
Trong thí du trên, nguòi dùng ARFCHONG dã gán quyên SELECT cho nguòi dùng
DB2ADMIN.
10.7 Xem xét quyên trên nhóm
Ðê viêc quán tri DB2 dê dàng hon, ta nên dãt nhüng nguòi dùng vào các nhóm và gán
các quyên cân thiêt cho các nhóm này.
Khi môt nhóm duoc gán quyên, các thành viên cúa nhóm së duoc gán các quyên ngâm
dinh duoc kê thùa vói tu cách thành viên nhóm.
Khi môt nguòi dùng bi xóa khói nhóm, nguòi này së mât các quyên ngâm dinh cúa
nhóm, nhung vân còn giü các quyên duoc gán tuòng minh. Nói môt cách khác các
quyên duoc câp môt cách tuòng minh phái duoc húy bó môt cách tuòng minh.
Nhp môn H qun tr c s d liu DB2
118
Bài tâp nhanh # 7: Cho phép và húy bó (phân quyên) quyên nguòi sü dung.
Muc tiêu:
Cho dên lúc này, ban dã sú dung môt tài khoán cúa nguòi quán tri cho viêc sú dung các
lênh vói co só dü liêu.Tài khoán này có thê truy nhâp tói moi tiên ích, dü liêu và nhüng
dôi tuong co só dü liêu dây dú. Bói vây, diêu quan trong là cân báo vê tài khoán này dê
tránh su nhüng su cô hay mât mát dü liêu có chú tâm. Trong da sô nhüng truòng hop,
ban së muôn tao ra nhüng tài khoán nguòi dùng khác hoãc nhüng nhóm vói môt thiêt
lâp quyên han chê hon.Trong bài tâp này, ban së tao ra môt tài khoán nguòi sú dung
mói, rôi gán nó nhüng dãc quyên xác dinh.
Thú tuc:
1.Mó cúa sô Windows Computer Management bãng cách kích chuôt phái vào biêu
tuong My Computer trên máy tính, và chon Manage.
2. Chon muc Local Users and Group ó nhóm System Tools nãm bên trái cúa cúa sô
Computer Management, nhân chuôt phái lên User và chon muc New User.
3. Trong cúa sô New User , nhâp các thông tin sau dây: trong muc User name nhâp
“customer” và trong muc Full name nhâp “Customer1”. Trong truòng Description nhâp
“A typical book store customer”. Trong truòng Password và Confirm password nhâp
“ibmdb2”. Bó dâu dánh ó muc “nguòi dùng cân dôi mât mã ó lân dãng nhâp sau” (User
must change password on next logon) và nhân nút Create dê tao nguòi dùng mói
4. Chon chê dô cao câp (Advanced) bãng cách chon muc Customize Control Center
trên thuc don Control Center Tool, chon tiêp tùy chon Advanced và nhân OK. Báo dám
khung nhìn làm viêc hiên tai ó chê dô Advanced.
5. Mó rông cây dôi tuong cúa Trung tâm diêu khiên ó bên trái cúa sô, chon All
Database -> EXPRESS -> Tables.
Nhp môn H qun tr c s d liu DB2
119
6. Phân nhüng quyên cân có cho nguòi dùng vùa mói tao ra: Tù danh sách các báng
trong có só dü liêu EXPRESS, nhân chuôt phái lên báng CUSTOMERS và chon muc
Privileges dê hiên thi cúa sô hôi thoai “Table Privileges”
7. Kích vào nút Add User và chon nguòi dùng “customer” vùa mói tao ra ó buóc 3. Kích
vào nút OK dê dóng hôp thoai Add User.
8. Ban chú ý rãng nguòi dùng “customer” dã duoc thêm vào danh sách nguòi dùng,
nhung chua duoc gán thêm các quyên. Ðê câp quyên cho nguòi dùng này, chon Yes
trong hôp thoai kéo xuông cúa tât cá các phân SELECT, INSERT, UPDATE và DELETE.
Môt nguòi dùng Internet cân phái có khá nãng thuc hiên add/update/delete dü liêu tài
khoán cúa ho. Chúng ta không câp cho nguòi sú dung nhüng quyên khác bói vì không
cân thiêt dôi vói ho. Nhân nút Ok dê dóng cüa sô hôp thoai Table Privileges và châp
nhân nhüng thay dôi vùa làm.
9. Lãp lai tùng buóc tù 7-9 cho báng BOOKS và báng SALES. Ðôi vói báng BOOKS,
chi cung câp quyên SELECT bói vì nguòi dùng “customer” không nên có khá nãng dê
diêu chinh và phuc hôi dü liêu trong kho. Ðôi vói báng SALES, chi cho quyên SELECT
và INSERT. Nguòi dùng không nên có quyên DELETE hoãc UPDATE bói vì chi nhüng
nhân viên mói cân phái có su truy nhâp dê súa dôi nhüng giao dich bán hàng.
10. Thú kêt nôi dên co só dü liêu bãng tài khoán cúa nguòi dùng “customer” dã tao ó
trên. Thú dê SELECT vói báng khách hàng. Ðiêu gì xáy ra? Thú DELETE hay UPDATE
dü liêu trong báng SALES. Ðiêu gì xáy ra?
Trong bài tâp nhanh này, chúng ta chi tao môt nguòi dùng là “customer”, tuy nhiên, úng dung cúa
ban có thê chúa dung nhiêu kiêu nguòi dùng khác. Thü nghiêm tao ra nhüng nguòi dùng khác và
Nhp môn H qun tr c s d liu DB2
120
gán cho nó nhüng däc quyên. Ban cüng có thê tao ra nhüng nhóm cúa các nguòi dùng và phân
quyên cho các nhóm dó, hon là làm vói môi nguòi dùng riêng lé.
Nhp môn H qun tr c s d liu DB2
121
11
Chuong 11 – Sao luu và khôi phuc
Trong chuong này chúng ta tháo luân vê nhât ký co só dü liêu DB2, làm thê nào dê sao
luu toàn bô hay môt phân co só dü liêu sú dung công cu BACKUP và làm thê nào dê
khôi phuc dü liêu sú dung công cu RESTORE.
11.1 Nhât ký co só dü liêu
Nêu ban dang làm viêc vói môt trình soan tháo vãn bán, môi lân ban muôn luu tài liêu
phái nhân vào nút SAVE. Trong co só dü liêu, câu lênh COMMIT së làm diêu dó. Môi lân
câu lênh COMMIT duoc thuc hiên thì moi thay dôi tao thành dü liêu và duoc luu trong
nhât ký co só dü liêu.
Tuong tu, khi ban làm viêc vói môt tài liêu vãn bán, dôi khi ban thây ó duói góc phái
màn hình có môt thông diêp ngãn “auto-saving”. Trong co só dü liêu, diêu này duoc
thuc hiên bói lênh UPDATE, INSERT và DELETE.
Ó phân trên ta dã dê câp dên nhât ký co só dü liêu. Nhât ký co só dü liêu duoc luu trü
trên dïa cúng và duoc dùng ghi lai nhüng hành dông cúa nhüng giao dich. Nêu hê
thông hay co só dü liêu bi hu hai, chúng duoc dùng nó dê lây lai nhüng giao dich dã
duoc gúi di trong suôt quá trình khôi phuc dü liêu.
Hình 11.1 minh hoa luông xú lý khi làm viêc vói co só dü liêu trong nhüng mâu nhât ký
Hình 11.1 - Nhât ký co só dü liêu
Trong hình 11.1 ta thây không gian báng (tablespace) và nhât ký (logs), chúng dêu duoc
luu trü trên dïa cúng, mãc dù ta dê xuât rãng chúng không luu trü trên cùng dïa cúng.
Ví du, khi câu lênh UPDATE duoc thuc hiên, nhüng trang cho nhüng dòng trong câu
lênh së duoc luu trong vùng dêm dü liêu (bô nhó). Nhüng thay dôi, câp nhât së duoc
thê hiên trong vùng dêm dü liêu, nhüng giá tri cü và mói së duoc luu trü trong nhüng
tâp tin nhât ký co só dü liêu, dôi khi túc thòi, dôi khi môt vùng dêm nhât ký dây. Nêu câu
lênh COMMIT duoc thi hành sau câu lênh UPDATE thì nhüng giá tri cü và mói së duoc
Nhp môn H qun tr c s d liu DB2
122
cât trong nhüng tâp tin nhât ký ngay lâp túc. Xú lý này cüng duoc lãp lai tuong tu cho
câu lênh SQL khác truy xuât dên co só dü liêu. Khi diêu kiên duoc cu thê thóa mãn, nhu
là viêc dat dên nguõng cúa su thay dôi trong tham sô CHNGPGS_THRES thì nhüng
trang trong vùng dêm dü liêu së duoc “chi tiêt hóa” hay ghi lên thành không gian báng
trên dïa cúng. Tham sô CHNGPGS_THRES chi dinh ti lê phân trãm cúa vùng dêm dü
liêu vói nhüng trang “dirty” dó là nhüng trang chúa nhüng thay dôi.
Vê khía canh hiêu nãng, ta không có cám giác thuc hiên 2 lân ghi cho môi lênh
COMMIT: Môt là ghi dên nhât ký co só dü liêu và môt ghi dên không gian báng trên dïa
cúng, dó là lý do tai sao “su chi tiêt hóa” cúa dü liêu dên không gian báng trên dïa cúng
chi xáy ra khi tham sô “chngpgs_thres” dat nguõng.
11.2 Các kiêu nhât ký
Có hai kiêu nhât ký:
Nhât ký so câp:
Ðuoc câp phát sãn và sô nhât ký so câp sãn sàng duoc xác dinh bói tham biên db cfg
LOGPRIMARY
Nhât ký thú câp:
Phân nhât ký thú câp này duoc DB2câp phát dông khi cân. Sô nhât ký thú câp duoc
gán giá tri bói tham biên db cfg LOGSECOND. Viêc câp phát dông môt nhât ký së gây ra
su lãng phí vì vây nhât ký thú câp së duoc xóa khi tât cá kêt nôi dên co só dü liêu dã bi
ngãt
11.3 Các kiêu ghi nhât ký
Có hai kiêu ghi nhât ký: Ghi tuân tu quay vòng (mãc dinh) và ghi luu trü
11.3.1 Ghi tuân tu quay vòng
Hình 11.2 mô tá luông xú lý khi ghi tuân tu quay vòng
Hình 11.2 - Xú lý nhât ký so câp và thú câp
Trong hình 11.2 có 3 nhât ký so câp, vì vây chúng ta gán LOGPRIMARY bãng 3. Ðê cho
don gián trong ví du này chi có 1 giao dich. Khi giao dich duoc thuc hiên không gian sú
dung bãt dâu ghi vào tâp tin nhât ký P1 và tiêp theo sau là P2. Nêu có môt lênh COMMIT
duoc thuc hiên và thông tin sau dó duoc xuât dên không gian báng trên dïa cúng, sau
dó P1 và P2 có thê duoc ghi dè dü liêu khác vì thông tin cü không cân thiêt nüa. Nêu,
mãt khác, giao dich dã sú dung P1, P2, P3 và vân cân nhiêu không gian nhât ký hon
nüa bói vì giao dich chua duoc COMMIT, thì môt nhât ký thú câp duoc câp phát (S1
trên hình vë) môt cách tu dông. Nêu giao dich vân còn tiêp tuc, nhiêu nhât ký thú câp
duoc câp phát cho dên khi sô nhât ký thú câp duoc câp phát dat nguõng tôi da
Nhp môn H qun tr c s d liu DB2
123
LOGSECOND. Nêu vân chua dú, môt thông diêp lôi chi ra diêu kiên hêt khá nãng câp
phát nhât ký và giao dich së duoc quay lui (hôi xú).
11.3.2 Nhât ký luu trü
Nhât luu trü cüng duoc biêt dên nhu là ghi giü lai, nhüng tâp tin nhât ký không bi ghi dè
nhung chúng duoc luu trü truc tuyên hay ngoai tuyên. Nhüng nhât ký luu trü truc tuyên
duoc luu trü vói nhüng nhât ký dông cân cho khôi phuc khi hê thông bi su cô. Nhüng
nhât ký luu trü ngoai tuyên duoc luu trong bãng tù và có thê làm viêc vói thú tuc
USEREXIT. Ðê có thê ghi nhât ký luu trü cân gán tham sô db cfg LOGRETAIN là YES.
Cách ghi luu trü thuòng duoc dùng trong nhüng hê thông sán phâm. Nhüng nhât ký
duoc luu trü cho phép khôi phuc co só dü liêu sóm nhât có thê bói nhüng tâp tin nhât
ký cü nhât trong hâu hêt các tình huông. Vói cách ghi luu trü nguòi quán tri co só dü
liêu có thê khôi phuc nhüng lôi gây ra bói con nguòi. Môt ví du cu thê là khi môt nguòi
trong hê thông bãt dâu thuc hiên môt giao tác không dúng kéo dài hàng ngày, khi vân dê
duoc phát hiên thì nguòi quán tri co só dü liêu së khôi phuc lai hê thông cü vào thòi
diêm truóc khi vân dê duoc xáy ra. Tuy nhiên, vân còn có môt sô thao tác bãt buôc phái
làm bãng tay dê dám báo viêc khôi phuc duoc chính xác.
Cách ghi luu trü là cân thiêt dôi vói quá trình khôi phuc lai và khôi phuc truc tuyên.
Hình 11.3 mô tá luông xú lý cúa ghi luu trü
Hình 11.3 - Ghi luu trü
11.4 Nhât ký co só dü liêu tù Trung tâm diêu khiên
Ban có thê câu hình nhât ký co só dü liêu tù trung tâm diêu khiên bãng cách nhân chuôt
phái trên co só dü liêu và chon “Configure Database Logging”
Nhp môn H qun tr c s d liu DB2
124
Hình 11.4 - Nhât ký co só dü liêu tù Trung tâm diêu khiên
Hình 11.5 thê hiên màn hình thiêt lâp câu hình nhât ký co só dü liêu, tai dây ta có thê
chon kiêu ghi nhât ký quay vòng (circular) hoãc ghi luu trü
Hình 11.5 - Ghi nhât ký co só dü liêu theo huóng dân tùng buóc
11.5 Các tham sô cúa nhât ký
Có nhüng tham sô DB CFG liên quan dên viêc tao bán ghi nhât ký. Báng 11.1 liêt kê
danh sách các tham sô chính.
Nhp môn H qun tr c s d liu DB2
125
Báng 11.1- Các tham sô nhât ký
11.6 Sao luu co só dü liêu
Lênh sao luu dü liêu DB2 cho phép ban tao môt bán sao chép co so dü liêu lúc lênh
duoc thuc thi. Cú pháp don gián nhât ban có thê sú dung dê chay lênh này là:
BACKUP DATABASE <dbname> [ TO <path> ]
Hâu hêt các lênh và công cu có thê duoc thuc hiên truc tuyên hay ngoai tuyên. Truc
tuyên nghïa là dê nguòi sú dung khác có thê duoc kêt nôi và thuc hiên các thao tác trên
co só dü liêu trong khi ban thuc thi lênh cúa mình. Ngoai tuyên là không nguòi nào
duoc kêt nôi dên co só dü liêu trong khi ban thuc hiên thao tác. Ðê cho phép môt thao
tác truc tuyên, thêm tù khóa ONLINE vào cú pháp lênh, nêu không thì ngâm dinh ban së
làm viêc trong chê dô ngoai tuyên.
Ví du, nêu muôn sao luu co só dü liêu sample dên duòng dân C:\BACKUPS ban có thê
dua ra lênh này tù trình don lênh DB2 cúa Window/Linux:
Tham sô Mô tá
logbufsz
Luong bô nhó duoc sú dung nhu môt bô dêm cho các bán ghi
nhât ký truóc khi ghi chúng vào dïa.
logfilsz Kích thuóc cúa môi nhât ký dã câu hình, có dung luong 4KB
logprimary Sô bán nhât ký chính vói kích thuóc logfilsz së duoc tao
logsecond
Sô têp nhât ký phu duoc tao và sú dung cho viêc khôi phuc nêu
cân thiêt
logpath/newlogpath Vi trí các nhât ký hoat dông hoãc luu trü tuong lai duoc dãt.
mirrologpath
Ðê báo vê các nhât ký trên duòng dân chính khói su cô hóng dïa
hay vô tình xóa, ban có thê chi dinh môt thiêt lâp dông nhât cho
các nhât ký duoc luu giü trên môt duòng dân phu (ánh cúa duòng
dân nhât ký chính)
loghead Tên têp nhât ký hoat dông hiên hành
userexit Cho phép chuong trình userexit sao chép nhât ký ngoai tuyên
softmax Giói han su mât mát cúa viêc khôi phuc hóng
logretain Cho phép chê dô ghi nhât ký luu trü
overflowlogpath
Tuong tu tùy chon OVERFLOW LOG PATH cúa lênh
ROLLFORWARD; tuy nhiên,thay vì chi dinh tùy chon OVERFLOW
LOG PATH cho môi lênh ROLLFORDWARD duoc dua ra, ban có
thê thiêt lâp tham sô câu hình này môt lân
blk_log_dsk_ful
Thiêt lâp tránh viêc tràn dïa phát sinh khi DB2 không thê tao ra môt
têp nhât ký mói trong duòng dân nhât ký dang hoat dông. Thay vì
dó, DB2 së cô gãng tao ra têp nhât ký môi nãm phút dên khi nó
thành công. Khi không còn tró ngai, SQL chi-doc có thê tiêp tuc.
maxlog Phân trãm sô nhât ký hoat dông tôi da cách nhau qua giao dich
num_log_span Sô têp nhât ký hoat dông cho môt UOW kích hoat
Nhp môn H qun tr c s d liu DB2
126
db2 BACKUP DB sample TO C:\BACKUPS
Chú ý rãng thu muc C:\BACKUPS phái tôn tai truóc khi thuc thi lênh. Cüng chãc chãn
là không có kêt nôi nào dên co só dü liêu khi ban thuc thi lênh trên, nêu không ban së
nhân môt thông báo lôi bói môt sao luu ngoai tuyên không thê duoc thuc hiên khi có
các kêt nôi.
Trong truòng hop dê tìm ra nhüng kêt nôi dên co só dü liêu, dua ra lênh DB2 này tù
trình don Window/Linux:
db2 list applications
Ðê buôc ngãt tât cá kêt nôi dên co só dü liêu, dua ra lênh tù trình don lênh DB2
Window hoãc cúa Linux:
db2 force application all
Ban có thê không cân chay lênh cuôi cùng trong môi truòng sán xuât vói nhiêu nguòi sú
dung, nêu không ban së nhân nhüng cuôc goi tù nhüng dông nghiêp nóng tính dây!
Cüng luu ý rãng lênh cuôi cùng chay theo cách thúc không dông bô. Nghïa là khi ban cô
gãng chay lênh sao luu ngay sau dó, nó có thê không làm viêc. Ðoi vài giây, và lãp lai
lênh sao luu nêu ban dã gãp lôi lúc dâu.
Sau khi thuc thi thành công lênh sao luu, môt têp mói chúa ánh co só dü liêu sao luu
duoc tao ra. Tên cúa têp này theo quy uóc duoc chi trong hình 11.6
Hình 11.6 - Quy uóc dåt tên ánh sao luu
Loai “0” có nghïa dó là bán sao luu dây dú. Loai “3” chãng han, nghïa là chi môt sao luu
báng biêu trông. Nút duoc cô dinh vói NODE0000 cho co só dü liêu không phân tán, là
truòng hop cho tât cá ân bán DB2 trù ân bán thuong mai DB2 Enterprise Edition vói
tính nãng DPF. Nút catalog cüng duoc cô dinh vói CAT0000. Tham kháo sách huóng
dân DB2 dê có chi tiêt hon
Khi có vài bán sao luu duoc ghi lai và luu trü trên cùng duòng dân thì môc thòi diêm ghi
lai ó cuôi tên têp duoc sú dung dê phân biêt giüa các ánh sao luu. Nhu chúng ta së
thây ó phân tiêp theo, lênh RESTORE có thê sú dung môc thòi diêm này dê phuc hôi
môt bán sao dã dinh.
Nhp môn H qun tr c s d liu DB2
127
Bài tâp nhanh #8 - Lâp lich sao luu
Muc dích:
Mãc dù DB2 có môt vài khá nãng tu dông duy trì co só dü liêu, nhung dôi khi ban cüng
muôn hiêu chinh chúng khi có môt hoat dông cu thê diên ra. Trong phân bài tâp nhanh
này, ban së hiêu chinh lich sao luu cho co só dü liêu EXPRESS.
Các thú tuc :
1. Tù cây dôi tuong ó Trung tâm diêu khiên, ban chon All Database. Nhâp chuôt
phái trên co só dü liêu EXPRESS và chon biêu tuong Backup. Công cu tùng
buóc Backup duoc khói dông.
2. Trong muc Introduction së tóm tãt trang thái hiên tai cúa co só dü liêu bao
gôm thòi diêm sao luu cuôi cùng và phuong thúc truy câp. Bâm Next dê chuyên
tói muc tiêp theo cúa công cu Backup.
3. Trong muc Image, chon dích dên cúa dü liêu së duoc sao luu. Thông thuòng,
ban nên chon môt ô dïa khác vói ô dïa dang luu co só dü liêu hiên hành. Bây
giò, tao môt thu muc mói trong hê thông có tên là C:\db2backup, dây së là thu
muc chúa co só dü liêu sao luu. Hãy chon biêu tuong File System trong danh
sách thá Media Type. Bâm nút Add, chon thu muc ban vùa tao ra, rôi bâm OK.
Sau dó bâm Next dê chuyên sang muc tiêp theo.
4. Ban có thê mó muc Options and Performance tuy nhiên ban nên dê chê dô
mãc dinh vì DB2 mãc dinh cho phép sao luu ó chê dô tôi uu nhât. Tiêp theo ban
chon chon muc Schedule.
5. Trong muc Schedule, nêu nhu trình lâp lich chua duoc kích hoat thì ban hãy
kích hoat chúng. Chon hê thông dê tao danh muc các công cu và thuc hiên
chúng. Chi ra môt gián dô cho danh muc công cu và chon dê tao nó trong co só
dü liêu EXPRESS hiên hành. Danh muc công cu së chúa dü liêu biên dôi vê tât
cá các tác vu lâp lich. Bâm nút OK dê tiêp tuc. Bâm Next dê chuyên sang muc
tiêp theo sau khi danh muc công cu dã duoc tao lâp.
Nhp môn H qun tr c s d liu DB2
128
6. Trong muc Schedule, tao ra môt muc luc cho viêc thi hành các tác vu. Lâp lich
sao luu môi ngày vào lúc 1 giò sáng. Bâm Next dê chuyên sang muc kê tiêp.
7. Trong muc Summary, ban së xem lai các tác vu së duoc tao ra. Sau dó bâm
Finish dê tao ra tác vu.
8. Chay Trung tâm tác vu (Task Center) dê xem hoãc súa chüa các tác vu sao
luu vùa mói tao ra.
Nhp môn H qun tr c s d liu DB2
129
11.7 Khôi phuc co só dü liêu
Khôi phuc co só dü liêu bao hàm viêc khôi phuc co só dü liêu tù các bán ghi du phòng
và nhât ký. Nêu nhu ban chi khôi phuc co só dü liêu tù bán ghi du phòng thì së tao ra
các co só dü liêu nhu dã tôn tai ó thòi diêm sao luu.
Nêu viêc luu trü bán ghi duoc cho phép truóc viêc sao luu, thì ban không chi khôi phuc
lai bãng cách sú dung ánh sao luu, mà còn tù các têp nhât ký. Ó phân tiêp theo ta së
thây cách khôi phuc dü liêu cuôn cho phép ban có thê khôi phuc tù các bán ghi du
phòng và sau dó ghép vào phân cuôi cùng cúa các têp nhât ký, hoãc môt diêm cu thê
theo thòi gian.
Chú ý rãng tù khôi phuc (recovery) duoc dùng nhiêu trong phân này, nhung lênh khôi
phuc lai là RESTORE.
11.7.1 Các kiêu khôi phuc dü liêu
Có ba loai khôi phuc dü liêu:
Khôi phuc dü liêu hóng:
Giá thiêt rãng ban dang làm viêc vói co só dü liêu DB2 trên máy tính thì dôt ngôt mât
diên, chuyên gì së xáy ra vói co só dü liêu cúa ban?
Khi ban khói dông lai máy tính và khói dông DB2, chuong trình khôi phuc dü liêu hóng
së duoc tu dông thuc thi. DB2 së tu dông chay lênh RESTART DATABASE và së doc
và phuc hôi các giao dich khi truóc ó trang thái kích hoat. Sau khi hoàn thành, ban së
duoc dám báo rãng, co só dü liêu cúa ban ó trang thái phù hop nhât.
Khôi phuc dü liêu phiên bán (hoåc khôi phuc ánh):
Có nghïa là, ban së phuc hôi co só dü liêu cúa ban tù ánh môt bán sao. Do dó co só dü
liêu cúa ban duoc trá vê trang thái ngay truóc khi nó duoc sao luu. Moi tác dông lên co
só dü liêu dó sau thòi diêm sao luu dêu bi mât.
Khôi phuc dü liêu theo thòi gian:
Kiêu khôi phuc dü liêu này vùa cho phép ban khôi phuc co só dü liêu tù môt bán sao,
vùa khôi phuc dü liêu tai môt thòi diêm xác dinh bãng lênh ROLLFORWARD. Khôi phuc
dü liêu kiêu này làm giám su mât mát dü liêu môt cách tôi da.
11.7.2 Khôi phuc co só dü liêu
Dùng lênh RESTORE dê khôi phuc dü liêu tù môt bán luu. Duói dây là câu trúc don
gián nhât cho câu lênh này:
RESTORE DATABASE <tên c• s• d• li•u> [from <•••ng d•n>] [taken
at <th•i-•i•m>]
Ví du: Nêu ban có môt têp sao luu có tên nhu sau:
Ban së gõ lênh nhu sau:
Nhp môn H qun tr c s d liu DB2
130
RESTORE DB sample FROM <•••ng d•n> TAKEN AT 2006314131259
11.8 Các hoat dông khác vói BACKUP và RESTORE
Duói dây là danh sách môt vài diêu ban nên biêt vê lênh BACKUP và RESTORE. Chúng
tôi khuyên ban nên doc lai cuôn huóng dân vê DB2 dê có thêm thông tin chi tiêt.
• Sao luu co só dü liêu ó chê dô 32 bit còn khôi phuc dü liêu ó chê dô 64 bit.
• Khôi phuc cá co só dü liêu dang tôn tai.
• Khôi phuc dü liêu tói môt ô dïa khác vói vùng cân khôi phuc.
• Khôi phuc hoãc sao luu dü liêu theo không gian báng, thay vi làm vói toàn bô co
só dü liêu.
• Cho phép sao luu nhüng thay dôi (Delta) và sao luu tãng dân (incremental).
Cách sao luu thay dôi chi sao luu nhüng thay dôi tiêp theo, trong khi dó cách sao
luu dân tãng thì ghi nhân toàn bô nhüng thay dôi và tích hop chúng vào môi ánh
sao luu.
• Sao luu các bán “chup” dü liêu (flash copy) (dòi hói vê phân cúng tuong thích)
• Khôi phuc báng dã mât (nêu tùy chon duoc lâp cho báng)
• Sao luu ó hê diêu hành này và khôi phuc ó hê diêu hành khác là không thê.
Dùng db2look và db2move cho truòng hop này.
Nhp môn H qun tr c s d liu DB2
131
12
Chuong 12 - Nhiêm vu báo trì
Trong chuong này chúng ta së bàn vê các nhiêm vu cân thiêt dê giü cho CSDL cúa ban
duy trì hoat dông duoc tôt. Tât cá moi thú trong DB2 dêu tu dông thuc hiên nhüng công
viêc này. Bán DB2 Express-C cüng giông nhu tât cá các bán DB2 hiên thòi dêu chúa
dung tât cá các khá nãng tu dông này. Khá nãng tu quán lý là môt loi ích lón làm nhó
gon và làm vùa phái sô luong nhân viên trong nhüng công ty, nhüng nguòi không cân
thuê làm liên tuc làm quán tri dê quán lý máy chú dü liêu. Khác vói viêc làm bãng tay,
nêu môt nguòi quán tri duoc thuê, anh ây hay cô ây së có nhiêu thòi gian ránh rôi dê
thuc hiên viêc nâng cao hoat dông làm gia tãng giá tri cho công ty.
12.1 REORG, RUNSTATS, REBIND
Có ba công viêc duy trì chính trong DB2, nhu hình 12.1 mô tá: REORG, RUNSTATS và
REBIND.
Hình 12.1 – Các công viêc duy trì: REORG, RUNSTATS, REBIND
Hình 12.1 trình bày nhüng công viêc duy trì duoc thuc hiên theo môt chu trình hình tròn.
Nêu môt REORG duoc thuc hiên, nó duoc khuyên là nên chay môt RUNSTATS, theo
sau là môt REBIND. Sau môt thòi gian, các báng trong môt co só dü liêu dã duoc thay
dôi theo các lênh nhu UPDATE, DELETE và INSERT. Tai thòi diêm dó, chu ky mói lai
duoc bãt dâu vói REORG.
12.1.1 Lênh REORG
Qua thòi gian, ban thuc hiên các tính toán INSERT, UPDATE, DELETE trên co só dü
liêu cúa ban, dü liêu cúa ban bãt dâu bi phân doan, chia nhó ra thành các trang co só
dü liêu. Lênh REORG së tái ghép nhüng mánh vun cüng nhu nhüng khoáng trông lai và
së tô chúc lai dü liêu dê làm cho viêc truy vân dü liêu tró nên hiêu quá hon. Các báng
hay thay dôi së có loi nhât khi dùng REORG. Ban có thê làm chi muc REORG nhu vói
Nhp môn H qun tr c s d liu DB2
132
các báng, và môt REORG có thê duoc thuc hiên truc tuyên hay không truc tuyên.
Lênh REORG không truc tuyên thuc hiên nhanh hon và hiêu quá hon, nhung không cho
phép truy nhâp tói báng, trong khi lênh REORG truc tuyên cho phép truy nhâp tói báng,
nhung có thê làm tiêu hao môt chút tài nguyên hê thông; dây là nhüng công viêc tôt nhât
cho nhüng báng nhó.
Cú pháp:
REORG TABLE <tablename>
Ví du:
REORG TABLE employee
Lênh REORGCHK có thê duoc dùng truóc môt REORG dê xác dinh báng hay chi sô
cân duoc súa.
12.1.2 Lênh RUNSTATS
Co chê tôi uu cúa DB2 (Optimizer) là “khôi óc” cúa DB2. Nó tìm nhüng duòng dân truy
nhâp hiêu quá nhât dê dinh vi và truy vân dü liêu. Co chê tôi uu là hê thông dánh giá tri
thúc, và sú dung phân tích thông kê các dôi tuong co só dü liêu duoc luu trong các
báng danh muc cho hiêu suât khai thác co só dü liêu lón nhât. Ví du, các báng danh
muc có các phân tích thông kê vê có bao nhiêu côt hiên diên trong môt báng, có bao
nhiêu hàng trong nó, có bao nhiêu và nhüng kiêu gì cúa chi sô sãn có vói môt báng, …
Thông tin vê phân tích thông kê không duoc câp nhât tu dông. Chính vì thiêt kê kiêu
này, nên ban không muôn DB2 câp nhât nhüng thông kê sau môi thao tác trên co só dü
liêu, nó së phán tác dung vói yêu câu vê hiêu nãng cúa hê thông. Thay vào dó, DB2
cung câp lênh RUNSTATS dê câp nhât nhüng thông kê này. Nó giü cho các thông kê
co só dü liêu luôn câp nhât. Co chê tôi uu cúa DB2 có thê tao ra nhüng thay dôi gôc rê
co bán trong duòng dân truy nhâp nêu báng chi có môt dòng so vói báng có môt triêu
dòng. Khi nhüng thông kê co só dü liêu duoc câp nhât, DB2 có thê chon môt phuong
án truy nhâp tôt hon. Tân suât cúa các thông kê tâp hop này së xác dinh duoc dü liêu
trong báng thay dôi nhu thê nào.
Cú pháp:
RUNSTATS ON TABLE <schema.tablename>
Ví d:
RUNSTATS ON TABLE myschema.employee
12.1.3 BIND/REBIND
Sau khi chay thành công lênh RUNSTATS, không phái tât cá các câu truy vân së duoc
dùng nhüng thông kê mói nhât. Nhüng so dô truy nhâp SQL tïnh duoc xác dinh khi ban
dua ra lênh BIND, vì các thông kê duoc dùng tai thòi diêm dó không giông nhau nhu
thòi diêm hiên tai. Hình 12.2 së giúp chúng ta hiêu ý tuóng này.
Nhp môn H qun tr c s d liu DB2
133
Hình 12.2 – Tiên trình kêt nôi SQL tïnh.
Trong hình 12.2 môt chuong trình nhúng viêt bãng C (duoc luu trü nhu môt têp vói
phân mó rông là “sqc”) duoc tiên biên dich. Sau khi tiên biên dich, hai têp duoc sinh ra,
môt têp “.c” chúa mã C vói tât cá chú thích SQL, và môt têp “.bnd” chúa tât cá các câu
lênh SQL. Têp C vói phân mó rông “.c” duoc biên dich nhu thuòng lê vói trình biên dich
C, tao môt “thu viên” nhu trình bày phía trên bên phái cúa hình. Têp “.bnd” giông nhu
vây, nó duoc dóng gói luu trong co só dü liêu. Ðóng gói thì tuong duong vói biên dich
các câu lênh SQL vói nhüng so dô truy nhâp tôt nhât duoc xác dinh trên các thông kê
dã có tai thòi diêm này, và sau dó luu chúng thành gói.
Bây giò, diêu gì së xáy ra nêu môt triêu dòng duoc chèn vào bên trong báng sú dung
trong chuong trình nhúng trên? Sau khi chèn, nêu môt lênh RUNSTATS duoc thuc thi,
nhüng thông kê së duoc câp nhât, tuy nhiên gói së không tu dông câp nhât dê tính toán
lai duòng dân co só trên nhüng thông kê mói nhât. Lênh db2rbind có thê duoc dùng dê
dóng gói lai các gói trên vói thông kê mói nhât.
Cú pháp:
db2rbind database_alias -l <logfile>
Ví du:
Ðê dóng gói lai tât cá các gói cúa co só dü liêu sample và luu nó trong nhât ký tai têp
mylog.txt, thuc hiên lênh sau:
db2rbind sample -l mylog.txt
12.1.4 Các công viêc duy trì tù Trung tâm diêu khiên
Tù Trung tâm diêu khiên ban có thê REORG và RUNSTATS. Hình 12.3 trình bày cách
thuc hiên.
Nhp môn H qun tr c s d liu DB2
134
Hình 12.3 – REORG và RUNSTATS tù Trung tâm diêu khiên
Ban chon báng mà ban muôn tô chúc lai, nhâp phái chuôt và chon tô chúc lai (cho
REORG) hay chay thông kê (cho RUNSTATS)
Hiên thi thông sô co só dü liêu:
Khi ban chon môt co só dü liêu, khung nhìn hoat dông co só dü liêu ó phía duói bên
phái cúa Trung tâm diêu khiên së cung câp thông tin vê co só dü liêu nhu là vê kích
thuóc, cúa lân sau cùng, dù nó có duoc báo trì tu dông hay không. Viêc hiên thi này cho
phép ban nhanh chóng xác dinh nhüng duy trì cân thiêt cho co só dü liêu cúa ban. Hình
12.4 hiên thi nhüng thông tin này.
Hình 12.4 – Hiên thi thông sô co só dü liêu tù Trung tâm diêu khiên
Nhp môn H qun tr c s d liu DB2
135
12.2 Các lua chon báo trì
Có 3 cách dê thuc hiên viêc báo trì hê thông.
1. Báo trì thú công
Ban thuc hiên hoat dông báo trì này môt cách thú công khi có nhu câu phát sinh.
2. Tao ra môt doan kich bán (script) dê thuc hiên viêc báo trì hê thông.
Ban có thê tao các kich bán vói nhüng lênh báo trì và lâp lich hop lý cho nó hoat dông.
3. Tu dông báo trì
DB2 tu dông giám sát công viêc báo trì cho ban (bãng lêch REORG, RUNSTATS,
BACKUP)
Trong phân này, chúng ta tâp trung chú yêu vào cách báo trì tu dông.
Hoat dông báo trì tu dông bao gôm nhüng buóc sau dây:
- Nguòi dùng dinh nghïa môt cúa sô báo trì (khung thòi gian) tai thòi diêm dó hê
thông së thuc hiên công viêc báo trì mà không gây ra su xáo trôn. Ví du, nêu hê
thông có ít nhât các hoat dông vào ngày chú nhât, tù 2h sáng tói 4h sáng, thì
khung thòi gian này së hoat dông nhu là môt cúa sô báo trì.
- Có 2 loai cúa sô báo trì chính: môt là dê thuc hiên truc tuyên, còn loai kia là dê
thuc hiên ngoai tuyên.
- DB2 chi thuc hiên báo trì môt cách tu dông khi cân thiêt và ó dang trong thòi gian
kích hoat cúa cúa sô báo trì.
Tù giao diên diêu khiên chính, ban có thê mó “Configure Automated Maintenance
Wizard” nhu hình minh hoa 12.5.
Hình 12.5 – Mó Configure Automated Maintenance Wizard
Hình 12.6 së hiên ra cúa sô “Câu hình dê báo trì hê thông môt cách tu dông theo huóng
dân”.
Nhp môn H qun tr c s d liu DB2
136
Hình 12.6 – Câu hình dê báo trì hê thông môt cách tu dông theo huóng dân
Nhp môn H qun tr c s d liu DB2
137
Bài tâp nhanh #9 – Câu hình viêc báo trì tu dông
Muc dích
Trong bài tâp nhanh này, vói vài thao tác don gián, ban së câu hình cho viêc tu dông
báo trì trên co só dü liêu mâu DB2.
Các thú tuc
1. Tù cây dôi tuong cúa Trung tâm diêu khiên, nhân chuôt phái vào co só
dü liêu SAMPLE và chon muc “Configure Automatic Maintenance”. Nó së
mó ra cúa sô dê thuc hiên viêc báo trì tu dông theo huóng dân.
2. Trang Introduction cúa “huóng dân” hiên thi nhüng cài dãt hiên thòi cúa
chúc nãng tu dông báo trì. Nêu ban tao ra co só dü liêu vói chúc nãng tu
dông báo trì, khi dó nó së tu dông duoc câu hình. Ban có thê dùng “huóng
dân” này dê câu hình lai chúc nãng tu dông báo trì. Bâm Next dê chuyên tói
trang tiêp theo cúa “huóng dân”.
3. Trang Type cúa “huóng dân” yêu câu ban chon giüa vô hiêu hóa tât cá các
tùy chon tu dông luu giü và thay dôi câu hình cúa viêc tu dông báo trì. Chon
môt chúc nãng dê thay dôi cài dãt hiên tai cúa tu dông luu giü. Bâm Next.
4. Trang Timing (thòi gian) cúa “huóng dân” së yêu câu ban chi rõ cúa sô
báo trì. Câu hình cho cúa sô ngoai tuyên së duoc thuc hiên vào môi tôi thú 7
và chú nhât tù giüa dêm tói 6h sáng nhu hình bên duói. Bâm nút Change
bên canh cúa sô báo trì ngoai tuyên và chon thòi gian nhu mong muôn. Sau
khi hoàn thành nhüng thông tin cân thiêt, bâm nút OK dê tró lai “huóng dân”.
Thoát khói cúa sô truc tuyên (báo trì truc tuyên có thê mó bât ky lúc nào).
Bâm nút Next.
Nhp môn H qun tr c s d liu DB2
138
5. Ðên trang Notification (cánh báo) cúa “huóng dân”, ban có thê cài dãt môt su
tuong tác trong truòng hop có môt hoat dông tu dông báo trì bi lôi. Bây giò
bó qua buóc dó. Bâm Next.
6. Ðên trang Actives cúa “huóng dân”, ban có thê chon là có tu dông hóa các
công viêc cá nhân hay không cüng nhu là duoc thông báo vê các hoat dông
cu thê khác.Trong ví du này, phái chãc rãng tât cá các hôp kiêm “Automate”
dêu duoc chon và các hôp kiêm “Notify” dêu không duoc chon. Bâm Next.
7. Truóc khi thuc hiên trang kê tiêp cúa “huóng dân”, ban nên câu hình vi trí
luu du phòng cúa co só dü liêu. Lý tuóng nhât là ban nên luu trü ó môt ô
dïa vât lý khác trong truòng hop dïa bi lôi. Tù trang Activies, chon chúc nãng
“Backup database”, sau dó bâm nút “Configure Settings”.
8. Trên trang Backup Criteria cúa cúa sô “Configure Settings”, chon chúc nãng
“Balance Database Recoverability with Performance”. Trên trang Backup
Location, chon vi trí luu du phòng và bâm nút “Change”. Chi ra môt vi trí khác
dê thuc hiên luu du phòng (phái báo dám là dú bô nhó trong ô dïa dó). Trên
trang Backup Mode, báo dám là “Offline Backup” dã duoc chon. Bâm OK dê
dóng trang Backup Criteria. Bâm nút Next.
9. Trang Summary (tóm tãt) cúa “huóng dân” chúa môt báng tóm tãt cúa nhüng
lua chon mà ban dã chon. Bâm nút Finish dê châp nhân và thi hành nhüng
thay dôi dó.
Nhp môn H qun tr c s d liu DB2
139
13
Chuong 13 – Truy câp dông thòi và khóa
Chuong này tâp trung tháo luân làm thê nào dê cho phép nhiêu nguòi dùng truy câp vào
cùng môt dü liêu giông nhau tai cùng môt thòi diêm mà không làm ánh huóng lân nhau,
và giü cho quá trình hoat dông cúa ho phù hop. Chúng ta së tháo luân vê khái niêm cúa
các giao dich, truy câp dông thòi và khóa.
13.1 Các giao dich
Môt giao dich hay môt don vi công viêc gôm có môt hay nhiêu dòng lênh SQL mà khi
thuc hiên cân phái duoc coi là môt don vi riêng lé. Có nghïa là nêu môt trong nhüng
dòng lênh trong giao dich thât bai thì toàn bô giao dich thât bai, và bât ky dòng lênh nào
duoc thi hành dên diêm thât bai thì së duoc quay lui (hôi xú), dua dü liêu vê giá tri,
trang thái truóc dó. Môt giao dich kêt thúc vói dòng lênh COMMIT, nó cüng có nghïa là
báo hiêu bãt dâu môt giao dich mói. Hình 13.1 cung câp cho chúng ta ví du cúa môt giao
dich
Hình 13.1 – Môt ví du vê giao dich
Trong hình 13.1, ví du ban muôn chuyên 100 dô la tù tài khoán tiêt kiêm (savings) cúa
ban sang tài khoán séc (checking). Viêc dó dòi hói phái thuc hiên công viêc này:
Trù 100 dô la ó tài khoán tiêt kiêm
Công 100 dô la vào tài khoán séc
Nhp môn H qun tr c s d liu DB2
140
Nêu dãy các viêc trên không duoc xem xét nhu là môt don vi công viêc - môt giao dich,
hình dung diêu gì së xáy ra nêu có lôi (xáy ra) sau khi trù tiên ó tài khoán tiêt kiêm,
nhung không công duoc tiên vào tài khoán séc. Ban së mât 100 dô la!
13.2 Truy câp dông thòi
Truy câp dông thòi ý nói rãng nhiêu nguòi có thê làm viêc ó cùng môt thòi diêm trên
cùng môt co só dü liêu. DB2 duoc thiêt kê nhu là môt co só dü liêu nhiêu nguòi dùng.
Viêc truy câp dü liêu phái duoc kêt hop chính xác và rõ rêt sú dung môt co chê dê báo
dám tính toàn ven và chãc chãn cúa dü liêu. Xem ví du 13.2
Hình 13.2 - Môt ví du cúa truy câp dông thòi và su cân thiêt cho viêc diêu khiên
truy câp dông thòi
Trong hình 13.2, có 4 úng dung, App A, App B, App C và App D dang cô gãng truy câp
dên cùng môt dòng (dòng 2) trong báng dü liêu. Không có diêu khiên truy câp dông thòi,
tât cá úng dung có thê thuc hiên các thao tác dôi vói dòng dü liêu này. Giá dinh rãng tât
cá úng dung dang câp nhât côt Age cho dòng 2 vói giá tri khác, úng dung thuc hiên câp
nhât sau cùng së là "nguòi chiên thãng" trong truòng hop này. Hiên nhiên trong ví du
này môt diêu khiên truy câp dông thòi nào dó duoc dòi hói dê dám báo chãc chãn cho
kêt quá. Ðiêu khiên truy câp dông thòi này dua vào viêc sú dung khóa bán ghi.
Khái niêm khóa và truy câp dông thòi có liên quan chãt chë vói nhau. Khóa dùng dê tam
thòi ngãn nhüng úng dung thao tác trên chúng cho dên khi môt thao tác kêt thúc. Nêu
chúng ta có nhiêu khóa hon trong môt hê thông thì viêc truy câp dông thòi së ít di. Nói
môt cách khác, nêu chúng ta có ít khóa hon trong hê thông thì së có nhiêu truy câp dông
thòi hon.
Nhüng khóa này së tu dông xuât hiên dê hô tro môt thao tác và së duoc giái phóng khi
thao tác kêt thúc (khi sú dung lênh COMMIT hoãc ROLLBACK). Các khóa có thê dãt
trên các báng hoãc các dòng. Có hai loai khóa co bán:
- Khóa chia sé (khóa S) - duoc sú dung khi úng dung muôn doc và ngãn cán câp
nhât tù nhüng dòng khác
- Khóa dành riêng (khóa X) – duoc sú dung khi môt úng dung câp nhât, thêm hay
xóa môt dòng
Bây giò chúng ta dê ý dên hình 13.3, nó có vé giông nhu hình 13.2 nhung bây giò nó
xuât hiên thêm môt khóa
Nhp môn H qun tr c s d liu DB2
141
Hình 13.3 – Môt ví du cúa truy câp dông thòi, và su cân thiêt cúa khóa
Trong ví du hình 13.3, nêu App B truy câp dòng thú 2 dâu tiên, và thuc hiên viêc
UPDATE, App B giü môt khóa dành riêng (khóa X) trên dòng dó. Khi App A, App C và
App D cô gãng truy câp vào dòng 2, chúng së không thê UPDATE dòng này bói vì khóa
X. Viêc kiêm tra này giúp báo dám tính toàn ven và chãc chãn cúa dü liêu.
13.3 Các vân dê khi không kiêm tra truy câp dông thòi
Khi không có diêu khiên truy câp dông thòi, chúng ta có thê gãp nhüng vân dê duói dây
• Mât dü liêu câp nhât
• Ðoc vói không cam kêt
• Ðoc không lãp lai
• Ðoc thùa
13.3.1 Mât dü liêu câp nhât
Mât dü liêu câp nhât là môt vân dê tuong tu nhu giái thích truóc trong muc này, khi úng
dung thuc hiên câp nhât sau cùng së là “nguòi chiên thãng”.
Hình 13.4 – Mât dü liêu câp nhât
Nhp môn H qun tr c s d liu DB2
142
Trong hình 13.4 có hai úng dung cô gãng câp nhât trên cùng môt dòng. Bên trái là App1,
và bên phái là App2. Và chuôi viêc sau dó là:
1. App1 câp nhât môt dòng
2. App2 câp nhât dòng tuong tu
3. App1 hoàn tât
4. App2 hoàn tât
Dü liêu câp nhât cúa App1 së bi mât khi App2 câp nhât lai nó, do dó xáy ra viêc “Mât dü
liêu”
13.3.2 Ðoc vói không cam kêt
Môt hành dông doc không cam kêt hoãc “doc có ý xâu” dê câp dên viêc môt úng dung
doc nhüng thông tin mà không duoc cam kêt, và tât nhiên viêc này thì không duoc dúng
dãn.
Hình 13.5 – Ðoc vói không cam kêt
Hình 13.5 kéo theo nhüng su viêc này:
1. App1 câp nhât môt dòng
2. App2 doc giá tri mói cúa dòng dó
3. App1 cuôn lai nhüng thay dôi trên dòng dó
App2 thì dang doc vói dü liêu không duoc cam kêt, và kê tù dó dü liêu không hop lê và
duoc goi là “doc vói không cam kêt”
13.3.3 Ðoc không låp lai
Ðoc không lãp lai ngu ý rãng ban không dat duoc kêt quá giông nhau sau khi thuc hiên
viêc doc giông nhau vói nhüng thao tác giông nhau.
Nhp môn H qun tr c s d liu DB2
143
Hình 13.6 – Ðoc không låp lai
Trong hình 13.6, duòng nhu nêu ban cô gãng ghi môt chuyên bay tù Dallas dên
Honolulu. Môt dãy các su viêc là:
1. App1 mó môt báng (duoc hiêu nhu báng kêt quá) hiên hành nhu ban thây trong
hình 13.6
2. App2 xóa môt dòng trong báng (ví du, dòng vói destination “San Jose”)
3. App2 hoàn tât nhüng thay dôi
4. App1 dóng và mó lai báng
Trong truòng hop này, tù lúc App1 không duoc cung câp dü liêu tuong tu dang doc lãp
lai, nó không thê sao chép lai báng dü liêu, dó chính là vân dê duoc goi là “doc không
lãp lai”
13.3.4 Ðoc thùa
Vân dê doc không có thuc giông nhu vân dê doc không lãp lai, nhung khác nhau là ó
nhüng lô trình kê tiêp, ban có thê thu duoc nhüng dòng vùa thêm vào mà dúng ra thì
chúng (dòng) ít hon.
Hình 13.7 cung câp cho chúng ta ví du cúa vân dê này
Hình 13.7 - Ðoc thùa
Nhp môn H qun tr c s d liu DB2
144
Hình 13.7 trình bày chuôi su kiên:
1. App1 mó môt báng
2. App2 thêm môt dòng vào co só dü liêu ó noi mà nó có dú tiêu chuân cúa báng
3. App2 hoàn tât nhüng thay dôi
4. App1 dóng và lai tiêp tuc mó báng
Trong truòng hop này, App1 së không thây dü liêu tuong tu nhu dang doc lãp lai, nó së
lây duoc nhiêu dòng hon. Vân dê này duoc goi là doc thùa
13.4 Các múc cô lâp
Ban có thê nghï các múc cô lâp nhu là noi giü các chính sách khóa, dua vào su lua
chon múc cô lâp, ban có thê có nhüng tác dông khác nhau cho co só dü liêu khóa môt
úng dung
DB2 cung câp nhüng múc dô báo vê khác nhau dê cô lâp dü liêu:
• Ðoc vói không cam kêt (UR)
• Ón dinh con tró (CS)
• Ðoc ôn dinh (RS)
• Ðoc lãp lai (RR)
13.4.1 Ðoc vói không cam kêt
Ðoc vói không cam kêt cüng duoc hiêu nhu doc có ý xâu. Ðó là múc dô cô lâp thâp
nhât, và cung câp múc dô truy câp dông thòi cao nhât. Không có su khóa dòng nào tôn
tai trên nhüng thao tác doc, nêu các úng dung khác không xâm nhâp dê xóa hoãc súa
môt báng, và thao tác câp nhât giü nhiêm vu nhu là nêu chúng ta dùng câp dô cô lâp ôn
dinh con tró.
Nhüng vân dê vân tôn tai vói câp dô cô lâp này:
• Ðoc vói không cam kêt
• Ðoc không lãp lai
• Ðoc thùa
Nhüng vân dê duoc ngãn ngùa vói câp dô cô lâp này là:
• Mât dü liêu khi câp nhât
13.4.2 On dinh con tró
Ón dinh con tró là câp dô cô lâp mãc dinh. Nó cung câp môt múc dô khóa tôi thiêu. Vê
co bán, vói múc cô lâp này thì dòng “hiên hành” cúa con tró (cursor) bi khóa. Nêu dó là
dòng chi doc, thì khóa së duoc giü cho dên khi môt dòng mói duoc nap hoãc don vi làm
viêc duoc kêt thúc. Nêu dòng duoc câp nhât, chiêc khóa së duoc giü cho dên khi don vi
làm viêc duoc kêt thúc
Nhüng vân dê vân tôn tai vói múc dô cô lâp này:
• Ðoc không lãp lai
• Ðoc thùa
Nhüng vân dê duoc ngãn ngùa vói múc dô cô lâp này
• Mât dü liêu câp nhât
• Ðoc không cam kêt
Nhp môn H qun tr c s d liu DB2
145
13.4.3 Ðoc ôn dinh
Vói doc ôn dinh, tât cá các dòng mà úng dung làm viêc trong môt pham vi dêu bi khóa.
Cho môt con tró, nó khóa tât cá các dòng dú tiêu chuân trong tâp hop kêt quá. Ví du nêu
ban có môt báng chúa 10.000 dòng và câu truy vân trá vê 10 dòng, sau dó chi có 10
dòng dó bi khóa. Co chê doc ôn dinh sú dung môt múc dô khóa vùa phái.
Vân dê vân tôn tai vói múc dô cô lâp này:
• Ðoc thùa
Nhüng vân dê duoc han chê vói múc dô cô lâp này là:
• Mât dü liêu câp nhât
• Ðoc vói không cam kêt
• Ðoc không lãp lai
13.4.4 Ðoc låp lai
Co chê doc lãp lai là múc dô cô lâp cao nhât. Nó cung câp câp dô khóa cao nhât, và truy
câp dông thòi tôi thiêu nhât. Khóa duoc giü trên tât cá các dòng, xú lý viêc xây dung
môt tâp hop kêt quá. Túc là nhüng dòng không cân thiêt trong tâp hop kêt quá cuôi
cùng có thê bi khóa. Không môt chuong trình nào khác có thê câp nhât, xóa, hoãc thêm
mói môt dòng mà có thê ánh huóng dên tâp hop kêt quá cho dên khi môt don vi công
viêc duoc hoàn tât. Co chê doc lãp lai báo dám rãng nhüng câu truy vân tuong tu nhau
duoc dua ra bói môt úng dung trong môt don vi làm viêc së nhân duoc kêt quá giông
nhau tai môi thòi diêm.
Vân dê vân còn tôn tai vói múc dô cô lâp này:
• không có
Nhüng vân dê duoc ngãn ngùa vói múc dô cô lâp này:
• Mât dü liêu khi câp nhât
• Ðoc không cam kêt
• Ðoc không lãp lai
• Ðoc thùa
13.4.5 So sánh các múc dô cô lâp dü liêu
Hình 13.8 so sánh su khác nhau mà các múc dô cô lâp mang lai. Trong hình, chúng ta
nhìn thây múc dô cô lâp “doc không cam kêt” không khóa gì cá. Múc dô cô lâp ôn dinh
con tró giü môt cái khóa dòng 1 khi nó dang lây dòng dó vê, nhung së giái phóng nó
sóm rôi nó lây dòng 2 vê,… Ðôi vói múc dô cô lâp doc ôn dinh hoãc doc lãp lai, bât cú
dòng nào lây vê së bi khóa, và khóa së không duoc giái phóng cho dên khi kêt thúc môt
giao tác (khi hoàn tât)
Nhp môn H qun tr c s d liu DB2
146
Hình 13.8 – So sánh các múc dô cô lâp
13.4.6 Ðåt múc cô lâp
Nhüng múc cô lâp có thê duoc chi rõ tai nhiêu múc :
• Phiên làm viêc trong úng dung
• Kêt nôi
• Câu lênh
Nhüng múc cô lâp bình thuòng duoc xác dinh tai phiên hoãc tai múc úng dung. Nêu
không chi rõ duoc múc cô lâp trong úng dung cúa các ban, nó mãc dinh tói con tró ôn
dinh. Chãng han, báng 13.1 cho thây nhüng múc cô lâp khá dï cho môt chuong trình
.NET hay JDBC và làm sao khi dãt nhüng thuôc tính này phái phù hop vói môt múc cô
lâp cúa DB2:
Múc cô lâp duoc phát biêu có thê dùng vói mênh dê WITH {múc cô lâp}. Chãng han
nhu:
SELECT … WITH {UR | CS | RS | RR}
Table 13.1 – Su so sánh cúa thuât ngü dåt múc cô lâp
Nhp môn H qun tr c s d liu DB2
147
Môt úng dung cân xác dinh “so bô” sô hàng trong môt báng. Hiêu suât rât là quan trong.
Con tró duoc yêu câu múc cô lâp ôn dinh vói ngoai lê cúa môt câu lênh SQL:
SELECT COUNT(*) FROM tab1 WITH UR
Vói SQL nhúng, các múc thiêt lâp duoc dãt tai thòi diêm dóng gói, còn vói SQL dông
các múc duoc dãt ó thòi gian chay.
Viêc chon sú dung múc cô lâp nào phu thuôc vào úng dung cúa các ban. Nêu úng dung
cúa các ban không yêu câu có nhüng giá tri nhu ó ví du, chon cô lâp UR. Nêu úng dung
cúa các ban yêu câu diêu khiên rât chãt trên dü liêu làm viêc vói nó, chon cô lâp RR.
13.5 Khóa leo thang
Môi khóa do DB2 tao ra së sú dung luong bô nhó nào dó. Khi bô tôi uu cho rãng nó tôt
hon là dê môt khóa trên toàn bô báng, thay vì khóa nhiêu hàng, su leo thang khóa xuât
hiên.
Hình 13.9 minh hoa cho diêu này:
Hình 13.9 – Khóa leo thang
Có hai tham sô câu hình co só dü liêu chính liên quan dên khóa leo thang:
• LOCKIST - Sô luong cúa bô nhó (trong trang 4k) du trü dê quán lý nhüng khóa
cho moi úng dung duoc nôi. Su mãc dinh là nãm muoi lân trang 4K (200K) trên
Windows.
• MAXLOCKS - Phân trãm cuc dai cúa toàn bô danh sách khóa cho môt úng
dung. Mãc dinh là 22%.
Bói vây, nêu nhüng giá tri ngâm dinh duoc sú dung, khóa leo thang xuât hiên khi
môt úng dung don yêu câu hon 44K trong tông bô nhó khóa (200K * 22% = 44K).
Nêu su leo thang khóa xuât hiên thuòng xuyên vói su thiêt lâp này, tãng giá tri cúa
LOCKIST và MAXLOCKS. Khóa leo thang không tôt cho hiêu nãng nhung lai giám
su xung dôt. Têp nhât ký triêu chúng cúa DB2 có thê duoc dùng dê xác dinh liêu có
Nhp môn H qun tr c s d liu DB2
148
phái su leo thang khóa dang xuât hiên. (db2diag.log, thuòng têp này nãm trong thu
muc: C:\Program Files\IBM\SQLLIB\DB2)
13.6 Kiêm soát khóa
Ban có thê theo dõi nhüng su sú dung khóa bãng ánh chup nhanh khóa úng dung DB2.
Ðê bât nhüng ánh chup nhanh cho khóa, ta dùng lênh:
UPDATE MONITOR SWICTHES USING LOCK ON
Sau khi duoc cho phép, thông tin theo dõi së duoc tâp hop. Ðê thu duoc môt báo cáo
cúa khóa vào môt thòi gian nhât dinh, dùng lênh sau:
GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENT ID <handle>
Hình 13.9: Ành chup nhanh kêt quá cúa môt ví du sú dung úng dung khóa
Figue 13.9 – Ành chup nhanh khóa cúa các úng dung
13.7 Chò khóa
Khi hai hoãc nhiêu các úng dung cân thuc hiên môt phép toán trên cùng môt dôi tuong,
môt trong sô dó có thê phái doi dê nhân duoc khóa. Theo mãc dinh môt úng dung së
Application Lock Snapshot
Snapshot timestamp = 11-
05-2002 00:09:08.672586
Application handle = 9
Application ID =
*LOCAL.DB2.00B9C5050843
Sequence number = 0001
Application name =
db2bp.exe
Authorization ID =
ADMINISTRATOR
Application status = UOW
Waiting
Status change time = Not
Collected
Application code page = 1252
Locks held = 4
Total wait time (ms) = 0
List Of Locks
Lock Name =
0x05000700048001000000000052
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 255
Hold Count = 0
Lock Object Name = 98308
Object Type = Row
Tablespace Name = TEST4K
Table Schema = ADMINISTRATOR
Table Name = T2
Mode = X
Nhp môn H qun tr c s d liu DB2
149
doi vô han. Thòi gian chò doi môt úng dung cúa môt khóa duoc kiêm soát bói tham sô
câu hình co só dü liêu. Giá tri ngâm dinh cúa tham sô này là -1 (doi vô han).
Thanh ghi CURENT LOCK TIMEOUT cân duoc dùng dê dãt thòi gian chò khóa cho môt
kêt nôi dã cho. Theo mãc dinh, thanh ghi này duoc dãt giá tri cúa LOCKTIMEOUT. Sú
dung SET LOCK TIMEOUT dê thay dôi giá tri cúa nó. Môt khi giá tri cúa thanh ghi dã
duoc dãt cho môt kêt nôi, nó së tôn tai qua moi giao dich.
Ví du:
SET LOCK TIMEOUT=WAIT n
13.8 Vân dê khóa phu thuôc và phát hiên
Môt su bê tãc (deadlock) xuât hiên khi hai hoãc nhiêu các úng dung duoc nôi tói cùng
co só dü liêu. Su chò doi chua bao giò duoc giái quyêt bói vì môi úng dung dang giü
môt tài nguyên mà nó phuc vu cho nhüng nhu câu khác nhau. Trong thiêt kê úng dung,
nhüng su bê tãc luôn là môt vân dê chiêm nhiêu thòi gian.
Hình 13.10: Minh hoa môt tình huông bê tãc.
Hình 13.10 - Kich bán su bê tåc
Trong hình 13.10, nguòi A giü duoc bôt nho khô và giá sú së không cho phép nguòi
khác dùng cho dên khi ông ta có süa. Mãt khác, nguòi B giü duoc süa, và së không cho
phép nguòi khác cho dên khi ông ta có bôt nho khô. Bói vây, chúng ta có môt tình
huông bê tãc.
Ðê mô phóng môt tình huông bê tãc ó DB2, theo nhüng buóc sau dây:
1. Mó hai cúa sô soan tháo lênh cúa DB2 (chúng tôi së goi là "CLP1" và "CLP2"
tuong úng). Chúng dai diên cho hai úng dung khác nhau kêt nôi tói co só dü
liêu.
2. Tù CLP1 thuc hiên các lênh sau:
db2 connect to sample
db2 +c update employee set firstnme = ‘Mary’ where empno =
‘000050’
Ðâu tiên, chúng ta dang kêt nôi tói co só dü liêu có tên SAMPLE, và sau dó thuc
hiên môt lênh câp nhât hàng trên báng employee làm vói "empno= 50000". Lua
Nhp môn H qun tr c s d liu DB2
150
chon "+c " trong câu lênh chi ra rãng, chúng tôi không muôn cúa sô lênh cúa
DB2 tu dông cam kêt lênh này. Chúng tai dang cô ý làm diêu này sao cho chúng
ta giü duoc khóa.
3. Tù CLP2 thuc hiên nhüng lênh sau:
db2 connect to sample
db2 +c update employee set firstnme = ‘Tom’ where empno =
‘000030’
Ó cúa sô cúa CLP2, nó dai diên cho úng dung thú hai, chúng ta cüng nôi vào co
só dü liêu SAMPLE, nhung lai câp nhât môt hàng khác ó báng employee.
4. Lênh tù CLP1:
db2 +c select firstnme from employee where empno = ‘000030’
Sau khi nhân Enter thuc hiên câu lênh SELECT ó trên, câu lênh SELECT này có
vé së treo. Nó thât su là không phái là treo, mà là doi khóa cúa hàng này trá vê
do CLP2 dã giü trong buóc 3. Tai diêm này, nêu CLOCKTIMEOUT dã duoc dê
lai vói giá tri ngâm dinh cúa nó là -1, úng dung CLP1 doi mãi mãi.
5. Lênh tù CLP2:
db2 +c select firstnme from employee where empno = ‘000050’
Bãng viêc dánh lênh SELECT ó trên, bây giò chúng ta dang tao ra môt su bê
tãc. Phát biêu SELECT này cüng có vé treo, thuc ra nó dang doi khóa CLP1
dang giü trá vê.
Trong kich bán bê tãc trên, DB2 së kiêm tra tham sô câu hình co só dü liêu
DLCHKTIME. Tham sô này së dãt khoáng thòi gian kiêm tra cho nhüng su bê tãc.
Chãng han, giá tri cúa tham sô này duoc dãt tói 10 giây, DB2 së sú dung môt giái thuât
bên trong dê xác dinh giao dich nào cân phái quay lui (hôi xú), và môt giao dich nào së
duoc tiêp tuc.
Nêu ban dang gãp nhiêu tình huông bê tãc, ban cân phái tái kiêm tra nhüng giao dich
hiên hüu xem xem có thê tô chúc lai duoc không.
13.9 Truy câp dông thòi và thuc tiên khóa tôt nhât
Sau dây là môt sô meo nhó dê truy câp dông thòi và thuc tiên khóa tôt nhât:
1. Giü nhüng giao dich càng ngãn càng tôt. Ðiêu này có thê dat duoc bãng cách phát
hành thuòng xuyên nhüng lênh COMMIT (thâm chí cho nhüng giao dich chi doc)
khi úng dung cúa ban cho phép.
2. Chi ghi nhât ký thông tin giao dich khi có yêu câu.
3. Tây dü liêu dã sú dung nhanh chóng:
ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
4. Thuc hiên nhüng thay dôi dü liêu theo lô/nhóm. Chãng han
DELETE FROM (
SELECT *FROM tedwas.t1 WHERE c1 = … FETCH FIRST s3000 ROWS
ONLY)
Nhp môn H qun tr c s d liu DB2
151
5. Sú dung nhüng dãc tính tuong tranh cúa nhüng công cu chuyên dôi dü liêu
trong DB2.
6. Ðãt tham sô ó múc LOCKTIMEOUT cho co só dü liêu (khoáng giüa 30-120
giây). Ban dùng nên cho giá tri ngâm dinh cúa nó là -1. Ban có thê cüng sú dung
khóa giói han thòi gian (timeout) trên trên tùng phiên làm viêc.
7. Không khôi phuc nhiêu dü liêu hon cân thiêt. Chãng han, sú dung mênh dê
FETCH FIRST n ROWS ONLY trong câu lênh SELECT.
Nhp môn H qun tr c s d liu DB2
152
PHÀN 3: HOC DB2 – PHÁT TRIEN ÚNG DUNG
Trong phân này, chúng ta së tháo luân vê các dôi tuong cúa co só dü liêu nãm ó tâng
duói cúa úng dung nhu thú tuc luu (stored procedure), hàm do nguòi dùng dinh nghïa
và bây su kiên (trigger). Rãng ban có thê hoc duoc cách lâp trình sú dung DB2 nhu môt
máy chú dü liêu bãng nhiêu ngôn ngü khác nhau bãng cách kháo sát các úng dung mâu
di kèm trong thu muc SQLLIB\samples khi chúng ta cài dãt máy chú DB2. Hình duói dây
là môt sô chuong trình mâu viêt bãng Java, sú dung DB2 trên nên Windows.
Môt sô chuong trình Java mâu di kèm DB2.
Nhp môn H qun tr c s d liu DB2
153
14
Chuong 14 – Các thú tuc SQL PL
Trong chuong này chúng ta së tháo luân vê “thú tuc luu” (stored procedure). Thú tuc luu
là môt dôi tuong úng dung co só dü liêu, có thê dóng gói các câu lênh SQL và các
nghiêp vu. Luu trü hop lí môt phân úng dung trong co só dü liêu cho phép cái tiên hiêu
suât thuc hiên nhu giám khá nãng ket duòng truyên mang. Hon nüa, các thú tuc cho
phép luu trü tâp trung tai môt noi nào dó dê các úng dung khác cüng có thê sú dung
duoc.
Thú tuc luu trong DB2 có thê viêt bãng SQL PL, C/C++, Java, Cobol, các ngôn ngü
duoc hô tro CLR (Common Language Runtime) và OLE. Trong chuong này, chúng ta
së tâp trung vào SQL PL vì tính phô biên và don gián cúa nó.
Hình 14.1 mô tá cách hoat dông cúa stored procedure.
Hình 14.1 - Giám ket duòng truyên mang bång thú tuc.
Ó góc trên bên trái cúa hình, ta thây môt vài câu lênh SQL duoc thuc thi lân luot hêt cái
này dên cái kia. Môi câu SQL duoc gúi tù máy khách dên máy chú, và máy chú trá kêt
quá vê lai máy khách. Nêu nhiêu câu SQL duoc thuc thi theo kiêu dó thì luong dü liêu
truyên trên mang së tãng lên. Tuy nhiên, ó góc duói phái, ta thây thú tuc luu “myproc”
duoc luu trên máy chú chúa nhüng câu SQL tuong tu trên; và sau dó tai máy khách
(bên phía trái), lênh CALL duoc dùng dê goi thuc hiên thú tuc. Cách thú hai goi thuc
Nhp môn H qun tr c s d liu DB2
154
hiên môt thú tuc hiêu quá hon vì chi có môt lênh goi duoc truyên trên mang và môt kêt
quá trá vê cho máy khách.
Thú tuc luu cüng rât hüu ích trong muc dích báo mât co só dü liêu vì nguòi sú dung së
duoc phân câp các quyên dê thuc thi hoãc chi duoc xem các thú tuc; diêu dó giúp cho
hê thông duoc che chãn và không cho nguòi dùng lây thông tin nêu ho không có quyên.
Khá nãng này là hoàn toàn khá thi vì nguòi dùng không dòi hói nhüng quyên tuòng
minh trên các báng hoãc khung nhìn (view) trong thú tuc mà ho thuc thi; ho chi cân
duoc câp dú quyên dê thuc hiên các thú tuc dó.
14.1 DB2 Developer Workbench
DB2 Developer Workbench (DWB) là công cu duoc xây dung trên nên táng Eclipse,
phuc vu cho viêc phát triên các thú tuc, hàm, truy vân XML, úng dung SQLJ,… DWB
dên nhu môt hình ánh riêng rë (nó không phái là môt phân trong gói cài dãt DB2) nhung
hoàn toàn miên phí. Có thê tái DWB vê tù trang “Download” trên dia chi
http://ibm.com/db2/express.
Hình 14.2 Giao diên cúa DWB.
Hình 14.2 – DB2 Developer Workbench
14.1.2 Tao môt thú tuc luu trong DWB
Ðê tao môt thú tuc bãng Java hay SQL PL, hãy làm theo các buóc sau. Luu ý rãng
không thê tao duoc các thú tuc duoc viêt bãng các ngôn ngü khác trong DWB.
Buóc 1: Tao môt du án DWB (project)
Tù menu, chon File -> New -> Project và chon Data Development Project. Xem hình
14.3 duói dây.
Nhp môn H qun tr c s d liu DB2
155
Hình 14.3 – Data development project
Tùng buóc làm theo huóng dân dê nhâp tên du án, chon co só dü liêu ban muôn sú
dung và xác dinh rõ thu muc JDK (cái nào mãc dinh thuòng là dúng).
Buóc 2: Tao môt thú tuc
Sau khi tao xong du án, phía bên phái cúa cúa sô (data perspective) së xuât hiên du án
mói vùa tao. Trong hình 14.4 ban së thây du án mói tao trong tình trang mó rông.
Nhp môn H qun tr c s d liu DB2
156
Hình 14.4 – Du án “myProject”
Hình 14.4 Cho thây các thu muc khác nhau trong du án cúa ban. Khi muôn tao môt thú
tuc, ban nhân chuôt phái vào thu muc thú tuc và chon New -> Stored Procedure. Hoàn
thành các thông tin duoc yêu câu trong tùng buóc tao mói môt thú tuc nhu: thú tuc dó
kêt hop vói du án nào, tên và ngôn ngü dê viêt thú tuc (luu ý rãng chi có SQL PL và
Java duoc hô tro trong DWB) và các câu lênh SQL dùng trong thú tuc. Mãc dinh, DWB
së cung câp cho ban câu lênh SQL mâu ví du. Tói dây ban có thê nhân Finish và thú tuc
së duoc tao ra và trong dó có sú dung doan mã mâu và các câu lênh SQL trong ví du
duoc cung câp ó trên. Xem hình 14.5
Nhp môn H qun tr c s d liu DB2
157
Hình 14.5 – Môt thú tuc mâu
Trong hình 14.5, doan mã mâu cho thú tuc “PROCEDURE1” duoc phát sinh. Ban có thê
thay thê doan mã dó bãng doan mã riêng cúa ban. Ðê don gián chúng ta së dùng các
doan mã mâu trên dê tiêp tuc kháo sát quyên sách này.
Buóc 3: Biên dich môt thú tuc
Khi môt thú tuc dã duoc tao, ban biên dich và triên khai bãng cách nhâp phái vào nó
trong khung bên trái và chon Deploy. Hình 14.6 minh hoa cho buóc này.
Nhp môn H qun tr c s d liu DB2
158
Hình 14.6 – Biên dich môt thú tuc
Buóc 4: Thuc thi môt thú tuc
Khi môt thú tuc dã duoc biên dich, ban có thê thuc thi nó bãng cách nhâp phái chuôt
vào nó và chon Run. Kêt quá së xuât hiên trong khung “Result” ó góc duói phái
Ðê thuc thi môt thú tuc bãng dòng lênh, ban có thê sú dung câu lênh CALL
<procedure name>
14.2 Môt sô khái niêm vê thú tuc SQL PL:
Nhüng thú tuc luu vói ngôn ngü thú tuc rât dê tao và hoc. Trong DB2 thú tuc có hiêu
suât tôt nhât. Thú tuc luu SQL PL (hay nói tãt là “Thú tuc SQL”) là tiêu diêm cúa chuong
này.
14.2.1 Câu trúc cúa thú tuc
Cú pháp cúa thú tuc
CREATE PROCEDURE proc_name [({tham sô tùy chon})]
[thuôc tính tùy chon cua thu tuc] <câu lênh>
Trong dó <câu lênh> là môt câu lênh hoãc môt tâp các câu lênh duoc nhóm bói câu
trúc BEGIN [ATOMIC]……………[END]
14.2.2 Nhüng thuôc tính tùy chon cúa thú tuc
Sau dây là 1 vài thuôc tính tùy chon cúa thú tuc:
• LANGUAGE SQL
Thuôc tính này chi ra ngôn ngü mà thú tuc së sú dung. LANGUAGE SQL là giá
tri mãc dinh. Vói nhüng ngôn ngü khác nhu JAVA hay C thì ta sú dung tuong
úng thuôc tính LANGUAGE JAVA hay LANGUAGE C
Nhp môn H qun tr c s d liu DB2
159
• RESULT SETS <n>
Thuôc tính này cân thiêt nêu thú tuc cúa ban së trá vê tâp hop kêt quá n
• SPECIFIC my_unique_name
Ðây là tên duy nhât duoc gán cho thú tuc. Môt thú tuc có thê duoc nap dè, nghïa
là, nhiêu thú tuc luu trü có thê có cùng môt tên, nhung vói sô luong tham sô
khác nhau. Bãng cách sú dung tù khóa SPECIFIC ban có thê gãn môt tên duy
nhât vói nhüng thú tuc này, và diêu này tao ra su dê dàng cho viêc quán lí các
thú tuc luu trü. Ví du, dê xóa môt thú tuc sú dung tù khóa SPECIFIC ban có thê
dung câu lênh: DROP SPECIFIC PROCEDURE. Nêu tù khóa SPECIFIC không
duoc sú dung thì vói câu lênh xóa thú tuc luu trü nhu trên, dê DB2 biêt duoc thú
tuc nào cân duoc xóa (vì có rât nhiêu thú tuc có tên giông nhau duoc ghi dè) thì
ban phái chi ra danh sách tham sô di kèm cúa thú tuc dó.
14.2.3 Các loai tham sô
Có 3 loai tham sô trong thú tuc luu trü SQL PL:
• IN - Tham sô vào
• OUT - Tham sô ra
• INOUT - Tham sô vùa vào và ra
Ví du:
CREATE PROCEDURE proc(IN p1 INT, OUT p2 INT, INOUT p3 INT)
Khi goi thú tuc, tât cá các tham sô cân phái duoc dua vào trong câu lênh CALL. Ví du,
dê goi thú tuc trên ban phái goi nhu sau:
CALL proc (10, ?, 4)
Dâu hói (?) duoc dùng cho các tham sô trá vê cúa câu lênh CALL.
Ðây là môt ví du khác cúa thú tuc luu mà ban có thê thú:
CREATE PROCEDURE P2 ( IN v_p1 INT,
INOUT v_p2 INT,
OUT v_p3 INT)
LANGUAGE SQL
SPECIFIC myP2
BEGIN
-- my second SQL procedure
SET v_p2 = v_p2 + v_p1;
SET v_p3 = v_p1;
END
Ðê goi thú tuc này tù dòng lênh, ta dùng câu lênh:
CALL P2 (3,4,?)
14.2.4 Chú thích trong thú tuc SQL PL
Có hai cách dê chú thích trong thú tuc SQL PL:
• Sú dung 2 dâu gach ngang (--), ví du:
-- Ðây là 1 chú thích theo kiêu SQL
Nhp môn H qun tr c s d liu DB2
160
• Sú dung dinh dang nhu ngôn ngü lâp trình C, ví du:
/* Ðây là 1 chú thích dang C */
14.2.5 Câu lênh ghép
Môt câu lênh ghép trong thú tuc là môt câu lênh trong dó chúa rât nhiêu lênh thú tuc và
các câu lênh SQL duoc bao bói tù khóa BEGIN và END. Khi tù khóa ATOMIC duoc sú
dung theo sau tù khóa BEGIN, câu lênh ghép duoc xem nhu là môt don vi, nghïa là, tât
cá các chi thi hay câu lênh trong câu lênh ghép phái hoàn thành dê câu lênh ghép duoc
hoàn thành. Nêu có môt câu lênh thât bai, tât cá së duoc trá vê trang thái ban dâu (roll
back). Hình 14.7 cho ta 1 minh hoa vê câu lênh ghép.
Hình 14.7 – Câu lênh ghép
14.2.6 Khai báo biên
Ðê khai báo biên, sú dung câu lênh DECLARE nhu sau:
DECLARE var_name <data type> [DEFAULT value];
Ðây là môt vài ví du:
DECLARE temp1 SMALLINT DEFAULT 0;
DECLARE temp2 INTEGER DEFAULT 10;
DECLARE temp3 DECIMAL(10,2) DEFAULT 100.10;
DECLARE temp4 REAL DEFAULT 10.1;
DECLARE temp5 DOUBLE DEFAULT 10000.1001;
DECLARE temp6 BIGINT DEFAULT 10000;
DECLARE temp7 CHAR(10) DEFAULT 'yes';
DECLARE temp8 VARCHAR(10) DEFAULT 'hello';
DECLARE temp9 DATE DEFAULT '1998-12-25';
DECLARE temp10 TIME DEFAULT '1:50 PM';
DECLARE temp11 TIMESTAMP DEFAULT '2001-01-05-12.00.00';
DECLARE temp12 CLOB(2G);
DECLARE temp13 BLOB(2G);
14.2.7 Câu lênh gán
Ðê gán môt giá tri cho môt biên, sú dung câu lênh SET. Ví du:
SET total = 100;
Nhp môn H qun tr c s d liu DB2
161
Câu lênh trên cüng tuong duong vói câu lênh:
VALUES(100) INTO total;
Ngoài ra, bât kì biên nào cüng có thê duoc gán vói giá tri NULL
SET total = NULL
Môt biêu thúc diêu kiên së duoc thiêt lâp nêu có nhiêu hon môt dòng thì chi lây dòng
dâu tiên trong báng
SET total = (select sum(c1) from T1);
SET first_val = (select c1 from T1 fetch first 1 row only)
Ban cüng có thê gán biên vói các thuôc tính ngoài cúa co só dü liêu
SET sch = CURRENT_SCHEMA;
14.3 Các con tró (cursor)
Môt con tró là môt tâp hop chúa kêt quá cúa câu lênh SELECT. Cú pháp dê khai báo,
mó, chuyên giá tri (fetch) và dóng con tró nhu sau:
DECLARE <tên con tro> CURSOR [WITH RETURN <dích tra vê>]
<câu lênh SELECT>;
OPEN <tên con tro>;
FETCH < tên con tro > INTO <các biên>;
CLOSE < tên con tro>;
Khi môt con tró duoc khai báo, mênh dê WITH RETURN có thê duoc sú dung vói
nhüng giá tri sau:
• CLIENT: Kêt quá së duoc trá vê cho úng dung máy khách
• CALLER: Kêt quá së duoc trá vê cho máy khách hoãc thú tuc luu dã goi nó.
Ðây là môt ví du cúa thú tuc sú dung con tró:
CREATE PROCEDURE set()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE cur CURSOR WITH RETURN TO CLIENT
FOR SELECT name, dept, job
FROM staff
WHERE salary > 20000;
OPEN cur;
END
14.4 Ðiêu khiên luông
Nhu trong rât nhiêu ngôn ngü khác, SQL PL có rât nhiêu câu lênh có thê duoc dùng dê
diêu khiên luông thuc hiên múc logic. Duói dây là môt vài câu lênh duoc hô tro:
CASE (chon ra môt nhánh thuc thi (tìm kiêm don gián))
IF
FOR (thuc thi môi dòng trong báng)
Nhp môn H qun tr c s d liu DB2
162
WHILE
ITERATE (buôc phái thuc hiên vòng lãp tiêp theo. Tuong tu vói câu lênh CONTINUE
trong C)
LEAVE (ròi khói môt khôi hay vòng lãp)
LOOP (lãp vô han dinh)
REPEAT
GOTO
RETURN
CALL (goi thú tuc)
14.5 Goi thú tuc
Nhüng doan mã sau dây së chi ra cách goi môt thú tuc bãng các ngôn ngü lâp trình
khác nhau.
Goi thú tuc tù úng dung CLI/ODBC
SQLCHAR *stmt = (SQLCHAR *)
“CALL MEDIAN_RESULT _SET( ? )” ;
SQLDOUBLE sal = 20000.0; /*Chi ra parameter marker trong stmt */
SQLINTEGER salind = 0; /*Chi dinh giá tri (variable) cho sal */
sqlrc = SQLPrepare(hstmt, stmt, SQL_NTS);
sqlrc = SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT,
SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &sal, 0, &salind);
SQLExecute(hstmt);
if (salind == SQL_NULL_DATA)
printf(“Median Salary = NULL\n”);
else
printf(“Median Salary = %.2f\n\n”, sal);
/* Lây tâp kêt qua dâu tiên */
sqlrc = StmtResultPrint(hstmt);
if (sqlrc == SQL_SUCCESS) {
/* Có 1 kêt qua khác */
sqlrc = SQLMoreResult(hstmt);
}
Xem chi tiêt ó têp ví du cúa DB2: sqllib/samples/sqlproc/rsultset.c
Goi thú tuc tù úng dung VB.NET
Try
‘ Tao môt DB2 Command dê chay thu tuc
Dim procName As String = “TRUNC_DEMO”
Dim cmd As DB2Command = conn.CreateCommand()
Dim parm As DB2Parameter
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = procName
‘ Ðang ký các tham sô dâu ra cho DB2Command
parm = cmd.Parameters.Add(“v_lastname”, DB2Type.VarChar)
parm.Direction = ParameterDirection.Output
parm = cmd.Parameter.Add(“v_msg”, DB2Type.VarChar)
parm.Direction = ParameterDirection.Output
‘ Goi lai thu tuc
Nhp môn H qun tr c s d liu DB2
163
Dim reader As DB2DataReader = cmd.ExecuteReader
Catch myException As DB2Exception
DB2ExceptionHandler(myException)
Catch
UnhandledExceptionHandler()
End Try
Goi thú tuc tù úng dung Java
try
{
// Kêt nôi CSDL mâu
String url = “jdbc:db2:sample”;
con = DriverManager.getConnection(url);
CallableStatement cs = con.prepareCall(“CALL
trunc_demo(?, ?)”);
// Ðang ký tham sô dâu ra
callStmt.registerOutParameter(1, Types.VARCHAR);
callStmt.registerOutParameter(2, Types.VARCHAR);
cs.execute();
con.close();
}
catch (Exception e)
{
/* xu lý ngoai lê o dây */
}
14.6 Lôi và xú lý diêu kiên
Trong DB2, các tù khóa SQLCODE và SQLSTATE duoc dùng dê xác dinh su thành
công hay thât bai trong viêc thuc thi môt câu lênh SQL. Nhüng tù khóa này cân duoc
khai báo tuòng minh trong phân ngoài cùng cúa thú tuc nhu sau:
DECLARE SQLSTATE CHAR[5];
DECLARE SQLCODE INT;
DB2 së thiêt lâp giá tri môt cách tu dông cho nhüng tù khóa trên sau môi thao tác trên
SQL (SQL operation). Ðôi vói SQLCODE, giá tri duoc thiêt lâp nhu sau:
• = 0, thành công
• > 0, thành công nhung có cánh báo
• < 0, không thành công
• = 100, không tìm thây dü liêu (ví du nhu: câu lênh FETCH không trá vê dü liêu)
Ðôi vói SQLSTATE, các giá tri cúa nó nhu sau:
• Thành công: SQLSTATE ‘00000’
• Không thây: SQLSTATE ‘02000’
• Cánh báo: SQLSTATE ‘01XXXX’
• Truòng hop dãc biêt: các giá tri khác
SQLCODE là môt dãc tá cho co só dü liêu, chi tiêt hon cá SQLSTATE. SQLSTATE là
tiêu chuân trong các hê quán tri cho co só dü liêu nhung tông quát hon. Nhiêu
Nhp môn H qun tr c s d liu DB2
164
SQLCODE có thê trùng vói SQLSTATE. SQLCODE và SQLSTATE së duoc nói rõ hon
ó Phu luc A, Xú lý su cô.
Môt diêu kiên có thê duoc tao ra bãng bât kì câu lênh SQL nào và së trùng vói môt
SQLSTATE. Ví du, môt diêu kiên cu thê nhu SQLSTATE ‘01004’ duoc tao ra khi có môt
giá tri duoc làm tròn sô trong quá trình thi hành câu lênh SQL. Thay vì dùng SQLSTATE
‘01004’ dê kiêm tra diêu kiên này, môt tên goi có thê duoc gán. Trong ví du cu thê này,
tên “trunc” có thê duoc gán cho diêu kiên SQLSTATE ‘01004’ nhu sau.
DECLARE trunc CONDITION FOR SQLSTATE ‘01004’
Các diêu kiên khác dã duoc dinh nghïa truóc:
• SQLWARNING
• SQLEXCEPTION
• NOT FOUND
Xú lý diêu kiên
Ðê xú lý môt diêu kiên, ban có thê tao ra môt trình xú lý diêu kiên, và phái chi rõ các yêu
tô sau:
• Ðiêu kiên mà nó phái xú lý
• Noi phuc hôi lai quá trình thuc thi (dua vào kiêu cúa trình xú lý: CONTINUE,
EXIT or UNDO)
• Hành dông duoc thi hành dê xú lý diêu kiên. Nhüng hành dông này có thê là
bât cú câu lênh nào, bao gôm cá các câu trúc diêu khiên.
Nêu môt diêu kiên SQLEXCEPTION duoc tao ra, và không có trình xú lý nào, thú tuc së
kêt thúc và trá vê cho máy khách môt thông báo lôi.
Các loai trình xú lý
Có 3 loai trình xú lý:
CONTINUE – Xú lý này dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú
lý diêu kiên, dòng xú lý së TIÉP TUC di dên câu lênh tiêp theo sau câu lênh vùa duoc
tao ra.
EXIT – xú lý này dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú lý diêu
kiên, dòng xú lý së di dên cuôi thú tuc.
UNDO – xú lý này duoc dùng dê chi ra rãng, sau khi ngoai lê xáy ra, và trình xú lý dã xú
lý diêu kiên, dòng xú lý së di dên cuôi thú tuc, và së không làm gì ai hoãc khôi phuc bât
kì câu lênh nào dã duoc thuc thi (roll back).
Hình 14.8 minh hoa su khác nhau giüa các trình xú lý diêu kiên và hành vi cúa nó
Nhp môn H qun tr c s d liu DB2
165
Hình 14.8 – Kiêu cúa các trình xú lý diêu kiên
14.7 SQL dông
Trong SQL dông, trái nguoc vói SQL tïnh, toàn bô câu lênh SQL không duoc nhân biêt
trong thòi gian chay. Ví du nêu col1 và tabname là các biên trong câu lênh này, chúng
ta së thuc hiên vói SQL dông nhu sau:
‘SELECT ‘ || col1 || ‘FROM ‘ || tabname;
SQL dông cüng duoc dê nghi dùng cho DDL dê tránh các vân dê phu thuôc và sai sót
khi dóng gói. Nó cüng duoc yêu câu khi thuc hiên dê quy.
SQL dông có thê duoc thuc thi theo hai cách:
• Dùng lênh EXECUTE IMMEDIATE – dây là ý tuóng cho viêc thuc thi thú tuc
SQL don.
• Dùng lênh PREPARE song song vói lênh EXECUTE – ý tuóng này duoc dùng
dê thuc thi da thú tuc SQL.
Ðoan mã sau dua ra môt ví du vê SQL dông sú dung cá hai cách trên. Ví du này giá sú
rãng có môt báng T2 dã duoc tao nhu sau:
CREATE TABLE T2 (c1 INT, c2 INT)
CREATE PROCEDURE dyn1 (IN value1 INT, INT value2 INT)
SPECIFIC dyn1
BEGIN
DECLARE stmt varchar(255);
DECLARE st STATEMENT;
SET stmt = ‘INSERT INTO T2 VALUE (?, ?)’;
PREPARE st FROM stmt;
EXECUTE st USING value1, value1;
EXECUTE st USING value2, value2;
SET stmt = INSERT INTO T2 VALUES (9, 9)’;
EXECUTE IMMEDIATE stmt;
END
Nhp môn H qun tr c s d liu DB2
166
15
Chuong 15 – Hàm nôi tuyên, hàm nguòi dùng dinh
nghïa, các hàm xú ký các su kiên bây (Inline SQL PL,
UDF, Triggers)
Trong chuong này, chúng ta së xem xét vê các hàm nôi tuyên SQL các dôi tuong khác
cúa CSDL nhu hàm do nguòi dùng dinh nghïa (UDF) và các bây su kiên.
15.1 Hàm nôi tuyên SQL
Trong chuong 14, chúng ta dã tháo luân vê viêc tao các thú tuc luu sú dung ngôn ngü
SQL PL. Ngôn ngü SQL PL này cüng có thê duoc sú dung nôi tuyên, nghïa là có có thê
dúng môt mình, không nãm trong môt thú tuc nào cá. Các lênh SQL PL duoc sú dung
trong các UDF và hàm bây su kiên cüng là nôi tuyên vì các mã lênh dã duoc thêm vào
mã lênh cúa các UDF và hàm bây su kiên, bán thân nó dã là các SQL dông. SQL PL nôi
tuyên chi hô tro môt tâp con trong toàn bô các lênh SQL PL, sau dây là các tù khóa cúa
SQL PL nôi tuyên:
DECLARE <variable>
SET
CASE
FOR
GET DIAGNOSTICS
GOTO
IF
RETURN
SIGNAL
WHILE
ITERATE
LEAVE
Ðây là nhüng tù khóa không nãm trong SQL PL nôi tuyên:
ALLOCATE CURSOR
ASSOCIATE LOCATORS
DECLARE <cursor>
DECLARE ...HANDLER
PREPARE
EXECUTE
EXECUTE IMMEDIATE
LOOP
REPEAT
RESIGNAL
CALL
COMMIT/ROLLBACK
Nhp môn H qun tr c s d liu DB2
167
Duói dây là ví du cúa SQL dông sú dung SQL PL nôi tuyên. Nêu các ban muôn thú nó,
bán các thê lây nó làm môt phân cúa cúa têp kich bán, và ban phái chãc chãn là dã tap
duoc các báng nhu sau:
CREATE TABLE T1 (c1 INT)
CREATE TABLE T3 (c1 INT)
BEGIN ATOMIC
DECLARE cnt INT DEFAULT 0;
DECLARE sumevens INT DEFAULT 0;
DECLARE err_msg VARCHAR(1000) DEFAULT '';
WHILE (cnt < 100) DO
IF mod(cnt,2) = 0 THEN
SET sumevens = sumevens + cnt;
END IF;
SET cnt=cnt+1;
END WHILE;
INSERT INTO T3 values (sumevens);
SET cnt = (SELECT 0 FROM SYSIBM.SYSDUMMY1);
FOR cur1 AS SELECT * FROM T1 DO
IF cur1.c1 > 100 THEN
SET cnt = cnt + 1;
END IF;
END FOR;
SET err_msg = 'Rows with values > 100 is:' ||
char(cnt);
SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT = err_msg;
END!
Nêu ban luu doan chuong trình nôi tuyên trên vào têp kich bán tên là “myScript.txt” thì
ban có thê thuc hiên nó bãng lênh sau;
db2 -td! –vf myScript.txt
15.2 Bây su kiên (Triggers)
Bây su kiên là các dôi tuong co só dü liêu kêt hop vói môt báng duoc dinh nghïa bói
các thao tác duoc thuc hiên khi có môt trong các thao tác INSERT, UPDATE, hoãc
DELETE duoc thuc hiên trên báng dó. Chúng duoc thi hành môt cách tu dông. Các
thao tác là nguyên nhân dê các bây này duoc thuc thi, goi là triggering.
15.2.1 Các loai bây su kiên
Có 3 loai bây dó là: bây truóc (before), bây sau (after) và bây thay thê (instead of)
Bây truóc
Các bây truóc duoc kích hoat truóc khi môt dòng duoc thêm, súa hay xóa di. Các thao
tác duoc thuc hiên bói bây này thì không thê kích hoat duoc các bây khác (vì thê các
thao tác INSERT, UPDATE và DELETE không duoc phép có trong bây).
Môt ví du don gián vê bây truóc duoc chi ra trên hinh 15.1
Nhp môn H qun tr c s d liu DB2
168
Hình 15.1 – Ví du vê bây truóc
Trong hình 15.1, bây “defalt_class_end” së bây truóc lênh khi INSERT SQL duoc thuc
hiên trong báng cl_sched. Báng này là môt phân cúa co só dü liêu SAMPLE, ban có thê
tao và thú kiêm tra bây này khi kêt nôi vói co só dü liêu này. Biên “n” trong dinh nghïa
cúa bây së dai diên cho giá tri mói cúa lênh INSERT, giá tri së chèn vào. Bây này së
kiêm tra su hop lê cúa các giá tri chèn vào. Nêu côt “ending” không có giá tri gì khi chèn,
thì bây này së dám báo chãc chãn là có giá tri cúa côt “starting” công 1 duoc chèn vào.
Các lênh sau giúp ta kiêm tra bây này
C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched
(class_code, day, starting) values ('abc',1,current time)
DB20000I The SQL command completed successfully.
C:\Program Files\IBM\SQLLIB\BIN>db2 select * from cl_sched
CLASS_CODE DAY STARTING ENDING
---------- ------ -------- --------
042:BF 4 12:10:00 14:00:00
553:MJA 1 10:30:00 11:00:00
543:CWM 3 09:10:00 10:30:00
778:RES 2 12:10:00 14:00:00
044:HD 3 17:12:30 18:00:00
abc 1 11:06:53 12:06:53
6 record(s) selected.
Thú tuc bây “validate_sched” duói dây cho phép mó rông hàm bây “default_class_end”
dã mô tá truóc dây. Xin nhãc lai rãng, ban có thê tao ra nó và kiêm tra nó dua vào co só
dü liêu SAMPLE.
CREATE TRIGGER validate_sched
NO CASCADE BEFORE INSERT ON cl_sched
REFERENCING NEW AS n
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
-- supply default value for ending time if null
Nhp môn H qun tr c s d liu DB2
169
IF (n.ending IS NULL) THEN
SET n.ending = n.starting + 1 HOUR;
END IF;
-- ensure that class does not end beyond 9pm
IF (n.ending > '21:00') THEN
SIGNAL SQLSTATE '80000'
SET MESSAGE_TEXT='class ending time is beyond 9pm';
ELSEIF (n.DAY=1 or n.DAY=7) THEN
SIGNAL SQLSTATE '80001'
SET MESSAGE_TEXT='class cannot be scheduled on a
weekend';
END IF;
END
Bây sau
Bây sau duoc kích hoat sau khi các SQL triggering thuc hiên thành công. Các thao tác
trong bây này có thê kích hoat các bây khác (su nôi tâng duoc cho phép dên 16 múc).
Bây sau hô tro các thao tác INSERT, UPDATE và DELETE. Duói dây là ví du cúa môt
bây sau
CREATE TRIGGER audit_emp_sal
AFTER UPDATE OF salary ON employee
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
MODE DB2SQL
INSERT INTO audit VALUES (
CURRENT TIMESTAMP, ' Employee ' || o.empno || ' sal-
ary changed from ' || CHAR(o.salary) || ' to ' ||
CHAR(n.salary) || ' by ' || USER)
Trong ví du này thì thú tuc bây audit_emp_sal duoc sú dung dê thuc hiên viêc kiêm
tra trên côt salary cúa báng employee. Khi môt ai dó tao su thay dôi trong côt này thì
doan mã này së thuc hiên viêc ghi thông tin vê viêc thay dôi liên quan dên báng Salary
vào trong bàng khácgoi là audit. Tai dòng “OLD as o NEW as n ” chi ra tiên tô “o” này
së duoc dùng dê dai diên giá tri cü hoãc giá trì tôn tai trong báng, và tiên tô “n” së duoc
sú dung dê dai diên giá tri mói sau dó tù câu lênh UPDATE. Nhu vây, “o.salary” miêu tá
giá tri cü hoãc giá tri tôn tai trong báng Salary còn “n.salary” miêu tá giá tri duoc câp
nhât mói vào côt dü liêu Salary.
Bây su kiên thay thê
Bây thay thê duoc dinh nghïa trên các khung nhìn (view). Ðinh nghïa môt cách logic bây
này së thuc hiên viêc câp nhât cho các lênh SQL triggering. Ví du nhu, nêu ban thuc
hiên môt thao tác câp nhât trên môt khung nhìn, bây thay thê së duoc thuc thi dê thuc
hiên viêc câp nhât các báng gôc mà các khung nhìn này thê hiên.
Các thú tuc bây không duoc tao tù DB2 Developer Workbench. Chúng có thê duoc tao
tù trung tâm diêu khiên hoãc tù các công cu dòng lênh khác (Command Window,
Command Line Processor, hoãc Command Editor)
Nhp môn H qun tr c s d liu DB2
170
Bài tâp nhanh #10 - Khói tao môt bây bång Trung tâm diêu khiên.
Muc tiêu
Bây là môt dôi tuong co só dü liêu duoc sú dung dê hoàn thành công viêc kinh doanh
môt cách chãt chë khi xáy ra thay dôi dü liêu trên báng (chèn, súa, xóa). Trong bài tâp
nhanh này, ban së tao môt bây bãng viêc sú dung Trung tâm diêu khiên. Cái bây này së
luu nhât ký bán hàng trong báng SALES (bán hàng) cho muc dích kiêm tra sô sách. Ban
së ghi vào nhât ký bán hàng mã cúa nguòi bán hàng (user ID) cùng vói thòi diêm bán.
Thú tuc:
1. Mó Trung tâm diêu khiên.
2. Vói bài tâp nhanh này, ban së cân khói tao môt báng phu duoc sú dung dê
ghi nhât ký bán hàng. Khói tao môt báng theo các thuôc tính sau:
Tên báng: saleslog (nhât ký bán hàng)
Côt dâu tiên:
Tên: userid (mã )
Kiêu dü liêu: VARCHAR(128)
Các thuôc tính khác: NOT NULL
Côt thú hai:
Tên: daytime (thòi diêm)
Kiêu dü liêu: TIMESTAMP
Các thuôc tính khác: NOT NULL
Goi ý: Khói tao báng này sú dung CREATE TABLE có trong cúa sô nhâp
lênh, hoãc sú dung Create table wizard tù Trung tâm diêu khiên.
3. Tù Trung tâm diêu khiên, mó rông tài liêu có só dü liêu EXPRESS. Nhâp
chuôt phái trong thu muc Trigger, và chon muc “Create”. Cúa sô dôi thoai
khói tao bây mó ra.
4. Ðiên dây dú theo thông tin trong cúa sô dôi thoai:
So dô bây (Trigger schema): User ID (mã) cúa nguòi bán dã duoc nhâp vào
(nên duoc cài dãt mãc dinh)
Tên bây (Trigger name): audit_sales (Kiêm tra bán hàng)
Báng hay so dô hiên thi: User ID (mã) cúa nguòi bán dã duoc nhâp vào (nên
duoc cài dãt mãc dinh)
Báng hay tên hiên thi (Table or view name): SALES (bán hàng)
Thòi gian dê bây hoat dông (Time to trigger action): After (sau)
Khi nào thì bây duoc thuc hiên (Operation that causes the trigger to be
executed): Update of columns (không liêt kê bât cú côt nào vì chúng ta muôn
bây thuc hiên khi bât cú côt nào trong sô các côt duoc câp nhât)
Chú thích (Comment): Logs all update actions on Sales table (Ghi nhât ký tât
cá các hoat dông câp nhât trong báng Sales)
Nhp môn H qun tr c s d liu DB2
171
5. Trong báng Triggerred action, chon STATEMENT trong muc tùy chon For
Each. Nhâp doan mã nguôn sau vào muc hành dông cúa bây:
WHEN (1=1)
BEGIN ATOMIC
INSERT INTO saleslog (userid, daytime) VALUES (CURRENT
USER, CURRENT TIMESTAMP);
END
(Ghi chú: doan bây së duoc thuc hiên môt lân sau khi bây duoc kích hoat và kêt thúc
hoàn toàn. Bây theo dòng nghïa là hoat dông cúa bây së thuc hiên môt khi SQL
triggering tác dông vào môt dòng.)
Nhp môn H qun tr c s d liu DB2
172
Kích chon nút OK dê khói tao bây.
6. Bây giò ban nên xem lai bây dã duoc khói tao trong tài liêu Triggers ó thu
muc Trung tâm diêu khiên.
7. Truy vân báng Saleslog dê dám báo chua có dü liêu trong báng này. Loai bó
nhüng hàng có dü liêu trong báng bãng lênh DELETE FROM saleslog.
8. Thú câp nhât môt bán ghi trong báng sales (Goi ý: sú dung Command Editor
hoãc SQL Assist Wizard).
9. Kiêm tra lai môt lân nüa nôi dung cúa báng saleslog. Xem có bao nhiêu hàng
trong dó.
15.3 Hàm nguòi dùng dinh nghïa (UDF)
Hàm nguòi dùng dinh nghïa là môt dôi tuong úng dung co só dü liêu, nó duoc sãp xêp
thành bô dü liêu nhâp và dü liêu xuât. Ví du: môt hàm có thê lây kích thuóc dü liêu vào
bãng inch, và trá lai kêt quá bãng centimetes.
DB2 hô tro tao nhüng hàm sú dung SQL PL, C/C++, Java, CLR (Common Language
Runtime), và OLE (Object Linking and Embedding). Trong cuôn sách này, chúng tôi nói
chú yêu vê hàm SQL PL bói tính don gián, phô biên và hiêu suât cúa chúng.
Có là 4 loai hàm: hàm vô huóng (Scalar Funcitons), hàm báng (Table Functions) , hàm
dòng (Row Functions), và hàm côt (Column Functions). Trong bài này chúng tôi chi tâp
trung vào hàm vô huóng và hàm báng.
15.3.1 Hàm vô huóng
Hàm vô huóng trá lai môt giá tri don. Nó không thê chúa các câu lênh SQL, các câu
lênh INSERT, UPDATE và DELETE së làm thay dôi trang thái cúa co só dü liêu thì
không duoc châp nhân. Môt vài hàm vô huóng duoc cài dãt sãn là SUM(), AVG(),
DIGITS(), COALESCE(), và SUBSTR().
Nhp môn H qun tr c s d liu DB2
173
DB2 cho phép ban tùy biên xây dung hàm nguòi dùng dinh nghïa, tù dó ban có thê
thuòng xuyên sú dung nó theo ý nghïa logic. Ví du, tính dên su chuyên dôi úng dung
cúa ban tù Oracle sang DB2. Trong úng dung này, ban goi hàm NVL() cúa Oracle ó
khãp noi. Hàm tuong duong cài dãt sãn trong DB2 duoc goi là COALESCE. Thay vì
ban phái dôi tên tât cá các hàm NVL trong úng dung thành COLALESCE, ban có thê tao
môt UDF trong DB2 goi nó là NVL, và nó së kích hoat hàm COLALESCE khi duoc goi;
ta së viêt hàm NLV nhu duói dây:
CREATE FUNCTION NVL (p_var1 VARCHAR(30) ,
p_var2 VARCHAR(30))
SPECIFIC nvlvarchar30
RETURNS VARCHAR(30)
RETURN COALESCE (p_var1 , p_var2)
Hàm COALESCE trong truòng hop này trá lai dôi sô dâu tiên là không rông (not NULL)
Duói dây là môt ví du khác cúa hàm vô huóng. Hàm duoc goi là “deptname”, và nó trá
lai mã sô cúa phòng/ban (department) cúa môt nhân viên dua trên các mã (ID) cúa ho:
CREATE FUNCTION deptname(p_empid VARCHAR(6))
RETURNS VARCHAR(30)
SPECIFIC deptname
BEGIN AUTOMIC
DECLARE v_department_name VARCHAR(30);
DECLARE v_err VARCHAR(70);
SET v_department_name =(
SELECT d.deptname FROM department d,employee e
WHERE e.workdept = d.deptno AND e.empno = p_empid);
SET v_err = ‘Error:employee’ || p_empid || ‘was not found’;
IF v_department_name IS NULL THEN
SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err;
END IF;
RETURN v_department_name;
END
Ðê kiêm tra lai hàm, thú lai trong Command Window hoãc Linux/UNIX vói lênh:
db2 “values (deptname(‘000300’))”
Goi hàm vô huóng
Hàm vô huóng cúa nguòi dùng có thê duoc goi trong câu lênh SQL, ó bât ky dâu giá tri
vô huóng duoc sú dung, hoãc trong mênh dê liên quan dên môt “Giá tri”. Ðây là hai ví
du biêu diên lòi goi hàm vô huóng COALESCE:
SELECT DEPTNAME, COALESCE(MGRNO,‘ABSENT’)FROM DEPARMENT
VALUES COALESCE(‘A’,‘B’)
15.3.2 Hàm báng
Hàm báng trá lai môt báng cúa các bán ghi. Ban có thê goi chúng trong mênh dê FROM
cúa môt truy vân. Hàm báng nguoc lai vói hàm vô huóng là có thê thay dôi trang thái co
só dü liêu, bói vây, các câu lênh INSERT, UPDATE và DELETE duoc châp nhân. Môt
vài hàm báng duoc cài dãt sãn là SNAPSHOT_DYN_SQL() và MQREADALL(). Hàm
báng cüng giông nhu khung nhìn (view), nhung ó dây nó cho phép các lênh làm thay dôi
Nhp môn H qun tr c s d liu DB2
174
dü liêu (chèn, súa, xóa) môt cách manh hon. Ðiên hình là chúng thuòng trá lai môt báng
hoãc giü lai môt bán ghi kiêm tra.
Duói dây là môt ví du cúa hàm báng dê liêt kê môt nóm nhân viên trong phòng:
CREATE FUNCTION getEnumEmployee(p_dept VARCHAR(3))
RETURNS TABLE
(empno CHAR(6),
lastname VARCHAR(15),
firstnme VARCHAR(12))
SPECIFIC getEnumEmployee
RETURN
SELECT e.empno, e.lastname, e.firstnme
FROM employee e
WHERE e.workdept = p_dept
Ðê kiêm tra hàm trên, thú lai vói câu lênh sau:
db2 “SELECT * FROM table(getEnumEmployee(‘D11’)) AS t”
Goi hàm báng
Môt hàm báng nguòi dùng dinh nghïa duoc goi trong mênh dê FROM cúa câu lênh
SQL. Hàm TABLE() cân sú dung và phâi có bí danh. Hình 15.2 minh hoa môt ví du cúa
cách goi hàm “getEnumEmployee” mà chúng tôi dã kiêm tra.
Hình 15.3 - Lòi goi môt hàm báng.
Nhp môn H qun tr c s d liu DB2
175
Bài tâp nhanh #11 - Khói tao UDF sú dung DB2 Developer Wordbench
Muc dích:
DB2 Developer Workbench (DWB) là môt công cu phát triên (IDE) dê viêt các thú tuc và
các hàm.Trong bài tâp nhanh này, các ban së phái tao môt hàm vô huóng do nguòi
dùng dinh nghïa trong DWB. Viêc này së dem lai cho ban nhiêu kinh nghiêm hon vói
DBW, tôt cho viêc trau dôi kiên thúc vói ngôn ngü SQL PL dê xây dung các hàm nguòi
dùng dinh nghïa.
Quy trình thuc hiên:
1. Mó DBW ( Goi ý: có sãn trong báng chon Start)
2. Tù cúa sô Data Project Explorer chon du án ban dã tao ó bài tâp nhanh truóc và
chon Open Project.
3. Kích chuôt phái vào thu muc User-Defined Functions. Chon muc New. Sau dó
chon muc SQL User-Defined Function. Ban có thê chon muc User-Defined
Function using Wizard nêu cân duoc huóng dân trong suôt quá trình sú dung.
4. Trình soan tháo mó vói hàm chính. Rôi súa dôi mã lênh nhu duói dây:
CREATE FUNCTION booktitle(p_bid INTEGER)
RETURNS VARCHAR(300)
-----------------------------------------------------------
SQL UDF (Scalar)
-----------------------------------------------------------
SPECIFIC booktitle
F1: BEGIN ATOMIC
DECLARE v_book_title VARCHAR(300);
DECLARE v_err VARCHAR(70);
SET v_book_title = (SELECT title FROM books WHERE
p_bid = book_id);
SET v_err = ‘Error: The book with ID ‘ || CHAR(p_bid) ||
‘was Not found.’;
IF v_book_title IS NULL THEN SIGNAL SQLSTATE ‘80000’
SET MESSAGE_TEXT = v_err;
END IF;
RETURN v_book_title;
END
5. Xây dung hàm bãng cách kích chuôt phái trên hàm và chon Deploy.
6. Cho chay hàm bãng cách kích chuôt vào nút Run trên thanh công cu.
7. Sau khi hàm châp nhân nhâp môt tham sô vào, môt cúa sô thông báo hiên ra yêu
câu ban diên giá tri cho tham sô.
Nhâp giá tri: 80002
Kêt quá là gì?
Thú lai vói giá tri: 1002
Ðiêu gì xáy ra lúc này? (goi ý: Nhìn vào doan Messages cúa Out-put view)
8. Ðóng DBW khi ban dã hoàn thành.
Nhp môn H qun tr c s d liu DB2
176
16
Chuong 16 – SQL/XML và XQuery
Trong chuong này chúng ta bàn vê pureXML, môt công nghê mói duoc cung câp trong
DB2 phiên bán 9 dê hô tro viêc luu trü thuân XML. Nhiêu ví du và khái niêm duoc bàn
luân trong chuong này duoc lây tù sách dó IBM: DB2 9: Tông quan và Bät dâu nhanh
vói pureXML (IBM Redbook: DB2 9: pureXML overview and fast start). Xem phân tài
nguyên dê biêt thêm thông tin. Hình 16.1 thê hiên phân kiên thúc trong búc tranh tông
quát cúa DB2 së duoc dê câp trong chuong này.
Hình 16.1 – Búc tranh tông quát DB2: các lênh DB2, SQL/XML và XQuery
16.1 Sú dung XML vói các co só dü liêu
Các tài liêu XML duoc luu duói dang tâp tin vãn bán, kho XML, hay co só dü liêu. Có
hai nguyên nhân chính là tai sao nhiêu công ty dê xuât luu trü XML bãng co só dü liêu:
Nhp môn H qun tr c s d liu DB2
177
• Quán lý luong lón hô so XML là môt vân dê vê co só dü liêu. XML là dü liêu
giông nhu các dü liêu khác, chi khác phân dinh dang. Nhüng nguyên nhân
tuong tu dê luu trü dü liêu quan hê trên co sõ dü liêu XML: các co só dü liêu
cung câp chúc nãng tìm kiêm và rút trích hiêu quá, hô tro tính bên vüng cúa dü
liêu môt cách tin cây, sao luu và phuc hôi, hô tro giao dich, tính hiêu quá và khá
nãng mó rông.
• Tính tích hop: bãng cách luu trü các tài liêu quan hê và XML cùng vói nhau, ban
có thê tích hop dü liêu XML mói cùng vói dü liêu quan hê dã có, và kêt hop SQL
vói XPath hay XQuery trong môt câu truy vân. Hon nüa, dü liêu quan hê có thê
duoc chuyên thành XML và nguoc lai. Thông qua viêc tích hop, các co só dü
liêu có thê hô tro các úng dung web (web applications), SOA (Service Oriented
Architecture) và các dich vu web (web services).
16.2 Co só dü liêu XML
Có hai loai co só dü liêu dê luu trü dü liêu, hô so XML:
Co só dü liêu hô tro XML
Co só dü liêu thuân XML
16.2.1 co só dü liêu hô tro XML
Môt co só dü liêu hô tro XML së sú dung mô hình quan hê là mô hình chính dê luu trü
dü liêu. Ðiêu này cân su ánh xa giüa mô hình dü liêu XML và mô hình dü liêu quan hê,
hoãc là luu trü dü liêu XML nhu là dôi tuong lón có thuôc tính. Trong khi xem xét viêc
này nhu là công nghê cü thì nhiêu nhà cung câp co só dü liêu vân sú dung cách nhu
trên. Hình 16.2 giái thích chi tiêt hon hai lua chon cho co só dü liêu hô tro XML.
Hình 16.2 – Hai lua chon dê luu trü dü liêu XML trong co só dü liêu hô tro XML
Bên trái hình 16.2 cho thây phuong thúc luu trü tài liêu XML trong co só dü liêu “CLOB
và Varchar”. Tài liêu XML dùng phuong thúc này duoc luu bãng cá ánh CLOB và côt
kiêu Varchar trong co só dü liêu. Phuong thúc này không linh hoat bói vì khó tìm duoc
các phân tú bên trong ánh. Hiêu nãng cúa nó cüng không cao vì các ánh XML thuòng
rât lón do dó tôn bô nhó. Nhiêu máy chú dü liêu, bao gôm máy chú DB2, không tái hình
ánh vào bô nhó, mà xú lý truc tiêp trên dïa. Sú dung hình ánh hiên nhiên së không dat
hiêu nãng tôt.
Nhp môn H qun tr c s d liu DB2
178
Lua chon còn lai cho co só dü liêu hô tro XML là phuong thúc phân rã, phuong thúc
này duoc minh hoa bên phái cúa hình 16.2. Toàn bô tài liêu XML dùng phuong thúc này
bi phân rã thành nhiêu phân (phân tú) rôi luu trong các báng. Sú dung phuong pháp
này mô hình phân câp cúa tài liêu XML bi chuyên thành mô hình quan hê. Phuong pháp
này cüng không linh hoat: môt thay dôi trong tài liêu XML không dê gì lan truyên dên các
báng tuong úng và có thê phái tao nhiêu báng khác khi cân thiêt. Phuong thúc này
cüng không hiêu quá: nêu ban cân lây lai tài liêu XML ban dâu, ban phái thuc hiên các
tác vu SQL vói chi phí cao, viêc này còn tôn chi phí khi sô luong báng duoc kêt nôi càng
nhiêu.
16.2.2 Co só dü liêu thuân XML
Co só dü liêu thuân XML sú dung mô hình phân câp cúa dü liêu XML dê luu trü và xú
lý XML bên trong. Ðinh dang luu trü thì giông nhu dinh dang xú lý: không có su ánh xa
dên mô hình quan hê, và không luu các tài liêu XML thành dang ánh. Khi sú dung các
câu lên XPath hay XQuery, môt co chê (engine) së xú lý các câu lênh dó chú không
chuyên sang SQL. Ðây là nguyên nhân tai sao goi các co só dü liêu này là co só dü
liêu thuân XML. Hiên tai, DB2 9 là máy chú thuong mai duy nhât cung câp tính nãng
này.
16.3 XML trong DB2
Hình 16.3 bên duói phác hoa cách thúc luu trü dü liêu quan hê và dü liêu phân câp
(các tài liêu XML) trong DB2 phiên bán 9. Trong hình, giá sú dinh nghïa báng dept nhu
sau :
CREATE TABLE dept (deptID char(8) ,…, deptdoc XML);
Hình 16.3 – XML trong DB2
Chú ý rãng khi dinh nghïa báng dept có sú dung kiêu dü liêu mói XML cho côt deptdoc.
Müi tên bên trái cúa hình trên cho thây côt deptID duoc luu trü bãng dinh dang quan
hê (dang báng), trong khi côt detdoc duoc luu bãng dinh dang phân câp dã duoc
phân rã. Hình 16.4 minh hoa bôn cách truy xuât dü liêu trong DB2 phiên bán 9:
Sú dung SQL truy xuât dü liêu quan hê.
Sú dung SQL vói XML mó rông dê truy xuât dü liêu XML
Sú dung XQuery dê truy xuât dü liêu XML
Sú dung XQuery dê truy xuât dü liêu quan hê
Nhp môn H qun tr c s d liu DB2
179
Hình 16.4 – Bôn cách truy xuât dü liêu trong DB2
Vì vây, trong khi môt nguòi sú dung SQL xem DB2 nhu là môt hê quán tri co só dü liêu
quan hê (RDBMS – Relational Database Management System) câp cao cüng có hô tro
XML, còn môt nguòi sú dung XML thì së xem DB2 nhu là kho trü XML câp cao có hô
tro SQL.
Chú ý rãng IBM dùng thuât ngü pureXML thay vì “native XML” dê mô tá công nghê này.
Trong khi các hãng khác vân dùng công nghê cü CLOB/Varchar hay phân rã dê luu trü
các tài liêu XML, ho goi nhüng công nghê cü dó là “native XML”. IBM quyêt dinh dùng
thuât ngü mói pureXML dê tránh su nhâm lân và dãt thuong hiêu tên này dê các hãng
khác vê co só dü liêu hay XML không sú dung trùng thuât ngü biêu thi cho các công
nghê khác. Chú ý, su hô tro pureXML chi duoc cung câp khi tao ra co só dü liêu
Unicode.
16.3.1 Uu diêm cúa công nghê pureXML trong DB2 9
Sú dung công nghê pureXML dem lai nhiêu uu diêm sau :
1. Ban có thê nâng cao khá nãng dùng dü liêu quan hê, bãng cách luu trü các tài
liêu XML trong các côt cúa báng có sú dung kiêu dü liêu mói XML.
2. Ban có thê giám dô phúc tap cúa mã. Ví du, trong hình 16.5 minh hoa môt doan
mã PHP duoc viêt vùa sú dung và không sú dung pureXML. Sú dung pureXML
(hôp màu xanh) giúp giám các dòng mã lênh. Ðiêu này không chi có nghïa là mã
lênh ít phúc tap mà hiêu nãng toàn thê duoc cái thiên vì sô dòng dê phân tích và
báo trì trong mã lênh ít hon.
Nhp môn H qun tr c s d liu DB2
180
Hình 16.5 - Ðô phúc tap khi sú dung hay không sú dung pureXML
3. Sú dung XML và công nghê pureXML thay dôi luoc dô (schema) cúa ban dê
dàng hon. Hình 16.6 minh hoa môt ví du vê su tãng tính linh dông. Trong hình,
giá sú rãng ban dã có co só dü liêu gôm các báng Employee và Department.
Mãc dinh là co só dü liêu không có XML, nêu nhà quán lí cúa ban yêu câu ban
luu trü không chi môi nhân viên môt sô diên thoai (sô diên thoai nhà) mà còn luu
thêm sô thú hai (sô di dông) thì ban có thê thêm môt côt trong báng Employee và
luu sô diên thoai di dông trong côt mói dó. Tuy nhiên, cách làm này không dúng
vói các luât chuân hóa trong co só dü liêu quan hê. Nêu ban muôn giü dúng các
luât này thì ban tao môt báng Phone mói và chuyên toàn bô thông tin sô diên
thoai qua báng này. Ban cüng có thê thêm nhiêu sô diên thoai di dông. Tao ra
báng Phone mói thì tôn chi phí, bói vì không nhüng luong dü liêu dã có cân
duoc chuyên lón mà còn tât cá các câu SQL trong các úng dung së phái thay dôi
diêm dên là báng mói.
Thay vào dó, chúng tôi dua ra cách thuc hiên viêc này sú dung XML ó bên trái
hình bên duói. Nêu nhân viên “Christine” cüng có môt sô diên thoai di dông, thì
thêm môt thé (tag) mói dê luu thông tin này. Nêu nhân viên “Michael” không có
sô diên thoai di dông thì dê trông.
Nhp môn H qun tr c s d liu DB2
181
Hình 16.6 – Tång su mêm déo khi sú dung XML
4. Ban có thê cái thiên hiêu nãng úng dung XML cúa mình. Thuc hiên các kiêm tra
dùng công nghê pureXML cho thây su cái thiên dáng kê cho nhiêu úng dung
XML. Hình 16.7 cho thây các kêt quá dánh giá cho viêc môt công ty chuyên sang
sú dung công nghê pureXML. Côt ó giüa cho thây kêt quá làm viêc vói XML
bãng phuong thúc cü, và côt thú ba là kêt quá sú dung pureXML trong DB2 9.
Hình 16.7 – Su tång hiêu nång khi sú dung công nghê pureXML
16.3.2 Khái niêm co bán vê XPath
XPath là môt ngôn ngü mà ta có thê dùng nó dê truy vân các tài liêu XML. Hình 16.8 mô
tá môt tài liêu XML và hình 16.9 cüng minh hoa tài liêu dó duoc trình bày vói dang "phân
tích phân câp" (cüng duoc goi là nút (node) hay lá (leaf)). Chúng ta së xú dung dinh
dang "phân tích phân câp" dê giái thích XPath hoat dông nhu thê nào.
Nhp môn H qun tr c s d liu DB2
182
Hình 16.8 - Môt tài liêu XML
**Hình 16.9 - Trình bày tài liêu XML ó hình 16.8 theo dang “phân tích phân câp”
**
Môt cách nhanh chóng dê hoc XPath dó là so sánh nó vói câu lênh dôi thu muc (CD)
trong MS-DOS hay trong Linux/UNIX. Sú dung câu lênh CD ban di qua môt cây thu muc
nhu sau:
cd /directory1/directory2/....
Tuong tu, trong XPath ban sú dung nhüng dâu gach chéo (/) dê chuyên tù môt thành
phân này dên môt thành phân khác trong tài liêu XML. Ví du, bãng cách sú dung tài liêu
trong hình 16.9 vói XPath ban có thê lây ra tên cúa tât cá các nhân viên thông qua câu
truy vân sau:
/dept/employee/name
Các biêu thúc XPath
Các biêu thúc XPath sú dung duòng dân dây dú dê dinh ra các thành phân và/hay các
thuôc tính. Kí hiêu "@" dùng dê chi thuôc tính. Ðê chi lây giá tri (text node) cúa môt
thành phân, ta sú dung hàm "text()". Báng 16.1 minh hoa môt vài câu truy vân XPath và
kêt quá tuong úng khi áp dung trên tài liêu XML dã cho ó hình 16.9
Nhp môn H qun tr c s d liu DB2
183
XPath Kêt quá
/dept/@bldg 101
/dept/employee/@id 901
902
/dept/employee/name <name>Peter Pan</name>
<name>John Doe</name>
/dept/employee/name/text() Peter Pan
John Doe
Báng 16.1 – Các ví du vê biêu thúc XPath
Các kí tu dai diên
Có 2 kí tu dai diên chính trong XPath:
• "*" thay thê cho bât kì tên thé nào
• "//" là kí tu dai diên cho "tù dây tró xuông" (descendent-or-self)
Báng 16.2 cho ta thêm vài ví du dua trên tài liêu XML ó hình 16.9
XPath Kêt quá
/dept/employee/*/text() John Doe
408 555 1212
344
Peter Pan
408 555 9918
216
/dept/employee/@id 901
902
/dept/employee/name <name>Peter Pan</name>
<name>John Doe</name>
/dept/employee/name/text() Peter Pan
John Doe
/dept//phone <phone>408 555 1212</phone>
<phone>408 555 9918</phone>
Báng 16.2 - Các ví du vê kí tu dai diên trong XPath
Các vi tù cúa XPath
Các vi tù cúa XPath duoc dãt trong cãp dâu ngoãc vuông []. Môt cách tuong tu, ban có
thê nghï chúng nhu là môt thành phân tuong duong vói mênh dê WHERE trong SQL. Ví
du [@id="902"] có thê duoc hiêu là "vói diêu kiên thuôc tính id có giá tri bãng 902".
Trong môt biêu thúc XPath có thê có nhiêu vi tù. Ðê chi ra môt vi tù có vi trí, ta sú dung
[n] vói ý nghïa là thành phân con thú n së duoc chon. Ví du employee[2] nghïa là nguòi
công nhân thú 2 së duoc chon. Báng 16.3 së cho ta nhiêu ví du hon:
XPath Kêt quá
/dept/employee[@id=”902”]/name <name>Peter Pan</name>
/dept[@bldg=”101”]/employee[office
> “300”]/name
<name>John Doe</name>
//employee[office=”304” OR office=”216”]/@id 901
902
/dept/employee[2]/@id 902
Báng 16.3 - Các ví du vê vi tù XPath
Nhp môn H qun tr c s d liu DB2
184
Truc cha XPath:
Tuong tu vói MS-DOS hay Linux/UNIX, ban có thê dùng môt dâu châm (.) dê dinh ra
trong biêu thúc rãng ban tham chiêu dên vi trí hiên tai, và hai dâu châm (..) dê tham
chiêu dên ví trí trên nó môt câp (múc cha).
Báng 16.4 cho ta thêm vài ví du
XPath Kêt quá
/dept/employee/name[../@id=”902”] <name>Peter Pan</name>
/dept/employee/office[.>”300”] <office>344</office>
/dept/employee[office > “300”]/office <office>344</office>
/dept/employee[name = “John Doe”]/../@bldg 101
/dept/employee/name[.=”John Doe”]/../../@bldg 101
Báng 16.4 – Truc cha Xpath
16.3.3 Ðinh nghïa XQuery
XQuery là môt ngôn ngü truy vân duoc tao ra cho XML. XQuery hô tro các biêu thúc
duòng dân dê dinh vi trí trong câu trúc phân câp XML. Thuc tê XPath là môt tâp con cúa
XQuery, do dó, tât cá nhüng gì chúng ta dã hoc truóc dây vê XPath cüng duoc áp dung
vói XQuery. XQuery hô tro cá dü liêu có kiêu và dü liêu không có kiêu. XQuery không
chúa giá tri null vì tài liêu XML bó di nhüng dü liêu thiêu hay không xác dinh. XQuery trá
vê môt chuôi các dü liêu XML.
Môt chú ý quan trong là các biêu thúc XQuery và XPath phân biêt ký tu viêt hoa và viêt
thuòng.
XQuery hô tro biêu thúc FLWOR (doc nhu flower). Trong SQL nó së tuong úng vói biêu
thúc SELECT-FROM-WHERE. Phân tiêp theo së giái thích rõ hon vê FLWOR
XQuery: Biêu thúc FLWOR
FLWOR viêt tãt cho:
• FOR: lãp qua tât cá các phân tú cúa môt dãy các thành phân và gán môt biên
cho các thành phân.
• LET: Gán môt biên vói môt dãy.
• WHERE: loai ra các thành phân trong quá trình lãp
• ORDER: sãp xêp lai các thành phân trong khi lãp
• RETURN: tao ra giá tri trá vê cho câu truy vân.
Ðây là môt biêu thúc cho phép ta thao tác vói các tài liêu XML, cho phép ban trá vê
nhüng biêu thúc khác. Ví du, giá sú ban dã có 1 báng vói dinh nghïa nhu sau:
CREATE TABLE dept (deptID CHAR(8), deptdoc XML);
Và tài liêu XML sau duoc thêm vào trong các côt cúa deptdoc:
<dept bldg=”101”>
<employee id=”901”>
<name>John Doe</name>
Nhp môn H qun tr c s d liu DB2
185
<phone>408 555 1212</phone>
<office>344</office>
</employee>
<employee id=”902”>
<name>Peter Pan</name>
<phone>408 555 9918</phone>
<office>216</office>
</employee>
</dept>
Thì khi dó câu lênh XQuery sau sú dung FLWOR có thê duoc thuc hiên:
xquery
for $d in db2-fn:xmlcolumn(‘dept.deptdoc’)/dept
let $emp := $d//employee/name
where $d/@bldg > 95
order by $d/@bldg
return
<EmpList>
{$d/@bldg, @emp}
</EmpList>
Và së cho ta kêt quá sau:
<EmpList bldg=”101”>
<name>
John Doe
</name>
<name>
Peter Pan
</name>
</EmpList>
16.3.4 Chèn các tài liêu XML
Viêc chèn các tài liêu XML vào co só dü liêu DB2 có thê thuc hiên bãng câu lênh
INSERT SQL, hay công cu IMPORT. Không thê dùng XQuery dê chèn tài liêu XML khi
nó chua duoc dinh nghïa trong chuân.
Kiêm tra têp kich bán sau, nó có thê chay trong DB2 Command Window hoãc Linux shell
dùng lênh này.
db2 -tvf table_creation.txt
table_creation.txt
-- (1)
drop database mydb
;
-- (2)
create database mydb using codeset UTF-8 territory US
;
-- (3)
connect to mydb
;
-- (4)
create table items (
Nhp môn H qun tr c s d liu DB2
186
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
-- (5)
create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contact xml
);
-- (6)
insert into clients values (77, 'John Smith', 'Gold',
'<addr>111 Main St., Dallas, TX, 00112</addr>')
;
-- (7)
IMPORT FROM "D:\Raul\clients.del" of del xml from "D:\Raul" INSERT INTO CLIENTS
(ID, NAME, STATUS, CONTACT)
;
-- (8)
IMPORT FROM "D:\Raul\items.del" of del xml from "D:\Raul" INSERT INTO ITEMS (ID,
BRANDNAME, ITEMNAME, SKU, SRP, COMMENTS)
Luu ý rãng têp kich bán này và nhüng têp liên quan duoc cung câp trong têp nén ex-
pressc_book_quicklabs.zip di kèm vói sách. Bên duói chúng ta mô tá tùng dòng lênh
trong têp kich bán.
1. Xóa co só dü liêu “mydb”. Thao tác này thuòng duoc thuc hiên trong các têp
kich bán dê làm nhiêm vu don dep. Nêu nhu truóc dó chua có “mydb”, ban së
nhân duoc duoc môt thông báo lôi, nhung nó không gây ánh huóng dên viêc ta
dang làm.
2. Tao co só dü liêu “mydb” sú dung bô mã UTF-8. Môt co só dü liêu UNICODE
duoc dòi hói hô tro pureXML, vì vây buóc này là cân thiêt dê tao môt co só dü
liêu thành môt co só dü liêu UNICODE.
3. Kêt nôi dên co só dü liêu “mydb” vùa mói duoc tao. Lênh này cân thiêt dê tao ra
các dôi tuong trong co só dü liêu.
4. Tao báng “items”. Ðê ý thây côt cuôi cùng trong báng (côt “comments”) duoc
dinh nghïa nhu là môt côt XML sú dung kiêu dü liêu XML mói.
5. Tao báng “clients”. Côt cuôi trong báng (côt “contact”) cüng duoc dinh nghïa vói
kiêu dü liêu XML mói.
6. Dùng lênh SQL INSERT này, dê chèn môt tài liêu XML vào môt côt XML. Trong
câu lênh INSERT ban truyên tài liêu XML vào nhu là môt chuôi bao bói dâu nháy
don.
7. Dùng lênh IMPORT, dê chèn hoãc nhâp nhiêu tài liêu XML cùng vói dü liêu quan
hê vào co só dü liêu. Lênh 7, ban nhâp dü liêu tù têp clients.del (môt têp ascii
Nhp môn H qun tr c s d liu DB2
187
duoc dâu phân cách), và ban cüng có thê chi ra noi mà dü liêu XML duoc tham
chiêu bói têp clients.del dó duoc dinh vi (trong ví du này là thu muc D:\Raul).
Chúng ta së tìm hiêu kÿ hon têp clients.del, nhung truóc hêt, hãy xem nôi dung cúa thu
muc D:\Raul (Hình 16.10)
Hình 16.10 – Nôi dung cúa thu muc D:\Raul vói các tài liêu XML
Ðây là nôi dung cúa têp clients.del
clients.del
3227,Ella Kimpton,Gold,<XDS FIL='Client3227.xml' />,
8877,Chris Bontempo,Gold,<XDS FIL='Client8877.xml'/>,
9077,Lisa Hansen,Silver,<XDS FIL='Client9077.xml' />
9177,Rita Gomez,Standard,<XDS FIL='Client9177.xml'/>,
5681,Paula Lipenski,Standard,<XDS FIL='Client5681.xml' />,
4309,Tina Wang,Standard,<XDS FIL='Client4309.xml'/>
Trong têp clients.del, “XDS FIL=” duoc dùng dê tró dên môt têp tài liêu XML cu thê. Hình
16.11 cho thây trung tâm diêu khiên sau khi chay têp kich bán ó trên.
Nhp môn H qun tr c s d liu DB2
188
Hình 16.11 – Trung tâm diêu khiên sau khi thuc hiên table_creation.txt
Trong hình là nôi dung cúa báng CLIENTS. Côt cuôi cùng “Contact” là môt côt XML. Khi
ban nhâp vào nút có ba dâu châm, môt cúa sô khác mó ra cho ban thây nôi dung tài liêu
XML. Cúa sô này nãm ó góc duói bên phái cúa hình 16.11
16.3.5 Truy vân dü liêu XML
Trong DB2, có 2 cách dê truy vân dü liêu XML:
• Sú dung SQL vói các lênh mó rông cho XML (SQL/XML)
• Sú dung XQuery
Trong cá 2 cách trên, DB2 dêu tuân theo chuân XML quôc tê.
Truy vân dü liêu XML vói SQL/XML
Sú dung nhüng câu lênh SQL thuân túy cho phép ban làm viêc vói cá dòng và côt. Môt
câu lênh SQL làm viêc duoc vói nguyên cá tài liêu XML; tuy nhiên nó lai không có khá
nãng làm viêc vói chi môt phân cúa tài liêu XML. Trong truòng hop này, ban cân sú
dung SQL vói các lênh mó rông cho XML (SQL/XML).
Báng 16.5 bên duói mô tá môt sô hàm SQL/XML có sãn vói chuân SQL 2006
Tên hàm Mô tá
XMLPARSE Tách (phân tích) thuôc tính hoãc dü liêu nhi phân trong 1 dôi
tuong lón, lây ra giá tri XML
XMLSERIALIZE Chuyên giá tri XML sang thuôc tính hoãc dü liêu nhi phân
trong 1 dôi tuong lón
XMLVALIDATE Ðánh giá giá tri cúa XML vói so dô XML (XML Schema) và
ghi chú kiêu các giá tri cúa XML
XMLEXISTS Xác dinh (kiêm tra) câu truy vân XQuery có giá tri trá vê không
(ví du môt dãy giá tri hay nhiêu hon)
Nhp môn H qun tr c s d liu DB2
189
XMLQUERY Thuc thi câu truy vân XQuery và trá vê dãy kêt quá
XMLTABLE Thuc thi câu truy vân XQuery và kêt quá trá vê (nêu có) së là
môt báng quan hê
XMLCAST Ép kiêu XML
Báng 16.5 - Các hàm SQL/XML
Nhüng ví du minh hoa sau sú dung co só dü liêu “mydb” mà ta dã tao ra tù truóc.
Ví du 1:
Giá sú ban cân xác dinh tên tât cá khách hàng sông ó môt vùng nào dó (có cùng mã
vùng – zip). Báng “clients” luu dia chi khách hàng, bao gôm mã vùng, trong môt côt
XML. Sú dung XMLEXISTS, ban tìm thây côt dü liêu XML phù hop vói mã vùng, sau dó
giói han lai kêt quá trá vê.
SELECT name FROM clients
WHERE xmlexists (
‘$c/Client/Address[zip=”95116”]’
passing clients.contact as “c”
)
Dòng dâu tiên cúa câu lênh SQL nói rãng ban muôn lây thông tin trong côt “name” cúa
báng “clients”.
Mênh dê WHERE goi hàm XMLEXISTS, chi dinh rõ biêu thúc XPath yêu câu DB2 tìm
phân tú “zip” có giá tri 95116.
Mênh dê “$c/Client/Address” xác dinh duòng dân bên trong cây câu trúc cúa tài
liêu XML dê DB2 có thê tìm ra phân tú “zip”. Ký tu $ duoc dùng dê khai báo “c” là môt
biên. Biên “c” này sau dó duoc dinh nghïa bãng câu lênh passing clients.contact as “c”.
Trong dó “clients” là tên báng và “contact” là tên côt có kiêu dü liêu XML. Nói cách khác,
chúng ta dang dua tài liêu XML vào biên “c”.
DB2 kiêm tra dü liêu XML trong côt “contact”, duyêt tù nút “Client” xuông nút “Address”,
cuôi cùng là nút “zip” và xác dinh xem khách hàng có sông ó vùng có mã vùng dó
không. Nêu thây, hàm XMLEXISTS trá vê “true” và DB2 lây ra tên khách hàng tuong
úng.
Ví du 2:
Chúng ta suy nghï xem làm cách nào tao ra duoc mâu báo cáo gôm danh sách dia chi
thu diên tú cúa nhüng khách hàng “Vàng” (có trang thái “Gold”). Câu truy vân duói dây
có thê giái quyêt vân dê này:
SELECT xmlquery(‘$c/Client/email’ passing contact as “c”)
FROM clients
WHERE status = “Gold”
Dòng dâu tiên nói rãng ta muôn lây ra phân tú là dia chi thu diên tú cúa tài liêu XML chú
không muôn lây ra côt dü liêu. Tuong tu ví du truóc, tài liêu XML duoc luu trong biên
“$c”. Trong ví du này, hàm XMLQUERY có thê duoc sú dung sau mênh dê SELECT,
trong khi hàm XMLEXISTS duoc sú dung sau mênh dê WHERE.
Ví du 3:
Có truòng hop ban muôn trình bày dü liêu XML theo dang báng, ta có thê làm duoc
diêu này bãng cách sú dung hàm XMLTABLE.
Nhp môn H qun tr c s d liu DB2
190
SELECT t.comment#, i.itemname, t.customerID, Message
FROM items I,
xmltable(‘$c/Comments/Comment’ passing i.comments as “c”
columns Comment# integer path ‘CommentID’,
CustomerID integer path ‘CustomerID’,
Message varchar(100) path ‘Message’) AS t
Dòng dâu tiên cho biêt nhüng côt nào së xuât hiên trong tâp hop kêt quá (results set).
Nhüng côt bãt dâu bãng “t” là co só trên các giá tri cúa phân tú XML.
Dòng tiêp theo goi hàm XMLTABLE dê xác dinh rõ côt XML cúa DB2 së chúa dü liêu mà
ta cân (“i.comments”) và duòng dân dên phân tú dó trong tài liêu XML, là nhüng phân tú
mong muôn.
Tù dòng 4 dên 6 là mênh dê “columns”, xác dinh nhüng phân tú XML cu thê nào së
duoc ánh xa tuong úng vói nhüng côt trong báng kêt quá cúa câu lênh SQL ó dòng 1.
Phân ánh xa này có su tham gia cúa kiêu dü liêu mà các giá tri cúa các phân tú XML së
chuyên dôi thành. Trong ví du này, tât cá dü liêu XML dêu duoc dôi thành kiêu dü liêu
vôn có cúa SQL.
Ví du 4:
Bây giò ta së thuc hiên môt ví du don gián có sú dung biêu thúc XQuery FLWOR bên
trong hàm XMLQUERY SQL/XML.
SELECT name, xmlquery(
‘for $e in $c/Client/email[1] return $e’
passing contact as “c”
)
FROM clients
WHERE status = ‘Gold’
Dòng thú nhât xác dinh rãng báng kêt quá cúa câu truy vân bao gôm tên khách hàng và
kêt quá trá vê tù hàm XMLQUERY. Dòng thú hai cho biêt phân tú “email” dâu tiên cúa
phân tú “Client” së duoc trá vê. Dòng thú ba chi nguôn dü liêu XML (côt “contact”).
Dòng thú tu cho ta biêt côt này ó báng “client”; và dòng nãm chi ra khách hàng “vàng” là
quan tâm cúa chúng ta.
Ví du 5:
Ví du này minh hoa lai hàm XMLQUERY có sú dung biêu thúc XQuery FLWOR, nhung
lân này ta không chi trá vê dü liêu XML mà còn cá HTML.
SELECT xmlquery (‘for $e in $c/Client/email[1]/text()
return <p>{$e}</p>’
passing contact as “c”
)
FROM clients
WHERE status = ‘Gold’
Mênh dê return cúa XQuery cho phép biên dôi dü liêu XML dâu ra theo yêu câu. Sú
dung hàm text() ó dòng dâu tiên chi ra rãng ta chi quan tâm dên biêu diên vãn bán
dia chi e-mail dâu tiên cúa nhóm khách thóa mãn yêu câu. Dòng thú hai cho biêt thông
tin này së duoc boc lai trong các thé HTML (trong truòng hop này là thé <p> và </p>).
Ví du 6:
Ví du duói dây minh hoa cách sú dung hàm XMLELEMENT dê tao ra môt dãy các phân
Nhp môn H qun tr c s d liu DB2
191
tú, môi phân tú này lai chúa trong nó các phân tú con (sub-element) có nôi dung vê ID,
tên hàng hóa và chi sô hàng hóa tôi thiêu trong kho (SKU) tuong úng vói các côt trong
báng “items”. Vê co bán, ta có thê dùng hàm XMLELEMENT khi muôn chuyên tù dü liêu
quan hê sang dü liêu XML.
SELECT
xmlelement (name “item”, itemname),
xmlelement (name “id”, id),
xmlelement (name “brand”, brandname),
xmlelement (name “sku”, sku)
FROM items
WHERE srp < 100
Kêt quá xuât ra cúa câu truy vân trên nhu sau:
<item>
<id>4272</id>
<brand>Classy</brand>
<sku>981140</sku>
</item>
…
<item>
<id>1193</id>
<brand>Natural</brand>
<sku>557813</sku>
</item>
Truy vân dü liêu XML vói XQuery
Trong phân truóc, ta dã thây duoc cách truy vân dü liêu XML vói câu SQL có phân mó
rông cho XML. Truòng hop này, SQL là phuong pháp truy vân chính, và XPath duoc
nhúng vào bên trong câu lênh SQL. Còn trong tiêp theo này, ta nói vê cách sú dung
XQuery dê truy vân dü liêu XML. Lúc này, XQuery là phuong pháp chính, và trong môt
sô truòng hop, ta së nhúng SQL vào bên trong XQuery (bãng cách sú dung hàm “db2-
fn:sqlquery”). Khi thuc hành vói XQuery , ta së goi vài hàm, sú dung cá biêu thúc
FLWOR.
Ví du 1:
Làm môt truy vân XQuery don gián là lây dü liêu liên lac cúa khách hàng.
xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)
Nhó luôn luôn thêm lênh “xquery” vào dâu biêu thúc XQuery dê cho DB2 biêt rãng nó
cân sú dung bô phân tích (parser) XQuery. Nêu không, DB2 së cho rãng ban dang cô
gãng thuc thi biêu thúc SQL. Hàm db2-fn:xmlcolumn lây côt ta chi dinh trong tài liêu
XML làm tham sô. Câu lênh trên tuong úng vói câu lênh SQL sau dây:
SELECT contact FROM clients
Ví du 2:
Ta sú dung biêu thúc FLWOR dê lây thông tin vê sô fax cúa khách hàng.
xquery
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/fax
return $y
Nhp môn H qun tr c s d liu DB2
192
Dòng dâu tiên goi bô phân tích XQuery. Dòng thú hai yêu câu DB2 lãp hêt các phân tú
con fax trong côt CLIENTS.CONTACT. Môi phân tú fax duoc luu trong biên $y. Dòng
cuôi cùng nói rãng giá tri cúa biên $y së duoc trá vê trong môi lân lãp.
Kêt quá xuât ra cúa câu truy vân trông giông nhu sau (mãc dinh có thê gôm dia chi cúa
không gian tên (namespace) nhung ó dây tôi không thê hiên ra, mãt khác thông tin xuât
có thê trái ra thành nhiêu dòng nên hoi khó doc):
<fax>4081112222</fax>
<fax>5559998888</fax>
Ví du 3:
Ví du này tiêp tuc truy vân dü liêu XML và trá vê kêt quá là HTML
xquery
<ul> {
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address
order by $y/zip
return <li>{$y}</li>
</ul>
Kêt quá HTML trá vê trông nhu sau:
<ul>
<li>
<address>
<street>9407 Los Gatos Blvd.</street>
<city>Los Gatos</city>
<state>ca</state>
<zip>95302</zip>
</address>
</li>
<li>
<address>
<street>4209 El Camino Real</street>
<city>Mountain View</city>
<state>CA</state>
<zip>95302</zip>
</address>
</li>
…
</ul>
Ví du 4:
Tiêp theo là cách nhúng SQL vào trong XQuery bãng viêc sú dung hàm db2-
fn:sqlquery. Hàm db2-fn:sqlquery thuc thi câu truy vân SQL và chi trá vê nhüng
dü liêu XML duoc chon. Chi nhüng câu truy vân SQL trá vê dü liêu XML mói duoc
truyên vào hàm db2-fn:sqlquery.
xquery
for $y in
db2-fn:sqlquery(
‘select comments from items where srp > 100’
)/Comments/Comment
where $y/ResponseRequested = ‘Yes’
Nhp môn H qun tr c s d liu DB2
193
return (
<action>
{$y/ProductID
$y/CustomerID
$y/Message}
</action>
)
Trong ví du trên, câu truy vân SQL loc nhüng dòng dü liêu thóa diêu kiên giá tri tai côt
“srp” phái lón hon 100. Tù các dòng dã loc này lây ra côt “comments”, là côt dü liêu
XML. Câu lênh XQuery (hoãc XPath) tiêp theo duoc áp dung cho nhüng phân tú con.
16.3.6 Nôi (join) vói SQL/XML
Phân này së mô tá cách thúc thuc hiên lênh JOIN giüa hai côt XML cúa hai báng khác
nhau, hoãc giüa môt côt XML và môt côt quan hê. Giá sú ta dã tao hai báng vói các
lênh sau:
CREATE TABLE dept (unitID CHAR (8), deptdoc XML)
CREATE TABLE unit (unitID CHAR(8) primary key not null,
name CHAR(20),
manager VARCHAR(20),
. . .
)
Ta có thê thuc hiên lênh JOIN theo môt trong hai cách
Phuong pháp 1:
SELECT u.unitID
FROM dept d, unit u
WHERE XMLEXITS(
‘$e//employee[name = $n]’
passing d.deptdoc as “e”, u.manager as “m”)
Trên dòng 3 cúa lênh này chi ra rãng lênh JOIN xuât hiên giüa phân tú “name” là phân
tú con cúa côt XML deptdoc cúa báng “dept”, và côt quan hê “manager” cúa báng
“unit”.
Phuong pháp 2:
SELECT u.unitID
FROM dept d, unit u
WHERE u.manager = XMLCAST(
XMLQUERY(‘$e//employee/name’
passing d.deptdoc as “e”)
AS char(20))
Ghi chú: DB2 không phân biêt chü in hoa và chü thuòng và giá dinh tât cá tên báng và
tên côt dêu là chü in hoa, trong khi dó XQuery lai phân biêt chü in hoa và chü thuòng.
Các hàm trên là hàm giao diên cúa XQuery (XQuery interface function) do dó tên báng
và tên côt truyên vào các hàm này nên là chü hoa. Truyên tên dôi tuong ó dang chü
thuòng có thê gây ra lôi “tên dôi tuong không xác dinh” (undefined object name)
Nhp môn H qun tr c s d liu DB2
194
Trong lua chon này, côt quan hê thì ó bên trái cúa lênh JOIN. Nêu côt có quan hê ó bên
trái dâu bãng, môt chi muc quan hê có thê duoc dùng thay cho môt chi muc XML.
16.3.7 Nôi (Join) vói XQuery
Giá sú có các báng sau duoc tao ra:
CREATE TABLE dept(unitID CHAR(8), deptdoc XML)
CREATE TABLE project(projectdoc XML)
Nêu ta sú dung SQL/XML, câu truy vân së nhu sau:
SELECT XMLQUERY (
‘$d/delp/employee’ passing d.deptdoc as “d”)
FROM dept d, project p
WHERE XMLEXISTS(
‘$e/dept[@deptID=$p/project/deptID]’
passing d.deptdoc as “e”, p.project as “p”)
Lênh tuong duong sú dung XQuery së là:
xquery
for $dept in db2-fn:xmlcolumn(“DEPT.DEPTDOC”)/dept
for $proj in db2-
fn:xmlcolumn(“PROJECT.PROJECTDOC”)/project
where $dept/@deptID = $proj/deptID
return $dept/employee
Phuong pháp thú 2 này dê phiên dich hon – biên “$dept” mang tài liêu XML cúa côt
XML “deptdoc” cúa báng “dept”. Biên “$proj” mang tài liêu XML cúa côt XML “projectdoc”
cúa báng “project”. Nhu vây dòng 4 thuc hiên lênh JOIN giüa môt thuôc tính cúa tài liêu
XML dâu tiên và môt phân tú cúa tài liêu XML thú hai.
16.3.8 Các lênh câp nhât và xóa
Các lênh câp nhât và xóa dü liêu XML có thê duoc thuc hiên bãng môt trong hai cách:
- Sú dung câu lênh SQL UPDATE và DELETE
- Goi thú tuc DB2XMLFUNCTION.XMLUPDATE
Trong cá hai truòng hop, câp nhât hoãc xóa tác dông ó múc tài liêu; thât vây, toàn bô
tài liêu XML duoc thay thê vói môt lân câp nhât. Ví du, nêu trong ví du duói dây ta muôn
thay thê phân tú <state>, toàn bô tài liêu XML trên thuc tê bi thay thê.
UPDATE clients SET contact=(
xmlparse (documment
‘<Client>
<address>
<street>5401 Julio ave.</street>
<city>San Jose</city>
<state>CA</state>
<zip>95116</zip>
</address>
<phone>
<work>4084633000</work>
<home>4081111111</home>
<cell>4082222222</cell>
</phone>
Nhp môn H qun tr c s d liu DB2
195
</Client>’)
)
WHERE id = 3227
16.3.9 Chi muc XML
Trong môt tài liêu XML, các chi muc có thê duoc tao ra theo các phân tú, thuôc tính
hoãc giá tri (vãn bán). Sau dây là môt sô ví du, giá sú báng sau dã duoc tao:
CREATE TABLE customer(info XML)
Và giá sú hô so sau dã duoc luu trong báng này:
<customerinfo Cid=”1004”>
<name>Matt Foreman</name>
<addr country=”Canada”>
<street>1596 Baseline</street>
<city>Toronto</city>
<state>Ontario</state>
<zip>M3Z-5H9</zip>
</addr>
<phone type=”work”>905-555-4789</phone>
<phone type=”home”>416-555-3376</phone>
<assistant>
<name>Peter Smith</name>
<phone type=”home”>416-555-3426</phone>
</assistant>
</customerinfo>
1) Lênh này tao môt chi muc thên thuôc tính “Cid”
CREATE UNIQUE INDEX idx1 ON customer(info)
GENERATE KEY USING
xmlpattern ‘/customerinfo/@Cid’
AS sql DOUBLE
2) Lênh này tao môt chi muc trên phân tú “name”
CREATE UNIQUE INDEX idx2 ON customer(info)
GENERATE KEY USING
xmlpattern ‘/customerinfo/name’
AS sql VARCHAR(40)
3) Lênh này tao môt chi muc trên moi phân tú “name”
CREATE UNIQUE INDEX idx3 ON customer(info)
GENERATE KEY USING
xmlpattern ‘//name’
AS sql VARCHAR(40)
4) Lênh này tao môt chi muc trên toàn bô vãn bán (tât cá các giá tri). Ðây là lênh không
nên dùng, nó quá tôn kém dê duy trì chi muc khi thuc hiên các lênh câp nhât, xóa
hoãc chèn, và chi muc së rât lón
Nhp môn H qun tr c s d liu DB2
196
CREATE UNIQUE INDEX idx4 ON customer(info)
GENERATE KEY USING
xmlpattern ‘//text()’
AS sql VARCHAR(40)
Nhp môn H qun tr c s d liu DB2
197
Bài tâp nhanh #12 – SQL/XML và XQuery
Muc dích
Ban dã thây nhiêu ví du vê cú pháp cúa SQL/XML và XQuery và dã duoc giói thiêu
trong DB2 Command Editor và công cu DB2 Developer Workbench. Trong bài tâp này,
ban hãy kiêm tra sú hiêu biêt cúa ban vê SQL/XML và XQuery bãng viêc thuc hành vói
các công cu này. Ta së sú dung co só dü liêu “mydb” duoc tao ra bãng viêc sú dung
têp kich bán table_creation.txt mà chúng ta dã giái thích trong các chuong truóc.
Thú tuc
1. Tao co só dü liêu “mydb” và nap dü liêu XML, nhu dã trình bày ó chuong truóc
2. Sú dung hoãc Cúa sô lênh hoãc DWB:
a. Tìm ra tât cá các nôi dung chú thích (comments) trong tài liêu XML trong
báng ITEMS bãng hai cách, chi sú dung XQuery
b. Tai sao khi ta sú dung lênh SQL sau lai không dua ra cùng kêt quá?
SELECT comments FROM items
c. Tìm ra ID và BRANDNAME cúa các bán ghi mà tài liêu XML cúa nó có giá
tri cúa truòng ResponseRequested là “No”
Lòi giái
2a)
xquery db2-fn:xmlcolumn(‘ITEMS.COMMENTS’)
xquery db2-fn:sqlquery(“select comments from items”)
2b)
Kêt quá khác nhau là vì SQL trá lai giá tri NULL khi không có giá tri, còn XQuery
không trá lai gì cá.
2c)
SELECT id, brandname FROM items WHERE
XMLEXISTS(‘$c/Comments/Comment[ResponseRequested=”No”
passing ITEMS.COMMENTS as “c”
Nhp môn H qun tr c s d liu DB2
198
17
Chuong 17 – Phát triên vói Java, PHP và Ruby
Chuong này së tháo luân nhüng vân dê co bán cúa viêc phát triên úng dung trong Java,
PHP và Ruby trên nên Rails sú dung môt máy chú DB2. Muc dích cúa chuong này
không nhãm huóng dân vê các ngôn ngü trên, nhung nó cung câp thông tin thích hop
trong viêc sú dung chúng vói DB2.
17.1 Phát triên úng dung bång Java
Trình diêu khiên IBM DB2 cho JDBC (duoc biêt dên nhu trình diêu khiên JCC) duoc
xem là tôi uu dôi vói các máy chú DB2 trên tât cá các nên táng. Têp db2jcc.jar
(com.ibm.db2.jcc) bao gôm trình diêu khiên kiêu 2 và kiêu 4. Têp db2jcc.jar cüng bao
gôm bât cú máy khách DB2 nào, hoãc nó có thê duoc thây (trình diêu khiên IBM DB2
cho JDBC và SQLJ) tù trang web DB2 Express-C (ibm.com/db2/express)
17.1.1 Trình diêu khiên JDBC kiêu 2 (type 2)
Trình diêu khiên JDBC kiêu 2 yêu câu môt máy khách DB2 dã duoc cài dãt noi mà úng
dung JDBC së thuc thi. Hình 17.1 minh hoa môt úng dung JDBC sú dung trình diêu
khiên kiêu 2.
Hình 17.1 – Trình diêu khiên JDBC kiêu 2
Hình 17.2 dua ra môt doan mã lênh cho ta thây làm thê nào dê thiêt lâp môt kêt nôi sú
dung trình diêu khiên JDBC kiêu 2. Luu ý là URL không bao gôm hostname hoãc thông
tin vê công bói vì diêu này duoc thuc hiên tù máy khách DB2.
Nhp môn H qun tr c s d liu DB2
199
Hình 17.2 – Thiêt lâp môt kêt nôi sú dung trình diêu khiên JDBC kiêu 2
17.1.2 Trình diêu khiên JDBC kiêu 4
Trình diêu khiên JDBC kiêu 4 không yêu câu môt máy khách phái kêt nôi dên môt máy
chú DB2. Hình 17.3 minh hoa môt úng dung JDBC sú dung trình diêu khiên kiêu 4.
Hình 17.3 – Trình diêu khiên JDBC kiêu 4
Hình 17.4 dua ra môt doan mã lênh cho ta thây làm thê nào dê thiêt lâp môt kêt nôi sú
dung trình diêu khiên JDBC kiêu 4. Luu ý là URL bao gôm cá hostname hoãc thông tin
vê công.
Nhp môn H qun tr c s d liu DB2
200
Hình 17.4 – Thiêt lâp môt kêt nôi sú dung trình diêu khiên JDBC kiêu 4
17.2 Phát triên úng dung bång PHP
PHP (PHP Hypertext Preprocessor) là môt nguôn mó, là ngôn ngü kich bán dôc lâp vê
nên táng duoc thiêt kê cho viêc phát triên úng dung Web. Ðó là môt trong nhüng ngôn
ngü web duoc triên khai rông rãi nhât trên thê giói hiên nay. Tính phô biên cúa PHP dua
trên các dãc trung cúa ngôn ngü:
- Nhanh, dê hoc tù thâp dên cao
- Manh, tính thuc thi cao và khá chuyên
- Ón dinh và an toàn
- Môt su lua chon dôi vói J2EE và .NET trên nên Web.
- Dê dàng tích hop vào các môi truòng/hê thông không thuân nhât.
- Ðuoc chúng tó thông qua triên khai rông rãi
- Tao nên môt công dông dây súc sông
PHP là bô phân cúa LAMP (viêt tãt cúa các tù Linux, Apache HTTP Server, MySQL,
PHP / Perl / Python). Ðây là môt nhóm công nghê web mã nguôn mó, thuòng sãn có
trên các nhà cung câp (ISP) vói giá hop lý.
17.2.1 Lua chon kêt nôi DB2 cho PHP
IBM hô tro truy xuât dên co só dü liêu DB2 tù các úng dung PHP thông qua hai phân
mó rông.
ibm_db2:
Phân mó rông ibm_db2 dua ra môt giao diên lâp trình thú tuc úng dung cho phép tao,
doc, câp nhât và ghi các thao tác co só dü liêu thêm vào dó mó rông truy xuât dên siêu
co só dü liêu. Nó có thê duoc biên dich dê làm viêc vói PHP 4 hoãc PHP 5. Phân mó
rông sãn có tù kho thu viên PECL duói su cho phép cúa Apache 2.0. Nó duoc IBM phát
triên và hô tro. Có dây dú các dãc tính hô tro cho các thú tuc luu trü và LOBs, nhanh, và
duoc tôi uu cho DB2.
PDO_ODBC:
PDO_ODBC là trình diêu khiên cho phân mó rông cúa Các dôi tuong dü liêu PHP (PHP
Data Objects - PDO), và sãn sàng truy câp dên co só dü liêu DB2 thông qua môt giao
diên co só dü liêu huóng dôi tuong dã duoc thú tuc hóa trong PHP 5.1. Nó có thê
tuong thích nguoc vói các thu viên cúa DB2 môt cách tu dông. Nó cung câp môt giao
diên truy xuât dü liêu tiêu chuân cho PHP. Nhanh chóng, nhe nhàng, và huóng dôi
tuong. Phân mó rông PDO_ODBC sú dung các thu viên DB2 dê truy xuât môt cách tu
nhiên, và nó dã duoc xây dung trong PHP 5.1. Có thê tham kháo thêm tai:
• http://pecl.php.net/package/pdo
• http://pecl.php.net/package/PDO_ODBC
Kêt nôi dên môt co só dü liêu DB2 chua phân loai (uncalalogued)
Ðoan mã 17.1 cho thây làm thê nào dê kêt nôi dên co só dü liêu DB2 sú dung môt trong
hai phân mó rông dã duoc mô tá ó trên.
Nhp môn H qun tr c s d liu DB2
201
Ðoan mã 17.1 – Kêt nôi dên môt co só dü liêu bên ngoài
Ðoan mã 17.2 cung câp môt ví du cho môt úng dung PHP don gián sú dung phân mó
rông ibm_db2
Ðoan mã 17.2 – Môt úng dung PHP don gián sú dung phân mó rông ibm_db2
Câu hình PHP cho jbm_db2
Trong Linux hoãc UNIX ban cân thay dôi têp php.ini nhu sau:
extension=ibm_db2.iso
ibm_db2.instance_name=<instance name>
Ðôi vói Windows, thay dôi têp php.ini nhu sau:
extension=php_ibm_db2.dll
Tiêp theo, ban có thê tái và cài dãt bô úng dung Zend Core for IBM së duoc mô tá
trong phân tiêp theo, và dùng ngai vê các vuóng mãc ó câu hình này.
17.2.2 Úng dung công nghê Zend Core dành cho IBM
Zend [Core] là bô công cu PHP hoàn chinh cho môi truòng phát triên và sán xuât các
úng dung web tôi quan trong cho doanh nghiêp. Zend [Core] thê hiên su tin cây, hiêu
quá và su linh hoat cân thiêt cho viêc vân hành nhüng úng dung PHP. Zend [Core] có
thê duoc tái vê tai dia chi sau: http://ibm.com/software/data/info/zendcore
Zend [Core] cho IBM bào gôm cài dãt DB2 và máy khách IDS, môt máy chú HTTP cúa
Apache (tùy chon), PHP5 và môt sô thu viên phô biên kèm theo bao gôm: ibm_db2,
PDO_INFOMIX. Zend [Core] cho IBM cüng có thê cài dãt máy chú DB2 Express-C, máy
chú IBM Cloudscape
TM
, bô huóng dân sú dung PHP, và môt sô úng dung ví du trên
DB2. Zend [Core] thê hiên su tiên dung và cài dãt môi truòng PHP môt cách dê dàng,
xem hình minh hoa 17.5, 17.6 và 17.7.
Nhp môn H qun tr c s d liu DB2
202
Hình 17.5 – Cúa sô quán lý và diêu khiên cúa Zend [Core]
Hình 17.6 – Cúa sô câu hình PHP cúa Zend [Core]
Nhp môn H qun tr c s d liu DB2
203
Hình 17.7 – Cúa sô câu hình PHP cúa Zend
17.3 Phát triên úng dung Ruby trên nên Rails
Ruby là môt ngôn ngü kich bán huóng dôi tuong, dông và da nên dua trên mã nguôn
mó. Ruby giúp cho phát triên các úng dung môt cách dê dàng, nhanh chóng và còn bao
gôm tâp hop các thu viên rât phong phú. Ruby là ngôn ngü lâp trình don gián, gon nhe
duoc phát triên bói Yukihiro Matsumoto (“Matz”) vào nãm 1995.
Rails là môt bô khung hoàn chinh cho viêc phát triên các úng dung web dua trên co só
dü liêu do Ruby phát triên. Rails cài dãt kiên trúc model-view-controller (MVC). Rails nôi
lên nhu là môt trong nhüng khung phát triên úng dung web manh nhât kê tù nãm 2004
do David Heinemeier Hansson phát triên.
17.3.1 Bô công cu phát triên DB2 trên nên Rails
IBM nhân ra duoc tâm quan trong cúa Ruby trên nên Rails trong công dông phát triên
úng dung web. Chính vì lý do dó mà IBM dã tao ra bô công cu phát triên DB2 trên nên
Rails (Startup Toolkit for DB2 on Rails). Ðây là bô cài dãt duoc tích hop lai dê tao nên
môt môi truòng phát triên DB2 bãng Ruby trên nên Rails. Bô công cu này có thê
download tai dia chi: http://www.alphaworks.ibm.com/tech/db2onrails
Bô công cu này bao gôm:
Bô cài dãt
Huóng dân cài dãt và câu hình Ruby và Rails
Bô cài dãt DB2 – Express C 9 và bô công cu kèm theo
Các trình diêu khiên (driver) cho DB2 Ruby và bô thích hop cho DB2 Rails
Ví du và bài tâp
Nhp môn H qun tr c s d liu DB2
204
A
Phu luc A – Gõ rôi
Trong phân này, chúng ta së nói vê cách làm thê nào dê giái quyêt (gõ rôi) nhüng vân
dê có thê gãp phái khi làm viêc vói DB2. Hình A.1 cung câp môt so dô tông quan vê
nhüng viêc chúng ta nên làm khi gãp su cô.
Hình A.1 - Tông quan vê viêc gõ rôi
A.1 Thêm thông tin vê mã các lôi
Ðê thu thâp duoc nhiêu thông tin hon tù doan mã lôi mà chúng ta nhân duoc hãy nhâp
mã lôi mà ban nhân duoc vói dâu châm hói (?) vào vùng nhâp lênh và nhân vào nút
Execute, nhu trong hình A.2 duói dây
Nhp môn H qun tr c s d liu DB2
205
Hình A.2 - Tìm kiêm thông tin vê doan mã bi lôi
Dâu châm hói (?) së goi dên trình tro giúp (Help) cúa DB2. Duói dây là môt sô ví du vê
kích hoat trình help, ví du nhân duoc mã lôi SQL là “-104”. Tât cá nhüng ví du duói dây
là tuong duong
db2 ? SQL0104N
db2 ? SQL104N
db2 ? SQL – 0104
db2 ? SQL – 104
db2 ? SQL – 104N
A.2 SQLCODE and SQLSTATE
Môt SQLCODE là mã nhân duoc sau khi moi câu lênh SQL dã duoc chay. Ý nghïa cúa
các giá tri nhu sau:
SQLCODE = 0; lênh thành công
SQLCODE > 0; lênh thành công nhung chuong trình có cánh báo
SQLCODE < 0; lênh không thành công và trá vê môt lôi
SQLSTATE gôm 5 ký tu, chuôi này tuân theo chuân ISO/ANSI SQL92. Hai ký tu dâu
tiên cho ta biêt mã lóp SQLSTATE
00: lênh thành công
01: có cánh báo
02: không tìm thây diêu kiên
Tât cá các mã lóp khác duoc xem nhu có lôi
A.3 Nhât ký khai báo quán tri DB2
Nhât ký khai báo quán tri cung câp công cu dùng dê chân doán thông tin vê các lôi tai
các diêm phát sinh lôi. Ó hê diêu hành Linux/Unix thì nhât ký thông báo quán tri
(Administration Notification) là môt têp vãn bán <tên thê hiên>.nfy (ví du “db2inst.nfy”). Ó
hê diêu hành Windows, tât cá các khai báo quán tri dêu duoc ghi vào Windows Event
Log.
Nhp môn H qun tr c s d liu DB2
206
Tham sô câu hình DBM notifylevel cho phép nguòi quán tri chi ra múc dô thông tin
duoc ghi lai
0 - không có khai báo quán tri nào duoc giü lai (không khuyên khích)
1 - lôi nãng hoãc không thê phuc hôi
2 - hành dông cân duoc thuc hiên ngay lâp túc
3 - thông tin quan trong, không cân hành dông ngay lâp túc (mãc dinh)
4 - thông diêp
A.4 db2diag.log
Db2diag.log cung câp thông tin chi tiêt hon vê nhât ký khai báo quán tri DB2. Nó thuòng
chi duoc sú dung bói nhân viên hô tro kÿ thuât DB2 hay nguòi quán tri có kinh nghiêm.
Thông tin ó trong db2diag.log bao gôm:
- Vi trí cúa mã DB2 phát sinh lôi
- Môt chuong trình nhân dang, cho phép ban có thê so sánh nhüng dòng cúa
úng dung trên têp db2diag.log trên náy chú và máy khách.
- Môt thông diêp chân doán (bãt dâu bãng “DIA”) giái thích nguyên nhân cúa lôi
- Các dü liêu hô tro sãn có, nhu là câu trúc dü liêu SQLCA và con tró dên vi trí
cúa kêt xuât hoãc têp bây
Ó Windows, db2diag.log duoc chúa trong môt thu muc mãc dinh:
C:\Program Files\IBM\sqllig\<instance name>\db2diag.log
Ó Linux/Unix db2diag.log duoc chúa trong thu muc mãc dinh:
/home/<instance_ owner>/sqllid/db2trum/db2diag.log
Ý nghïa cúa chân doán duoc quyêt dinh bói tham sô câu hình dbm cfg DIAGLEVEL.
Câp dô tù 0 dên 4, 0 là ít ý nghïa nhât và 4 là cao nhât, mãc dinh là 3
A.5 Theo vêt CLI
Vói CLI và các úng dung Java, ban có thê bât tiên ích theo vêt CLI dê khãc phuc nhüng
su cô cho nó. Ðiêu này có thê duoc làm bãng cách súa dôi têp db2cli.ini ó máy chú, noi
mà úng dung cúa ban dang chay. Nhüng truòng dãc trung cúa db2cli.ini duoc chi ra
bên duói:
Theo vêt ó múc thâp cüng sãn có (db2trc), nhung nó thuòng duoc nhân viên hô tro kÿ
thuât sú dung.
A.6 Khåc phuc và súa lôi trong DB2
Ðôi khi môt lôi mà ban thình lình gãp phái lai là nguyên nhân cúa môt su cô (lôi) cúa
DB2. IBM së dêu dãn phát hành nhüng bán súa lôi (Fixpacks) dê súa chüa nhüng lôi dó
(APARs). Trong têp vãn bán cúa bán súa lôi có chúa danh sách nhüng lôi mà nó súa
chüa duoc. Khi phát triên môt úng dung mói chúng ta nên câp nhât nhüng bán súa lôi
mói nhât dê tránh nhüng vân dê có thê xáy ra trong khi làm viêc. Ðê xem phiên bán hiên
Nhp môn H qun tr c s d liu DB2
207
tai cúa bán súa lôi, chon About tù trình don Help, tù cúa sô lênh gõ “db2level”. Luu ý
rãng, bán súa lôi và su hô tro tù IBM chi có hiêu luc trong DB2 Express–C khi ban mua
bán quyên 12 tháng
Nguôn tài nguyên
Các trang web
1.1. Trang web chính thúc cúa DB2 Express-C:
www.ibm.com/db2/express
Website này cho phép ban download các file cài dãt cho máy chú DB2, máy khách
DB2, các driver dành cho DB2, ban cüng có thê tìm thây các huóng dân sú dung,
hoãc tìm doc blog cúa nhóm phát triên DB2, dãng ký dê nhân email tai dây.
1.2. Diên dàn DB2 Express:
http://www.ibm.com/developerworks/forums/dw_forum.jsp?forum=805&cat=19
Ban có thê sú dung Diên dàn này dê dãng tái các vân dê vê kÿ thuât môi khi ban
không thê tu mình tìm thây câu trá lòi cho các vân dê dó.
1.3. Trung tâm dü liêu DB2
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
Trung tâm dü liêu cung câp nguôn tài liêu huóng dân truc tuyên. Ðây là nguôn tài
nguyên duoc câp nhât môt cách thuòng xuyên nhât.
1.4. developerWorks
http://www-128.ibm.com/developerworks/db2
Website này là môt nguôn tài nguyên tuyêt vòi cho nhüng nguòi phát triên và
nhüng nguòi quán tri hê thông co só dü liêu tìm thây duoc nhiêu bài viêt, bài
huóng dân, v.v… hoàn toàn miên phí.
1.5. alphaWorks
http://www.alphaworks.ibm.com/
Website này cho phép ban truy xuât truc tiêp vào các công nghê nôi trôi cúa IBM.
Ðây là noi ban có thê tìm thây nhüng công nghê mói nhât tù Phòng Nghiên cúu cúa
IBM.
1.6. planetDB2
http://www.planetdb2.com/
Ðây là noi tâp hop nhiêu blog cúa nhüng nguòi phát triên DB2.
1.7. Hô tro kÿ thuât DB2
Nêu ban dã dãng ký hô tro kÿ thuât 12 tháng tù DB2 Express-C, ban có thê
download các bán vá lôi tù Website này:
http://www-306.ibm.com/software/data/db2/support/db2_9/
Nhp môn H qun tr c s d liu DB2
208
Sách
1. Free Redbook: DB2 Express-C: The Developer Handbook for XML, PHP, C/C++,
Java, and .NET
Whei-Jen Chen, John Chun, Naomi Ngan, Rakesh Ranjan, Manoj K. Sardana,
Tháng 8 nãm 2006 – SG24-7301-00
http://www.redbooks.ibm.com/abstracts/sg247301.html?Open
2. Understanding DB2 – Learning Visually with Examples V8.2
Raul F. Chong, Clara Liu, Sylvia Qi, Dwaine Snow.
Tháng 1 nãm 2005 – ISBN: 0-13-185916-1
3. DB2 9: pureXML overview and fast start
Cynthia M. Saracco, Don Chamberlin, Rav Ahuja
Tháng 1 nãm 2006 – SG24-7298
4. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows™,
i5/OS™, and z/OS®, 2
nd
Edition
Zamil Janmohamed, Clara Liu, Drew Bradstock, Raul Chong, Michael Gao, Fraser
McArthur, Paul Yip
ISBN: 0-13-100772-6
5. Free Redbook: DB2 pureXML Guide
Whei-Jen Chen, Art Sammartino, Dobromir Goutev, Felicity Hendricks, Ippei Komi,
Ming-Pang Wei, Rav Ahuja, Matthias Nicola.
Tháng 8 nãm 2007.
http://www.redbooks.ibm.com/abstracts/sg247315.html?Open
6. Information on Demand – Introduction to DB2 9 New Features
Paul Zikopoulos, George Baklarz, Chris Eaton, Leon Katsnelson
ISBN-10: 0071487832
ISBN-13: 987-0071487832
7. Redbook: Developing PHP Applications for IBM Data Servers.
Whei-Jen Chen, Holger Kirstein, Daniel Krook, Kiran H Nair, Piotr Pietrzak
Tháng 5 nãm 2006 – SG24-7218-00
http://www.redbooks.ibm.com/abstracts/sg247218.html?Open
Email liên hê
Hôp thu DB2 Express-C: db2x@ca.ibm.com
Hôp thu DB2 dành cho các truòng Ðai hoc: db2univ@ca.ibm.com
Nhp môn H qun tr c s d liu DB2
209
Båt dâu vói DB2 không thê nào dê dàng hon. Ðoc cuôn sách này dê:
- Tìm thây tât cá nhüng diêu vê DB2 Express-C.
- Hiêu vê kiên trúc cúa DB2, các công cu và báo mât DB2.
- Hoc cách quán tri Co só dü liêu DB2.
- Viêt mã SQL, XQuery.
- Phát triên chuong trình úng dung sú dung co só dü liêu DB2.
- Luyên tâp bãng nhüng bài tâp thuc hành.
- Chuân bi cho ky thi DB2 trong truòng.
Su phát triên nhanh chóng cúa XML, Web 2.0, và SOA dã dân dên nhüng nhu câu vê
môt loai hê quán tri dü liêu lai mang tính cách tân. DB2 Express-C cúa IBM là môt hê
quán tri dü liêu miên phí, không giói han, và là co só dü liêu LAI có khá nãng quán tri cá
XML và dü liêu quan hê thuân túy môt cách dê dàng. Miên phí nghïa là DB2 Express-C
có thê duoc tu do tái vê, tu do dê ban xây dung úng dung, tu do triên khai sán phâm,
và tu do phân phôi lai các giái pháp cúa ban. Và, DB2 không dãt môt giói han nào cho
kích thuóc dü liêu, sô luong dü liêu, hoãc sô luong nguòi sú dung.
DB2 Express-C chay trên hê thông Windows và Linux và hô tro nhiêu ngôn ngü lâp trình
khác nhau, bao gôm cá C/C++, Java, .NET, PHP, Perl, và Ruby. Nhüng hô tro truc
tuyên cüng có thê duoc dãng ký vói giá thâp. Nêu ban muôn có nhiêu chúc nãng cao
câp hon nüa dôi vói môt hê quán tri co só dü liêu, ban có thê dê dàng triên khai nhüng
úng dung dã duoc xây dung bãng DB2 Express-C lên nhüng ân bán DB2 khác nhu
DB2 Enterprise.
Án bán DB2 miên phí này rât lý tuóng cho nhüng nguòi phát triên, nhüng nguòi tu vân,
nhüng nguòi bán phân mêm dôc lâp, các quán tri viên co só dü liêu, sinh viên, hoãc bât
ky ai có ý dinh phát triên, thú nghiêm, triên khai, hoãc phân phôi các úng dung vê co só
dü liêu. Hãy tham gia vào su phát triên cúa công dông nhüng nguòi sú dung DB2
Express-C ngay hôm nay. Ban së khám phá ra cách hoàn toàn mói dê tao ra chuong
trình úng dung, cüng nhu cách phát triên nhüng giái pháp dôt phá.
Nh p môn H qu n tr c s d li u DB2
1
Xu t b n l n
u (tháng 11 n m 2007) i u hành Linux,
Tài li u này s d ng cho IBM DB2 Express-C phiên b n 9.1 v i h UNIX và Windows B n quy n thu c công ty IBM
Nh p môn H qu n tr c s d li u DB2
2
M cL c
Thông cáo và Nhãn hi u hàng hóa...................................................................................7 Ai nên c cu n sách này?...............................................................................................8 C u trúc c a quy n sách này nh th nào? ......................................................................8 M t quy n sách do c ng ng làm và giành cho c ng ng ...........................................8 Tác gi và nh ng ng i óng góp ...................................................................................8 L i c m n .......................................................................................................................9 L i c m n b n ti ng Vi t .............................................................................................10 L i nói u .....................................................................................................................12 Ph n I – T ng quan và Cài t .......................................................................................13 Ch ng 1 - DB2 Express-C là gì?...................................................................................13 1.1 T do phát tri n, tri n khai và phân ph i…không có gi i h n!...............................13 1.2 H tr k thu t .........................................................................................................14 1.3 Các máy ch DB2 ....................................................................................................14 1.4 Máy khách DB2 .......................................................................................................15 1.5 T do phát tri n ph n m m ng d ng......................................................................16 1.6 Phiên b n và n b n DB2 (version and edition) ......................................................16 1.7 Chuy n sang n b n DB2 khác ................................................................................17 1.8 B o trì DB2 Express-C ............................................................................................17 1.9 M t s ph n m m mi n phí liên quan......................................................................17 1.9.1 DB2 Developer Workbench (công c phát tri n) .............................................17 1.9.2 DB2 9 Embedded Application Server (máy ch nhúng) .................................18 1.9.3 DB2 9 Net Search Extender (m r ng tìm ki m trên m ng) ............................18 1.9.4 B công c b t u Rails cho DB2 ...................................................................18 1.9.5 B công c b t u Web 2.0 dành cho DB2.....................................................18 Ch ng 2 – Các tính n ng liên quan và các s n ph m.................................................19 2.1 Các tính n ng bao hàm trong ng ký s d ng DB2 Express-C .............................20 2.1.1 Các ch ng trình s a l i ...................................................................................20 2.1.2 Tính s n sàng cao và khôi ph c sau s c (HADR) .........................................20 2.1.3 Kh n ng tái t o d li u (di trú d li u)............................................................20 2.2 Các tính n ng không có trong b n DB2 Express-C .................................................21 2.2.1 Phân vùng c s d li u....................................................................................21 2.2.2 B t p trung k t n i...........................................................................................21 2.2.3 B m r ng không gian !a lý ..........................................................................22 2.2.4 B ki m soát truy v n .......................................................................................22 2.3 Các s n ph"m có tr phí liên quan n DB2............................................................22 2.3.1 DB2 Connect.....................................................................................................22 2.3.2 WebSphere Federation Server ..........................................................................22 2.3.3 WebSphere Replication Server .........................................................................23 Ch ng 3 - Cài t DB2 ..................................................................................................24 3.1 Các i u ki n tr c khi cài #t ................................................................................24 3.2 Quy n cài #t h i u hành......................................................................................24 3.3 Cài #t theo h ng d$n t%ng b c...........................................................................25 3.4 Cài #t hàng lo t (Silent Install) ..............................................................................28 Bài t p nhanh #1: Cài #t DB2 Express-C và t o ra c s d li u m$u ........................30 Ch ng 4 - Các công c DB2 ..........................................................................................32 4.1 Trung tâm i u khi n (Control Center) ...................................................................33 4.2 Nh p l nh tr c ti p...................................................................................................36 4.3. Trình tr giúp SQL.................................................................................................38 4.4 Trình bày nút Show SQL .........................................................................................40
Nh p môn H qu n tr c s d li u DB2
3
Bài t p nhanh #2 - T o m t CSDL m i v i Trung tâm i u khi n ..............................40 4.5 T o k!ch b n.............................................................................................................42 4.5.1 Các k!ch b n SQL .............................................................................................42 4.5.2 Các k!ch b n v i h i u hành ..........................................................................44 Bài t p nhanh #3 – T o m t k!ch b n cài #t cho c s d li u EXPRESS ..................45 4.6 Trung tâm tác v (Task Center) ...............................................................................48 4.6.1 C s d li u Tools Catalog .............................................................................48 4.7 Nh t ký.....................................................................................................................49 4.8 Giám sát tình tr ng (health) .....................................................................................51 4.8.1 Trung tâm tình tr ng .........................................................................................51 Ch ng 5 - Môi tr ng c a DB2...................................................................................54 5.1 C u hình DB2 ..........................................................................................................62 5.1.1 Các bi n môi tr ng .........................................................................................63 5.1.2 T p c u hình qu n tr! c s d li u (dbm cfg)..................................................63 5.1.3 T p c u hình c s d li u (db cfg) ..................................................................65 5.1.4 & ng ký lý l!ch DB2 (profile)...........................................................................66 5.2 Máy ch qu n tr! DB2..............................................................................................67 Ph n II – H c DB2: Qu n tr C s d li u ..................................................................68 Ch ng 6 - Ki n trúc c a DB2 .......................................................................................68 6.1 Mô hình x lý c a DB2 ...........................................................................................68 6.2 Mô hình b nh c a DB2.........................................................................................69 6.3 Mô hình l u tr c a DB2.........................................................................................70 6.3.1 Trang và ph m vi ..............................................................................................70 6.3.2 Vùng nh m...................................................................................................70 6.3.3 Các không gian b ng.........................................................................................73 Ch ng 7 – K t n i máy khách DB2..............................................................................77 7.1 Tr giúp c u hình.....................................................................................................77 7.1.1 Nh ng cài #t b t bu c trên máy ch ...............................................................77 7.1.2 Nh ng cài #t c n thi t trên máy khách............................................................79 7.1.3 T o lý l!ch cho máy khách và máy ch .............................................................82 Bài t p nhanh #4 – S d ng Tr giúp thi t l p c u hình ...............................................86 Ch ng 8 - Làm vi c v i các i t ng d li u ............................................................88 8.1 S ........................................................................................................................88 8.2 B ng .........................................................................................................................88 8.2.1 Ki u d li u.......................................................................................................89 8.2.2 C t khoá chính (Identity columns) ...................................................................91 8.2.3 Các t ng tu n t (Sequence object) ...........................................................92 8.2.4. Các b ng danh sách h th ng...........................................................................92 8.2.5. Khai báo các b ng t m th i..............................................................................93 Bài t p nhanh #5 - Kh i t o m t b ng m i....................................................................94 8.3 Các khung nhìn (Views) ..........................................................................................96 8.4 Các ch' m c (Index).................................................................................................96 8.4.1 Tr giúp thi t k (Design Advisor)...................................................................97 8.5 Tính toàn v(n tham chi u.........................................................................................98 Ch ng 9 – Công c di chuy n d li u ........................................................................100 9.1 Công c EXPORT (xu t) .......................................................................................101 9.2 Công c IMPORT (nh p).......................................................................................102 9.3. LOAD (n p) ..........................................................................................................102 9.4 Công c db2move ..................................................................................................104 9.5 Công c db2look ....................................................................................................104
.....................................Nhi m v b o trì .................4 Các công vi c duy trì t% Trung tâm i u khi n..........Nh p môn H qu n tr c s d li u DB2 4 Bài t p nhanh #6 ...145 13.....................2 Nh t ký l u tr .122 11.....................129 11...........................................................................................................................1 Nh t ký c s d li u ...................4 Nhóm PUBLIC .........................................................4 Nh t ký c s d li u t% Trung tâm i u khi n.......................7.............................139 13...............7 Khôi ph c c s d li u .......................................142 13............107 Ch ng 10 – B o m t c s d li u........................................................................................................................140 13...........................3 & c +n !nh................111 10...................5 So sánh các m c cô l p d li u.............133 12.3..............................................130 Ch ng 12 .................................................................................................................1.................................124 11.143 13.2 Các l a ch n b o trì .............................................144 13.....3 Các v n khi không ki m tra truy c p ng th i ..............................................................................139 13..................2 & c v i không cam k t .....................................................................................................................................................................1 Các ki u khôi ph c d li u ..........................115 10................................................................7.....4.......................8 Các ho t ng khác v i BACKUP và RESTORE...........2 Các ki u nh t ký................................................145 13...................129 11............3 & c không l#p l i .........................................................................3.135 Bài t p nhanh #9 – C u hình vi c b o trì t ng ...141 13............131 12...................3.....3 Quy n qu n tr! c s d li u DBADM.6 Ki m tra vi c c p quy n và quy n..........3........................................................................................................................................................................................................121 11.4...................3.123 11..131 12.....................................................2 Truy c p ng th i....3...................3 Các ki u ghi nh t ký................................................................................................137 Ch ng 13 – Truy c p ng th i và khóa ...............................................1 M t d li u c p nh t ................................141 13........................................................1 &!nh danh..............................................................132 12.1...................................................................................................................................................................................................5 Các tham s c a nh t ký ....................................................................................................6 &#t m c cô l p ...................................................................6 Ki m soát khóa .................2 L nh RUNSTATS.....1 L nh REORG....4..........7 Ch khóa.................1......148 13.......................................................2 Quy n h n ...........................................132 12....................................................1 & c v i không cam k t .................................148 .................110 10..............4.................................................................................................................1...........................................................................117 Bài t p nhanh # 7: Cho phép và h y b) (phân quy n) quy n ng i s d ng......................................................................................................145 13....................5 L nh GRANT và REVOKE..........................................................................127 11..................................................................4 & c th%a..........4................144 13........125 Bài t p nhanh #8 .................3 BIND/REBIND.4...........................................................................122 11.......................144 13...........................................................5 Khóa leo thang ...........................................129 11..................7 Xem xét quy n trên nhóm...................................................6 Sao l u c s d li u......................................112 10...................................... RUNSTATS..............147 13...2 Khôi ph c c s d li u ............1 REORG.........131 12...................................121 11............4 Các m c cô l p..............................................115 10.........................122 11.......................................118 Ch ng 11 – Sao l u và khôi ph c...................................L p l!ch sao l u ..............................................................................................................................................1 Ghi tu n t quay vòng......................142 13..............4 & c l#p l i.........................Trích xu t DDL t% c s d li u EXPRESS .....123 11...........................................114 10............................................................. REBIND .146 13...........2 *n !nh con tr) ..................1 Các giao d!ch....................................................115 10...........................
................178 16...........1 Hàm vô h ng ........................3.......................................................198 17..................2................3......160 14..........2.............1 Hàm n i tuy n SQL ..........197 Ch ng 17 – Phát tri n v i Java................................................................................................................................194 16............................177 16...8 Các l nh c p nh t và xóa .........................150 PH N 3: H C DB2 – PHÁT TRI N NG D NG ..................................................................6 Khai báo bi n ...............2...................184 16.7 N i (Join) v i XQuery ...........................1 DB2 Developer Workbench.................................................170 15...................................................................................................................158 14..................................4 Chèn các tài li u XML......................................154 14.............................................173 Bài t p nhanh #11 ..............................................6 N i (join) v i SQL/XML.... hàm ng i dùng nh ngh a...........................................................................................................................181 16.2 Hàm b ng .....................1......................................1 C u trúc c a th t c ..........................................................................................................7 Câu l nh gán .2..........188 16...............ng PHP...................2........................................................................ng Trung tâm i u khi n........................4 &i u khi n lu ng..1 S d ng XML v i các c s d li u.....1 ......................................176 16...........2 Trình i u khi n JDBC ki u 4 ...........................................172 15.........................................................................................................7 SQL ng .......................................1.......................................2......................158 14...........................................................................................................................166 15..178 16...163 14...................3 Các con tr) (cursor) ...ng Java ............................................................................................160 14.3 Các lo i tham s ...........165 Ch ng 15 – Hàm n i tuy n....2 Phát tri n ng d ng b...2 Khái ni m c b n v XPath ......................................................161 14.....................................................................................167 15..............................................179 16...............................159 14...................................................198 17.............176 16.................8 V n khóa ph thu c và phát hi n.....................3...................161 14.............................9 Truy c p ng th i và th c ti n khóa t t nh t ................................................177 16.....................................5 Truy v n d li u XML..............................................6 L i và x lý i u ki n ....185 16......................................153 14........................160 14............................3....... PHP và Ruby..........................................................................................3...............................200 ......................2 B$y s ki n (Triggers) .....2 M t s khái ni m v th t c SQL PL .......1 Các lo i b$y s ki n........................................Kh i t o m t b$y b.................................2.........................2................3......................................................................193 16..5 G i th t c.......3........................... các hàm x ký các s! ki n b"y (Inline SQL PL............................2 T o m t th t c l u trong DWB ...................................................4 Chú thích trong th t c SQL PL .................162 14..............194 16.....175 Ch ng 16 – SQL/XML và XQuery .........................2.............................................3...................2 C s d li u XML ......152 Ch ng 14 – Các th t c SQL PL....1 Trình i u khi n JDBC ki u 2 (type 2).......166 15.......2 C s d li u thu n XML .............................................................158 14.....154 14.....................3 XML trong DB2.....195 Bài t p nhanh #12 – SQL/XML và XQuery ..........Kh i t o UDF s d ng DB2 Developer Wordbench ...3 &!nh ngh-a XQuery..........................................167 Bài t p nhanh #10 .................................................2 Nh ng thu c tính tùy ch n c a th t c....................................................................................................................199 17.................Nh p môn H qu n tr c s d li u DB2 5 13.............................................................172 15........3.........................................................................................................1 c s d li u h tr XML ........................1...........................................149 13....................................................u i m c a công ngh pureXML trong DB2 9 ..............2...................3...............................................9 Ch' m c XML ........................................ UDF.....3.........198 17.....................3 Hàm ng i dùng !nh ngh-a (UDF)..................5 Câu l nh ghép ............159 14.......1 Phát tri n ng d ng b................... Triggers)............................
.............................203 17....3 Nh t ký khai báo qu n tr! DB2 .......................1 L a ch n k t n i DB2 cho PHP.............................................3 Phát tri n ng d ng Ruby trên n n Rails ...............3..............................................6 Kh c ph c và s a l i trong DB2 ....Nh p môn H qu n tr c s d li u DB2 6 17.................................206 A..........................................2............................................2............................................................5 Theo v t CLI ......1 B công c phát tri n DB2 trên n n Rails .............................................................log.......2 SQLCODE and SQLSTATE ....................................................................2 /ng d ng công ngh Zend Core dành cho IBM.................200 17.....................206 A.........................207 Sách..........................1 Thêm thông tin v mã các l i....................................4 db2diag.............................................................................................................................................................................................205 A......................205 A........................................201 17...............208 ......206 Các trang web ......................................................................204 A..........................203 A....................
c nêu ra ây và không ch u IBM không m b o hay i di n cho nh ng n i dung trách nhi m v tính th ng m i ho c tính h p lý cho b t kì m c ích nào. Các câu h"i v kh n ng c a các s n ph m không ph i c a IBM c n c g i cho các nhà cung c p s n ph m ó. WebSphere. ho c c hai. ho c c hai. các n c khác. DB2 Universal Database. Các thông tin trong tài li u này liên quan n s n ph m không ph i c a IBM ã có c qua các nhà cung c p s n ph m ó. các n c khác. Tên c a công ty khác. Thông tin trong tài li u này có th thay i mà không c n báo tr c. tính t ng thích ho c b t k th c m c nào liên quan n s n ph m không ph i c a IBM. IBM không ki m tra các s n ph m ó và không kh!ng nh v tính chính xác khi th c hi n. ho c d ch v có th là nhãn hi u Trích d%n các s n ph m và d ch v c a IBM trong tài li u này không có ngh'a là IBM chúng n t t c các qu c gia mà IBM có ho t ng. Linux là nhãn hi u ng ký c a Linus Torvalds t i M$. DB2 Connect. ho c c hai.Nh p môn H qu n tr c s d li u DB2 7 V cu n sách này Thông cáo và Nhãn hi u hàng hóa Copyright IBM Corporation 2007 All right Reserved. các n c khác. ng ký c a công ty Sun c Microsoft và Windows là nh%n hi u hàng hóa c a t#p oàn Microsoft t i M$. IBM giành quy n c thay i và không b t bu c ph i thông báo cho b t c ai v s thay i này. s n ph m. IBM không cam k t nh ng thông tin trong tài li u này là m i nh t. i5/OS. ON L6G 1C7 Canada Không c sao chép ho c s d ng d i b t k d ng th c nào ho c d ch sang ngôn ng khác toàn b ho c b t c ph n nào c a tài li u này mà không c s cho phép tr c c a ng i gi b n quy n trên. Inc. IBM Canada 8200 Warden Avenue Markham. t i M$. bi u t ng IBM. Java và t t c các nhãn hi u Java là nhãn hi u hàng hóa Microsystem. DB2. các n khác. IBM cho r ng mình không có trách nhi m v i b t k l i nào trong tài li u này. a . IBM. ng ký c a h&. ho c c hai. và z/OS là nhãn hi u hàng hóa ã ng ký c a t#p oàn IBM t i M$. pureXML.
có h u h t các ch ng. tìm th y trang web c a IBM DB2 Express-C. SQL/XML.2007 .zip i kèm theo sách này. các b%y s ki n. bao g+m th t c. C u trúc c a quy n sách này nh th nào? Ph n I. ki n trúc ph n m m. hàm do ng i dùng nh ngh'a. T ng quan và Cài t. giám c s n ph m. và khám phá các công c s)n có c a DB2. nh qu n tr h c s d li u (DBAs). t t c các t p c n thi t th c hi n bài t#p này có th tìm th y t p nén expressc_book_quicklabs. M c ích c a chúng tôi là n i dung cu n sách s. sao l u và khôi ph c. Vi t và ch-nh lý m t cu n sách là vi c làm khó kh n. Ph n III.com v i tiêu “DB2 Express-C book changes. ki n trúc. nhà t v n. Bài t#p ây là bài t#p nhanh. an toàn. truy c#p +ng th i và khóa c a DB2. c#p nh#t và trình bày cu n sách Ngày Tháng 5 – 2007 Tháng 5. a chwww. phát tri n ng d ng b ng Java. Chong Ian Hakes Rav Ahuja / nv IBM IBM IBM Ch c danh G/ ch ng trình “DB2 v i / i h&c” C ng +ng DB2 Express-C G/ s n ph m DB2 Tài li u óng góp B n th o t t c các ch ng Xem l i và s a ch a Xem l i. và các công vi c b o trì thông th ng. giúp ( cài t và t o m i c s d li u. c thi t k b n làm quen v i môi tr ng.html. Ph n II. M t quy n sách do c ng ng làm và giành cho c ng ng / i ng.ng c s d ng làm bài gi ng c a ch ng trình “DB2 v i / i h&c” (DB2 on Campus). 6 – 2007 Tháng 7-10 . a chwww. PHP và Ruby. làm n g i k ho ch th c hi n v a ch.ibm. làm DB2 Express-C ã có sáng ki n làm quy n sách này cung c p mi0n phí cho c ng +ng.com/db2/express/students.db2x@ca. c duy trì và m r ng b ng vi c tham gia c a c ng +ng DB2 Express-C. gi i thích n b n DB2 Express-C là gì. H&c DB2: Phát tri n ng d ng. ho c s. giáo viên và sinh viên. H&c DB2: Qu n tr c s d li u. gi i thi u h& s n ph m DB2 và các ch c n ng. B n có th xem thêm thông tin v ch ng trình này trang DB2 Express-C.Nh p môn H qu n tr c s d li u DB2 8 Ai nên c cu n sách này? Quy n sách này giành cho b t k ai ang làm vi c ho c mu n làm vi c v i c s d li u.” Tác gi và nh ng ng i óng góp Nh ng ng i sau ây ã cung c p n i dung và có các óng góp có ý ngh'a cho cu n sách này Tên Raul F. N u b n mu n óng góp ý ki n. óng góp nh ng n i dung m i nâng cao n i dung hi n t i ho c d ch cu n sách này sang ngôn ng khác. ch ng trình y c a nó bài h&c v i 16 gi trên l p. các i t ng d li u. XQuery. chuy n d li u (nh#p và xu t d li u). Ph l c có các thông tin c n thi t v s a l i. ng i phát tri n ng d ng. k t n i t* xa.ibm. Cu n sách này c.com/db2/express Tài li u c a cu n sách c.ibm.ng giúp b n chu n b cho bài ki m tra c a ch ng trình “DB2 v i / i h&c”.
Nh p môn H qu n tr c s d li u DB2 9 L ic m n Chúng tôi chân thành c m n các cá nhân sau ây v i s tr giúp . . và Matthía Nicola v i bài trình bày v pureXML.Susan Visser giúp ( xu t b n cu n sách này . Clara Liu và Paul Yip phòng thí nghi m IBM Toronto.Ted Wasserman.Katherine Boyachok v i thi t k bìa .Kevin Czap và Grant Hutchingson v i các tài li u k$ thu#t v phát tri n DB2 . ng i ã phát tri n ng d ng trong khuôn kh cu n sách này Don Chamberlin và Cindy Saracco v i các bài báo c a h& v XQuery ng trên developerWorks.
Tp HCM /H Bách Khoa Hà N i /H Khoa h&c T nhiên.Nh p môn H qu n tr c s d li u DB2 10 L i c m n b n ti ng Vi t / có c b n d ch ti ng Vi t này. /à N)ng /H Khoa h&c T nhiên. dù có th còn nhi u khi m khuy t. /à N)ng /H Khoa h&c T nhiên. v i ch t l ng ch c ch n t t h n. HCM /H Bách khoa Hà N i / i h&c Duy Tân. Hy v&ng r ng các b n sinh viên s. Tp HCM /H Công ngh Thông tin. Tp HCM /H C n Th / i h&c Duy Tân. Tp HCM /H Công ngh Thông tin. Tp HCM /H Khoa h&c T nhiên. Tp HCM /H Bách Khoa Hà N i Tru ng Ð i H&c Công Ngh . HCM /H Khoa h&c T nhiên. Tp. nh ng r t mong các b n ón nh#n nó nhi t tình và óng góp ý ki n cho b n d ch hoàn thi n h n. Tp HCM /H Công ngh Thông tin. r t nhi u các b n sinh viên ã tham gia d ch và hi u ính. Tp. Tp HCM /H Khoa h&c T nhiên. Chúng ta t hào r ng ây úng là m t quy n sách do c ng +ng và vì c ng +ng. Tp HCM /H Bách khoa Hà N i /H S ph m K$ thu#t. /à N)ng /H Khoa h&c Hu /H Bách Khoa Hà N i /H Công ngh Thông tin. ti p t c chuy n n c ng +ng nh ng n ph m m i. Tp HCM / i h&c Duy Tân. Vì trình và th i gian h n ch . Danh sách sinh viên tham gia d ch và hi u ính: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 H và tên Bùi Thanh S n Châu Uyên Minh / ng Chi n Công / Bá Lâm / Tu n Anh / Tu n Anh Hà Thúy H ng Hà Tu n Trung Hà Tu n Trung Hoàng Minh Hi n Hu nh H u Hi p Hu nh Minh Tân Lê Anh / c Lê Bá Tr&ng Lê Hu nh Công Th o Lê Nguy0n Thúy An Lê Thành Huy Ngô Phi Thành Nguy0n Anh Khoa Nguy0n Chi n Th ng Nguy0n H i Phong Nguy0n Hoàng Minh Qu c Nguy0n Hùng Thông Nguy0n H u Th& Nguy0n L ng S n Nguy0n Minh Châu Nguy0n Minh Tu n Nguy0n Minh Tu n Nguy0n Ng&c Duy Nguy0n Ng&c Trí Nguy0n Thành Trung Nguy0n Th Phúc Nguy0n Th Di u H ng Nguy0n Th H+ng Hà Nguy0n Th Kim Ph ng V. Tp HCM /HBK /à N)mg /H Bách Khoa Hà N i /H S ph m K$ thu#t. Tp HCM /H Khoa h&c Hu /H Khoa h&c Hu . Th Lan Chi Nguy0n Trang Nguy0n Trung Hi u Nguy0n V n Nam Nguy0n V n Nam Tr ng /H Bách Khoa Hà N i H&c vi n Công ngh B u chính Vi0n thông TPHCM Coltech Hà N i /H Bách khoa Hà N i /H Khoa h&c T nhiên. VNU Hà N i H&c Vi n công ngh BCVT /H Khoa H&c Tu Nhien.
HCM / i h&c Duy Tân./H C n Th /H Khoa h&c Hu / i h&c Nông Lâm tp. /à N)ng /H Bách Khoa /à N)ng /H Bách khoa Hà N i .Nh p môn H qu n tr c s d li u DB2 11 41 42 43 44 45 46 47 48 49 50 51 52 53 Nguy0n Xuân Tr ng Ph m Ng&c Huy Ph m Th Minh Hi n Ph m V$ Tu n Quách Tiêu Thu#n Thái Quang Hòa Thái Tuy n Tr n Anh Huy Tr n Th Thúy Trinh Tr n V n T n Tr n V n T n Tr n V ng Trung Tu n Vi t /H Khoa h&c T nhiên. Tp HCM / i h&c Công ngh -/ i h&c qu c gia Hà n i /H Bách khoa /à N)ng Trung tâm Công ngh Ph n m m .
UNIX và Windows. m t s khác n a l i c i thi n hi u n ng. Cu n sách này dùng giúp nh ng ng i m i b t u s d ng DB2 Express-C.c n nh n chu t vào nút Help. m t s các t ch c l n nh t hành tinh ngày nay ã tin t ng vào các s n ph m c a IBM nh DB2 v#n hành các gi i pháp có nhu c u cao nh t. Tôi mong các b n c#p nh#t. b n ch. và giúp d ch cu n sách này sang các ngôn ng khác. /i u này làm cho DB2 tr nên r t lý t ng cho các xu h ng m i c a ng d ng SOA và Web 2. hy v&ng các b n s. T i IBM. M t s trong chúng nh m vào kh n ng tiên ti n m i. DB2 Express-C c xây d ng trên n n công ngh “Viper”. gi m chi phí h t ng. nh v#y nh ng ng i khác s.và không b t bu c ph i m t chi phí! M c dù còn có các s n ph m mi0n phí hay các ph n m m ngu+n m khác. giúp b n hi u các khái ni m c a DB2 và cho phép b n phát tri n k$ n ng qu n tr c. Có r t nhi u sáng t o công ngh hi n di n trong DB2 Express-C. nó là c s d li u lai u tiên qu n lý c d li u quan h và d li u XML d i d ng b m sinh. chúng tôi ti p t c a ra nh ng sáng t o công ngh v qu n tr thông tin. có l i t* s hi u bi t c a b n. n u b n c n tr giúp h tr t* IBM.ng nh phát tri n ng d ng DB2. IBM chúng tôi v%n r t tin t ng vào s h tr và c v. công ngh n i ti ng DB2 ã s)n sàng cho các doanh nghi p v*a và nh" . b cu n hút khi &c quy n sách này – chúng tôi ch. Là ng i i tiên phong trong k$ thu#t qu n tr d li u trong nh ng n m 60 và 70.0 trong ó các lu+ng d li u XML là r t nhi u. m t s khác l i h ng t i gi m thi u gánh n ng qu n tr . nó s. qu n tr nh ng d li u t i quan tr&ng c a h&.xin mô t m t v n hóc búa nh t. Tuy nhiên DB2 không ch. M c dù DB2 Express-C không ph i là s n ph m mã ngu+n m . Không gi ng v i h qu n tr c s d li u c a các hãng th ng m i khác. K$ n ng và s hi u bi t nh#n c t* cu n sách này có liên quan r t nhi u n các b n DB2 tiên ti n h n trên Linus. không trình bày chúng ây. Arvind Krishna Phó ch t ch. Tôi vui m*ng c th y cu n sách này do các thành viên c a c ng +ng DB2 Express-C phát tri n và phát hành mi0n phí cho c ng +ng. DB2 Express-C trao cho b n s c m nh duy nh t v t trên t t c các l a ch&n cùng lo i. V i vi c a ra b n DB2 Express-C. bi u hi n b ng hàng nghìn ng ký phát minh v qu n tr d li u c a nh ng nhà công ngh c a IBM. K t qu là. sáng t o ã tr thành c i Sáng t o là s ngu+n c a s phát tri n c s d li u. C s d li u Ban Qu n tr thông tin. Và t t nhiên.dành cho các doanh nghi p l n. Nhóm ph n m m IBM . Chúng tôi s.Nh p môn H qu n tr c s d li u DB2 12 L i nói u t phá c a các ti n b công ngh . DB2 Express-C không gi i h n dung l ng d li u l u tr trong c s d li u hay s l ng c s d li u b n có th t o ra trong h th ng. làm giàu thêm ki n th c c a cu n sách v i hi u bi t. kinh nghi m c a các b n. t* c ng +ng.
UNIX và Windows. Nó c t i u cho các h th ng t i a 2 b x lý. v*a và nh" c n m t máy ch d li u tin c#y cho công vi c và ng d ng c a h&. mu n óng gói m t máy ch d li u v i y tính n ng nh là m t ph n trong các gi i pháp c a h&. Nh ng ng i yêu thích c s d li u. qu n tr d li u. nghiên c u. giáo viên hay nh ng h&c gi mu n có m t máy ch d li u linh ho t gi ng d y.Nh p môn H qu n tr c s d li u DB2 13 1 Ph n I – T ng quan và Cài Ch t ng 1 . d ng khách-ch . c s h t ng hay nh ng ng i cung c p gi i pháp. pureXML là m t công ngh c tr ng c a DB2 dùng l u tr và x lý các v n b n XML b m sinh. Ngh'a là c ng +ng nh ng ng i s d ng DB2 Express-C k t h pl i h tr l%n nhau c tr c tuy n và không tr c tuy n.DB2 Express-C là gì? DB2 Express-C là m t s n ph m thu c dòng IBM DB2 – ph n m m máy ch d li u qu n lý c d li u quan h và d li u XML. tri n khai và phân ph i…không có gi i h n! Các t t ng c t lõi c a DB2 Express-C g+m: • T do phát tri n: N u b n là ng i phát tri n ng d ng và c n m t c li u cho ng d ng c a mình. 1. không h n ch và d0 s d ng. b nh 4GB. b n có th s d ng DB2 Express-C. d ng n n web ho c các ng d ng l n. DB2 Express-C c. ánh giá ho c th nghi m. Ch C trong DB2 Express-C là vi t t t c a Community (C ng +ng). C ng +ng DB2 Express-C bao g+m các cá nhân và các công ty thi t k . s d . các nhà cho thuê ph n c ng. phát tri n. h&c t#p. ISVs – các nhà cung c p ph n m m c l#p. Ng i c v n. tri n khai.1 T do phát tri n. và không yêu c u b t k m t b nh chuyên d ng hay các cài t h th ng nào khác. nh ng ng i c n m t máy ch d li u m nh t h&c t#p.0 hay các ng d ng th h sau. và ki n trúc s công ngh thông tin. say mê tìm hi u công ngh mu n có m t máy ch d li u d0 s d ng xây d ng ng d ng Web 2.ng bao g+m pureXML. DB2 Express-C có th ch y trên c h th ng 32-bit ho c 64-bit c a Linux hay Windows. hay s d ng các gi i pháp c s d li u nh : • • • • • • Các nhà phát tri n ng d ng có nhu c u v m t ph n m m c s d li u chu n m xây d ng các ng d ng c l#p. DB2 Express-C có y các tính n ng c b n nh các n b n DB2 th ng m i trên n n Linux. DB2 Express-C là n b n DB2 c dùng mi0n phí. Sinh viên. phát tri n k$ n ng. Các công ty m i thành l#p.
Nh p môn H qu n tr c s d li u DB2
14
• •
•
T do tri n khai: N u b n ang làm vi c trong l'nh v c s n xu t và c n m t c s d li u l u tr các thông tin quan tr&ng, b n có th dùng DB2 Express-C. T do phân ph i: N u b n ang phát tri n m t ng d ng hay m t công c c n óng gói v i m t máy ch d li u, b n c.ng có th dùng DB2 Express-C. DB2 Express-C mi0n phí ngay c khi c óng gói vào trong ng d ng c a b n, c phân ph i m i khi b n bán ng d ng c a mình. B n ch- c n ng ký v i IBM tái phân ph i DB2 Express-C. T t nhiên vi c ng ký c.ng hoàn toàn mi0n phí. Không gi i h n: Trong khi các i th c nh tranh a ra các gi i h n v kích th c c s d li u, nh ng DB2 Express-C thì không t gi i h n nào c . C s d li u c a b n có th c ti p t c m r ng mà không h vi ph m i u kho n s d ng. C.ng không có gi i h n nào v s l ng k t n i hay s ng i s d ng trên m i máy ch .
1.2 H tr k thu t ng câu h"i N u b n có b t k th c m c k$ thu#t nào v DB2 Express-C, b n có th c a b n lên di0n àn c a DB2 Express-C. Di0n àn này c i u hành b i m t i DB2 Express-C, nh ng chính c ng +ng s, là nh ng ng i gi i áp trên c s t nguy n. IBM c.ng cho phép ng i dùng mua b n quy n theo n m v i giá th p (còn c g&i là B n quy n 12 tháng hay B n quy n th i h n c nh FTL (Fixed Term License)). Vi c mua này s, cho phép ng i dùng c h tr k$ thu#t 24×7 c.ng nh c#p nh#t ph n m m. V i kho n phí th p h ng n m ($2,995 trên m t máy ch m t n m M$ - có th thay i các n c khác) b n s, c h ng các quy n l i v h tr và b o trì ph n m m cho máy ch DB2 Express-C, b n c.ng có thêm hai tính n ng n a là: tính s)n sàng ph c h+i sau khi g p s c (HARD - High Availability Disaster Recovery) và di trú d li u truy v n (SQL replication tái t o l i d li u v i các máy ch DB2 khác). 1.3 Các máy ch DB2 c T t c các n b n máy ch DB2 u có chung các thành ph n lõi; Các n b n này óng gói thu#n ti n ng i s d ng có th l a ch&n các tính n ng c n thi t v i giá c h p lý. Hình 1.1 th hi n s khác nhau gi a các n b n c a DB2.
Hình 1.1 - Các máy ch DB2 Nh trên hình 1.1, n b n DB2 Express-C c.ng gi ng nh n b n DB2 Express ch- thi u i m t s thành ph n. DB2 Express-C là hoàn toàn mi0n phí. C.ng nh ã nói trên, ng i dùng luôn c s)n sàng h tr k$ thu#t t* di0n àn, ho c có th nh#n s h tr chính th c 24x7 c a IBM n u tr phí 12 tháng.
Nh p môn H qu n tr c s d li u DB2
15
Hình 1.1 c.ng cho th y kh n ng nâng c p t* DB2 Express-C lên b t kì n b n máy ch DB2 nào khác, vì t t c các máy ch DB2 u có chung thành ph n lõi. /i u này có ngh'a là t t c các ng d ng c phát tri n trên m t n b n v%n s, ho t ng trên các n b n khác mà không c n ph i ch-nh s a. Và b t kì k$ n ng nào b n h&c c t* m t n b n u áp d ng c cho các n b n khác. 1.4 Máy khách DB2 M t máy khách DB2 bao g+m các ch c n ng c n thi t k t n i v i máy ch DB2. Tuy nhiên, không ph i lúc nào c.ng c n cài t m t máy khách DB2. Ví d , m t ng d ng JDBC (Java DataBase Connectivity) ki u 4 có th n i th!ng t i máy ch DB2, ch- c n có trình i u khi n thích h p. Máy khách DB2 g+m nh ng lo i sau: • Máy khách DB2: y nh t, bao g+m các công c + h&a, các trình i u khi n. k t n i, c.ng bao • Máy khách DB2 runtime client: Có các ch c n ng c b n g+m các trình i u khi n. • Máy khách DB2 runtime k t h p Mô- un cho Windows: c s d ng ch y u trên máy khách DB2 runtime nh là m t ph n cài t cho các ng d ng c a Windows. Hình 1.2 cho ta th y các máy khách khác nhau và các trình i u khi n s)n có.
Hình 1.2 - Các máy khách DB2 và các trình i u khi n Trên ph n bên trái c a hình 1.2, t t c các máy khách DB2 và trình i u khi n c th hi n. M c dù t t c các máy khách DB2 u bao g+m trình i u khi n c n thi t, trong DB2 9 chúng tôi v%n cung c p nh ng trình i u khi n riêng bi t. Các máy khách DB2 và các trình i u khi n u mi0n phí và có th c t i v t* trang web DB2 Express-C. Các máy khách và các trình i u khi n có th c s d ng k t n i n máy ch DB2 trên n n Linux, Unix, ho c Windows. / k t n i n DB2 trên máy ch z/OS® ho c DB2 trên máy ch i5/OS®, b n c n ph i thông qua máy ch k t n i DB2 (DB2 Connect n m gi a hình 2). Chúng ta s, th o lu#n v ph n m m DB2 Connect trong Ch ng 2.
Nh p môn H qu n tr c s d li u DB2
16
1.5 T do phát tri n ph n m m ng d ng DB2 t o ra m t môi tr ng phát tri n ng d ng d a trên các chu n và trong su t i v i h& s n ph m DB2. Vi c s d ng SQL chu n trong các dòng s n ph m DB2 s, cung c p m t t#p các giao di n l#p trình ng d ng (API) thông d ng cho vi c truy nh#p c s d li u. Thêm vào ó, m i s n ph m DB2 cung c p các b ti n-d ch (pre-compiler) cho phép nhà phát tri n nhúng các câu l nh SQL t'nh và ng trong các ch ng trình ng d ng kh chuy n. DB2 còn có m t s)n công c qu n lý .NET có th tích h p v i các công c Microsoft® Visual Studio. Các ngôn ng và các chu n có th c s d ng v i DB2 là: • Ruby trên n n Rails • C/C++(ODBC và SQL nhúng) • JDBC và SQLJ • COBOL • Borland • Python • PHP • Perl • Ngôn ng .NET • OLE-DB • ADO • D ch v Web (Web Service) • SQL • Microsoft Office: Excel, Access, Word 1.6 Phiên b n và n b n DB2 (version and edition) N u b n m i làm quen v i DB2, b n có th b b i r i m t chút v s khác bi t gi a các phiên b n DB2 (version) và các n b n DB2 (edition). Vài n m m t l n, IBM công b m t phiên b n m i c a DB2. M t phiên b n bao g+m các a nh ng c i ti n áng k vào s n ph m. Hi n t i, phiên b n DB2 8 tính n ng m i và và DB2 9 c h tr chính th c b i IBM. M t phiên b n c.ng có th có m t vài l n rõ phát hành, có th bao g+m m t vài ch c n ng m i nh ng thông th ng không ràng nói r ng ây là m t phiên b n m i. Ví d 8.1 và 8.2 là các l n phát hành v i phiên b n DB2 8. Trong th i gian v*a qua, IBM th ng a ra m t l n phát hành m i c a DB2 m i n m m t l n, tuy nhiên nh ng phiên b n m i th ng c a ra cách nhau t* 2-3 n m. L n phát hành m i nh t n th i i m hi n t i, V9.1 (tr c ây c g&i là DB2 “Viper”) tr thành phiên b n chính th c vào mùa hè n m 2006. Khi cu n sách này c vi t (tháng 9/2007), l n phát hành ti p theo (có tên là DB2 “Viper 2”) ã có phiên b n beta. M i l n phát hành c.ng có th ch a nhi u m c ch-nh s a, th ng ch a nh ng ph n vá l i t c là t ng ng v i các ch ng trình s a l i (fixpack), và r t ít khi ch a nh ng tính n ng m i. T i th i i m này, phiên b n, phát hành, ch-nh s a (VersionRelease-Modification/ V-R-M) c a DB2 là 9.1.2 t ng ng v i phiên b n 9.1 cùng v i b ch ng trình s a l i 2. Trên m t n i dung khác, các n b n là nh ng l a ch&n ho c nhóm các gói tính n ng trong m i phiên b n. Nh ã c#p, m t n b n là m t gói nh ng ch c n ng khác nhau v i giá thành và b n quy n xác nh. DB2 phiên b n 9 (c.ng c bi t t i v i tên DB2 9) có nhi u n b n; ví d : DB2 express-C 9, DB2 Express 9, DB2 Workgroup 9, và DB2 Enterprise 9 (xem hình 1.1)
Nh p môn H qu n tr c s d li u DB2
17
1.7 Chuy n sang n b n DB2 khác Khi c s d li u c a b n c n m r ng, có th b n s, c n nâng c p n b n DB2 h tr c u hình ph n c ng l n h n. N u tr ng h p này x y ra, r t d0 dàng nâng c p lên m t n b n khác c a DB2: • N u b n nâng c p lên m t n b n DB2 khác trên cùng m t máy, cài t n b n DB2 m i è lên DB2 Express-C, cùng v i b n quy n t ng ng. C s d li u c a b n s, không b xóa (nh ng chúng ta v%n nên sao l u c s d li u tr c khi nâng c p). • N u b n nâng c p DB2 trên m t máy m i, l n h n và s d ng chung m t h i u hành v i máy c., hãy cài t n b n DB2 m i trên máy m i, sao l u d li u trên máy c. và khôi ph c l i nó trên máy m i. B n c.ng có th l u các c u hình trên máy c. (dbm cfg) và cài t c u hình này trên máy m i. Các l nh sao l u và c nói rõ h n trong Ch ng 11 Sao l u và Khôi ph c, dbm cfg khôi ph c s, s, c nói rõ h n trong Ch ng 5, Môi tr ng DB2. • Trong b t kì tr ng h p nào, ng d ng c a b n u không ph i s a ch a s d ng DB2. 1.8 B o trì DB2 Express-C Nh ã nói tr c ây, có hai l a ch&n h tr cho DB2 Express –C: 1. Mua m t b n quy n 12 tháng. /i u này s, cung c p cho b n h tr 24x7 t* b ph#n h tr k' thu#t c a IBM, +ng th i còn cho b n kh n ng cài t các c#p nh#t c a DB2 (còn c g&i là các ch ng trình s a l i fixpack). 2. S d ng di0n àn c ng +ng DB2 Express-C tr c tuy n. Cách này hoàn toàn mi0n phí, tuy nhiên b n s, không có c s h tr chính th c nào t* IBM. /+ng th i, v i cách này, IBM không cam k t cung c p nh ng ch c n ng m i và nh ng b n vá l i nh th i gian ã nh. / nh ngh'a v m t ch ng trình s a l i, c nói n trong Ch ng 2, c.ng s, không có ý ngh'a ây, thay vì v#y m t b n cài t c c.ng c p trên trang web cho các ng i dùng t i m i c a DB2 Express-C s, v . Khi IBM a ra b t kì s ch-nh s a m i nào trong DB2, b n có th tìm th y b n cài t m i này và thay th cho b n DB2 c. b n ang dùng. 1.9 M t s ph n m m mi n phí liên quan T t c các ph n m m có th c t i t* trang t i ph n m m c a DB2 Express-C (www.ibm.com/db2/express/download.html) u là ph n m m mi0n phí. Bên c nh nh ng b n DB2 Express-C (cho Linux và Windows, c ki n trúc 32 và 64 bit), còn có nh ng ph n m m h u d ng có th c t i và s d ng mi0n phí nh : • DB2 Developer Workbench • DB2 9 Embedded Application Server • DB2 9 Net Search Extender Ngoài ra b n có th t i v b công c kh i u d a trên DB2 Express-C t* trang web IBM Alphaworks (www.alphaworks.ibm.com/datamgmt). B công c này bao g+m: • Starter toolkit for DB2 on Rails • Web 2.0 Starter Toolkits for DB2 1.9.1 DB2 Developer Workbench (công c phát tri n) DB2 Developer Workbench (DBW) là m t môi tr ng phát tri n tích h p m nh (IDE) cho phép b n t o ra, s a ch a, g( r i, tri n khai và ki m tra các th t c c l u tr SQL PL và Java, c.ng nh các hàm do ng i dùng nh ngh'a (User defined function UDFs), các ng d ng SQLJ, kh i t o và th c thi các câu l nh SQL và các truy v n XML. Công
và Web Services Control Panel t o ra các bao ph d ch v Web REST xung quanh các b ng DB2 c a b n.9.9. Chúng ta s. T t c các ph n m m c yêu c u bao g+m: DB2 Express-C.5 B công c b t u Web 2. b thích nghi (adapter) DB2 v i Rails. Nó giúp cho b n tri n khai các yêu c u ph n m m.3 DB2 9 Net Search Extender (m r ng tìm ki m trên m ng) V i DB2 9 Net Search Extender b n có th th c thi nhanh và chi ti t các tìm ki m n i dung v n b n (full-text). bao g+m b t c tài li u XML nào c l u tr b m sinh trong DB 9. C hai ng d ng u d a trên Dojo h tr y kh n ng n i b#t c a Ajax và kh n ng m r ng. 1. cung c p cho b n các bài h ng d%n và các b n ng d ng trình di0n (demo). Các th t c l u tr SQL PL. và nh ng tài li u h&c t#p khác. th o lu#n DBW trong ch ng 14. Hai trong s các ng d ng trình di0n là Atom Feed Control Panel. • DB2WebServer. Các ng d ng Web c h tr v i DB2 phiên b n 9.9. nó kh i t o các Atom l y t* các b ng DB2. trình i u khi n DB2 cho Ruby.1 1.2 DB2 9 Embedded Application Server (máy ch nhúng) Embedded Application Server cho phép b n ch y các ng d ng Web c h tr v i DB2 phiên b n 9.4 B công c b t u Rails cho DB2 B công c b t u Rail cho DB2 là m t t#p các s n ph m và công ngh c óng gói ti n l i cho phép t o ra nhanh chóng m t môi tr ng xây d ng các ng d ng Web DB2 s d ng công ngh Ruby trên n n Rails.1 bao g+m: • Các công c Web DB2 dành cho ng i qu n tr c s d li u n n web. th o lu#n Ruby trên n n Rails Ch ng 17. . S phát tri n trong Java..0 dành cho DB2 là m t cách d0 dàng b t u v i DB2. PHP và Dojo.9.0 dành cho DB2 B công c b t u Web 2.Nh p môn H qu n tr c s d li u DB2 18 c này d a trên Eclipse IDE và thay th IBM Development Center c a các phiên b n DB2 tr c ây. m t ng d ng t ng tri n khai các d ch v web . 1. bên c nh ó là các h ng d%n. ví d .NET t* Microsoft Visual Studio n DB2 Embedded Application Server. Chúng ta s.1 mà không yêu c u b n ph i mua thêm m t máy ch ng d ng riêng bi t. PHP và Ruby. 1.
trong tr ng h p có tr thêm phí.Nh p môn H qu n tr c s d li u DB2 19 2 Ch ng 2 – Các tính n ng liên quan và các s n ph!m Ch ng này mô t các tính n ng c a DB2 i kèm trong vi c mua gi y phép s d ng 12 tháng c a DB2 Express-C. truy v n song song) • S liên k t h p nh t d li u DB2 Các s • • • n ph m có phí có liên quan t i DB2: DB2 Connect WebSphere® Federation Server .Máy ch di trú WebSphere .ng bao g+m nh ng tính n ng c thêm vào mi0n phí nh • Phân tán b ng (ph m vi) • Các b ng truy v n c c th hóa (Materializated Query Tables MQT) • K$ thu#t bó a chi u (Multi-dimensional Clustering . nh ng là m t ph n c a nh ng n b n DB2 khác. b ki m soát truy v n) • T i u hi u n ng (MQT. chuyên nghi p trong th c thi) • Qu n lý d li u o c • S liên k t h p nh t d li u DB2 DB2 Enterprise c.Máy ch nhóm WebSphere WebSphere Replication Server . MDC.HADR ) • Di trú d li u (SQL h p nh t) Nh ng tính n ng không có m t trong DB2 Express-C nh ng có m t trong các n b n DB2 khác là: Các tính n ng c a n b n DB2 Enterpirse có phí: • Tính n ng phân tán c s d li u (DPF) • Tính n ng t i u hóa l u tr d li u (k c nén) • /i u khi n truy nh#p m c cao (an toàn m c cao và c chia nh" t t) • T i u s th c thi (ki m soát các truy v n. Ngoài ra còn m t s tính n ng khác không có trong DB2 Express-C. Nh ng tính n ng có trong DB2 Express-C có b n quy n 12 tháng • B ch ng trình s a l i (Fixpacks) • Tính s)n sàng cao và Khôi ph c sau s c (High Availability and Disaster Recovery.MDC) • Tính s)n sàng cao và kh n ng ph c h+i sau s c (HADR) • B t#p trung k t n i (Connection Concenstrator) Các tính n ng c a n b n DB2 Workgroup và Express có phí • Tính s)n sàng cao • Qu n lý công vi c (B t#p trung k t n i.
1 Các tính n ng bao hàm trong ng ký s" d ng DB2 Express-C Ph n này i m qua các ch ng trình s a l i DB2. máy ch chính và ph (có th c t t i nh ng n i khác nhau). c s d li u th hai c +ng b hóa v i c s d li u chính và có th thay th c s d li u chính n u có s c x y ra. xem trang h tr k$ thu#t c a DB2 t i http://www.ibm.2 Tính s#n sàng cao và khôi ph c sau s c (HADR) tin c#y c a d li u. và m t máy ch ích n i các thay i d li u c áp d ng. M t gi i pháp HADR h tr DB2 y cung c p cho b n: 1 Kh n ng ph c h+i c c nhanh.1. cung c p kh! n ng ph c h+i y cho a i mb s c 1 Qu n tr d0 dàng v i các công c + h&a c a DB2 1 T t c các kh n ng trên có nh h ng không áng k v i hi u n ng t ng th c a h th ng 2. nó cung c p m t Tính s)n sàng cao và khôi ph c sau s c là gi i pháp s)n sàng và khôi ph c sau s c cho s suy s p toàn ph n ho c m t ph n.1. V i m t ng ký s d ng có b n quy n.3 Kh n ng tái t o d li u (di trú d li u) Tính n ng này cho phép tái t o d li u gi a máy ch ngu+n n i các thay i d li u c ghi l i. / t i ch ng trình s a l i m i nh t.1.1 Các ch ng trình s"a l i M t ch ng trình s a l i DB2 là m t t#p các s a l i c áp d ng cho m t s n ph m DB2 ã c cài t. s di trú HADR và SQL.Thông qua vi c th c hi n l i các b n ghi nh#t ký này.Nh p môn H qu n tr c s d li u DB2 20 2. Máy ch th c p có m t b n sao c a c s d li u chính. Trong khi các giao d ch c ti n hành trên c s d li u chính.com/software/data/db2/support/db2_9/ a ch- 2. Hình 2. các b n ghi nh#t ký d li u c chuy n t ng n máy ch th c p (máy ch ph ) thông qua h th ng m ng. nh m m c tiêu s a các v n khác nhau c báo cáo sau khi s n ph m c phát hành. Máy ch chính là n i c s d li u g c c l u tr và truy c#p b i các trình ng d ng t i máy khách. Chúng th ng c a ra ba tháng s a l i có th m t l n. 2.1 cung c p t ng quan v cách tái t o d li u. M t môi tr ng HADR thông th ng bao g+m hai máy ch d li u. Khi các b n ghi nh#t ký d li u c nh#n v . th ng c t o ra b ng cách sao l u c s d li u chính và khôi ph c nó t i h th ng th c p. . trong su t tuy t i v i khách hàng và các ng d ng t i máy tr m 1 Giao d ch y t*ng thành ph n nh" tránh m t mát d li u 1 Kh n ng n ng c p h th ng ho c nâng c p ng d ng mà không gây ng t quãng i v i d ch v 1 Kh n ng thay th h th ng t* xa. chúng c th c thi l i và áp d ng cho c s d li u th hai. các ch ng trình c t i xu ng và cài t mi0n phí.
ki n trúc DB2. Kh n ng tái t o d li u h u d ng cho r t nhi u m c ích c n n d li u c tái l#p. bao g+m gi m t i dung l ng truy n. UNIX. 2. do c thêm vào nhóm phân vùng. z/OS và i5/OS. .1 có hai máy ch .2 Các tính n ng không có trong b n DB2 Express-C Ph n này miêu t m t vài tính n ng có trong các b n DB2 khác mà không trong DB2 Express-C 2. Tr c ây. m t ch ng trình “ch p” ghi nh#n l i các thay i i v i c s d li u. B t#p trung k t n i gi i thi u khái ni m tác t lô-gic.2.2.Nh p môn H qu n tr c s d li u DB2 21 Hình 2. Trên máy ch ngu+n. M i máy tính. và ki m tra l ch s thay i. m i k t n i c s d li u c n n m t tác t (agent) c s d li u. t trên nhi u máy tính. n p d li u vào các kho ch a d li u hay các “ch ” d li u (data marts).1 Phân vùng c s d li u Tính n ng phân vùng c s d li u (DPF) ch. Nó cho phép các c s d li u có th c tr i ra trên nhi u phân vùng khác nhau. bao g+m c nh ng máy s d ng các h th ng khác nh Linux. 2. DPF c bi t h u d ng trong môi tr ng máy ch c s d li u l n nh các kho ch a d li u n i mà các truy v n c a h tr giúp quy t nh (DSS) c th c thi. mang theo s c m nh x lý d li u v i CPU và b nh c a chúng. cho phép m t tác t x lý nhi u k t n i. m t ch ng trình “áp d ng” th c hi n các thay i cho c s d li u nh th#t.1 – Khôi ph c SQL Trong hình 2. Trên máy ch ích. Các tác t c bàn n k$ h n trong ch ng 6.có trong n b n DB2 Enterprise v i m t m c phí ng ký b sung. b n có th tái t o d li u gi a DB2 Express-C và các máy ch DB2 khác. m t máy ch ngu+n và m t máy ch ích.2 B t p trung k t n i B t#p trung k t n i là tính n ng cho phép h tr m t l ng l n ng i dùng k t n i t i m t th i i m. S d ng tính n ng tái t o d li u. DPF d a trên ki n trúc không chia s2 (share-nothing architecture).
3.2. nh a ch-. 2. Ph n m r ng này làm vi c phát tri n cho các ng d ng chính ph i n t c d0 ho c các ng d ng có qui trình nghi p v yêu c u phân tích các v trí a lý dàng h n.1 DB2 Connect DB2 Connect là m t ph n m m d a trên vi c tr phí cho phép m t máy khách DB2 Linux. Ví d n u b n mua WebSphere Federation Server b n có th ch y truy v n d i ây: . có th c chuy n i thành t&a kinh tuy n/v' tuy n nh b m r ng không gian c a DB2 (DB2 Spatial Extender) và các ch ng trình ng d ng doanh nghi p làm vi c t t h n khi chúng l u tr d li u theo nh d ng này. WebSphere Federation Server cho phép s liên k t h p nh t các c s d li u. DB2 Connect không c yêu c u trong quá trình liên k t theo chi u ng c l i. Các d li u kinh doanh. UNIX hay Windows k t n i n m t máy ch DB2 z/OS hay DB2 i5/OS nh trong hình 2. B m r ng không gian a lý c a DB2 có th c u thành m t th gi i a lý o v i b t k t3 l nào.2.Nh p môn H qu n tr c s d li u DB2 22 2. và có th c th hi n trong h kinh /v' . có th i u khi n lu+ng các truy v n t i c s d li u DB2 c a b n.2.3. hi n th và in các b n +. khi b n k t n i t* DB2 z/OS hay DB2 i5/OS d n m t máy ch DB2 Linux. 2.3 Các s n ph!m có tr phí liên quan n DB2. 2. i u này ngh'a là b n có th ch y các truy v n c s d li u trên nhi u i t ng t* các h th ng c s d li u quan h khác nhau.2 WebSphere Federation Server / c bi t n tr c ây là WebSphere Infomation Integrator (h tr tích h p thông tin). H u h t các thông tin v trí c thu th#p s d ng các h th ng toàn c u. nh h th ng nh v v tinh toàn c u (GPS). phép chi u t ng ng lên b n + c th ng nh t các ng d ng khác nhau: l p trình bày. Hình 2. Nó cho phép b n i u ch-nh l i kh i l ng công vi c c a truy v n d li u. m b o các tài nguyên h th ng c s d ng hi u qu . UNIX hay Windows.3 B m r ng không gian $a lý B m r ng không gian a lý c a DB2 t+n t i nh m t l a ch&n có phí cho n b n DB2 Enterprise. do ó các truy v n nh" và có m c u tiên cao có th ch y nhanh chóng. DB2 Connect 2. DB2 Connect có trong hai n b n chính tùy theo s k t n i mà b n c n: DB2 Connect Personal Edition và DB2 Connect Enterprise Edition.2.4 B ki m soát truy v n B ki m soát truy v n c a DB2 là m t h th ng qu n lý truy v n m nh.
ng bao g+m m t tính n ng c bi t n là Q-Replication cho s tái t o d li u s d ng các hàng i thông i p. s h tr liên k t h p nh t ã c xây d ng s)n trong DB2 Express-C. /i u này ngh'a là WebSphere Federation Server không c n c òi h"i.col5 = 1000 and C. ví d khi b n mu n ch y m t truy v n gi a hai c s d li u DB2 khác nhau.col2 = ’Test’ Hình 2.Nh p môn H qu n tr c s d li u DB2 23 SELECT * FROM Oracle.3 . 2.Table1 A DB2. WebSphere Replication Server cho phép s t o l i SQL trong các b n ghi c s d li u khi các máy ch không ph i c a IBM tham gia vào.3. ho c gi a m t c s d li u DB2 và m t c s d li u Informix® (Infomix là m t ph n trong h& IBM). Nó c.Table3 C WHERE A.3 cung c p s gi i thi u v kh n ng s d ng c a WebSphere Federation Server Hình 2.WebSphere Federation Server / i v i các h th ng qu n lý c s d li u quan h thu c h& IBM.col1 < 100 And B..3 WebSphere Replication Server / c bi t tr c ây là WebSphere Infomation Integrator (h tr tích h p thông tin).Table2 B SQLServer. .
3.Nh p môn H qu n tr c s d li u DB2 24 3 Ch ng 3 . tài kho n ng i s d ng ph i thu c v nhóm Qu n tr trên máy mà b n s. Có th s d ng tài kho n s)n có (built-in) trên h th ng ti n hành cài t. v i i u ki n là m t thành viên thu c nhóm Qu n tr Windows u tiên c u hình các thi t l#p nâng quy n Windows cho phép m t tài kho n ng i dùng không thu c nhóm Qu n tr có th th c thi cài t. / có c nh ng thông tin m i nh t v các i u ki n c a ph n c ng tr DB2 Express-C. hãy xem trên trang web DB2 Express-C. DB2 Express-C có th c s d ng trên Linux c yêu c u là 32 bít. b n nên mua m t trong nh ng n b n máy ch d li u khác ã c nói n tr c ây trong quy n sách này. N u b n c n ch y DB2 trên m t n n khác (gi ng nh UNIX). c t o.1 Các i u ki n tr c khi cài t 4 khía c nh phiên b n h i u hành. M t cách khác.2 Quy n cài t h i u hành / cài t DB2 Express-C trên Linux hay Windows. V i các tài kho n mi n (domain) Windows.html 3. m t tài kho n ng i dùng không thu c nhóm Qu n tr có th c s d ng. xác th c nh danh (ID) c a ng i dùng trên máy ch DB2.ng c miêu t trong tài li u này.ibm. ID c a ng i ti n hành cài t ph i thu c nhóm Qu n tr t i mi n (domain) mà các tài kho n này s.html Trong khía c nh v các tài nguyên ph n c ng. c khi cài t is d ng h V i Windows.Cài t DB2 m b o r ng các h th ng / cài t n b n DB2 Express-C cho Linux hay Windows. V i Linux: b n c n ph i là root (superuser) cài t DB2 Express-C. Các h th ng này có th là các h th ng v#t lý hay các h th ng o c t o ra b i s phân tán ho c vi c ch y các ph n m m máy o.ibm. B n có th d' nhiên ch y nó trong các h th ng nh" h n n u b n mu n. Tài kho n ng i dùng c. b n ph i là m t ng i u hành có quy n.com/software/data/db2/udb/sysregs. ví d trong các h th ng n CPU v i 1GB RAM. th c hi n cài t. Ki n trúc b x lý PowerPC (Linux). c a b n th"a mãn các i u ki n tr c khi cài t. 64 bít và hay Windows 2000. Vista.com/software/data/db2/udb/db2express/getstarted. XP. http://www. Các i u ki n c a h i u hành tr c khi cài t cho t t c các n b n DB2 c. http://www.ng ph i có quy n “Truy c#p máy tính này qua m ng” . DB2 Express-C c t i u hóa cho các h th ng lên t i 2 CPU v#t lý và 4GB RAM.
u cài t DB2 (DB2 Setup Launchpad).3 Cài t theo h ng d%n t&ng b c Có r t nhi u cách ti n hành cài t DB2 Express-C. nh n liên t c nút “Next” r+i nh n “Finish”. Sau khi t i và gi i nén DB2 Express-C. Vi c cài t DB2 Express-C theo h ng d%n cài t t*ng b c r t n gi n. b n nên ch&n Trên hình 3.vi c s d ng các thi t l#p m c nh. Quá trình cài t s. • Linux: ch y l nh db2setup trong th m c exp/disk1. t t c các vi c c n làm là ch p nh#n i u kho n s d ng.exe trong th m c EXP/image. b n có th ti n hành cài t nh sau : • Windows: ch y t p setup. Thông th ng. b n ch.1 là c a s b t “Install New” cài t m t b n sao m i c a DB2 lên h th ng. k t thúc sau vài phút và b n có th b t u s d ng DB2. vì v#y. nh ng n gi n nh t là s d ng cách cài t theo h ng d%n t*ng b c d a trên giao di n + h&a c a DB2.1 – B t u cài t DB2 (DB2 Setup Launchpad) .Nh p môn H qu n tr c s d li u DB2 25 3. Hình 3.
Các t p biên b n s. . t o m t t p biên b n (response file). b n có các l a ch&n cài t s n ph m. ng b n nên ch&n ki u cài t Hình 3. Cài t hàng lo t (Silent Install). ho c c hai.4. thông th “Typical” (m c nh) nh trên hình 3. c th o lu#n trong m c 3.Nh p môn H qu n tr c s d li u DB2 26 Sau khi ch p nh#n i u kho n s d ng. S d ng tùy ch&n m c nh (Cài t IBM DB2 Express Edition trên máy tính này và l u các thi t l#p ra t p biên b n) là .2 – Các ki u cài t Trong hình 3.3.2.
N u nh ID c a ng i dùng b n nh#p vào không t+n t i. ID ng i dùng m c nh c t o ra trong windows là db2admin.3 – L a ch n cài t Trong vài màn hình ti p theo. Ng i dùng này ph i n m trong danh sách Qu n tr (Local Administrator) c a Windows.4.ng nh các d ch v khác. c thêm vào nhóm Qu n tr . B n có th tr ng “domain” n u nh ng i dùng b n nh#p vào không thu c vào m t mi n nào ó.Nh p môn H qu n tr c s d li u DB2 27 Hình 3. Trong màn hình này b n có th nh#p vào m t ng i dùng ã có làm vi c v i b n cài t DB2 này (instance) c. trong Linux là db2inst1. . m t ng i dùng m i s. hãy ch&n giá tr m c nh cho n khi b n g p màn hình nh trong hình 3.
Hình 3. cài t theo h ng d%n t*ng b c s.4 . Cu i cùng trong hình 3.5. thi t l#p do b n nh#p vào. hi n th m t danh sách t ng k t nh ng ph n nào s. quá trình cài t DB2 vào h th ng c a b n b t u. Khi b n nh n “Finish”.4 Cài t hàng lo t (Silent Install) Trong nhi u tr ng h p b n c n ph i cài t máy khách DB2 trên nhi u máy tính khác nhau.Danh sách t ng k t nh ng ph n s' c cài 3. c cài t c.Nh p thông tin ng i dùng cho b n DB2 m c $nh. Ho c máy ch d li u DB2 là m t ph n trong ng d ng b n xây d ng và b n .Nh p môn H qu n tr c s d li u DB2 28 Hình 3.ng nh m t vài thông tin.5 .
rsp) n m trong th m c: db2/platform/samples/ directory • Trong Windows. b n c. Các ph ng pháp có th dùng t o ra t p biên b n: • Cài t DB2 Express-C tr c m t l n.3 v ph ng pháp này. Khi ó. cài t hàng lo t là ph ng pháp phù h p cho b n.ng có th dùng l nh t o t p biên b n: db2rspgn -d <th m c l u t p> • Sau khi b n ã có t p biên b n. T p m%u này (có ph n m r ng là . B n có th xem l i Hình 3. D i ây là m t trích o n c a m t t p biên b n m%u. b n dùng l nh: db2setup -r <Tên t p biên b n> . trong Windows b n dùng l nh: setup -u <Tên t p biên b n> • / i v i Linux..Nh p môn H qu n tr c s d li u DB2 29 mu n quá trình cài t DB2 là m t ph n c a quá trình cài t chung toàn b ó. • Ch-nh s a t p biên b n m%u c óng gói kèm theo DB2. Khi k t thúc quá trình cài t t p biên b n s. c l u vào th m c và tên t p do b n nh#p vào. ng d ng DB2 h tr cài t hàng lo t nh t p biên b n (response file) ch a các thông tin c n thi t cho quá trình cài t. T p biên b n m%u: PROD = UDB_EXPRESS_EDITION LIC_AGREEMENT=ACCEPT FILE = C:\Program Files\IBM\SQLLIB\ INSTALL_TYPE = CUSTOM COMP=TCPIP_DB2_LISTENER_SUPPORT COMP=TCPIP_DB2_CLIENT_SUPPORT COMP=DB2_SAMPLE_DATABASE COMP=DB2_SAMPLE_APPLICATIONS COMP=OLE_DB_SUPPORT COMP=ODBC_SUPPORT COMP = JDBC_SUPPORT COMP = IBM_JRE . M t trong các l a ch&n u tiên khi b n cài t theo ph ng pháp này cho phép b n ánh d u yêu c u DB2 l u l i các thông s b n nh#p vào trong quá trình cài t vào m t t p biên b n. Vì t p này là m t t p v n b n cho nên sau ó b n có th s a l i nó tùy ý. s d ng ph ng pháp cài t theo h ng d%n t*ng b c..
Sau khi ch ng trình ã ki m tra xong ti p t c cài t b n nh n vào nút Next 5. M t khi DB2 Express-C ã c cài t. B n c.2 ho c phiên b n cao h n. 4. n u b n + h&a c s d li u m%u có th c t o ra cho b n ch&n cài t thông qua ch m t cách t ng. Chú ý b n ph i t m#t kh u (password) cho tài kho n. / nh v th m c chính v th m c ch a các t p ã gi i nén 3. 2.. th y r ng ây là ki u cài t m c nh). Trong ví d này b n ch&n th m c m c nh cài t DB2 lên h th ng c a b n nh sau: ( cài t: C: Th m c cài Nh n nút Next t: C:\Program Files\IBM\SQLLIB ti p t c.1. chú ý n dung l ng c a c ng. DB2 s.” và nh n nút Next ti p t c ti n trình cài t. Ch p nh#n các i u kho n ràng bu c. c. B n ch&n th m c cài t DB2. Trong môi tr ng Window b n s d ng tài kho n m c nh c ngh là db2admin. / kích ho t ti n trình cài t. / có th cài t DB2. t o ra cho b n. sau ó t* c a s windows hi n ra b n nh n vào tùy tr&n Install Product phía bên trái c a c a s . Sau khi b n ch&n Install Product b c 3. nh ng ti n trình DB2 s. Nh ng d ch v này òi h"i ph i c ng nh#p b ng m t tài kho n c a h th ng có th th c hi n. b n có th t i b cài d i d ng t p . L a ch&n ki u cài t. L y v nh c a DB2 Express-C. Kích ho t ti n trình cài t.ng có th s d ng m t tài kho n s)n có trong . L a ch&n th m c cài t. Gi i nén các t p vào m t th m c do b n t tên. 7. Nh#p vào thông tin c a ng i s d ng. b n ph i cài nó trên h th ng c a mình. n u tài kho n này ch a t+n t i.zip t i a ch. Ch y cài t DB2 theo t*ng b c (setup wizard).. Bài th c hành này s. ch y ki m tra c u hình ph n c ng c a h th ng ti n hành chu n b cài t DB2 Express-C.ng nh ki m tra xem b n ã cài DB2 tr c ó hay ch a. Trong bài th c hành này b n hãy ch&n l a ki u cài t là Typical (b n s.http://www.Nh p môn H qu n tr c s d li u DB2 30 Bài t p nhanh #1: Cài t DB2 Express-C và t o ra c s d li u m%u Chú ý: N u b n ang s d ng DB2 Express-C V9. Các b c 1. Ki u Compact là ki u cài t c b n còn ki u Custom cho phép b n th c hi n m t s tùy tr&n trong quá trình cài t. M c ích Tr c khi b n có th b t u nghiên c u các tính n ng và công c có trong DB2 Express-C. Nh n nút Next ti p t c. 8. h ng b n t*ng b c cách cài t DB2 Express-C trên Window.com/db2/express. 6. b n hãy &c k$ các i u kho n trong gi y phép s d ng và l a ch&n “I Accept. m t thành ph n tr giúp cài t g&i là “cài t t*ng b c” s.exe. c ch y d i t cách là các d ch v c a h th ng.ibm. b n nh n úp vào t p setup. Hai ki u cài t khác là Compact và Custom.
Sau khi b n nh n OK m t c a s window sau s. Xác nh#n c s d li u m%u ã c t o ra. trong khi trong môi tr nh này là db2inst1. Nh n nút Next ti p t c.Nh p môn H qu n tr c s d li u DB2 31 h th ng thay vì nh DB2 t o ra m t tài kho n m i cho b n nh ng ph i ghi nh r ng có th ch y các d ch v DB2 tài kho n này ph i có quy n qu n tr (admin). t t c các c u hình và các t p c n thi t s. Khi vi c t o c s d li u ã hoàn t t. 9. và b n ph i m b o r ng tùy ch&n XML and SQL objects and data ph i nh n nút OK. Nh n nút Next ti p t c. 11. Sau khi quá trình cài t k t thúc. Trong First Steps. UDP) và c ng k t n i u có th c cài t l i khi b n nh n vào các nút Protocols và Startup. ínstance DB2 5000. c coi nh là m t “kho ch a cho t kì m t c s d li u nào c ng Window. Kh i d%n cài r ng t t c c a h th ng l i máy tính. 15. B t u cài t. m t ínstance c ng Linux tên c a ínstance m c i t ng này trong các ch ng c c u hình l ng nghe k t n i TCP/IP trên c ng k t n i M c nh. c cài t vào máy c a b n m t cách t ng. c ch y và hi n th trên màn hình. trong ví d này chúng ta s. . B n có th ph i làm m i l i Trung tâm i u khi n nh#n bi t c s thay i này. Chúng ta s. và sau ó theo sau các h ng d%n c a ch ng trình t o ra c s d li u M%u. T o ra c s d li u M%u. s d ng s c u hình m c nh ã c cài t s)n và không thay i b t c c u hình thu c v giao th c k t n i hay c ng k t n i nào c . m t công c h tr cài t khác g&i là First Steps s. /ây là m t Tùy ch&n. C hai giao th c k t n i (TCP. M t ínstance DB2 có th c s d li u”. Trong môi tr g&i là DB2 t ng c t o ra. c hi n ra thông báo c s d li u m%u ang c t o ra cho b n. First Step c. 14. Ti n trình này có th m t m t vài phút. Chú ý c l a ch&n. Quay l i Trung tâm i u khi n (Control c t o ra trong khung Center) và ki m tra r ng m t c s d li u tên là SAMPLE ã c a s Object Tree (cây i t ng). M c dù b c này là không b t bu c trong các tài li u h ng t DB2.ng có th kh i ch y b ng tay v i câu l nh db2fs trong c a s h i u hành DOS. l a ch&n th2 “Database Creation”. nh ng chúng tôi ngh b n nên kh i ng l i h th ng mb o các ti n trình c b t u m t cách hoàn h o và gi i phóng các tài nguyên ng ã b chi m d ng trong quá trình cài t DB2. / b t u cài t b n nh n vào nút Install. M t ínstance này ph i t+n t i tr c khi b t o ra và c “ t vào bên trong kho”.Tuy nhiên. 10. c c 12. nh n nút OK và óng công c First Steps. First Steps. gi i thích chi ti t các ti p theo c a cu n sách. 13. C u hình DB2 ínstance.
gi i thi u m t s công c b n có th dùng v i DB2. Hình 4. m t c s d li u và các t p c u hình t ng ng. H u h t các công c này gi ng nhau trên c Linux và Windows.2 li t kê t t c các công c DB2 s)n có trong IBM DB2 Start Menu. SQL/XML và các câu l nh XQuery có th c dùng t ng tác v i máy ch d li u DB2.1 . Trong hình 4. là môi tr ng DB2 c b n bao g+m m t th hi n (instance) DB2. .Nh p môn H qu n tr c s d li u DB2 32 4 Ch ng 4 .B c tranh t ng th DB2: Các công c DB2 Hình 4. SQL. Ph n gi a c ánh d u b ng hình elip màu ") li t kê tên c a các công c khác nhau có th ( t ng tác v i máy ch d li u DB2.Các công c DB2 Trong ch ng này chúng tôi s. Phía bên ph i trong hình v. phía bên trái là các l nh DB2 khác nhau.1.
Nh p môn H qu n tr c s d li u DB2 33 Hình 4. g&i m t s các công c DB2 ph bi n L nh db2ce db2 db2cmd db2cc db2tc db2hc db2ca db2fs Tên công c Command Editor C a s nh#p l nh Command Line processor B x lý dòng l nh Command Window C a s l nh (Ch.1 Trung tâm i u khi n (Control Center) Công c chính c a DB2 dùng trong vi c qu n tr c có giao di n nh trong hình 4.2 .1 cung c p m t danh sách các l nh t t nh t trong c môi tr ng Linux và Windows.Các công c DB2 trên IBM DB2 Start Menu B ng 4.Các l nh t t cho m t s công c DB2 4.3 s d li u là Trung tâm i u khi n .1 .dành cho môi tr ng Windows) Control Center Trung tâm i u khi n Task Center Trung tâm tác v Health Center Trung tâm s c kh"e/tình tr ng Configuration Assistant Tr giúp c u hình First Steps B c kh i u B ng 4.
Môi tr ng DB2 và các thông s c u hình s. nh n ph i chu t lên m t cài t DB2 và ch&n “Configure parameters” cho phép b n xem và c#p nh#t t p c u hình cho ch ng trình qu n tr c s d li u. khung trên cùng bên ph i s. Môi tr ng DB2. hi n lên m t b ng ch&n thích h p v i th m c/ i t ng ó. c th hi n th theo ki u t ng ng. các i t ng c s d li u s. v i các “th m c” i di n cho b ng (Tables). L n u tiên ch y Trung tâm i u khi n. b n có th xem và c#p nh#t t p c u hình cho c s d li u ó.3 . Nh n chu t ph i vào các th m c/ i t ng khác nhau trong Cây i t ng (Object tree) s. • Kh i ng các công c + h&a khác c a DB2 i Khung bên trái cung c p m t cây phân c p tr c quan ph n ánh c u trúc c a các i t ng c s d li u trong h th ng c a b n. n u b n nh n chu t ph i vào m t c s d li u và ch&n “Configure parameters”. hi n th theo cách nào. nh trong hình 4.Nh p môn H qu n tr c s d li u DB2 34 Hình 4. c nh c t i k$ h n ch ng 5. b n c h"i và l a ch&n cách trung tâm i u khi n s. 5ng v i m i cách hi n th . • T o. T ng t . s a và qu n lý c s d li u và các i t ng c s d li u.Trung tâm i u khi n c a DB2 Trung tâm i u khi n là m t công c qu n lý t#p trung cho phép b n: • Xem xét h th ng c a b n. N u b n ch&n m t b ng nào ó khung trên bên ph i. . thì khung phía d i bên ph i s. các b n cài t DB2. các c s d li u và các t ng trong c s d li u. Hình 4.4 là h p tho i dùng l a ch&n cách hi n th c a Trung tâm i u khi n. cung c p các thông tin chi ti t h n v b ng ó.3). Ví d . th hi n (Views)… Khi b n nh n úp vào m t th m c (ví d th m c Tables. trong tr ng h p này là t t các b ng liên quan n c s d li u SAMPLE. li t kê t t c các i t ng liên quan.
Cách hi n th tùy ch&n (custom) cho phép b n tùy bi n các hình th c th hi n các ch c n ng. b n ch&n “Customize Control Center” t* b ng ch&n Tools nh trong hình 4.Tùy bi n Trung tâm i u khi n .5 Hình 4. / b#t l i h p tho i này.5 .H p tho i ch n cách hi n th$ Trung tâm i u khi n Cách hi n th c b n (basic) cung c p các ch c n ng nòng c t c a DB2.Nh p môn H qu n tr c s d li u DB2 35 Hình 4.4 . các l a ch&n và các i t ng theo b n mu n. Cách hi n th nâng cao (advanced) th hi n nhi u l a ch&n và ch c n ng h n.
b n có th th c thi các l nh DB2. tuy nhiên b n c.2 Nh p l nh tr c ti p S d ng c a s nh#p l nh c a DB2 (Command Center). Quay tr l i Trung tâm i u khi n /ang ch&n C a s nh#p l nh Thêm m t k t n i v i c s d li u C s d li u ang k t n i Vùng nh#p l nh Vùng k t qu Ký t c dùng xác nh k t thúc c a câu l nh Hình 4. M t k t n i t i c s d li u c n ph i c thi t l#p tr c khi th c hi n b t k câu l nh SQL nào. T* bi u t ng DB2 trên khay h th ng c a Windows nh trong hình 4.8).6 . phân tích k ho ch th c hi n c a m t câu l nh. nh ng c n m b o các câu l nh k t thúc v i ký t k t thúc do b n ch&n.6 (Nh n ph i chu t vào bi u t ng DB2 và ch&n DB2 Trung tâm i u khi n) Hình 4. SQL và các câu l nh XQuery. c th c hi n l n l t.Nh p môn H qu n tr c s d li u DB2 36 Kh i Có nhi • • • • ng Trung tâm i u khi n u cách kh i ng Trung tâm i u khi n: S d ng t* Menu Start c a Windows Ch y l nh db2cc t* d u nh c l nh Nh n úp vào bi u t ng Trung tâm i u khi n trên b t k thanh công c nào c a các công c giao di n + h&a DB2. b n có th nh#p nhi u câu l nh cùng lúc. N u nh b n ánh d u m t câu l nh nào ó thì ch. c th c hi n.7 th hi n C a s nh#p l nh cùng v i mô t ng n g&n các thành ph n c a nó. các câu l nh s. Khi b n b m nút th c hi n (xem hình 4. xem hay s a k t qu c a câu truy v n. .ng có th chèn câu l nh th c hi n k t n i vào o n l nh c a mình. Hình 4.7 .C"a s nh p l nh c a DB2 Trong vùng nh#p l nh (input area).Kh i ng Trung tâm i u khi n DB2 t& khay h th ng c a Windows 4.mình câu l nh này s.
B t k khi nào m t i t ng mà b n có th truy v n.Nh n ph i chu t vào bi u t ng c s d li u SAMPLE trong khung hi n th các i t ng c a Trung tâm i u khi n sau ó ch&n menu Query. b ng..C"a s nh p l nh – Th) L nh Kh i ng C"a s nh p l nh B n có th kh i ng c a s nh#p l nh b ng m t s cách: 1 T* Menu Start c a Windows: Start -> Programs -> IBM DB2 -> Command Line Tools -> Command Editor 1 T* m t c a s nh#p l nh (c a windows ho c linux).10 s. 1 T* Trung tâm i u khi n.9 trên Hình 4. nh n ch&n bi u t ng C a s nh#p l nh thanh công c c a Trung tâm i u khi n nh trong hình 4. c ch&n (c s d li u. . gõ db2ce 1 T* menu Tools c a Trung tâm i u khi n 1 Nhúng trong Trung tâm i u khi n: .Nh p môn H qu n tr c s d li u DB2 37 Th c hi n câu l nh (Có th dùng t h p phím t t Ctrl+Enter) Th c hi n câu l nh và sinh ra m t k ho ch truy c#p (S.8 . .9 . nói k$ h n ph n sau) Hình 4.). nói k$ h n ph n sau) Sinh ra m t k ho ch truy c#p mà không th c hi n câu l nh (S. xu t hi n. M t h p tho i nh trong Thêm m t k t n i t i c s d li u / thêm m t k t n i t i m t c s d hình 4.Bi u t ng C"a s nh p l nh trong Trung tâm i u khi n li u nh n vào nút Add. b n có th kh i ng C a s nh#p l nh b ng cách nh n vào ng d%n Query trong khung thông tin chi ti t v i t ng c a Trung tâm i u khi n (khung d i bên tay ph i).
Thêm m t k t n i c s d li u 4. ID và m#t kh u c a m t ng i dùng c ah i u hành. Nh hình 4. .Nh p môn H qu n tr c s d li u DB2 38 L a ch&n m t c s d li u trong h th ng Ch&n ô này n u b n mu n s d ng ID và m#t kh u c a ng i dùng ang ng nh#p vào h i u hành.10 . lúc này trình tr giúp “SQL Assist Wizard” là m t công c s)n có t* trình so n th o dòng câu l nh (Command Editor) s. Hình 4. b n có th tri u g&i nó t* Command Editor b ng vi c nh p chu t vào bi u t ng sau v i ký hi u SQL (n i lên trong hình v i vòng tròn "). giúp b n gi i quy t.11 bên d i. Trình tr giúp SQL N u b n không quen thu c v i ngôn ng SQL và thích s d ng m t trình h tr ho c h ng d%n t ng sinh mã SQL.3.
các tùy ch&n khác nhau s. . Nó cho phép s d ng song hành +ng th i c hai ch .ra ki u c a câu l nh SQL b n h tr v i (SELECT. Nó còn ph thu c vào câu l nh b n ch&n. INSERT. UPDATE. 4 ph n cu i cùng c a c a s b n s. nhìn th y làm th nào câu l nh SQL c xây d ng nên gi ng nh b n ch&n nh ng l a ch&n khác trong trình h ng d%n.12 trình bày v trình tr giúp SQL Assist Wizard. Hình 4.11 – G i trình tr giúp SQL Assist Wizard. c hi n th ra. DELETE). / u tiên ch.Nh p môn H qu n tr c s d li u DB2 39 Hình 4.
/ xem ph n này.4 Trình bày nút Show SQL H u h t các công c tr giúp + h&a (GUI) và các trình h ng d%n trong DB2 cho phép b n xem l i câu l nh hi n th i ho c câu l nh SQL ã c th c thi ra k t qu b ng vi c s d ng công c hay trình h ng d%n th c hi n m t công vi c. T* ô cây i t ng c a Trung tâm i u khi n.14 – * u ra c a m t ph n trình bày v nút Show SQL.Nh p môn H qu n tr c s d li u DB2 40 Hình 4. rút g&n và tái s d ng nh ng l nh và nh ng dòng l nh trong m t t p s d ng v sau này.12 – Trình tr giúp SQL Assist Wizard 4. nh p chu t vào nút Show SQL trong công c b n ang làm vi c. nh p ph i chu t vào th m c All Databases.13 – Trình bày nút Show SQL Hình 4. d ng trình h ng d%n t o Th t c th c hi n: 1. ch&n danh sách Create Database.ng có th xây d ng các k ch b n b ng vi c dùng l i nh ng l nh và nh ng dòng l nh ã c t o ra này. Hình 4. nh hình 4.14. t o ra m t CSDL m i s CSDL trong Trung tâm i u khi n. và ch&n danh sách . Bài t p nhanh #2 .13 và hình 4.T o m t CSDL m i v i Trung tâm i u khi n M c ích Trong bài t#p nhanh này. Kh n ng hi n th l i nh ng câu l nh SQL và nh ng dòng l nh là r t có ích trong vi c h&c cú pháp SQL. B n c. b n s.
db2 và nh p nút OK. Ch.dat ch a nh ng câu l nh ph i chèn d li u vào các b ng. K ch b n quicklab2. / t o cho b n s thu#n l i. và nh p Next. B t u ch y Creat Database Wizard. vì th tr ng ph n này và nh p nút Next.th báo ti n trình ang th c hi n s. • Ghi chú: Tr ng h p này có th tùy ch&n. 8. a. C u hình thông i p trên trang Mail Server c a trình h ng d%n. và sau ó nh p chu t vào nút Next ti p t c trang k c a trình h ng d%n. 3. nh (Yes. Xem l i các tùy ch&n ã ch&n trong trang Summary trong trình h ng d%n. bên trái có th Nh p chu t vào CSDL có s)n Enable cho h p ch&n XML. Xác . / ch y nh ng kch b n này. trong th i gian này ch. N u b n mu n cài t l i i u này. CSDL c t o ra th ng ph i m t m t vài phút.dat ã s)n có giúp b n. s d ng nút Add thêm m t k t n i t i nó (xem g n hình 4. hãy ch.db2 và quicklab2.rõ hai ho c h n 4 gi m t tu n khi DB2 có th th c hi n t ng duy trì các công vi c gi vi c ho t ng bình th ng c a CSDL. chúng ta không có m t máy ch SMTP nào. N u CSDL m i không hi n lên trong danh sách. 6. V i bài t#p này. Các n i dung c a t p bây gi c hi n th trong vùng u vào d li u c a Command Editor. l y giá tr m c specify an offiline…). Bây gi m t CSDL ã c t o. Ch&n nút Run ch y k ch b n. s d ng c a s nh#p l nh. C hai k ch b n này có th tìm th y trong t p nén ex-pressc_book_quicklabs.ra m t máy ch SMTP có s)n nào ó DB2 dùng trong vi c g i email. / t tên cho CSDL và v trí l u t p trong trang Name c a trình h ng d%n. Nh p vào nút Finish b t u quá trình t o ra CSDL. Bây gi . DB2 có th t ng g i m t email hay m t trang n u có m t s c hay m t i u ki n b t th ng c phát hi n th y. n i trú ngay trong nó là m t vài b ng và ít d li u c t o ra. không thêm b t k s thay i nào. Trong Specify c n ch. I can 5. /ánh d u t p quicklab2. tr ng. Nh p vào nút Next. Hãy ch c r ng CSDL m i b n ã t o c ch&n (bôi en) trong danh sách th xu ng trong thanh công c Command Editor. c u hình khe th i gian b t u lúc 1 gi sáng t* th hai t i th n m.db2 ch a nh ng l nh c dùng t o các b ng và do ó c ch y u tiên.nh khe th i gian b o trì trong trang Timing. cho phép 7. hai k ch b n có tên là quicklab2. 4. S d ng các giá tr d i ây: • Tên CSDL: EXPRESS • 6 'a m c nh (c a Windows): C: • / ng d%n m c nh (c a Linux): /home/db2inst1 • Bí danh: Tr ng h p này m c nh là EXPRESS n u bên trái tr ng. Ch. kéo dài 6 ti ng. hi n ra. Trong trang ch&n chi n l c b o trì.Nh p môn H qu n tr c s d li u DB2 41 With Automatic Maintenance. K ch b n quicklab2. Nh p vào l nh Select -> Open ho c nh n nút m trong Command Editor và chuy n t i th m c n i ch a các k ch b n ã c l u.rõ n i l u trang d li u. và nh p Next. 2.10) b.zip i cùng cu n sách này.
m t ng i qu n tr (DBA) có th mu n ch y m t k ch b n a ra hàng ngày ki m tra s hàng c a nh ng b ng quan tr&ng. Các k ch b n này là m i quan h n gi n hi u và là n n c l#p. 4. Cu i cùng b ng SALES ch a d li u v vi c bán hàng. 4. các bi n hay các tham s không c h tr . B ng BOOKS ch a t t c thông tin v nh ng cu n sách c l u tr . Các k ch b n SQL. B t k lúc nào khách hàng t mua m t cu n sách. Cho ví d . col3 DECIMAL(9. col2 VARCHAR(40).Nh p môn H qu n tr c s d li u DB2 42 nh không có l i nào 9.2)). CREATE TABLE user1.db2. CONNECT TO EXPRESS. CSDL m i này là m t ví d n gi n cho m t c a hàng sách trên Internet. Tuy nhiên. L p l i b c tìm th y khi ch y k ch b n này. Ví d . B ng CUSTOMERS ch a thông tin v m i khách hàng c a c a hàng.mytable ( col1 INTEGER NOT NULL. m t b n ghi c t o ra trong b ng SALES. các l nh d i ây c l u l i trong t p có tên script1.1 Các k$ch b n SQL Các k ch b n SQL bao g+m các câu l nh truy v n và các l nh CSDL. . c 8 cho t p quicklab2.5. SELECT * FROM user1.dat.5 T o k$ch b n Nó r t h u ích cho phép t o ra nh ng t p k ch b n. S + d i ây trình bày thi t k và quan h gi a các b ng. Có hai d ng k ch b n thông th ng: 1. 2. Các k ch b n (v") h i u hành.mytable FETCH FIRST 10 ROWS ONLY. nh ng t p th c thi nh ng l nh DB2 ho c nh ng câu l nh SQL l p l i nhi u l n.
ho c thông qua Linux shell.log ho c. / ch y k ch b n t* DB2 Command Window ho c Linux shell. db2 hi n th các l nh khi th c hi n.rõ. Ví d ph y s. CREATE FUNCTION f1() SELECT … . Có m t s hoàn c nh mà ta c n n m t u phân cách khác. Th c thi các k$ch b n SQL: M t k ch b n SQL có th c th c thi b ng nhi u cách khác nhau có th t c a s l nh ho c DB2 Command Window trên Windows. … END! T p functions. B t k ph n m r ng nào c. s d ng c ti p sau là ký t phân cách mong mu n (d u !) nh trình bày d i ây: db2 –td! –v –f functions. -f Ch. m t d u ch m ph y là c n thi t cu i c a cú pháp SELECT bên trong hàm.Nh p môn H qu n tr c s d li u DB2 43 COMMIT. b n có th dùng các l nh d i ây: db2 -t -v -f script1.db2”. t t c các câu l nh là các câu l nh SQL. Tên t p không nh t thi t s d ng uôi m r ng là “db2”. khi ch y s.ra các câu l nh dùng d u k t thúc m c nh (d u ch m ph y).log Trong câu l nh này: -t Ch. db2 –tvf script1. trong t p k ch b n ngh'a d li u DDL t o m t hàm. và m i câu l nh c cách nhau b i m t d u phân cách và trong tr ng h p này là d u ch m ph y.ra r ng theo sau thông báo tên t p s. b i vì nh ng d u ch m ph y này ã c dùng bên trong các nh ngh'a i t ng SQL PL phân cách các câu l nh thu c v th t c. V i câu l nh CREATE FUNCTION d u phân cách chúng ta ph i s d ng m t d u ch m than (!). T p script1. N u chúng ta l i dùng m t d u ch m ph y vào vi c ng n cách câu l nh. nh ng nên làm). nó ch a ngôn ng nh Ví d .db2 –z script1.db2 –z functions.ra r ng tên t p sau c này là t p k ch b n.ng dùng c. x y ra xung t t* k ch b n.log / có các mô t v các c hi u khác b ng cách ch y câu l nh d Command Window ho c Linux shell: db2 list command option i ây trong hi u –d.db2 -z script1. m t k ch b n ch a mã SQL PL c n dùng m t d u phân cách câu l nh khác v i ký t m c nh (d u ch m ph y). c s d ng hi n giá tr cho vi c phân tích sau này ( ây là ch&n. -z Ch.db2 Trong ph n k ch b n trên.db2 / cho DB2 bi t r ng m t ký t d u phân cách khác c dùng. u ra Khi c hi u –t c dùng và không có d u phân cách dòng nào c ch. -v Ch “l m l i”. d u ch m c ch&n. . d i ây có tên “functions. k t qu là có m t l i trong thông báo t* DB2.
5.bat / th c hi n k ch b n v i h Windows: i u hành này t* dòng l nh. . nh cho ta kh n ng thêm vào nh ng o n mã l#p trình có tính logic.log db2 set schema user1 db2 –t –v –f schema.log db2 –td@ -v –f functions.log triggers. r ng “bat” nói cho h i u hành bi t r ng ây là Trong Linux.nh r ng t#p tin này là m t t#p tin th c thi b ng cách s d ng l nh nh chmod +x.db2 –z functions. b n có th ch y t#p tin này v i cách th c gi ng nh ph n trên. set DBPATH=c. b n c n thay i ki u trên t#p tin ch.Nh p môn H qu n tr c s d li u DB2 44 4.log app_objects.log db2 –td@ -v –f triggers. D i ây là ví d c a m t k ch b n trong h i u hành Windows. b n gõ l nh sau trong USING create_database. set DBNAME=PRODEXPR set MEMORY=25 db2 CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE MEM_PERCENT %MEMORY% APPLY DB AND DBM db2 CONNECT TO %DBNAME% USER %1 USING %2 del schema.2 Các k$ch b n v i h i u hành Các k ch b n v i h i u hành cung c p linh ho t và tính n ng m nh m.db2 –z triggers. h n. Nh ng o n k ch b n này ph thu c vào h i u hành n n.bat db2admin ibmdb2 Trong Windows s d ng ph n m m t t#p tin th c thi x lý theo lô. Sau ó. tuy nhiên chúng có h tr các tham s và các bi n.db2 –z schema.log T p create_database.
bài t#p nhanh này ch. L u l i t#p tin k ch b n trong m t th m c và t tên cho t#p tin này là create_database. t o ra m t k ch b n h i u hành tri n khai c s d li u EXPRESS. N u b n mu n làm vi c trên Linux. Các k ch b n h i u hành có l i i m c a vi c h tr các tham s k ch b n. Trong h p tho i c a s Save As. m b m r ng b n ã ch&n m c tùy ch&n MS-DOS Format (trong Wordpad). . Thêm vào ó. Th t c 1. Nh m m c ích ti t ki m không gian. Trong bài t#p nhanh này. t o thêm m t s ký t n và vi c này có th gây ra nh ng v n trong khi quá trình th c thi c a k ch b n.bat. N u b n l u t#p tin này d i m t nh d ng khác. Các k ch b n này s. g&i k ch b n v i SQL ã c t o ra tr c ó cho các i t ng c s d li u. sao l u.hi n th nh ng k ch b n và câu l nh dành riêng cho n n Windows. hãy m b o r ng b n th c hi n nh ng thay i phù h p v i nh ng s h ng d%n sau ây. i u này giúp cho chúng linh ho t h n. hãy t d u ngo c kép bao l y tên c a t#p tin m b o r ng Windows không t ng thêm ph n m r ng . trong vi c th c hi n nh ng công vi c có tính ch t l p i l p l i nh t#p h p th ng kê cho c s d li u. M m t ch ng trình so n th o v n b n. d i ây. nh thông tin c hi n th d i ây. b n s.TXT cho t#p tin nh hình v.Nh p môn H qu n tr c s d li u DB2 45 Bài t p nhanh #3 – T o m t k$ch b n cài t cho c s d li u EXPRESS M c tiêu Các k ch b n là m t c ch m nh m. Notepad hay Wordpad và nh#p vào 2. Wordpad có th s. và tri n khai c s d li u.
d i ây 4. Sau ó ch y k ch b n. b n ph i có m t môi tr ng dòng l nh DB2. b n có th s d ng Start -> Run. nh#p vào các l nh sau: cd C:\express create_database. gõ vào db2cmd và n enter nh hình v. Cách khác.Nh p môn H qu n tr c s d li u DB2 46 3. hãy vào Start -> Program Files -> IBM DB2 -> DB2COPY1 (default) -> Command Line Tools -> Command Window.bat db2admin ibmdb2 . / ch y k ch b n t ng tác v i DB2. / m c a s l nh DB2.
/i u gì s. Dòng l nh sau ây dùng làm gì? Nó c s d ng khi nào? Cho m c ích gì? SET DBPATH=C: d. Các ký hi u %1 và %2 ngh'a là gì? c. x y ra khi k ch b n c g&i mà l i không có b t c tham s nào? f. B n hãy dành chút th i gian làm quen v i k ch b n mà b n v*a t o xong.log. Hãy c g ng tr l i nh ng câu h"i sau ây: a. K t n i c s d li u c thi t l#p âu? b. B n có hi u nh ng gì ang x y ra t i t*ng dòng không? 6.log e.Nh p môn H qu n tr c s d li u DB2 47 5.log. T i sao nh ng k ch b n SQL c g&i l i không ch a các câu l nh CONNECT TO? Chúng k t n i n c s d li u nh th nào? . triggers. Dòng l nh sau ây c dùng làm gì? del schema. app_objects.
n u m t tác v bao g+m công vi c sao l u m t c s d li u quan tr&ng vào lúc 3h sáng c th c hi n thành công.6 Trung tâm tác v (Task Center) Công c Trung tâm tác v v i giao di n + h&a ng i dùng cho phép b n t o ra nh ng tác v : là m t t#p h p nh ng ho t ng nh ch y các l nh DB2.15 minh ho Trung tâm Tác v Hình 4. Chúng ta s. các l nh c a h i u hành. n u tác v sao l u th t b i thì Trung tâm tác v s.1 C s d li u Tools Catalog T t c các thông tin chi ti t v các tác v c a b n và l ch th c hi n tác v ó cl u tr trong m t c s d li u DB2 riêng bi t g&i là c s d li u Tools Catalog.Làm vi c v i các i t ng c s d li u.16. b n . Kh i ng Trung tâm Tác v B n có th kh i ng Trung tâm Tác v t* Trung tâm /i u khi n (Control Center) b ng cách nh n vào Tools -> Task Center nh minh ho trong hình 4.Nh p môn H qu n tr c s d li u DB2 48 4. M t cách khác. Hình 4. M t khác. c g i n cho DBA cung c p thông tin này. m t email s. hay nh ng k ch b n. Các hành ng phía sau có th c th c hi n ngay c khi tác v tr c th t b i hay thành công. Ví d . ánh d u trang (page) cho ng i qu n tr bi t. C s d li u này ph i c t+n t i s)n có th lên l ch cho các tác v . systools là tên s + (schema name) c a t t c các b ng trong c s d li u. và tên c a c s d li u là toolsdb. / t o m t c s d li u Tools Catalog b n có th s d ng l nh này: CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb Trong ví d trên.6. nói nhi u h n v các s + (schemas) trong ch ng 8 .15 – Trung tâm Tác v 4.
16 – Kh i ng Trung tâm Tác v Lên l$ch v i Trung tâm Tác v B t c lo i k ch b n nào c.ng có th c lên l ch b ng cách s d ng Trung tâm Tác v (k ch b n ó có th c hay không c t o thông qua m t công c c a DB2 có giao di n + ho ng i dùng). .Nh p môn H qu n tr c s d li u DB2 49 có th b t u công c này t* menu Start c a Windows: Start -> Programs ->IBM DB -> DB2COPY1 -> General Administration Tools -> Task Center Hình 4. Các tác v c ch y t i th i i m ã lên l ch t* h th ng n i mà b n ã t o c s d li u Tools Catalog.7 Nh t ký Công c Nh#t ký có giao di n + h&a c a DB2 cung c p cho ng i qu n tr c s d li u m t nh#t ký v các ho t ng trên bi u m%u tr c tuy n (online form). Hình 4. Vi c t o m t tác v khá n gi n.2 mô t nh ng thông tin mà b n có th thu c t* Nh#t ký.17 mô t v Nh#t ký trong DB2 và B ng 4. Chúng tôi khuy n khích b n t mình khám phá Trung tâm Tác v . 4.
ph c h+i.17 – Nh t ký Mô t T t c các công vi c c lên l ch ã c th c hi n và tình tr ng ho t ng c a chúng d li u B n ghi nh v các tác ng lên c s d li u (sao l u. B ng cách khác.v…) Nh#t ký c a các thông i p c ph n h+i t* các công c c a DB2. Ki u thông tin L ch s tác v (Task History) L ch s c a c s (Database History) Thông i p . /i u này r t h u ích n u b n mu n tri u h+i và i chi u các thông i p l i c. nh c mô t trong Hình 4.. v.2 – Các thông tin c mô t trong Nh t ký. ho c n u b n óng h p tho i quá nhanh hay do tr c tr c. Kh i ch y Nh t ký B n có th kh i ng Nh#t ký t* Trung tâm i u khi n (Control Center) b ng cách b m chu t vào Tools -> Journal. b n có th ch y công c này t* trình n Start c a Windows: Start -> Programs -> IBM DB2-> DB2COPY1 -> General Administration Tools -> Journal.18.Nh p môn H qu n tr c s d li u DB2 50 Hình 4. t ch c l i (REORG). L u tr thông i p c p h th ng. Các l i nghiêm tr&ng B n ghi các thông báo c ghi l i ây B ng 4.
và không gian b ng. Khi mà m t s tính n ng c a DB2 c th c thi bên ngoài các tham s ã thi t l#p. Công c Trung tâm tình tr ng phân tích c nh báo tình tr ng trong h thông i v i t*ng th hi n (instance). s. 4. C nh báo: Tình tr ng ch a nghiêm tr&ng. Báo ng: Tình tr ng nghiêm tr&ng yêu c u có các hành ng can thi p ngay l#p t c. c l u ý t i.1 Trung tâm tình tr ng Trung tâm tình tr ng là m t công c + h&a t ng tác v i tác nhân Giám sát tình tr ng. qu n lý không gian. 4. xu t hi n ngo i l . .8 Giám sát tình tr ng (health) Giám sát tình tr ng là m t tác nhân m c nh ch y bên trong b máy DB2. ng i qu n tr c s d li u s.Nh p môn H qu n tr c s d li u DB2 51 Hình 4. không yêu c u s quan tâm ngay l#p t c nh ng có th báo hi u h th ng không còn trong tình tr ng t i u.19 mô t v công c Trung tâm tình tr ng. Hình 4. c s d li u. các ho t ng ct ng hóa ã c nh rõ tr c…). Có 3 ki u c nh báo: 1 1 1 Chú ý: Tình tr ng không bình th ng.8.18 – Kh i ng Nh t kí. giám sát t t c các m t c a tình tr ng c s d li u (b nh . d ng tham s c u hình qu n lý c s d li u Giám sát h thông có th b#t ho c t t s HEALTH_MON.
20 – Kh i ch y Trung tâm s c kh+e Thi t l p c nh báo tình tr ng Môt khi Trung tâm tình tr ng c a b n ã c kh i ng.20. B n c.email hay s máy nh n tin c a nh ng ng i c n ph i liên l c n u xu t hi n c nh báo. B n có th kh i ng Trung tâm tình tr ng t* Control Center b ng cách nh n vào Tools Menu và ch&n Health Center.19 – Công c Trung tâm tình tr ng Kh i ch y Trung tâm tình tr ng.ng có th ch y công c này t* Start -> Programs -> IBM DB2 -> DB2COPY1 -> Monitoring Tools > Health Center.Nh p môn H qu n tr c s d li u DB2 Ch&n th i gian làm m i màn hình Hi u ch-nh các thi t l#p ch. Hình 4.th tình tr ng L a ch&n ki u thông báo s d ng 52 Nh p úp chu t vào b t c l i c nh báo nào thì các chi ti t v thông báo xu t hi n ây Hình 4. b n có th thi t l#p các khai báo cho l i c nh báo (Alert notification) b ng cách nh n vào Health Center menu -> Configure -> Alert Notification nh trong Hình 4. C nh báo tình tr ng cho phép b n nh#p vào danh b v i a ch. .21. /i u này c bi u di0n qua Hình 4.
21 – Khai báo c nh báo .Nh p môn H qu n tr c s d li u DB2 53 Hình 4.
Nh p môn H qu n tr c s d li u DB2 54 5 Ch ng 5 .2 cho th y hình t ng v máy ch d li u DB2 sau khi cài t DB2 Express-C 9 . hãy mô t d n d n t*ng ph n t thành ph n. Hình 5. chúng ta s. Hình 5. c chúng ta th o lu#n trong ch ng này. c s d li u và các file c u hình.Môi tr ng c a DB2 Trong ch ng này.B c tranh t ng th v DB2: Môi tr ng DB2 / mô t môi tr ng DB2.1 mô t các v n bao b i e-líp màu " s. Hình 5. th o lu#n v Môi tr ng DB2: các th hi n.1 .
/ t o m t th hi n DB2 m i. ta s d ng câu l nh: bd2icrt myinst Hình 5.2 – Hình m%u v máy ch d li u DB2 sau khi cài t DB2 Express-C 9 /ây là m t ph n c a quá trình cài t trong môi tr ng Windows. Hình 5. T t c các th hi n này là c l#p v i nhau. Ví d . không làm nh h ng t i các th hi n còn l i. /i u này c mô t b ng m c nh g&i là DB2 (hay “ m t h p màu xanh trong Hình 5. Th hi n này n gi n là m t môi tr ng c l#p trong ó có th ch y các ng d ng và t o ra các c s d li u. ch <instance name> c thay th b i b t c tên nào g+m 8 kí t . m t th hi n có th c dùng l u tr c s d li u cho s n ph m.Nh p môn H qu n tr c s d li u DB2 55 Hình 5. ngh'a là. s d ng câu l nh bd2icrt <instance name>. t o ra m t th hi n ” trên môi tr ng Linux). th hi n khác c dùng ki m tra môi tr ng c s d li u.3 – Th hi n m c $nh DB2 c t o ra. B n có th t o nhi u th hi n trên cùng m t máy ch d li u và s d ng chúng cho các m c ích khác nhau.3.4 cho th y m t th hi n m i tên myinst nh m t h p màu xanh riêng bi t . t o ra th hi n myinst. Ví d . và m t cái khác dùng cho môi tr ng phát tri n. các thao tác th c hi n trên m t th hi n s.
1 – Các l nh DB2 h u d ng trên th hi n.4 – M t máy ch DB2 v i 2 th hi n. trong c a s trung tâm i u khi n. Vài câu l nh trên có th th c hi n thay th thông qua trung tâm i u khi n (Control Center). chuy n Câu l nh Mô t db2start Kh i ng th hi n hi n t i db2stop Ng*ng th hi n hi n t i db2icrt T o m t th hi n m i db2idrop Lo i b" m t th hi n db2ilist Li t kê các th hi n b n có trong h th ng db2 get instance Li t kê các th hi n ho t ng hi n t i B ng 5. Ví d . m t th hi n ph i g n li n v i m t ng i gi a các th hi n. n u b n t o m t c trong th hi n myinst. / li t kê các th hi n. nó s.ng nh s d ng l nh db2stop nh trong hình 5. hay Stop. N u b n s d ng c a s dòng l nh DB2 (DB2 Command Window). do ó. n u b n m r ng th m c Instances và nh n chu t ph i vào th hi n mong mu n. i dùng (v i câu l nh su). b n ch.Nh p môn H qu n tr c s d li u DB2 56 Hình 5. /i u này giúp phân bi t gi a các th hi n khi mà b n mu n k t n i t i m t c s d li u trong m t th hi n nh t nh t* m t máy khách xa. c.c n chuy n i ng B ng 5. b n có th làm b t c th hi n nào c a DB2 tr thành m t th hi n ho t ng b ng cách s d ng m t l nh h i u hành trên môi tr ng Windows: set db2instance = myinst s d li u t* C a s dòng l nh. Chú ý r ng m i th hi n có m t a ch.c ng (port) riêng. b n có th ch&n Start c. gõ l nh: db2ilist Trên Linux.5 .1 mô t vài l nh h u ích trên th hi n i dùng trên Linux. ct o Trong ví d này.ng gi ng nh s d ng l nh db2start t* c a s dòng l nh c a DB2.
Hình 5.Nh p môn H qu n tr c s d li u DB2 57 Hinh 5. và do v#y.5 – Các l nh trên th hi n trong c"a s Control Center / t om tc s dòng l nh DB2: d li u trong m t th hi n ho t ng.m c và nhi u th khác. c t o. b n có th t o nhi u c s d li u. các khung nhìn. th c hi n l nh này t* c a s db2 create database mydb1 / li t kê t t c các c s d li u db2 litst db directory Bên trong b t kì th hi n nào. không chia s2 các i t ng v i các c s d li u khác. ch. ch y l nh: . Các c s d li u là các ch th c l#p.6 mô t m t cách hình t ng c s d li u “MYDB1” c t o ra bên trong th hi n “DB2”. M t c s d li u là m t t#p h p c a các i t ng nh là các b ng.
7 mô t c s d li u m i “MYDB1” . Mô t T o m t c s d li u m i Lo i b" m t c s d li u K t n i t i c s d li u Câu l nh SQL t o ra b ng bi u.2 M t s l nh b n có th s d ng L nh/ Câu l nh SQL c t o trong th hi n “DB2”. Hình 5. l p c s d li u.2 – Các l nh/câu l nh SQL trên c s d li u.6 – C s d li u “MYDB1” B ng 5. th c hi n các l nh sau ây trên c a s dòng l nh c a DB2 db2 set db2 set list db directory db2instance = myinst create database mydb1 db2instance = db2 c t o trong th hi n “ ”.Nh p môn H qu n tr c s d li u DB2 58 Hình 5. N u mu n t o m t c s d li u khác c. khung nhìn.ng có trùng tên (MYDB1) nh ng trong th hi n “ ”.m c t ng ng B ng 5. và ch.
c th o lu#n chi ti t h n trong Ch ng 6. B ng danh m c này c.8 – Không gian b ng ra. T o các i t ng này s. và nh tài nguyên h th ng nh là các 'a và b nh -.ng c t o ra theo m c nh: không gian b ng. Hình 5.Nh p môn H qu n tr c s d li u DB2 59 Hình 5. Không gian b ng s. Khi m t c s d li u c t o. Hình 5. vùng m d li u và các t#p tin nh#t ký (log file).vùng m d li u. c t o m c $nh khi m t C s d li u ct o Không gian b ng SYSCATSPACE ch a các b ng danh m c (Catalog). V c b n. hãy c coi không gian b ng nh là các l p theo logic gi a các b ng logic (logical table). b ng.ng c bi t n trong các h th ng qu n lý c s d li u quan h khác nh là t* i n d li u (data dictionary). m t m t ít th i gian. m t vài i t ng c.7 – C s d li u “MYDB1” trong khung nhìn “ ”. Ki n trúc c a DB2. nh ng hi n t i. b ng này ch a thông tin h th ng mà b n .8 mô t 3 không gian b ng m c nh c t o. ó là lý do t i sao l nh create database yêu c u vài phút x lý.
Các t p nh#t ký s. các i t ng ng trong m t m t ” trong m t c s c mô t nh trong Ph n tr c. B n c. Hình 5.ng gi ng ó. n u b n có m t b ng “nóng”. Vi c t o m t không gian b ng cùng tên “ d li u MYDB1 và m t c s d li u SAMPLE trong th hi n DB2 . do trong m t m t c s d li u này không có liên h nào v i các i t c s d li u khác. ho t ng không chính xác.9. n u không c s d li u c a b n s.ng là các ch th c l#p.nh các 'a và vùng m d li u s d ng. Do ó. c th o lu#n chi ti t h n vào Ch ng 6. ta th y có 2 i t ng khác IBMDEFAULTBP. C coi các t p nh#t ký nh các t p l u t m mà trên ó l nh “autosave” c thi hành. Trang nh và kích th c trang nh s.ng nh xóa i. C. c l#p. chúng ta ã trao i r ng các th hi n là các môi tr ng m t c s d li u trùng tên có th c t o trong các th hi n khác nh các th hi n.9 mô t cách t o không gian b ng MYTBLS1 trong c s d li u MYDB1 c a th hi n DB2.ng có th t o cho riêng mình các không gian b ng khi s d ng câu l nh CREATE TABLESPACE. Trong hình 5. và các t p nh#t ký. Khi b n t o ra m t không gian b ng. b n c. c nói k' h n Ch ng 11: Sao l u và ph c h+i. nh ng luôn luôn ph i có m t vùng m v i kích c( m t trang nh ngang b ng kích th c trang nh c a không gian b ng có s)n. B n có th t o m t hay nhi u vùng m. các thông tin không chc l u tr trên các 'a dành cho c s d li u ó. Khi b n làm vi c trên m t c s d li u. Không gian b ng USERSPACE1 thông th ng c dùng l u tr các b ng c s d li u ng i dùng khi m t b ng c t o ra mà không có không gian b ng riêng bi t l u tr nó. ó là m t b ng c s d ng th ng xuyên. Các t p nh#t ký (log) dùng ph c h+i.ng ch. và do ó. mà trong khi b n ang làm còn có c các t p nh#t ký l u tr t t c thao tác x lý trên d li u y. Ki n trúc c a DB2. Hình 5. cm c nh t o ra: m t vùng m d li u Vùng m d li u v c b n là m t vùng nh c s d ng b i c s d li u.Nh p môn H qu n tr c s d li u DB2 60 không c s a i c.9 – Vùng m d li u và các t p nh t ký. Không gian b ng TEMPSPACE1 c DB2 s d ng khi mà c n thêm không gian cho x lý m t s thao tác nh là s p x p. các c s d li u c. b n có th dùng nh ng 'a nhanh nh t và ph n l n b nh thông qua vi c n nh các c tính này cho không gian b ng. nhau.
10 không mô t các i t ng m c nh khác c a m t c s d li u SAMPLE do gi i h n không gian trong hình v.ng có th t o các i t ng trong không gian b ng nh b ng bi u.10. M t khi b n t o ra m t không gian b ng. Hình 5. khung nhìn và ch. ..Nh p môn H qu n tr c s d li u DB2 61 hình 5.11. /i u này c mô ph"ng nh trong Hình 5. b n c.10 – Vùng b ng có cùng tên trong các c s d li u khác nhau. L u ý r ng hình 5.m c. /i u này là h p l b i vì các c s d li u là riêng bi t.
Nh p môn H qu n tr c s d li u DB2 62 Hình 5. hãy chú ý v trí c a m i chi c h p. D a trên cách tr l i c a b n v m t s câu h"i liên quan n tài nguyên h th ng. Tham s c qu n lý l p c s d li u. cung c p m t danh sách các tham s c a DB2 nên thay i ng v i các giá tr phù h p. M t máy ch DB2 có th c u hình trên 4 c p : . công c h tr c u hình s.Các bi n môi tr ng. s d ng công c tr giúp c u hình c. hãy &c ti p. trong khi các tham s t p c u hình qu n lý c s d li u c thi t l#p l p th hi n . và ng ký lý l ch (profile DB2) c u hình c s d li u c thi t l#p ho c h i u hành ho c l p th hi n. n u không./ ng kí lý l ch DB2. N u b n mu n bi t chi ti t h n v c u hình trên DB2. Ví d .T p c u hình qu n tr c s d li u (dbm cfg). m c c t o trong vùng b ng. 5.12. / k t n i công c tr giúp c u hình thông qua trung tâm i u khi n. . . nh n chu t ph i lên m t c s d li u và ch&n “Configuration Advisor”. .1 C u hình DB2 Ta có th c u hình các tham s c a DB2 b ng cách s d ng công c Configuration Advisor Tool – công c tr giúp c u hình. khung nhìn và ch. các bi n môi tr ng c thi t l#p c p h i u hành c a máy ch .ng giúp b n hoàn thành t t công vi c trên DB2. .11 – B ng. /i u này c mô t trong Hình 5.T p c u hình c s d li u (db cfg). Trong hình. kh i l ng công vi c.
/ làm vi c v i DBM CFG t* Trung tâm i u khi n. thi t l#p th hi n ho t ng là “ ” trên Windows.1 Các bi n môi tr ng Các bi n môi tr ng là các bi n c thi t l#p h i u hành. l a ch&n i t ng th hi n t* th m c c a trung tâm i u khi n.13. Bi n này cho bi t th hi n ang ho t ng mà b n ang làm vi c. b n có th ch y l nh h i u hành sau: set db2instance = myinst 5. và các l nh DB2 b n s. áp d ng n. ho c thông qua Trung tâm i u khi n c a DB2. 5. T p c u hình qu n tr c s d li u có th c xem xét hay s a i b ng cách s d ng dòng l nh. Công vi c này c mô t trong Hình 5. .1.2 T p c u hình qu n tr$ c s d li u (dbm cfg) T p c u hình qu n tr c s d li u (dbm cfg) bao g+m các tham s nh h ng t i th hi n và t t c c s d li u ch a trong ó. Ví d . M t bi n môi tr ng chính là DB2INSTANCE.12 – C u hình DB2.1.Nh p môn H qu n tr c s d li u DB2 63 Hình 5. nh n chu t ph i cho trình n b#t lên và l a ch&n Configuration Parameters.
T* công c dòng l nh. trong Hình Hình 5.Nh p môn H qu n tr c s d li u DB2 64 Hình 5.14 – Danh sách dbm cfg. . thay i m t s tham s yêu c u ph i kh i ng l i th hi n có hi u l c.13 – C u hình dbm t& Trung tâm i u khi n. ngh'a là các thay i s. m t màn hình s. Sau khi ch&n Configuration Parameters. i u này có th th c hi n thông qua các l nh db2stop và db2start. tuy nhiên. Ph n l n tham s là ng. hi n th lên nh 5. có hi u l c ngay l#p t c.14 v i danh sách các tham s dbm cfg.
Vi c này c mô t nh trong Hình 5.3 – Các l nh i u khi n dbm cfg. L nh Mô t db2 get dbm cfg Thu th#p thông tin v dbm cfg db2 update dbm cfg C#p nh#p giá tr c a tham s dbm cfg. 5.15 – C u hình db cfg t& Trung tâm i u khi n.3 T p c u hình c s d li u (db cfg) T p c u hình c s d li u (db cfg) bao g+m các tham s tác ng n t*ng c s d li u.ng có th ng*ng b ng cách nh n chu t lên ch&n Stop hay Start thông qua Control Center. M t th hi n c. / làm vi c v i DB CFG t* Trung tâm i u khi n.1.3 Mô t m t s l nh h u hi u it ng th hi n và l a qu n tr công c dbm cfg t* dòng l nh. N u b n mu n ng*ng m t th hi n ngay l#p t c. using <parameter_name> <value> B ng 5. t t c các ng d ng ph i c ng t k t n i.Nh p môn H qu n tr c s d li u DB2 65 Tr c khi m t th hi n ng*ng. b n có th dùng l nh db2stop force. T p c u hình c s d li u có th xem xét hay s a i b ng dòng l nh.16 v i danh sách các tham s db cfg. Sau khi ch&n Configuration Parameters. trong Hình . m t màn hình s. Hình 5.15. hay thông qua Trung tâm i u khi n c a DB2. nh n chu t ph i cho trình n b#t lên và l a ch&n Configuration Parameters. ch&n i t ng c s d li u t* th m c c s d li u c a màn hình Trung tâm i u khi n. hi n th lên nh 5. B ng 5. hay t m d*ng.
qu n lý db cfg t* dòng l nh. db2set –lr db2set <parameter>=<value> B ng 5.6 M t s bi n Mô t Li t kê t t c các bi n ng ký lý l ch DB2 hi n t i c thi t l#p.16 – C u hình c s d li u. hay t*ng l p th hi n ( nh h ng riêng t*ng th hi n).1. ng ký lí l$ch DB2. B ng 5. c dùng nh t.5 – Các l nh i u khi n B ng 5. 5. Thi t l#p m t giá tr cho m t tham s . ng ký DB2 hay .4 Mô t m t s l nh h u hi u L nh get db cfg for <database_name> update db cfg for <database_name> using <parameter_name> <value> B ng 5. C#p nh#p giá tr cho m t tham s c a db cfg.5 Mô t m t s l nh h u hi u db2set –all L nh i u khi n các bi n ng ký lý l ch DB2.4 * ng ký lý l$ch DB2 (profile). Các bi n ng ký lý l ch DB2 bao g+m các tham s có th trên m t n n c th và có th thi t l#p thành toàn c c ( nh h ng t i t t c th hi n). Li t kê t t c bi n ng ký lý l ch DB2. B ng 5.Nh p môn H qu n tr c s d li u DB2 66 Hình 5.4 – L nh i u khi n db cfg. Mô t Thu th#p thông tin v db cfg c a c s d li u mong mu n.
6 – Các bi n Mô t Ch. 4 ây ch. ch y dòng l nh path\bin\db2envars. / chuy n sang m t b n sao DB2 ã cài khác.Nh p môn H qu n tr c s d li u DB2 67 Bi n ng ký DB2COMM DB2_EXTSECURITY DB2_COPY_NAME B ng 5. kh i ng khi b t u công c qu n tr c s d li u. L u tr tên c a b n sao DB2 hi n t i ang dùng.có m t DAS trên m i máy tính nh trên Hình 5. ng ký DB2 hay c dùng. Bi n này không th dùng cho m c ích này. cho phép giao ti p s d ng giao th c TCP/IP.nh nh ng qu n tr giao ti p s. .16.2 Máy ch qu n tr$ DB2 Máy ch qu n tr DB2 (DAS) là m t quá trình n n ch y trên máy ch DB2 cho phép các máy khách t* xa có th qu n tr máy ch DB2 thông qua công c + h&a.16 – Máy ch qu n tr$ DB2 (DAS). Hình 5. Trên Windows. ng ký Ví d .bat. thi t l#p bi n DB2COMM thành TCPIP nh d i: db2set db2comm = tcpip 5. ng n ch n nh ng ng i ch a c nh danh k t n i t i DB2 b ng cách khóa t p tin h th ng DB2.
1 – Mô hình x" lý c a DB2 . Khi m t ng d ng trên máy tr m k t n i n máy ch b ng l nh SQL CONNECT. N u ng d ng ó là c c b (ch y trên cùng máy ch v i DB2). th o lu#n nh ng nét chính v . Trong hình. Các tác nhân khác nh db2pfchr. db2dlock c. m t tác nhân db2 có th sinh ra các tác nhân khác (db2agntp).Nh p môn H qu n tr c s d li u DB2 68 6 Ph n II – H c DB2: Qu n tr$ C s d Ch ng 6 . Hình 6.Ki n trúc c a DB2 li u Trong ch ng này chúng ta s. các b c r t gi ng nhau. Tác nhân DB2 có ch c n ng th c hi n các thao tác thay cho DB2. nh#n c yêu c u này và liên l c v i m t tác nhân k t h p DB2 (DB2 coordinator agent).Mô hình l u tr c a DB2 6.Mô hình b nh c a DB2 . ch. các b i k t n i (listener) cho giao th c truy n thông s.ng có th c s d ng cho nh ng m c ích khác nhau. nh khi x lý song song.1 Mô hình x" lý c a DB2 Hình 6. và bên ph i t ng tr ng cho máy ch (server machine).1 mô t mô hình x lý c a DB2.1. Nh ng x lý thông d ng nh t c mô t trong b ng 6. db2loggr. bên trái ng th!ng ng màu xanh t ng tr ng cho m t máy tr m t* xa (remote client machine). Trong vài tr ng h p.Mô hình x lý c a DB2 .có tác nhân db2ipccm x lý yêu c u thay cho db2tcpcm.
Nh p môn H qu n tr c s d li u DB2 69 Mô t X lý c a th hi n c s d li u (m t x lý cho m t th hi n). k t h p công vi c c a các tác nhân con db2agntp. db2agent s. S.Các x" lý thông d ng c a DB2 6.1. th c thi các thao tác c s d li u thay cho ng d ng. db2pfchr B &c d li u nh#p/xu t b t +ng b (NUM_IOSERVERS). Tác nhân k t h p th c thi nh ng thao tác c s d li u thay cho các ng d ng (ít nh t m t ti n trình trên m t k t n i. B ng 6. m c c li u và m c ng d ng và tác nhân (hình 6. db2agntp ng c sinh ra n u tr ng Tác nhân con ch INTRA_PARALLEL là YES. db2pclnr B ghi d li u nh#p/xu t b t +ng b (NUM_IOCLEANERS). Truy n thông/listener TCP/IP.2 Mô hình b nh c a DB2 Mô hình b nh DB2 g+m nhi u vùng nh khác nhau t i m c th hi n. s d Tên x" lý db2sync db2tcpcm db2agent .2). ph thu c vào b t#p trung k t n i có c kích ho t không).
&c chúng t* 'a vào vùng m. M t ph m vi là m t nhóm các trang. 16K và 32K. do v#y DB2 làm vi c v i các ph m vi t i m t th i i m. Kích th c c a trang và ph m vi c nh ngh'a khi làm vi c v i vùng nh m và các không gian b ng nh trong ph n ti p theo. L n u tiên k t n i n c s d li u.3. mô t nh ng khái ni m sau: . T i m t th i i m n u ch.Trang và ph m vi . C.2 – Mô hình b nh c a DB2 Khi b t u m t th hi n. Kích th c c a vùng m quy t nh l n c a toàn b vùng nh toàn c c c s d li u. N u s d ng b t#p trung k t n i. c n n.3 Mô hình l u tr c a DB2 Trong m c này chúng ta s. Trong kh i này. 6. 6. T o m t vùng m Có th dùng l nh CREATE BUFFERPOOL t o vùng m.Không gian b ng 6. và ít nh t m t vùng m phù h p cho m t không gian b ng có kích th c trang ã bi t. 16K.Vùng nh m .1 Trang và ph m vi Trang là n v l u tr nh" nh t c a DB2.ng có th vào trung tâm i u khi n. c bi t khi c n c i thi n vi c th c thi truy v n. vùng m (buffer pool) là m t trong nh ng thành ph n quan tr&ng nh t. Nên có ít nh t m t vùng m trên m t c s d li u. Có ngh'a là DB2 oán tr c trang nào s. N u không dùng b t#p trung k t n i thì m i k t n i c n m t tác nhân. và 32K.3. vùng nh toàn c c c s d li u s. nhi u k t n i có th dùng chung m t tác nhân. .3. Vùng nh riêng tác nhân là vùng nh c s d ng cho m i tác nhân DB2. 8K.làm vi c v i m t trang thì lãng phí kh n ng th c thi. gi m nhu c u s d ng b nh v#t lý. 8K. v i các kích th c 4K.Nh p môn H qu n tr c s d li u DB2 70 Hình 6. Vùng m c c p phát v i các n v nh là các trang 4K. M t tác nhân s d ng kho ng 3–5MB. vùng nh chia s2 qu n lý c s d li u c c p phát. Nó c i thi n th c thi b ng cách gi m nh#p/xu t tu n t tr c ti p và nâng c p &c ghi không +ng b . nh n chu t ph i lên th m c Buffer pool trong c s d li u ã bi t và ch&n Create nh trong hình 6.2 Vùng nh m M t vùng nh m là vùng nh th c (real cache) cho d li u b ng và ch. Th ng vùng nh này không nhi u. nên chúng s)n sàng c s d ng.m c. c c p phát.
3 – T o m t vùng m .Nh p môn H qu n tr c s d li u DB2 71 Hình 6.
4 . S l ng trang không th l n h n 98% s l ng trang c a vùng m. Cách này có th c i thi n vi c th c thi.5.H p tho i t o vùng m Ph n l n các m c trong hình 6.4 c t gi i thích.4. vô hi u hóa nh#p/xu t kh i. nó s. Các tr ng ‘Non-blocked’ và ‘Blocked’ ch. h p tho i Create Buffer Pool xu t hi n nh trong hình 6.Nh p môn H qu n tr c s d li u DB2 72 Sau khi ch&n Create. / c bi t. Hình 6. M i l n vùng trong hình 6.nh s l ng trang t+n t i là không óng kh i (non-blocked) hay óng kh i (blocked). giá tr 0 s.ng liên t c trong m t vùng óng kh i. m c t o ra. c trình bày trong trung tâm i u khi n nh . Vùng m d a trên kh i b o m r ng các trang liên t c trên 'a di chuy n vào vùng m c.
Nh p môn H qu n tr c s d li u DB2 73 Hình 6. T m th i Có hai lo i không gian b ng t m th i: - . - L n Lo i này c s d ng tùy ch&n phân chia các d li u LOB v không gian b ng c a nó. Nó c.5 – Trung tâm i u khi n sau khi t o vùng m ‘SAMP16K’ 6. 16KB. or 32KB).3 Các không gian b ng Không gian b ng là m t là m t giao di n logic gi a các b ng logic và các vùng nh c a h th ng (bao g+m vùng nh m và các 'a). 8KB. Ví d nh USERSPACE1 là m t c t o ra m t cách m c nh. Các không gian b ng lo i l n là m c nh. B n có th s d ng câu l nh CREATE TABLESPACE t o m t không gian b ng mà b n c t : • • • • Kích th c trang c a không gian b ng (4KB.ng c s d ng l u tr các d li u XML t o ra các CSDL có h tr PureXML – s d ng UNICODE và XML làm ki u c a các c t. Tên c a vùng m mà liên k t v i không gian b ng Kích th c c a ph m vi Kích th c n p tr c c Các lo i không gian b ng Có ba lo i không gian b ng: Thông th ng Lo i này dành cho các b ng c a ng không gian b ng thông th ng vì nó i dùng. Kích th trang này ph i t ng ng v i kích th c trang c a vùng m.3.
c n ph i ch. Vi c qu n lý òi h"i s can thi p c a ng i qu n tr c s d li u. d li u LOB không th c tr i trên các không gian b ng khác nhau. u tiên b n c n t o m t CSDL v i ch c n ng l u tr t ng c kích ho t (m c nh) và liên k t các ng d%n l u tr t i nó (CSDL). không c n h th ng t p c a h i u hành). ch. Chúng th ng hay b nh m l%n v i các không gian b ng t m th i c a h th ng. Do ó trong DB2 9.Nh p môn H qu n tr c s d li u DB2 74 Không gian b ng t m th i c a h th ng /ây là lo i không gian b ng c s d ng b i DB2 cho các thao tác n i b (h th ng) nh s p x p. Sau ó b n có th t o các không gian b ng s d ng l u tr t ng ( ây là ch m c nh) Ví d l u tr t ng . DMS có hi u c n m trên các không gian Không gian b ng c qu n lý t ng Lo i không gian b ng này c qu n lý b i b nh t ng. Không gian b ng t m th i c a ng i dùng /ây là lo i không gian b ng c s d ng t o ra các b ng t m th i toàn c c do ng i dùng nh ngh'a. d li u. Không gian b ng lo i này không cc p phát tr c. /i u này có ngh'a là h i u hành s. d li u c ghi tr c ti p mà không qua b m c a h i u hành. Ví d TEMPSPACE1 là không gian b ng c t o ra t ng khi b n t o m t CSDL. Các ch ch a ct ot ng theo các ng d%n. thay su t t t nh t. Vi c t ng kích th c hay b sung thêm ch ch a m i hoàn toàn do DB2 qu n lý. i kích th c. V i các thi t b thô. ch. / cho phép l u tr t ng. M t khi b n ã xác nh cc nh lúc t o ra và không th thay i v các ch ch a (th m c). ng i dùng ch.m c hay d li u LOB có th b ng khác nhau nâng cao hi u su t. Các ch ch a (h th ng t p) có th c thêm. Các ch ch a (container) có th là các t p cc p phát tr c ho c các thi t b thô (thi t b thô c hi u nh thi t b l u tr c ghi theo nh h ng ký t . qu n lý lo i không gian l u tr này. b". Qu n lý các không gian b ng Các không gian b ng có th c phân lo i theo cách qu n lý. ây là lo i không gian b ng m c nh. Chúng d0 dàng c qu n lý và c ch a trong các th m c h th ng t p. /i u này có ngh'a là DB2 s. n u c n thi t b n có th tái nh ngh'a các ng d%n l u tr b ng cách s d ng thao tác RESTORE c s d li u. nh ng l i có hi u su t t t và tính linh ho t c a không gian b ng DMS. vì d li u. ích l i c a chúng là s d ng t ng t nh các không gian b ng SMS. Không ph i nh ngh'a t ng minh ch ch a. Khi s d ng các không gian b ng SMS. tr* khi vi c ph c h+i tái nh h ng u c dùng. Vi c này có th nh trong câu l nh CREATE TABLESPACE c ch- Không gian b ng c qu n lý b i h th ng Lo i không gian b ng này c g&i là System Managed Storage (SMS). sau. V i lo i không gian b ng này.m c. nh ng dung l ng các t p c t ng lên t ng.ra nhóm các thi t b l u tr logic. nó là m t không gian b ng t m th i c a h th ng. Không gian b ng c qu n lý b i CSDL Lo i không gian b ng này c g&i là Database Managed Storage (DMS). Sau khi t o xong. qu n lý không gian nh này. thì chúng s.
c ghi vào m t 'a tr c khi ghi vào 'a ti p theo. và kích th c t i a có th t ng n. s d ng 3 ch ch a thô trong không gian b ng DMS. Ví d n u b n có m t không gian b ng 4K v i kích th c m r ng là 8. CREATE TABLESPACE TS1 INITIALSIZE 500 K INCREASESIZE 100 K MAXSIZE 100 M D li u c l u tr nh th nào trong không gian b ng Theo m c nh.nh m t cách t ng minh cho không gian b ng: CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE L u tr t ng c ch. Chú ý r ng các b ng không chia s2 các ph m vi.Nh p môn H qu n tr c s d li u DB2 75 / u tiên. /data/path2 L u tr t ng không c phép: CREATE DATABASE DB1 AUTOMATIC STORAGE NO Ti p theo.nh không t ng minh.6 – Ghi d li u vào không gian b ng . DB2 s.ra: Hình 6.6.nh t ng minh: CREATE DATABASE DB1 AUTOMATIC STORAGE YES ng c cho phép theo m c nh nh ng ng d%n L u tr t CREATE DATABASE DB1 ON /data/path1.ra trong Hình 6. i u này có ngh'a r ng 32K d li u (4K x 8 trang trên m t ph m vi = 32K) s. chúng ta t o không gian b ng v i l u tr t ng c cho phép theo các ví d sau: L u tr t ng cho không gian b ng c cho phép theo m c nh: CREATE TEMPORARY TABLESPACE TEMPTS L u tr t ng c ch. hãy t o m t CSDL v i l u tr t ng c cho phép theo các ví d sau: nh: L u tr t ng c cho phép theo m c CREATE DATABASE DB1 L u tr t ng c ch. cc p c ch. kích th c ban u phát. kích th c t ng theo t*ng l n. ghi vào các ph m vi 'a (disk extent) t i th i i m chia b ng (stripe) qua các ch ch a. /i u này c ch.
Tr giúp t*ng b c t o không gian b ng s.8 – T o m t không gian b ng s" d ng tr giúp . Hình 6.7 – T o không gian b ng t& trung tâm i u khi n Hình 6.8. kích chu t ph i vào th m c Table Spaces trong CSDL c ch&n và ch&n Create theo Hình 6.7. xu t hi n nh Hình 6.Nh p môn H qu n tr c s d li u DB2 76 T o không gian b ng s" d ng trung tâm i u khi n / t o m t không gian b ng t* trung tâm i u khi n.
1 Nh ng cài Có hai vi c c n 1) Bi n DB2COMM t b t bu c trên máy ch c thi t l#p t i máy ch : .Nh p môn H qu n tr c s d li u DB2 77 7 Ch ng 7 – K t n i máy khách DB2 Ch ng này trình bày các b c thi t l#p c n thi t k t n i t* máy khách DB2 n máy ch DB2 s d ng giao th c TCPIP. tuy nhiên.1 . Hi n t i có m t s cách khác nhau thi t l#p k t n i máy khách DB2.ng có hành vi c a m t máy khách khi k t n i n m t máy ch DB2 khác. Hình 7. b n có th d0 dàng c u hình k t n i gi a m t máy khách DB2 và m t máy ch DB2. Chú ý r ng m t máy ch DB2 c. N u s d ng dòng l nh.1 mô t công c tr giúp c u hình. 7. trong ph m vi c a ch ng này chúng ta ch.Công c tr giúp c u hình 7.ng c xem nh m t thành ph n máy khách. b n có th b t u công c này b ng cách s d ng l nh db2ca. Hình 7.1. b n có th ch&n: Start -> Programs -> IBM DB2 -> DB2COPY1 -> Set-up Tools -> Configuration Assistant.th o lu#n m t ph ng th c n gi n nh t ó là s d ng công c Tr giúp c u hình (Configuration Assistant). / th c thi Tr giúp c u hình trên Windows. vì th máy ch DB2 c.1 Tr giúp c u hình S d ng giao di n tr c quan c a công c Tr giúp c u hình.
ch&n Configure -> DB2 Registry nh c mô t trong Hình 7. Khi thay i giá tr c a tham s này. / xem và thay i giá tr c a bi n DB2COMM trong tr giúp c u hình.3 – Ki m ch ng giá tr$ c a bi n DB2COMM trong DB2 Registry 2) Bi n SVCENAME .2 – Truy c p DB2 Registry Hình 7. h th ng c n c kh i ng l i.3 Hình 7.2 và Hình 7. B giao th c TCPIP là b các giao th c truy n thông c s d ng ph bi n nh t.Nh p môn H qu n tr c s d li u DB2 78 Bi n ng kí này xác nh giao th c truy n thông c s d ng l ng nghe các yêu c u n t* máy khách.
c thi t l#p n tên d ch v (nh c nh ngh'a trong t p d ch v TCPIP) ho c n s hi u c ng giao ti p s d ng khi b n mu n truy c#p c s d li u c a th hi n này. /i u này c mô t trong Hình 7.ng có th s d ng tên c a d ch v .Nh p môn H qu n tr c s d li u DB2 79 Tham s dbm cfg s. T* công c tr giúp c u hình.5 – Xem xét tham s dbm cfg c a SVCENAME 7. và tìm ki m tên SVCENAME.4 – Xem xét dbm cfg t& Tr giúp c u hình M t khi b n ã vào trong c a s c u hình c a DBM. tìm n m c Communications. B n có th thay i giá tr c a SVCENAME thành m t chu i hay thành s hi u c ng giao ti p khi c n thi t. B n c.1. mi0n là t+n t i m t th c th t ng .4 Hình 7.2 Nh ng cài t c n thi t trên máy khách T i máy khách. b n c n bi t nh ng thông tin sau: 1. ch&n Configure -> DBM configuration nh c mô t trong Hình 7. S hi u c ng giao ti p c a th hi n DB2 t i máy ch n i c s d li u c cài t. Tên c s d li u mà b n mu n k t n i n 2.5 Hình 7.
6 Hình 7. ID Nh ng thông tin trên có th c nh#p vào t* máy khách DB2 s d ng Configuration Assistant.6 – S" d ng ch c n ng Add Database Wizard B n c.7 – Thêm CSDL (Add Database Wizard) Trong Add Database Wizard.ng có th th c hi n ch c n ng này b ng cách nh p chu t ph i vào vùng tr ng trong c a s tr giúp c u hình và ch&n “Add Database Using Wizard”. nh c mô t trong Hình 7.7 mô t ch c n ng Add Database Wizard: Hình 7. / u tiên.Nh p môn H qu n tr c s d li u DB2 80 ng trong t p d ch v TCPIP 3. có ba tùy ch&n: . th c hi n ch c n ng Add Database Wizard b ng cách kích ch&n Selected -> Add Database Using Wizard. ID c a ng i dùng h th ng và m#t kh u c a ng i s d ng này c n c nh ngh'a tr ng nh#p vào c c t i máy ch s d li u. Hình 7.
/i u này có th c ng n ch n t i c p DAS. vì nó s. c p th hi n hay c s d li u. yêu c u DB2 tìm ki m h th ng m ng t ng ng v i m t máy ch . n u b n ch&n “Use a Profile”. ng i qu n tr h th ng không mu n các máy khách c tìm ki m trên m ng v i c s d li u l u tr nh ng thông tin c n b o m#t. Hình 7. và l u c u hình này vào trong m t t p “lý l ch”. DAS ph i c ch y trên m i máy ch DB2 n i mà c s d li u c tìm th y. b n có th n p t t c thông tin tr c ti p n nh ng máy khách khác. / ph ng pháp này ho t ng.7.8 - Hai ph Hình 7.Nh p môn H qu n tr c s d li u DB2 81 S" d ng lý l$ch (Profile) Có th xãy ra nhi u tình hu ng khi b n c n nh c u hình nhi u máy khách k t n i n cùng m t máy ch DB2. n p thông tin t* m t “lý l ch” ang t+n t i. ng pháp c minh h&a trong Hình 7. Ph ng pháp này không c khuy n khích s d ng n u h th ng m ng c a b n l n và có nhi u b t#p trung m ng (Hub/Switch). mô t cách t o lý l ch cho máy khách và máy ch . tùy ch&n này thu#n ti n th c hi n t t c các c u hình t* m t máy khách.mà b n cung c p.ng c bi t n nh “S khám phá” (Discovery). Trong nh ng tình hu ng nh v#y. . có hai cách th c hi n vi c tìm ki m: Tìm ki m (Search): Tìm ki m trên toàn b h th ng m ng. th hi n và c s d li u cho tr c. V i t p này. m t nhi u th i gian truy v n d li u t* m i h th ng /ã bi t (Known): Tìm ki m trên h th ng m ng cho m t máy ch ã bi t t i a ch. Tìm ki m trong h th ng m ng Ph ng pháp này c. b n s.8 – Ph ng pháp tìm ki m Search và Known Trong m t s tr ng h p. Trong Hình 7.9 cung c p chi ti t v v n này. V i ph ng pháp này. Chi ti t c a tùy ch&n c cung c p trong m c sau c a ch ng này s.
n i s.10 n .c n thi t l#p cho m t máy duy nh t.9 – C u hình các tham s cho phép dùng S khám phá (discovery) Hình 7. / t o m t lý l ch tùy ch-nh theo yêu c u.3 T o lý l$ch cho máy khách và máy ch N u b n ang c u hình cho m t s l ng l n máy ch hay máy khách. Quá trình xác minh thông tin c m c nh th c hi n trên máy ch DB2 mà b n ang c g ng k t n i n. b n ph i cung c p m t ID ng i dùng cùng v i m#t kh u ã c nh ngh'a trên máy ch ó.9 mô t nh ng c p khác nhau trong ó b n có th cho phép hay ng n c n s DAS. b n có th gán tham s cho tr c DISCOVER m t d ng S khám phá.1. kích vào trình Configure.ng có th c thi t l#p là ENABLE hay DISABLE. C u hình m t cách th công k t n i n c s d li u S d ng ph ng pháp này. t* Tr giúp c u hình. Vi c thi t l#p nh ng tham s này m t cách h p lý s. sau ó ch&n Export Profile -> Customize. T ng t . 7. b n th c hi n th công vi c thêm tên máy ch . tham s dbm cfg là DISCOVER_INST có th c thi t l#p thành DISABLE hay ENABLE. sau ó xu t ra m t lý l ch (xu t t p c u hình ch!ng h n). b n ph i ch c r ng ID và m#t kh u b n cung c p k t n i n i t* xa n c s d li u là úng. bi t nó không úng khi b n không k t c n máy ch . b n có th ch. nh c mô t trong Hình 7. s hi u c ng giao ti p và thông tin v c s d li u cho công c Tr giúp c u hình. cung c p cho b n cách th c tìm ra c s d li u. t i c p c s d li u. tham s DISCOVER_DB c. T i c p giá tr là SEARCH hay KNOWN. h n n a vi c thi t l#p cho m i máy c l#p nhau. /i u này giúp ti t ki m r t nhi u th i gian cho ng i qu n tr h th ng khi thi t l#p môi tr ng. Công c Tr giúp c u hình s. Chính b n s. T i c p th hi n. vì v#y. khi ó áp d ng lý l ch này n các máy khách/ máy ch khác. Cu i cùng.Nh p môn H qu n tr c s d li u DB2 82 Hình 7. phát sinh ra “danh m c” câu l nh th c thi vi c c u hình k t n i. không ki m tra thông tin có chính xác không.
11 mô t nh ng tr ng c n c hoàn thành xu t m t lý l ch Hình 7.nh xu t lý l$ch Hình 7.Nh p môn H qu n tr c s d li u DB2 83 Hình 7.11 – H p tho i tùy ch.12 mô t k t qu sau khi kích “Export” trong h p tho i Customize Export Profile.10 – Xu t m t lý l$ch Hình 7. .
12 – Xu t k t qu lý l$ch / nh#p m t lý l ch ã c tùy ch-nh t* Tr giúp c u hình. nh c mô t trong Hình 7. kích vào trình sau ó ch&n Import Profile -> Customize.Nh p môn H qu n tr c s d li u DB2 84 Hình 7.13 – Nh#p m t lý l ch Hình 7.13 n Configure. Hình 7.14 mô t nh ng tr ng c n c hoàn thành nh#p m t lý l ch .
nh .Nh p môn H qu n tr c s d li u DB2 85 Hình 7.14 – Nh p lý l$ch c tùy ch.
Nh p môn H qu n tr c s d li u DB2 86 Bài t p nhanh #4 – S" d ng Tr giúp thi t l p c u hình M c tiêu Ch ng trình Tr giúp thi t l#p c u hình có th c s d ng c u hình các k t n i c s d li u t* xa m t cách nhanh chóng và d0 dàng. M ch ng trình Tr giúp thi t l#p c u hình (M7o: ch c#p thông qua l nh Start) 3. Th t c 1. DB2 th c hi n t t c các quá trình giao ti p m t cách th m l ng. 5. Trong bài t#p nhanh này. H"i ng i bên c nh (hay ng i h ng d%n b n) các thông tin sau ây : Thông tin c s d li u t* xa: (PR) Giao th c _TCPIP__ (IP) / a ch. có th truy c#p c s d li u này gi ng nh là nó ang ngay trên h th ng máy c a mình. M t khi c s d li u ó ã c li t kê. B n c n ph i thêm m t m c vào t#p tin này n u b n mu n s d ng tùy ch&n trên. Trong trang TCP/IP c a trình tr giúp. nh#p vào tên y a ch. Ghi chú: Tùy ch&n Service Name có th c s d ng n u b n có m t m c (entry) trong t#p tin Services n i b v i m t c ng có s c nh ngh'a d a trên c ng mà máy ch t* xa ang l ng nghe. s d ng c hai cách Tìm ki m và Khám phá).d%n cho công vi c c u hình d i ây k tn i n chính h th ng c a b n. DB2 s.Trong môi tr dòng l nh . b n s. t o ch. b n luôn có th s d ng chính máy tính c a mình v*a làm máy ch v*a làm máy khách và làm theo các ch. ch&n m c TCP/IP. ng Windows. tìm ki m trong t#p tin d ch v trên máy c a b n ch không ph i trên máy ch . M b ng ch&n Selected và ch&n m c Add Database Using Wizard 4.m c cho m t c s d li u n m trên m t máy ch DB2 xa (remote DB2 server c th hi n b ng máy tr m c a ng i ng+i bên c nh b n. N u không ph i nh v#y. b n s. Nh n nút Next chuy n n trang ti p theo c a trình tr giúp.IP hay tên máy ch _________ (PN) S c ng c a th hi n (instance) _________ (DB) Tên c a c s d li u _SAMPLE_ Các m7o : . .IP mà b n ã ghi l i trong b c 1. Khi b n s d ng tùy ch&n này. Trong trang Protocol c a trình tr giúp. Ghi chú Bài t#p nhanh này gi nh r ng b n ang làm vi c trong 1 m ng máy tính. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Trong trang Source c a trình tr giúp.IP ta gõ l nh ipconfig t* c a s ng trình này có th truy 2. di c a máy ch ho c là 6. ch&n m c Manually Configure a Connection to a Database. Nh#p vào s c ng b n ã ghi trong b c 1. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp.Trong môi tr dòng l nh ng Windows. l y tên c a máy ta gõ l nh hostname t* c a s l y a ch.
B i vì b n ã có m t c s d li u trên máy c a mình c nh ngh'a s)n v i tên là SAMPLE. hãy i bí danh c s d li u thành SAMPLE1.Nh p môn H qu n tr c s d li u DB2 87 7. 9. M trung tâm i u khi n và th xem nh ng b ng khác nhau trong c s d li u t* xa v*a m i c t o danh m c 13. Trong ví d này. Làm t*ng b c trong trình tr giúp gi ng nh b n ã c u hình k t n i b ng tay. 8. Vi c này s. s c xác l#p b i tham s AUTHENTICATION trong t#p tin d ng ph ng th c c u hình c a th hi n (instance) xa. Vì th b n ph i s d ng m t tên bí danh khác. N u vi c th k t n i thành công. s d ng s d li u này. không s d ng ODBC. m b o tên ng i dùng và m#t kh u mà b n cung c p là h p l trên máy ch xa (b i vì có th tham s AUTHENTICATION c a máy ch c t giá tr là SERVER). Trong trang Node Options c a trình tr giúp. Trong ví d này. B n có th nh#p vào m t l i chú thích tùy ý v c s d li u này n u b n mu n. M t h p tho i xác nh#n s. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. trên nh ng m ng l n. Nh n nút Test Connection m b o b n có th k t n i thành công n c s d li u. B i vì t t c các máy tr m trong phòng máy này u s d ng Microsoft Windows. t n th i gian tr v các k t qu . DB2 s. 10. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. nh#p vào tên c a c s d li u c nh ngh'a trên máy ch t* xa mà b n ã ghi l i trong b c 1 tr ng Database Name. t ng ng ký c s d li u ó trong ch ng trình qu n lý ODBC c a Windows (Windows ODBC Manager) cho b n. l n này s d ng tu ch&n Search the Network. N u tr ng này ch a c t thì hãy t giá tr cho nó là DB2. Nh n nút Next di chuy n n trang ti p theo c a trình tr giúp. Tr ng Instance name nên c t là DB2. Thêm vào ó. Trang Security Options c a trình tr giúp cho phép b n xác nh n i b n mu n vi c xác th c ng i dùng x y ra và ph ng th c b n mu n s d ng. Quay tr l i ch ng trình Tr giúp thi t l#p c u hình và th t o danh m c v i m t c s d li u khác. Ch&n m c Use authentication value in server’s DBM Configuration. không cho phép b n t o tên m t c s d li u khác có cùng tên. b" d u ánh m c “Register this database for ODBC” t i vì b n s. xác nh h i u hành c a máy ch n i mà c s d li u t* xa ang n m t i ó. b n ã t o danh m c c s d li u xa m t cách thành công. b n hãy quay tr l i trình tr giúp và m b o r ng t t c các giá tr ã c xác l#p úng (Nh n nút Change quay l i nh ng cài t trong trình tr giúp) 12. b n có th (không b t bu c) ng ký c s d li u (ngu+n d li u) m i này nh m t ngu+n d li u ODBC. hi n ra. vi c tìm ki m có th s. Trong trang C s d li u c a trình tr giúp. Bí danh c s d li u (database alias) là m t cái k tn i nc tên mà nh ng ng d ng n i b trên máy c a b n s. Trong trang Data source c a trình tr giúp. L u ý r ng. N u vi c k t n i không thành công. Nh n nút Finish t o danh m c c s d li u t* xa và óng trình tr giúp l i. Trang System Options c a trình tr giúp cho b n c h i m b o r ng h th ng và tên máy ch ã c i n chính xác và xác nh#n nh ng cài t c a h th ng. 11. / ý vi c tr ng Database Alias c i n m t cách t ng v i cùng giá tr ó nh th nào. Cách làm này s. hãy m b o r ng m c Windows trong danh sách s xu ng c ch&n.
là arfchong. CHAR (1) not null. T t c các i t ng d li u trong DB2 có hai ph n tên theo tiêu chu n.d%n c a quy n s h u các quan h i v i m t ng d ng. và ch ng 15. c th o lu#n trong ch ng 14. 8. Gom nhóm các i t ng có m i quan h v i nhau. UDFs. Ví d . 8. Khi b n k t n i c s d li u và t o hay tham chi u n m t i t ng mà không nh rõ tên s +. l y mã tài kho n mà b n k t n i v i c s d li u làm tên s +.artists.1 S S + là không gian tên (name spaces) cho t#p h p các chính c a chúng nh sau: it ng d li u. BLOG (2M) not logged compact . d ng b ng (table). SQL PL l u tr các th t c. s ph n u tiên c a tên: <tên_s >. ch. khung nhìn (view).Nh p môn H qu n tr c s d li u DB2 88 8 Ch ng 8 . Ch c n ng it ng hay các m i Cung c p cho b n các ch.<tên_ i t ng> + là n a Tên i t ng theo quy chu n ph i là duy nh t. CLOB (100K) logged. trong dòng SQL PL. Triggers.Làm vi c v i các it ng d li u Ch ng này th o lu#n các i t ng d li u nh là d ng s + (schemas). Phát bi u bên d i cung c p cho b n ví d v vi c làm cách nào t o ra m t b ng b ng cách s d ng phát bi u CREATE TABLE CREATE TABLE artists { artno name classification bio picture } SMALLINT not null. và t o m t b ng b ng cách s d ng phát bi u CREATE TABLE CREATE TABLE artist … Tên theo quy chu n y c a b ng c t o ra s. DB2 s. n u b n k t n i d li u m%u v i tên s d ng là “arfchong”.m c (indexes). chu i (sequences)… M t s các i t ng d li u cao c p nh là các b%y s ki n (triggers). các hàm do ng i dùng nh ngh'a (UDFs) và nh ng th t c c l u tr s.2 B ng M t b ng là m t t#p h p các d li u có m i quan h v i nhau m t cách h p lý theo các c t và hàng. VARCHAR (50) with default ‘abc’.
ra trong hình 8. 8. hay các t#p tin c ch.1 – Các ki u d li u c a DB2 Các ki u d li u i t ng l n (LOB) Các ki u d li u i t ng l n c dùng l u tr các chu i lý t l n. các chu i nh phân l n. chúng ta có th mô t các ph n chính c a phát bi u CREATE TABLE này.Nh p môn H qu n tr c s d li u DB2 89 In mytblsl Trong các ph n ti p theo ây.1 Danh sách các ki u d li u c h tr trong DB2 Hình 8.1 Ki u d li u Hình 8.2 .2.
M nh WITH COMPARISIONS c nh ngh'a nh là ph n cú pháp ch.Nh p môn H qu n tr c s d li u DB2 90 Hình 8. UDTs c dùng khi: Có nhu c u thi t l#p ng c nh cho các giá tr Có nhu c u c n ép ki u d li u DB2. /i u này c xem nh là vi c có b ki u d li u do ng i dùng t nh ngh'a (UDTs). Các phát bi u theo sau âu mô t m t ví d v vi c s d ng UDTs nh th nào và khi nào CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISIONS CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISIONS CREATE TABLE person { F_name VARCHAR (30). và i t ng ký t l n 2 byte c. có 2 UDTs c t o ra là: POUND and KILOGRAM. Weight_k KILOGRAM NOT NULL } Trong ví d này. Các ki u d li u c $nh ngh-a b i ng i dùng DB2 cho phép b n có th t nh ngh'a ki u d li u c a chính mình. C hai u c xây ng d a trên ki u d li u s)n có c a h th ng INTEGER.ra r ng vi c thay các hàm v i cùng tên c.2 – Các ki u d li u LOB Các i t ng ki u nh phân l n này th ng c vi t t t cho d0 hi u: M t i t ng nh phân l n ph i là m t BLOB. Weight_p POUND NOT NULL. m t i t ng ký t l n là CLOB. B ng person dùng 2 UDTs m i trong c t weight_p và weight_k theo tu n t . N u bây gi chúng ta a ra phát bi u sau: SELECT F_NAME FROM PERSON WHERE weight_p > weight_k . d a trên ki u d li u c a h th ng. c t o ra.ng gi ng nh vi c các ki u d li u s.ng c bi t nh là DBCLOB.
so sánh gi a pound và kilogram? Nó s. ng.2. Các ng d ng thì không c phép cung c p nh ng giá tr c th .nh giá tr m c nh cho c t n u NOT NULL c khai báo.Nh p môn H qu n tr c s d li u DB2 91 B n s. thì DB2 s. c nh Có hai cách t o ra giá tr cho c t khoá chính. vô b i vì trong cu c s ng th c. SALARY DECIMAL (7. Trong ví d k ti p. Th#m chí weight_p và weight_k dùng d li u là POUND và KILOGRAM. YEARS SMALLINT. làm th nào lý. DEPT SMALLINT NOT NULL with default 10.ng có th ch. Tuy nhiên b ng vi c t o UDTs thì b n không th th c hi n lo i so sánh này. /i u này m b o r ng c t này s. vì th b n s. c hai tr ng này u c d a trên ki u d li u là INTEGER.có m t c t khoá chính cho m t b ng.2 C t khoá chính (Identity columns) C t khoá chính này là m t con s c t o ra t Ch. phát bi u CREATE TABLE có th nh ngh'a m t c t b ng cách s d ng m nh NOT NULL. ch a giá tr d li u c bi t n. Tuy nhiên. DB2 không th mb o c tính duy nh t. JOB CHAR (5). và cho vi c unload và reload c a m t b ng. Phát bi u k ti p cung c p ví d cho i u này: CREATE TABLE Staff { ID SMALLINT NOT NULL. COMM DECIMAL (7. Nh ã nêu trên hàm ép ki u POUND() c t o ra v i UTD khi tri u g&i WITH COMPARISIONS c a phát bi u CREATE DISTINCT TYPE. nh#n c m t thông báo l i vì vi c so sánh 2 c t v i ki u d li u khác nhau. Nh b n th y trong phát bi u bên d i. theo th t . n u không có giá tr cho tr c. b n mu n so sánh c t weight_p v i ki u d li u integer. Tuy nhiên hai ki u d li u này khác nhau. SELECT F_NAME FROM PERSON WHERE weight_p > POUND (30) Các giá tr$ NULL M t giá tr null i di n cho m t r ng thái không xác nh. chúng tôi s. B n c. /ây chính là nh ng gì b n mu n. Sinh ra m c nh: giá tr có th c cung c p c th b i m t ng d ng ho c. i u này ph thu c vào vi c nó ngh'a nh th nào: - Luôn luôn c sinh ra: nh ng giá tr luôn luôn c DB2 sinh ra. s này là duy nh t cho m i dòng. sinh ra. 2). NAM E VARCHAR (9). dùng hàm ép ki u POUND() i u so sánh này có th th c hi n c. nh#n c thông báo l i tr* khi b n s d ng m t hàm ã ép ki u. Hãy xem qua ví d sau: . 2) with default 15 } 8. Tùy ch&n này cd nh ph c v cho vi c truy n d li u.
Không gi ng nh các c t khóa chính.sysdummy1 1 ----------------12 1 record(s) selected PREVVAL cung c p cho b n giá tr hi n t i c a dãy tu n t .có m t c t và m t hàng. nh ngh'a nh là m t c t khoá c sinh ra s. t i u s d0 s d ng. Các b ng danh sách h th ng M i c s d li u có các b ng danh sách h th ng c a riêng nó. c t subscriberID là m t INTEGER chính thu c lo i luôn luôn c sinh ra t ng. trong khi NEXTVAL cung c p giá tr k ti p.3 Các t ng tu n t (Sequence object) Các i t ng tu n t sinh ra m t con s duy nh t d a vào c s d li u. t i u hóa s d ng DB2 SYSCAT: khung nhìn (view) d a trên b ng SYSIBM. c t ng lên v i b c là 100. Nó có th câu truy v n yêu c u tr v ch. Ba s • • + c s d ng nh#n d ng các b ng danh sách h th ng: SYSIBM: các b ng c s .2. xem ví d minh h&a phát bi u sau: CREATE TABLE t1 (salary int) CREATE SEQUENCE myseq START WITH 10 INCREMENT BY 1 NO CYCLE INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) INSERT INTO t1 VALUES (nextval for myseq) SELECT * FROM t1 SALARY ----------------10 11 12 3 record(s) selected SELECT prevval for myseq FROM sysibm. các i t ng tu n t này là nh ng b ng c l#p. B n có th truy v n nh ng b ng này nh b t k b ng c s d li u bình th ng khác.ng s d ng SYSIBM. firstname VARCHAR (50). . Các b ng này l u tr siêu d li u v các i t ng c s d li u.SYSDUMMY1. ây là m t b ng danh m c h c dùng trong tình hu ng nh m t th ng mà nó ch. Các b ng danh m c h th ng c mô t trong ph n k ti p. 8.Nh p môn H qu n tr c s d li u DB2 92 CREATE TABLE subscriber (subscriberID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 100). Giá tr và nó s. 8. b t u t* 100. lastname VARCHAR (50)) c Trong ví d này.m t giá tr .2.4. Ví d bên trên c.
COLUMNS SYSCAT. và ph i c ch. Truy nh#p nh ng b ng này có hi u qu r t cao b i vì không có s tranh ch p danh sách. ID ng i dùng c s d ng t o m t b ng t m th i s. ây là cái ph i c nh ngh'a tr c khi t o ra b t c b ng t m th i nào. Khai báo các b ng t m th i bên trong m t không gian s d ng c a b ng t m th i.FUNCTIONS SYSCAT. b t c ch. Khi m t khai báo b ng t m th i c t o ra.ra trong Figure 8. deptname CHAR(20)) ON COMMIT DELETE ROWS NOT LOGGED. không ghi nh#t ký (tùy ch&n). Khai báo các b ng t m th i Khai báo b ng t m th i là các b ng c t o ra trong b nh . ó là. DECLARE GLOBAL TEMPORARY TABLE tempdept (deptid CHAR(6).t ng minh.PROCEDURES 8. B n c.m c chu n nào c. các hàng không b khóa.ng có h tr ch. M i ng d ng t o m t b ng t m th i s. Nh ng b ng này ch. .Nh p môn H qu n tr c s d li u DB2 93 • SYSSTAT: các s li u th ng kê c s d li u Sau ây là m t vài ví d v các khung nhìn c a danh m c: • • • • • SYSCAT. Các phát bi u d i ây cung c p m t ví d làm th nào t o ba khai báo b ng t m th i: CREATE USER TEMPORARY TABLESPACE apptemps MANAGED BY SYSTEM USING ('apptemps'). Không có b n ghi nào c sinh trong b ng danh sách c a DB2.TABLES SYSCAT.ng có th ch y l nh RUNSTATS v i các b ng này. c s d ng b i m t ng d ng và ct ng xóa khi ng d ng k t thúc.INDEXES SYSCAT.có th c truy nh#p b i ng d ng t o ra chúng.ng có th c t o trên m t b ng t m th i. DECLARE GLOBAL TEMPORARY TABLE temployees LIKE employee NOT LOGGED.5.m c cho các b ng t m th i này.5. C.2. và không ki m tra quy n. quy n c l#p c a riêng nó c ch. DECLARE GLOBAL TEMPORARY TABLE tempprojects AS (fullselect) DEFINITION ONLY ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE IN TABLESPACE apptemps. có t t c quy n trên b ng. s + c a nó là SESSION.
B ng s. c s d ng b i m t d án trong c s d li u SAMPLE. B ng s. . có sáu c t: • • • • • • product_id: nh#n d ng duy nh t c a s n ph m ang description: mô t v s n ph m quantity: s l ng mua cost: giá c a s n ph m image: m t b c nh c a s n ph m (n u dùng c) project_num: Mã s c a d án mua s n ph m này c mua 3.Nh p môn H qu n tr c s d li u DB2 94 Figure 8. b n có th thêm các c t vào b ng.Kh i t o m t b ng m i M c tiêu / n ây. (Control Center -> All Databases -> SAMPLE -> (nh n ph i chu t) Tables object -> Create …) 2. b n có th s d ng nh ng b ng có s)n trong c s d li u SAMPLE minh h&a các khái ni m. m t hàng s.ra trên trong ph n gi i thi u. 4. 4 trang u tiên c a h ng d%n t*ng b c. Th t c 1. s d ng t o b ng theo h ng d%n t*ng b c t o hai b ng m i trong c s d li u SAMPLE. M i l n v n phòng ph m c mua. nh ngh'a c t và các ràng bu c. M Create Table Wizard nh ã ch. i v i tên s +. c thêm vào trong b ng này. T* trang này. / nh ngh'a tên b ng. Cu i cùng. b n s. Nh n nút ADD thêm các c t. b n s.ng có th gõ vào m t ghi chú tùy ý.5 – Ph m vi c a các b ng t m th i toàn c c công khai Bài t p nhanh #5 . Trong ph n bài t#p này. c s d ng l u tr thông tin v cung c p v n phòng ph m. Nh n vào nút Next ti p t c t i trang sau c a h ng d%n. và s d ng tên b ng là SUPPLIES. gõ vàp ID b n s d ng ng nh#p. B n c. c n t o m t c s d li u g+m các b ng c a riêng mình.
.Nh p môn H qu n tr c s d li u DB2 95 Gõ “product_id” vào Column name và ch&n ki u là INTEGER. c t ng k t. và nh n vào nút Apply nh ngh'a c t.ng chú ý r ng m t mình c t hình nh c nh ngh'a nh m t c t “NULLABLE”. b n coi nh ang ch&n các giá tr m c nh cho nh ng tùy ch&n ó. NOT LOGGED CHAR. 4 ây. Nó c. NOT NULL BLOB. Precision 7. 1MB. L p l i b c này cho nh ng c t còn l i c a b ng s d ng các tùy ch&n c chc thêm vào. B" d u ki m Nullable. /i u Chú ý: Tùy ch&n NOT LOGGED có th này là b t bu c v i các c t có kích th c l n h n 1GB. NOT NULL DECIMAL. NULLABLE. Scale 2. NOT NULL c ch. s thay i các t p LOB trong quá trình giao d ch x y ra.rõ khi khai báo các c t LOB. Nh m nút Next ti p t c t i trang k ti p c a h ng d%n. length 6. B ng cách nh y sang các trang khác. Ngay c n u NOT LOGGED c s d ng. nh n nút OK và danh sách trong b ng trên. t t c thông tin b t bu c cho vi c t o b ng u c cung c p. Tên c t product_id (completed) description quantity cost image project_num Thu c tính INTEGER. v%n có th quay lui v trang thái lúc u. B n có th thêm các khóa và ràng bu c sau khi m t b ng v*a c t o. length 40. NOT NULL VARCHAR. Khi t t c các c t ã các c t b n v*a t o s.ng c khuyên dùng cho các c t LOB l n h n 10MB b i vì s thay i các c t l n có th làm y t p này r t nhanh. B n có ngh' t i sao c t c nh ngh'a nh th ? 5. NOT NULL INTEGER. C.
m c cho phép trùng. thay i các tham s khác c a b ng. D li u c a các khung nhìn không c ch a riêng bi t. c t+n t i khi c g&i t i.m c. Sau ây là cách t o và s d ng khung nhìn: CONNECT TO MYDB1. Trong tr ng Check Name. m c (Index) Ch.TABLES. là các bó ch. SELECT * FROM MYVIEW1. B n nên nhìn m t t ng k t c a ràng bu c b n v*a thêm vào trong trang Constraint c a c a s thao tác. Ho c. K t qu Artno --------10 20 30 u ra: Name ---------------HUMAN MY PLANT THE STORE Classification -----------------------------A C E 8. CREATE VIEW MYVIEW1 AS SELECT ARTNO. Trong tr ng Check Condition. B ng b n v*a t o bây gi s. M t s c i m b n có th nh ngh'a ch. NAME.3 Các khung nhìn (Views) Các khung nhìn là s trình bày hay hi n th c a d li u trong b ng.VIEWS. 8. Có th ph i làm t i c a s trung tâm i u khi n th y c s thay i này. 7. N u ch. và nó c phép thay i. m t khung nhìn c t o làm n n cho các khung nhìn khác. nh n vào th m c Tables d i c s d li u SAMPLE trong khung cây i t ng.m c có th là duy nh t ho c không duy nh t. hay n gi n là nh n vào nút Finish t o b ng. Khóa c a ch. B n có th ti p t c hoàn thành thao tác. gõ vào: valid_quantities. T* trung tâm i u khi n. c g&i . SYSCAT. gõ vào: quantity > 0. Trên trang Constraint c a c a s thao tác.m c ( c g&i là các ch.VIEWDEP và SYSCAT.m c ghép). b n có th nh y n trang Summary. nh ng s. xu t hi n trong danh sách.4 Các ch. Nh n nút Next ti p t c t i trang ti p theo c a màn hình thao tác.m c: • • • • Ví d : CREATE UNIQUE INDEX artno_ix ON artists (artno) Ki u ch. 8. CLASSIFICATION FROM ARTISTS. Thêm m t ràng bu c t i b ng h n ch các giá tr trên c t quantity. nh n nút ADD. V i các khung nhìn l+ng nhau. Nh n nút OK.m c t ng ho c gi m.m c là t#p các khóa c s p x p theo m c các dòng trong b ng.m c và các d li u v#t lý h p l i gi ng nh các chu i ch.Nh p môn H qu n tr c s d li u DB2 96 6. Ch.m c. Các thông tin v khung nhìn trong m c l c khung nhìn DB2: SYSCAT. Nhi u c t có th s d ng làm ch.
m c cho b n.4. Theo sau là các b thi t k g i ý t* DB2.6 – Th c hi n tr giúp thi t k t& Trung tâm i u khi n Hình 8.7 Cho th y tr giúp thi t k . Tr giúp thi t k c g&i t* Trung tâm i u khi n. Materialized Query Tables (MQTs). ch ng d%n t c cách . b m chu t ph i trên c s d li u và ch&n “Design Advisor” nh hình 8.1 Tr giúp thi t k (Design Advisor) Tr giúp thi t k là m t công c khá t t giúp b n t i u thi t k c s d li u cho m t công vi c ã bi t.6: Hình 8. Multi-demension clustering (MDC) và các tính n ng phân tán c s d li u.Nh p môn H qu n tr c s d li u DB2 97 8. Tr giúp thi t k có th giúp b n b ng cách thi t k các ch.
Trong hình có hai b ng DEPARTMENT và EMPLOYEE c liên k t b i mã s c a phòng (department).có th ch a mã s c a phòng ã t+n t i trong b ng DEPARTMENT.n tham chi u gi a các b ng. DEPARTMENT table (Parent table) DEPTNO DEPTNAME (Primary key) Or unique constraint EMPLOYEE table (Dependent table) EMPNO (Primary key) FISTHNAME LASTNAME WORKDEPT (Foreign key) PHONENO MGRNO create table employee (empno ……… primary key empno foreign key workdept reference department on delete no action) in DMS01 Hình 8. /ó là lý do trong ví d này. th ng s d ng các khái ni m sau: .7 – Tr giúp thi t k 8.Ví d v toàn v. Hình sau trình bày cách dùng CREATE TABLE t o b ng EMPLOYEE c n cho thi t l#p các quan h .8. C t WORKDEPT trong b ng EMPLOYEE ch. B n có th thi t l#p ki u cha-con (parent-child) c a các quan h gi a các b ng nh hình 8.Nh p môn H qu n tr c s d li u DB2 98 Hình 8. b ng EMPLOYEE c g&i là b ng con ho c b ng ph thu c.8 . Trong toàn v7n tham chi u.n tham chi u Toàn v7n tham chi u cho phép c s d li u qu n lý c các quan h gi a các b ng. b ng DEPARTMENT c g&i là b ng cha.5 Tính toàn v.
Khóa chính có th là m t ho c nhi u c t trong b ng. nó có th c ép ch a m t trong hai giá tr là “M” cho nam và “F” cho n .Nh p môn H qu n tr c s d li u DB2 99 Khái ni m B ng cha (Parent table) B ng ph thu c (Dependant table) Khóa chính (Primary key) Khóa ngo i (Foreign key) Mô t B ng d li u i u khi n ch a khóa chính B ng d li u ph thu c vào b ng cha. Tham chi u n khóa ngo i c a b ng cha. . nó không c có giá tr NULL và ph i là duy nh t. D li u trong m t b ng có th liên k t v i d li u c a m t ho c nhi u b ng thông qua toàn v7n tham chi u. Ch a khóa ngo i. / nh ngh'a khóa chính c a b ng cha. m i dòng t+n t i trong b ng ph thu c ph i phù h p v i các dòng trong b ng cha. Các ràng bu c có th c áp t d li u phù h p v i c tính nào ó ho c các quy t c trong kinh doanh c a d li u. Ví d . n u m t c t c a b ng là gi i tính.
Nh p môn H qu n tr c s d li u DB2 100 9 Ch ng 9 – Công c di chuy n d li u Nh ng công c hay câu l nh c mô t trong ph n này c s d ng di chuy n d li u trong cùng m t c s d li u hay qua nh ng c s d li u khác nhau n m trên cùng m t n n (platform) ho c có th khác n n. tuy nhiên. Khi d li u c k t xu t sang d ng t p. IXF là m t nh d ng không chbao g+m d li u mà còn là m t ngôn ng nh ngh'a d li u (Data Definition LanguageDDL). ngo i tr* nh d ng IXF. Trong hình 9. ta có th xây d ng m t cách tr c ti p t* t p có nh d ng IXF. B ng ph i t+n t i s)n d i khuôn m%u ASC. /i u này r t ti n d ng. T p có th thu c các nh d ng sau: ASC = ASCII DEL = Delimited ASCII – ASCII có nh gi i h n. và s. Hình 9.1 .1 mô t t ng quan v công c di chuy n d li u Hình 9. IXF = Integrated Exchange Format – / nh d ng trao i th ng nh t. B ng cách s d ng công c EXPORT. Công c LOAD thì nhanh h n vì nó i tr c ti p n nh ng trang c s d li u mà không c n t ng tác n h th ng DB2. DEL và WSF. M t ph ng th c khác là công c LOAD dùng chuy n n p d li u vào trong b ng. vì khi m t b ng c n c xây d ng l i. WSF = Worksheet format – / nh d ng ki u b ng tính. còn nh ng t p nh d ng khác thì ta không th làm c vi c này.1 có 2 c s d li u: A và B. . ta có th k t xu t d li u t* m t b ng sang m t t p. ph ng th c này không th t o ra nh ng ki m tra ràng bu c i v i d li u. Nh ng t p d ng ASC ho c DEL là nh ng t p v n b n và có th m và xem l i b ng b t k trình so n th o v n b n nào. công c IMPORT có th c dùng chuy n d li u t* d ng t p sang d ng b ng.Công c di chuy n d li u. WSF là m t lo i nh d ng mà có th di chuy n d li u sang b ng tính ch!ng h n Excel hay là Lotus® 1-2-3.
Nh ng ph n ti p theo sau ây s. / m b o m t cách kiên nh vi c n p d li u dùng công c LOAD. m t thao tác SQL SELECT c g&i th c thi. tr c h t b n ph i ch&n b ng employee b ng cách nh n vào nó m t l n. công c EXPORT c. N u b n thích làm vi c v i nh ng công c có giao di n + h&a (GUI).Nh p môn H qu n tr c s d li u DB2 101 không th c hi n c các b%y s ki n (n u có).Hi n th$ h p tho i b ng EXPORT Nh ã th y trên hình.ixf OF IXF SELECT * FROM employee FETCH FIRST 10 ROWS ONLY Chúng tôi khuy n khích b n nên th ch y ví d trên.2 . Sau khi ch&n m c này. Bên d i ây.c n n gi n làm theo nh ng b c cung c p s)n trong h ng d%n này hoàn thành quá trình th c hi n.1 Công c EXPORT (xu t) Công c EXPORT c dùng trích d li u t* b ng thành m t t p nh ã c#p tr c ây. EXPORT TO employee. B ng employee là m t b ph#n c a c s d li u SAMPLE.ixf thu c nh d ng IXF có 10 dòng t* b ng employee. Ví d d i ây k t xu t thành t p employee.2 bên d i. Hình 9. . Ch.ng có th c th c hi nn t* Trung tâm i u khi n (Control Center) nh trong hình 9. vì th tr c h t b n nên k t n i n c s d li u này. IMPORT và LOAD m t cách chi ti t. mô t nh ng công c EXPORT. l nh SET INTEGRITY th ng c s s ng theo sau. 9. nó ã c t o ra trong ch ng tr c. và k ó thì nh n chu t ph i trên b ng m m t b ng ch&n con (popup menu) t* ó b n có th ch&n Export. hi n lên. c a s h ng d%n t*ng b c s.
công c LOAD không i qua h th ng DB2. Nó làm vi c theo 3 giai o n: LOAD.2 Công c IMPORT (nh p) Công c IMPORT c dùng n p d li u t* m t t p sang m t b ng nh ã nói tr c ây. m t thao tác LOAD s. Ví d sau ây n p t t c các d li u t* t p employee.3 – H p h i tho i th c hi n công c IMPORT 9. c kích ho t. không c dùng và các ràng bu c s. L a ch&n REPLACE là m t trong nh ng l a ch&n có s)n trong . Khi m t l nh c th c thi. ho c là nó s. Nh ã th o lu#n tr c ây. các b%y s ki n s. L a ch&n REPLACE_CREATE là m t trong nh ng l a ch&n có s)n v i công c IMPORT. nh n chu t ph i trên nó. c s d ng. t o m t b ng và n p d li u n u b ng ch a t+n t i tr c ó. có INSERT hi u l c ngay l#p t c. Chúng tôi khuy n khích b n nên ch y th ví d d i ây. Ví d sau ây n p t t c d li u t* m t t p employee. / ng sau nó. vì th các b%y s ki n không c kích ho t.ixf có nh d ng IXF vào trong b ng employee_copy. thay th n i dung c a b ng employee_copy n u nh nó ã t+n t i tr c khi công c IMPORT c th c thi. t t c các ràng bu c s. và ch&n ch c n ng Import nh hình 9. vùng m s. L a ch&n này s. m t thao tác SQL INSERT c th c thi th c s . M t khác.ixf OF IXF REPLACE_CREATE INTO employ_copy N u b n thích làm vi c v i Trung tâm i u khi n. nh ng tr c h t b n ph i ch y công c EXPORT trong ph n tr c.3 Hình 9. và vùng nh m c a c s d li u s. BUILD và DELETE. LOAD (n p) Công c LOAD là m t cách n p d li u t* t p sang b ng nhanh h n. không có hi u l c.Nh p môn H qu n tr c s d li u DB2 102 9.ixf có nh d ng IXF vào trong b ng employee_copy.3. nhanh h n IMPORT vì nó là m t công c n p d li u c p th p tr c ti p truy xu t n trang d li u trên 'a. b n có th th c hi n công c IMPORT b ng cách ch&n b t k b ng nào. IMPORT FROM employee.
c s d ng REPLACE t t c các d li u có LOAD FROM employee. Ví d sau ây s.Th c hi n công c LOAD .4 và 9.ixf OF IXF REPLACE INTO employ_copy Sau khi th c thi câu l nh trên. SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKED N u b n thích làm vi c v i Trung tâm i u khi n h n. /i u này có ngh'a là b n c n ph i ch y ki m tra tính ch c ch n d li u c a b n. nó trong b ng employe_copy. b n có th th c hi n công c LOAD và SET INTEGRITY nh trong hình 9.4 . có th c a n tr ng thái CHECK PENDING. không gian c a b ng. Hình 9.cho b n làm th nào.Nh p môn H qu n tr c s d li u DB2 103 LOAD. n i mà b ng c a b n trú ng .5 t ng ng. Trong tr ng h p này. câu l nh SET INTEGRITY ch.
Nh p môn H qu n tr c s d li u DB2 104 Hình 9. và tên t p s. t ng c phát sinh b i db2move. M c dù b n có th vi t m t k ch b n phát sinh các l nh trên cho t*ng b ng trong c s d li u. Công c db2move ch. ch y công c db2move v i tùy ch&n export trong máy ch DB2 Linux. Ví d .làm vi c trên m t b ng. và LOAD ch. c s d li u c a b n s.5 . Sau ó b n chép t p k ch b n này sang máy ch DB Windows. IMPORT. T i ây. và sau ó chép t t c các t p c phát sinh sang máy ch DB2 Windows. import nh th nào s d ng c s d li u SAMPLE: db2move db2move sample sample export import Trung tâm i u khi n không có tùy ch&n cho db2move.làm vi c v i t p IXF. 9. và th c thi k ch b n ó b t u xây d ng b n sao c s d li u. n u b n mu n sao chép m t c s d li u t* máy ch DB2 ang ch y trên Linux sang m t máy ch DB2 ang ch y trên Windows. các c tính không gian b ng cho m t c s d li u. sau ó th c thi db2move v i tùy ch&n là import ho c load.5 Công c db2look Trong khi các công c EXPORT. giúp b n làm i u ó.4 Công c db2move T i m t th i i m.Th c hi n công c SET INTEGRITY 9. nh ng công c db2move s. . Ví d bên d i s. B c k ti p. s. các c s d li u t'nh. công c EXPORT. c u trúc c a c s d li u ó ã c sao chép. bi u di0n ch y db2move v i export. c sao chép toàn b t* m t máy ch này sang m t máy ch khác ho t ng trên m t n n t ng khác. IMPORT. và l u tr chúng trong m t t p k ch b n mà có th sau này c ch y trên m t h th ng khác. LOAD và db2move cho phép b n di chuy n d li u t* m t b ng này t i m t b ng khác. u tiên b n ch y công c db2look trên máy ch DB2 Linux l y c c u trúc c a c s d li u và l u c u trúc này trên m t t p k ch b n. trong cùng m t c s d li u hay qua vài c s d li u. công c db2look có th c s d ng rút trích các câu l nh DDL. Hoàn thành b c này.
Nh p môn H qu n tr c s d li u DB2 105 K ch b n trên c n thi t khi làm vi c v i c s d li u trên các n n t ng khác nhau nh Linux và Windows. cùng v i nh ng l nh DDL t* c s d li u SAMPLE. Chúng tôi khuy n khích b n ch y l nh bên d i và xem l i t p k t qu xu t (v n b n) “sample. và l u tr chúng trong t p sample. c mô t chi ti t h n trong ch ng sau c a cu n sách này.ddl”. b n s. làm cho x lý d0 dàng h n và rõ ràng h n.6 . L nh db2look có quá nhi u tùy ch&n không th mô t h t trong cu n sách này. N u c hai máy ch u ho t ng trên cùng m t n n t ng. rút trích không gian b ng và b trí vùng m d li u. Nh ng l nh sao l u và khôi ph c s. Nh ng ví d sau s. tuy nhiên b n có th s d ng c -h l y c ph n mô t tóm l c các tùy ch&n s)n có: db2look -h c g&i t* trung tâm i u khi n nh bi u di0n trong Hình Công c db2look c. dùng nh ng l nh sao l u d phòng và khôi ph c s.ng có th 9.ddl.
nh n chu t ph i lên nó. và ch&n “Generate DDL”.7. . C a s Generate DDL xu t hi n.Nh p môn H qu n tr c s d li u DB2 106 Trong Hình 9. hi n th m t s tùy ch&n rút trích. th hi n nh trong hình 9.6 ch&n c s d li u mà b n mu n l y DDL.
Nh p môn H qu n tr c s d li u DB2
107
Bài t p nhanh #6 - Trích xu t DDL t& c s d li u EXPRESS M c tiêu: Khi b n sao l u m t c s d li u, m c tiêu c a b n là ph i t o l i c s d li u b ng cách n gi n và h p lý. Thông th ng s d ng k ch b n SQL, nó có th c th c hi n sau khi DB2 c cài t. Trong bài t#p nhanh này, b n s, rút ra nh ng nh ngh'a i t ng t* c s d li u EXPRESS ( ã t o trong bài t#p nhanh #3) s d ng Trung tâm i u khi n. Quy trình: 1. M Trung tâm i u khi n. 2. Nh n chu t ph i vào c s d li u EXPRESS trên cây i t Generate DDL. Vi c này m c a s h p tho i Generate DDL. ng và ch&n m c
3. Trong c a s Generate DDL, ch- rõ nh ng tùy ch&n cho Generate DDL nh d i ây. N u b n t o ra thêm nh ng i t ng b sung trong môi tr ng c a b n nh không gian bàng, b m.., b n s, ch&n chúng ây. Khi b n không t o ra b t k lo i i t ng nào, *ng ánh d u vào h p ki m. Th ng kê c s d li u không c thêm vào vì môi tr ng s n xu t có kh n ng ch a m t t#p h p th ng kê khác h n môi tr ng phát tri n. T ng t , nh ng thông s c u hình s, có kh n ng khác i m t chút. Trong môi tr ng mà b n s h u, n u m&i th c u hình chính xác theo cách nó c tri n khai, b n có th ch&n thêm vào cái tùy ch&n b sung.
4. Chuy n qua trang Object. B n có th ch- nh ch&n nh ng i t ng mà b n mu n phát sinh ra DDL. Trong tr ng h p này, ch&n ng i dùng và gi n + mà b n dùng t o ra t t c các i t ng c a b n và phát sinh ra DLL cho t t c b t u t o DLL. các i t ng trong gi n + này. Nh n nút Generate
Nh p môn H qu n tr c s d li u DB2
108
5. Xem l i k t qu DDL. K t qu c a b c th c hi n tr c là m t k ch b n v i t t c các câu lênh SQL cho các i t ng c ch&n. B n s, t ch c các k ch b n này vào trong nh ng nhóm h p lý. 6. T o th m c C:\express trong t#p tin h th ng và l u t#p tin phát sinh DDL vào trong th m c này v i v i tên là schema.ddl, Nh n nút “Save”.
7. M t p c l u g n ây nh t trong c a s nh#p l nh. (G i ý: t* c a s nh#p l nh, ch&n File -> Open) 8. M c dù chúng tôi ch- th c s mu n DDL c a các b ng, b n s, th y các DDL cho c nh ng i t ng khác n a c.ng c sinh ra. Chuy n t t c nh ng khai báo CREATE TRIGGER t i m t t p m i riêng bi t c g&i là triggers.ddl. Th#m chí dù chúng tôi ch- t o ra có m t b%y s ki n c.ng riêng ra, nó là m t thói quen t t phân bi t các i t ng theo ki u c a nó. 9. Bây gi chúng tôi c.ng khuy n cáo lo i b":
Nh p môn H qu n tr c s d li u DB2
109
• •
Các l nh c s d li u CONNECT TO. Các l nh DISCONNECT.
B n ph i có hai k ch b n t i i m này: C:\express\schema.ddl DDL cho các b ng, các cách hi n th , các ch- m c và các ràng bu c. C:\express\triggers.ddl DDL cho các b%y s ki n 10. Chu n b k ch b n cho s tri n khai: • Xóa nh ng chú thích không c n thi t (ví d : -- CONNECT TO…) • Tách các hàm và các th t c vào nh ng t p tin riêng (r t h u d ng khi có quá nhi u hàm và th t c). B n c.ng có th nhóm chúng l i theo ch c n ng hay ng d ng (ví d : stringfunc.ddl, billing.ddl, math.ddl, , …) 11. B n có th ph i chú ý n nh ng kí t c bi t c dùng gi i h n k t thúc t gi i h n k t thúc các b%y, các hàm và các th t c (@). /i u ó là c n thi t c a l nh CREATE <••i t••ng> khác v i k t thúc c a m t khai báo th t c n m bên trong i t ng.
Nh p môn H qu n tr c s d li u DB2
110
10
Ch ng 10 – B o m t c s d li u
Ch ng này bàn v s b o m#t m t cái nhìn t ng quan c b n c x lý nh th nào trong DB2. Hình 10.1 cung c p Hình 10.1 – T ng quan v s b o m t trong DB2 Nh trong hình 10.1, s b o m#t DB2 có hai ph n: *$nh danh Nó là m t ti n trình qua ó ki m tra tính h p l c a thông tin ng nh#p c a ng i dùng. Ti n trình nh danh c th c thi b i m t ch ng trình b o m#t bên ngoài DB2 ( i n hình là b i m t h i u hành, m t ph ng th c nh danh c a m t m ng nào ó, ho c là m t ph n m m nh danh c thi t k theo yêu c u). Ti n trình nh danh c a h i u hành c xác l#p m c nh. Khi s d ng ti n trình nh danh c a h i u hành, tên ng i dùng (userid) và m#t mã c chuy n t i c s d li u máy ch (nh là m t ph n c a câu l nh k t n i). Sau ó, c s d li u máy ch s, g&i ti n trình nh danh c a h i u hành ki m tra tính h p l c a tên ng i dùng và m#t mã. Quy n h n 4 ph n này, DB2 ki m tra xem ng i dùng, ã qua nh danh thao tác ng i ó yêu c u hay không. Thông tin v quy n h n danh m c DB2 và m t t#p tin c u hình DBM. Ví d , trong hình 10.1, ng l nh : trên, có th thi hành c l u tr trong m t
i dùng ‘bob’ k t n i v i c s d li u SAMPLE b ng câu
CONNECT TO sample USER bob USING pwd C “bob” và “pwd” c chuy n t i h i u hành ho c m t ch ng trình nh danh bên ngoài ki m tra xem tên ng i dùng “bob” ã c nh ngh'a ch a và m#t mã ó có
ti n trình nh danh s. N u ph n này thành công. c th c thi b i h i u hành ho c ch ng trình b o m#t bên ngoài trên máy khách. Ví d khi tham s c thi t l#p là SERVER (giá tr m c nh).Nh p môn H qu n tr c s d li u DB2 111 c n i v i ng i dùng này hay không. Tham s AUTHENTICATION trong DBM CFG.1 L nh SERVER (m c CLIENT SERVER_ENCRYPT nh) c thi t l#p b ng m t trong nh ng giá tr Mô t ti n trình ti n trình khách nh danh di0n ra nh danh di0n ra máy ch máy c t ng t nh SERVER nh ng tên c a ng i dùng và m#t mã c mã hóa ti n trình nh danh di0n ra dùng c ch b o m#t Kerberos ti n trình nh danh máy ch c ng thêm s k t n i ph i dùng s mã hóa KERBEROS SQL_AUTHENTICATION_DATAENC . V n này c minh h&a hình 10. c th c thi d a trên b ng “mytable”.Tuy nhiên. thi t l#p máy ch DB2. DB2 s. h i u hành s.2 – N i ti n trình $nh danh x y ra Tham s AUTHENTICATION có th ki t kê trong b ng 10. ti n trình nh danh s. ng c l i câu l nh s. Ti p theo.1 *$nh danh M c dù ti n trình nh danh th c s c th c hi n b i h i u hành (ho c m t ch ng trình b o m#t khác bên ngoài). tr v m t thông báo l i. có m t dãy các giá tr h p l . n u AUTHENTICATION c thi t l#p là CLIENT. N u quy n ó không h p l . DB2 v%n quy t nh t ng mà ti n trình nh danh x y ra. tr l i quy n ki m soát b o m#t cho DB2.2 Hình 10. 10. khi ng i dùng “bob” thi hành l nh sau: SELECT * FROM mytable B y gi DB2 ti p t c dùng quy n ki m soát b o m#t thi hành vi c ki m tra quy n h n và xác nh#n ng i dùng “bob” có quy n SELECT trên b ng “mytable” hay không. c th c thi b i h i u hành ho c ch ng trình b o m#t bên ngoài trên máy ch .
Hình 10.dùng khi có s)n ti n trình nh danh dùng c ch b o m#t bên ngoài d a trên GSS API B ng 10.1 . . c l u tr trong nh ng b ng h th ng n d a trên c s d c quy n. INSERT. DELETE. …. UPDATE.3 M t c quy n cho phép ng i dùng thi hành m t lo i thao tác li u nh là CREATE.2 Quy n h n Quy n h n bao g+m các c quy n và quy n DB2 và c DB2 qu n lý.Nh ng giá tr$ tham s AUTHENTICATION h p l 10. M t quy n là m t hành minh h&a các quy n và ng c xác nh tr c bao g+m nhi u c quy n khác nhau trong DB2.Nh p môn H qu n tr c s d li u DB2 112 d li u SQL_AUTHENTICATION_DATAENC_CMP gi ng nh GSSPLUGIN trên nh ng s mã hóa d li u ch.
Nh ng quy n và c quy n B ng 10.2 nêu ra nh ng hàm khác nhau mà m i quy n có th th c hi n.3 . Nh b n th y SYSADM có h u h t các quy n trong khi SYSMON có ít quy n nh t. Ch c n ng C p nh t DBM CFG C p phép/H y b+ DBADM Thi t l p/Thay i SYSCTRL Thi t l p/Thay i SYSMAINT Thi t l p/Thay i SYSMON Bu c ng i dùng ra kh+i c s d li u SYSADM Y Y Y Y Y Y Y SYSCTRL SYSMAINT SYSMON DBADM LOAD .Nh p môn H qu n tr c s d li u DB2 113 Hình 10.
nh ng tham s SYSADM_GROUP. c p quy n SYSADM cho nhóm h l nh này: i u hành ‘db2admns’. thí d : connect to sample grant DBADM on database to user <userid> . ho c SYSMAINT cho m t nhóm.2 – Các quy n và c quy n DB2 / c p quy n SYSADM.3 Quy n qu n tr$ c s d li u DBADM DBADM (DataBase ADMinistrator) là ng i có quy n cao nh t v qu n tr c s d li u. nhóm nh ng ng i s h u th hi n c m c nh là nhóm SYSADM. nh ng tham s này nh ng ng i qu n tr Windows là SYSADM. 10. SYSCTRL. / gán quy n qu n tr c s d li u DBADM. ho c SYSMAINT_GROUP trong DBM CFG ph i c gán cho nhóm h i u hành Ví d . c m c nh là r ng.Nh p môn H qu n tr c s d li u DB2 114 T o/B+ c s d li u Khôi ph c thành c s d li u m i C p nh t DB CFG Sao l u c s d li u/không gian b ng Khôi ph c thành c s d li u ã t nt i Khôi ph c ti n B t u/k t thúc m t th hi n Ph c h i không gian b ng Th c hi n theo v t L y hình nh màn hình Truy v n tr ng thái không gian b ng L c b t t p tin nh t ký Quiesce không gian b ng N p b ng Thíêt l p/g/ b+ tr ng thái treo T o/h y b+ s ki n màn hình Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y B ng 10. Trên Linux. /ây không ph i là quy n c p c th . i u ó có ngh'a là nhóm Trên Windows. b n có th dùng câu update dbm cfg using SYSADM_GROUP db2admns M i th hi n DB2 có nh ng nh ngh'a v nhóm quy n riêng. do ó không c nêu ra trong ph n tr c. ta s d ng l nh GRANT. SYSCTRL_GROUP.
m t s quy n c th s. c gán m t cách t ng cho nhóm PUBLIC: • • • • CONNECT. tr c h t b n c n k t n i n c s d li u. Ghi chú: DBADM không có quy n t o các không gian b ng. ây c s d li u có tên là “sample”. CREATETAB. / có th gán quy n qu n tr c s d li u DBADM. BINDADD b o m#t. B t c ng i dùng nào ã c nh danh b i h i u hành ho c d ch v ch ng th c m ng u c ng m nh là thành viên c a nhóm PUBLIC.Nh p môn H qu n tr c s d li u DB2 115 Trong thí d trên. b n ph i là SYSADM. và sau ó gán quy n DBADM cho ng i dùng. c dùng gán ho c h y b" quy n c a m t ng i dùng ho c m t nhóm. h y b" m&i nguy n t* nhóm / thêm vào m c PUBLIC nh sau: REVOKE REVOKE REVOKE REVOKE CONNECT ON DATABASE FROM PUBLIC CREATETAB ON DATABASE FROM PUBLIC IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC BINDADD ON DATABASE FROM PUBLIC 10. 10. IMPLICIT SCHEMA. Khi m t c s d li u c t o ra. Sau ây là m t s ví d v các câu l nh này: Gán quy n SELECT trên b ng T1 cho ng i dùng USER1: GRANT SELECT ON TABLE T1 TO USER user1 Gán t t c các quy n trên b ng T1 cho nhóm GROUP1: GRANT ALL ON TABLE T1 TO GROUP group1 H y b" t t c các quy n trên b ng T1 c a GROUP1: REVOKE ALL ON TABLE T1 FROM GROUP group1 Gán quy n EXECUTE trên th t c p1 cho ng i dùng USER1: GRANT EXECUTE ON PROCEDURE p1 TO USER user1 H y b" quy n EXECUTE trên th t c p1 c a ng i dùng USER1: REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1 10.6 Ki m tra vi c c p quy n và quy n Cách t t nh t ki m tra vi c c p quy n và ki m tra quy n là thông qua trung tâm i u . cho dù nh ng không gian b ng này là các i t ng bên trong c s d li u.5 L nh GRANT và REVOKE L nh GRANT và REVOKE là l nh SQL chu n. Nguyên nhân là vì m t không gian b ng có liên quan n các vùng ch a d li u (containers) nh 'a và các vùng m (b nh ) ó là các tài nguyên v#t lý c a h th ng. chúng ta nên thu h+i.4 Nhóm PUBLIC DB2 nh ngh'a m t nhóm bên trong c g&i là PUBLIC.
4 mô t cách m h p tho i Table Privileges cho b ng EMPLOYEE t* trung tâm i u khi n. Hình 10. Hình này có mô t các tr ng và các thành ph n c a h p tho i. M t khi c ch&n. nh p ph i chu t vào b ng này và ch&n Privileges.5 – H p tho i Privileges .5.4 – M h p tho i Privileges Trong hình 10. h p tho i Privileges hi n th nh hình 10.4.Nh p môn H qu n tr c s d li u DB2 116 khi n. Hình 10. b n ch&n b ng mong mu n. Hình 10.
b n có th th c hi n câu truy v n nh sau: SELECT grantor. ng DB2ADMIN. . i dùng ARFCHONG ã gán quy n SELECT cho ng i dùng 10. t nh ng ng i dùng vào các nhóm và gán c gán các quy n ng m Khi m t nhóm c gán quy n. nh c k th*a v i t cách thành viên nhóm.Nh p môn H qu n tr c s d li u DB2 117 M t cách khác. các thành viên c a nhóm s. nh ng v%n còn gi các quy n c gán t ng minh. ta nên các quy n c n thi t cho các nhóm này. m t các quy n ng m nh c a nhóm. b n có th truy v n các th hi n danh m c DB2 SYSCAT là n i ch a các thông tin v vi c c p quy n. n u b n mu n bi t ng i dùng DB2ADMIN có quy n SELECT trên b ng T2 hay không. grantee. và mu n bi t ai ã gán quy n này.tabauth WHERE tabname = 'T2' GRANTOR GRANTEE SELECTAUTH ------------------------------------------------ARFCHONG DB2ADMIN Y Trong thí d trên. ng i này s. Nói m t cách khác các quy n c c p m t cách t ng minh ph i c h y b" m t cách t ng minh. Khi m t ng i dùng b xóa kh"i nhóm.7 Xem xét quy n trên nhóm / vi c qu n tr DB2 d0 dàng h n. selectauth FROM syscat. Ví d .
M c a s Windows Computer Management b ng cách kích chu t ph i vào bi u t ng My Computer trên máy tính.Trong bài t#p này. Cho n lúc này. Th t c: 1. d li u và nh ng i t ng c s d li u y . nh n chu t ph i lên User và ch&n m c New User. 2. 5. ch&n ti p tùy ch&n Advanced và nh n OK. b n ã s d ng m t tài kho n c a ng i qu n tr cho vi c s d ng các l nh v i c s d li u. và ch&n Manage. 3. b n s. Trong tr ng Password và Confirm password nh#p “ibmdb2”. Trong a s nh ng tr ng h p. nh#p các thông tin sau ây: trong m c User name nh#p “customer” và trong m c Full name nh#p “Customer1”. B o m khung nhìn làm vi c hi n t i ch Advanced. B i v#y. t o ra m t tài kho n ng i s d ng m i. i u quan tr&ng là c n b o v tài kho n này tránh s nh ng s c hay m t mát d li u có ch tâm. bên trái c a s .Tài kho n này có th truy nh#p t i m&i ti n ích. Trong tr ng Description nh#p “A typical book store customer”. r+i gán nó nh ng c quy n xác nh. Trong c a s New User . Ch&n ch cao c p (Advanced) b ng cách ch&n m c Customize Control Center trên th c n Control Center Tool. mu n t o ra nh ng tài kho n ng i dùng khác ho c nh ng nhóm v i m t thi t l#p quy n h n ch h n. B" d u ánh m c “ng i dùng c n i m#t mã l n ng nh#p sau” (User must change password on next logon) và nh n nút Create t o ng i dùng m i 4. Ch&n m c Local Users and Group nhóm System Tools n m bên trái c a c a s Computer Management. M r ng cây i t ng c a Trung tâm i u khi n Database -> EXPRESS -> Tables. ch&n All .Nh p môn H qu n tr c s d li u DB2 118 Bài t p nhanh # 7: Cho phép và h y b+ (phân quy n) quy n ng M c tiêu: is d ng. b n s.
/ i v i b ng SALES. Ng i dùng không nên có quy n DELETE ho c UPDATE b i vì ch. Kích vào nút Add User và ch&n ng i dùng “customer” v*a m i t o ra óng h p tho i Add User. ng d ng c a b n có th ch a ng nhi u ki u ng i dùng khác. nh ng ch a c gán thêm các quy n. Th nghi m t o ra nh ng ng i dùng khác và . / c p quy n cho ng i dùng này. Phân nh ng quy n c n có cho ng i dùng v*a m i t o ra: T* danh sách các b ng trong c s d li u EXPRESS. B n chú ý r ng ng i dùng “customer” ã c thêm vào danh sách ng i dùng. Th SELECT v i b ng khách hàng. Th k t n i n c s d li u b ng tài kho n c a ng i dùng “customer” ã t o trên. L p l i t*ng b c t* 7-9 cho b ng BOOKS và b ng SALES. tuy nhiên. / i v i b ng BOOKS.cung c p quy n SELECT b i vì ng i dùng “customer” không nên có kh n ng i u ch-nh và ph c h+i d li u trong kho. vào nút OK b c 3. ch&n Yes trong h p tho i kéo xu ng c a t t c các ph n SELECT. nh n chu t ph i lên b ng CUSTOMERS và ch&n m c Privileges hi n th c a s h i tho i “Table Privileges” 7. /i u gì x y ra? Th DELETE hay UPDATE d li u trong b ng SALES. chúng ta ch t o m t ng i dùng là “customer”. Kích 8. ch. UPDATE và DELETE. Nh n nút Ok óng c a s h p tho i Table Privileges và ch p nh#n nh ng thay i v*a làm. 9.nh ng nhân viên m i c n ph i có s truy nh#p s a i nh ng giao d ch bán hàng. INSERT. ch. 10. Chúng ta không c p cho ng i s d ng nh ng quy n khác b i vì không c n thi t i v i h&.cho quy n SELECT và INSERT. /i u gì x y ra? Trong bài t p nhanh này.Nh p môn H qu n tr c s d li u DB2 119 6. M t ng i dùng Internet c n ph i có kh n ng th c hi n add/update/delete d li u tài kho n c a h&.
i dùng và phân . B n c ng có th t o ra nh ng nhóm c a các ng quy n cho các nhóm ó.Nh p môn H qu n tr c s d li u DB2 120 gán cho nó nh ng c quy n. h n là làm v i m i ng i dùng riêng l .
làm i u ó. nh ng giá tr c. câu l nh COMMIT s. chúng u c l u tr trên 'a c ng.1 ta th y không gian b ng (tablespace) và nh#t ký (logs). c l u trong vùng m d li u (b nh ). INSERT và DELETE. c th hi n trong vùng m d li u. T ng t . c . ôi khi m t vùng m nh#t ký y. và m i s. Nh#t ký c s d li u c l u tr c dùng ghi l i nh ng hành ng c a nh ng giao d ch. chúng c dùng nó l y l i nh ng giao d ch ã c g i i trong su t quá trình khôi ph c d li u. khi câu l nh UPDATE c th c hi n. ôi khi b n th y d i góc ph i màn hình có m t thông i p ng n “auto-saving”. m c dù ta xu t r ng chúng không l u tr trên cùng 'a c ng. làm th nào sao l u toàn b hay m t ph n c s d li u s d ng công c BACKUP và làm th nào khôi ph c d li u s d ng công c RESTORE. Ví d . và m i s.Nh t ký c s d li u Trong hình 11. nh ng trang cho nh ng dòng trong câu l nh s. khi b n làm vi c v i m t tài li u v n b n.1 Nh t ký c s d li u N u b n ang làm vi c v i m t trình so n th o v n b n. c l u tr trong nh ng t#p tin nh#t ký c s d li u. 4 ph n trên ta ã c#p n nh#t ký c s d li u. Trong c s d li u. Nh ng thay i. ôi khi t c th i. m i l n b n mu n l u tài li u ph i nh n vào nút SAVE. i u này c th c hi n b i l nh UPDATE.1 . N u h trên 'a c ng và th ng hay c s d li u b h h i.Nh p môn H qu n tr c s d li u DB2 121 11 Ch ng 11 – Sao l u và khôi ph c Trong ch ng này chúng ta th o lu#n v nh#t ký c s d li u DB2. c#p nh#t s. N u câu l nh COMMIT c thi hành sau câu l nh UPDATE thì nh ng giá tr c. Trong c s d li u. M i l n câu l nh COMMIT c th c hi n thì m&i thay i t o thành d li u và c l u trong nh#t ký c s d li u.1 minh h&a lu+ng x lý khi làm vi c v i c s d li u trong nh ng m%u nh#t ký Hình 11. Hình 11. 11.
sau ó P1 và P2 có th c ghi è d li u khác vì thông tin c. P3 và v%n c n nhi u không gian nh#t ký h n n a b i vì giao d ch ch a c COMMIT. c “chi ti t hóa” hay ghi lên thành không gian b ng trên 'a c ng.2 .x y ra khi tham s “chngpgs_thres” t ng (ng. vì v#y chúng ta gán LOGPRIMARY b ng 3. 11. thì m t nh#t ký th c p c c p phát (S1 trên hình v.X" lý nh t ký s c p và th c p Trong hình 11.nh t. Vi c c p phát ng m t nh#t ký s. Khi giao d ch c th c hi n không gian s d ng b t u ghi vào t#p tin nh#t ký P1 và ti p theo sau là P2.l ph n tr m c a vùng m d li u v i nh ng trang “dirty” ó là nh ng trang ch a nh ng thay i. N u có m t l nh COMMIT c th c hi n và thông tin sau ó c xu t n không gian b ng trên 'a c ng. c xóa khi t t c k t n i n c s d li u ã b ng t 11.3. giao d ch ã s d ng P1. m t khác.Nh p môn H qu n tr c s d li u DB2 122 c t trong nh ng t#p tin nh#t ký ngay l#p t c. gây ra s lãng phí vì v#y nh#t ký th c p s.1 Ghi tu n t quay vòng Hình 11. N u.) m t cách t ng. Khi i u ki n c c th th"a mãn. V khía c nh hi u n ng. nh là vi c t n ng (ng c a s thay i trong tham s CHNGPGS_THRES thì nh ng trang trong vùng m d li u s. nhi u nh#t ký th c p c c p phát cho n khi s nh#t ký th c p c c p phát t ng (ng t i a .2 Các ki u nh t ký Có hai ki u nh#t ký: Nh t ký s c p: / c c p phát s)n và s nh#t ký s c p s)n sàng LOGPRIMARY c xác nh b i tham bi n db cfg Nh t ký th c p: Ph n nh#t ký th c p này c DB2c p phát ng khi c n. / cho n gi n trong ví d này ch.có 1 giao d ch.ng c l p l i t ng t cho câu l nh SQL khác truy xu t n c s d li u. ta không có c m giác th c hi n 2 l n ghi cho m i l nh COMMIT: M t là ghi n nh#t ký c s d li u và m t ghi n không gian b ng trên 'a c ng.2 mô t lu+ng x lý khi ghi tu n t quay vòng Hình 11.3 Các ki u ghi nh t ký Có hai ki u ghi nh#t ký: Ghi tu n t quay vòng (m c nh) và ghi l u tr 11. ó là lý do t i sao “s chi ti t hóa” c a d li u n không gian b ng trên 'a c ng ch. Tham s CHNGPGS_THRES ch. S nh#t ký th c p c gán giá tr b i tham bi n db cfg LOGSECOND.2 có 3 nh#t ký s c p. N u giao d ch v%n còn ti p t c. không c n thi t n a. P2. X lý này c.
Hình 11. . 11. N u v%n ch a phát nh#t ký và giao d ch s. Cách ghi l tr là c n thi t i v i quá trình khôi ph c l i và khôi ph c tr c tuy n.ng c bi t n nh là ghi gi l i. V i cách ghi l u tr ng i qu n tr c s d li u có th khôi ph c nh ng l i gây ra b i con ng i. M t ví d c th là khi m t ng i trong h th ng b t u th c hi n m t giao tác không úng kéo dài hàng ngày.3 . Nh ng nh#t ký l u tr ngo i tuy n c l u trong b ng t* và có th làm vi c v i th t c USEREXIT.2 Nh t ký l u tr Nh#t l u tr c. Tuy nhiên. nh t trong h u h t các tình hu ng. Nh ng nh#t ký l u tr tr c tuy n c l u tr v i nh ng nh#t ký ng c n cho khôi ph c khi h th ng b s c .3. m t thông i p l i ch. Cách ghi l u tr th ng c dùng trong nh ng h th ng s n ph m. v%n còn có m t s thao tác b t bu c ph i làm b ng tay m b o vi c khôi ph c c chính xác.3 mô t lu+ng x lý c a ghi l u tr Hình 11. khôi ph c l i h th ng c.Ghi l u tr 11.ra i u ki n h t kh n ng c p c quay lui (h+i x ).Nh p môn H qu n tr c s d li u DB2 123 LOGSECOND. khi v n c phát hi n thì ng i qu n tr c s d li u s.4 Nh t ký c s d li u t& Trung tâm i u khi n B n có th c u hình nh#t ký c s d li u t* trung tâm i u khi n b ng cách nh n chu t ph i trên c s d li u và ch&n “Configure Database Logging” . / có th ghi nh#t ký l u tr c n gán tham s db cfg LOGRETAIN là YES. Nh ng nh#t ký c l u tr cho phép khôi ph c c s d li u s m nh t có th b i nh ng t#p tin nh#t ký c. nh ng t#p tin nh#t ký không b ghi è nh ng chúng c l u tr tr c tuy n hay ngo i tuy n. vào th i i m tr c khi v n c x y ra.
li u theo h ng d%n t&ng b c n vi c t o b n ghi nh#t ký.4 .5 . t i ây ta có th ch&n ki u ghi nh#t ký quay vòng (circular) ho c ghi l u tr Hình 11.5 th hi n màn hình thi t l#p c u hình nh#t ký c s d li u.Nh t ký c s d li u t& Trung tâm i u khi n Hình 11. B ng 11.5 Các tham s c a nh t ký Có nh ng tham s DB CFG liên quan danh sách các tham s chính.1 li t kê .Nh p môn H qu n tr c s d li u DB2 124 Hình 11.Ghi nh t ký c s d 11.
Khi không còn tr ng i. c g ng t o ra t p nh#t ký m i n m phút n khi nó thành công.1.6 Sao l u c s d li u L nh sao l u d li u DB2 cho phép b n t o m t b n sao chép c s d li u lúc l nh c th c thi.Các tham s nh t ký 11. n u mu n sao l u c s d li u sample n ng d%n C:\BACKUPS b n có th a ra l nh này t* trình n l nh DB2 c a Window/Linux: .thay vì ch. DB2 s. S b n nh#t ký chính v i kích th S t p nh#t ký ph c n thi t c t o và s d ng cho vi c khôi ph c n u ng ho c l u tr t ng lai c t.&c có th ti p t c. SQL ch-.Nh p môn H qu n tr c s d li u DB2 125 Tham s logbufsz logfilsz logprimary logsecond Mô t L ng b nh c s d ng nh m t b nh#t ký tr c khi ghi chúng vào 'a. có dung l c logfilsz s. Tr c H u h t các l nh và công c có th tuy n ngh'a là ng i s d ng khác có th c k t n i và th c hi n các thao tác trên c s d li u trong khi b n th c thi l nh c a mình. Ph n tr m s nh#t ký ho t S t p nh#t ký ho t ng t i a cách nhau qua giao d ch ng cho m t UOW kích h&at B ng 11. Cú pháp n gi n nh t b n có th s d ng ch y l nh này là: BACKUP DATABASE <dbname> [ TO <path> ] c th c hi n tr c tuy n hay ngo i tuy n. tuy nhiên. Kích th m cho các b n ghi ng 4KB ct o c c a m i nh#t ký ã c u hình. / cho phép m t thao tác tr c tuy n. b n có th ch.nh m t thi t l#p +ng nh t cho các nh#t ký c l u gi trên m t ng d%n ph ( nh c a ng d%n nh#t ký chính) Tên t p nh#t ký ho t Cho phép ch ng hi n hành ng trình userexit sao chép nh#t ký ngo i tuy n Gi i h n s m t mát c a vi c kh i ph c h"ng Cho phép ch ghi nh#t ký l u tr blk_log_dsk_ful maxlog num_log_span T ng t tùy ch&n OVERFLOW LOG PATH c a l nh ROLLFORWARD. Ngo i tuy n là không ng i nào c k t n i n c s d li u trong khi b n th c hi n thao tác. logpath/newlogpath V trí các nh#t ký ho t mirrologpath loghead userexit softmax logretain overflowlogpath / b o v các nh#t ký trên ng d%n chính kh"i s c h"ng 'a hay vô tình xóa. thêm t* khóa ONLINE vào cú pháp l nh.nh tùy ch&n OVERFLOW LOG PATH cho m i l nh ROLLFORDWARD c a ra. ngo i tuy n. làm vi c trong ch Ví d . n u không thì ng m nh b n s. Thay vì ó. b n có th thi t l#p tham s c u hình này m t l n Thi t l#p tránh vi c tràn 'a phát sinh khi DB2 không th t o ra m t t p nh#t ký m i trong ng d%n nh#t ký ang ho t ng.
nh#n m t thông báo l i b i m t sao l u ngo i tuy n không th c th c hi n khi có các k t n i. n u không b n s. m t t p m i ch a nh c s c t o ra. a ra l nh t* trình n l nh DB2 nc s d li u. Nh chúng ta s. và l p l i l nh sao l u n u b n ã g p l i lúc u.Nh p môn H qu n tr c s d li u DB2 126 db2 BACKUP DB sample TO C:\BACKUPS Chú ý r ng th m c C:\BACKUPS ph i t+n t i tr c khi th c thi l nh. Tham kh o sách h ng d%n DB2 có chi ti t h n Khi có vài b n sao l u c ghi l i và l u tr trên cùng ng d%n thì m c th i i m ghi l i cu i tên t p c s d ng phân bi t gi a các nh sao l u. ngh'a là ch. nó có th không làm vi c.6 d li u sao l u Hình 11.ng cc nh v i CAT0000. là tr ng h p cho t t c n b n DB2 tr* n b n th ng m i DB2 Enterprise Edition v i tính n ng DPF. Lo i “3” ch!ng h n. / i vài giây.ng ch c ch n là không có k t n i nào n c s d li u khi b n th c thi l nh trên.trong hình 11. Nút cc nh v i NODE0000 cho c s d li u không phân tán. Trong tr ng h p tìm ra nh ng k t n i trình n Window/Linux: db2 list applications / bu c ng t t t c k t n i Window ho c c a Linux: n c s d li u. Nút catalog c. .ng l u ý r ng l nh cu i cùng ch y theo cách th c không +ng b . nh#n nh ng cu c g&i t* nh ng +ng nghi p nóng tính y! C. C. Ngh'a là khi b n c g ng ch y l nh sao l u ngay sau ó. Tên c a t p này theo quy c c ch. l nh RESTORE có th s d ng m c th i i m này ph c h+i m t b n sao ã nh. a ra l nh DB2 này t* db2 force application all B n có th không c n ch y l nh cu i cùng trong môi tr ng s n xu t v i nhi u ng i s d ng. th y ph n ti p theo.6 .Quy c t tên nh sao l u Lo i “0” có ngh'a ó là b n sao l u y . Sau khi th c thi thành công l nh sao l u.m t sao l u b ng bi u tr ng. n u không b n s.
ng mu n hi u ch-nh chúng khi có m t ho t ng c th di0n ra. Bây gi . B m Next chuy n sang m c ti p theo sau khi danh m c công c ã c t o l#p. B m nút OK ti p t c.Nh p môn H qu n tr c s d li u DB2 127 Bài t p nhanh #8 . Nh p chu t d li u EXPRESS và ch&n bi u t ng Backup. T* cây i t ph i trên c s b c Backup ng Trung tâm i u khi n. nh ng ôi khi b n c. b n s. B m Next t i m c ti p theo c a công c Backup. Thông th ng. Sau ó b m Next chuy n sang m c ti p theo. ch&n th m c b n v*a t o ra. ây s. hi u ch-nh l ch sao l u cho c s d li u EXPRESS. . là th m c ch a c s d li u sao l u.L p l$ch sao l u M c ích: M c dù DB2 có m t vài kh n ng t ng duy trì c s d li u. t o m t th m c m i trong h th ng có tên là C:\db2backup. B m nút Add. tóm t t tr ng thái hi n t i c a c s d g+m th i i m sao l u cu i cùng và ph ng th c truy c#p. ch&n ích n c a d li u s. ch 4. b n ch&n All Database. Hãy ch&n bi u t ng File System trong danh sách th Media Type. b n nên ch&n m t 'a khác v i 'a ang l u c s d li u hi n hành. Danh m c công c s. Ch. 3. r+i b m OK. 5. Trong ph n bài t#p nhanh này. c sao l u. B n có th m m c Options and Performance tuy nhiên b n nên m c nh vì DB2 m c nh cho phép sao l u ch t i u nh t. Công c t*ng c kh i ng. Ti p theo b n ch&n ch&n m c Schedule. Trong m c Image. li u bao chuy n 2. ch a d li u bi n i v t t c các tác v l#p l ch. Ch&n hê th ng t o danh m c các công c và th c hi n chúng. Trong m c Schedule. Các th t c : 1.ra m t gi n + cho danh m c công c và ch&n t o nó trong c s d li u EXPRESS hi n hành. n u nh trình l#p l ch ch a c kích ho t thì b n hãy kích ho t chúng. Trong m c Introduction s.
Trong m c Summary. c t o ra. 8. Ch y Trung tâm tác v (Task Center) l u v*a m i t o ra. t o ra m t m c l c cho vi c thi hành các tác v . xem l i các tác v s. Finish t o ra tác v . 7. L#p l ch sao l u m i ngày vào lúc 1 gi sáng. Sau ó b m xem ho c s a ch a các tác v sao . Trong m c Schedule. B m Next chuy n sang m c k ti p. b n s.Nh p môn H qu n tr c s d li u DB2 128 6.
4 ph n ti p theo ta s. gõ l nh nh sau: .khôi ph c l i b ng cách s d ng nh sao l u. ho c m t i m c th theo th i gian. th y cách khôi ph c d li u cu n cho phép b n có th khôi ph c t* các b n ghi d phòng và sau ó ghép vào ph n cu i cùng c a các t p nh#t ký. ch ng trình khôi ph c d li u h"ng ct ng th c thi.khôi ph c c s d li u t* b n ghi d phòng thì s. 11. Chú ý r ng t* khôi ph c (recovery) ph c l i là RESTORE. b n s. chuy n gì s.1 Các ki u khôi ph c d li u Có ba lo i khôi ph c d li u: Khôi ph c d li u h+ng: Gi thi t r ng b n ang làm vi c v i c s d li u DB2 trên máy tính thì i n. nh ng l nh khôi Khi b n kh i ng l i máy tính và kh i ng DB2.Nh p môn H qu n tr c s d li u DB2 129 11. Do ó c s d li u c a b n c tr v tr ng thái ngay tr c khi nó c sao l u.7. N u nh b n ch. c m b o r ng. các c s d li u nh N u vi c l u tr b n ghi c cho phép tr c vi c sao l u. c s d li u c a b n tr ng thái phù h p nh t. Sau khi hoàn thành. M&i tác ng lên c s d li u ó sau th i i m sao l u u b m t. &c s. Khôi ph c d li u ki u này làm gi m s m t mát d li u m t cách t i a. t ng ch y l nh RESTART DATABASE và s. x y ra v i c s d li u c a b n? t ng t m t c dùng nhi u trong ph n này. mà còn t* các t p nh#t ký. ph c h+i c s d li u c a b n t* nh m t b n sao. t o ra ã t+n t i th i i m sao l u.7 Khôi ph c c s d li u Khôi ph c c s d li u bao hàm vi c khôi ph c c s d li u t* các b n ghi d phòng và nh#t ký. và ph c h+i các giao d ch khi tr c tr ng thái kích ho t.2 Khôi ph c c s d li u Dùng l nh RESTORE khôi ph c d li u t* m t b n l u. D gi n nh t cho câu l nh này: RESTORE DATABASE at <th•i-•i•m>] i ây là c u trúc n <tên c• s• d• li•u> [from <•••ng d•n>] [taken Ví d : N u b n có m t t p sao l u có tên nh sau: B n s. Khôi ph c d li u phiên b n (ho c khôi ph c nh): Có ngh'a là.7. DB2 s. b n s. thì b n không ch. v*a khôi ph c d li u t i m t th i i m xác nh b ng l nh ROLLFORWARD. 11. Khôi ph c d li u theo th i gian: Ki u khôi ph c d li u này v*a cho phép b n khôi ph c c s d li u t* m t b n sao.
Cho phép sao l u nh ng thay i (Delta) và sao l u t ng d n (incremental).sao l u nh ng thay i ti p theo. • • • .Nh p môn H qu n tr c s d li u DB2 130 RESTORE DB sample FROM <•••ng d•n> TAKEN AT 2006314131259 11. Dùng db2look và db2move cho tr ng h p này. Cách sao l u thay i ch. Sao l u c s d li u ch Khôi ph c c c s d li u ang t+n t i. Khôi ph c ho c sao l u d li u theo không gian b ng. Khôi ph c d li u t i m t 'a khác v i vùng c n khôi ph c. Sao l u các b n “ch p” d li u (flash copy) ( òi h"i v ph n c ng t ng thích) Khôi ph c b ng ã m t (n u tùy ch&n c l#p cho b ng) Sao l u h i u hành này và khôi ph c h i u hành khác là không th . trong khi ó cách sao l u d n t ng thì ghi nh#n toàn b nh ng thay i và tích h p chúng vào m i nh sao l u. thay vi làm v i toàn b c s d li u.8 Các ho t ng khác v i BACKUP và RESTORE D i ây là danh sách m t vài i u b n nên bi t v l nh BACKUP và RESTORE. Chúng tôi khuyên b n nên &c l i cu n h ng d%n v DB2 có thêm thông tin chi ti t. • • • • • 32 bit còn khôi ph c d li u ch 64 bit.
có l i nh t khi dùng REORG. d li u c a b n b t u b phân o n.1. Khác v i vi c làm b ng tay. DELETE trên c s d li u c a b n. t ch c l i d li u làm cho vi c truy v n d li u tr nên hi u qu h n. n u m t ng i qu n tr c thuê.Nh p môn H qu n tr c s d li u DB2 131 12 Ch ng 12 . tái ghép nh ng m nh v n c. Hình 12. 12. có nhi u th i gian r nh r i th c hi n vi c nâng cao ho t ng làm gia t ng giá tr cho công ty.ng nh nh ng kho ng tr ng l i và s. T i th i i m ó. Các b ng hay thay i s.1 trình bày nh ng công vi c duy trì c th c hi n theo m t chu trình hình tròn.1 – Các công vi c duy trì: REORG. B n có th làm ch. các b ng trong m t c s d li u ã c thay i theo các l nh nh UPDATE. T t c m&i th trong DB2 u t ng th c hi n nh ng công vi c này. b n th c hi n các tính toán INSERT. 12.1 REORG. theo sau là m t REBIND. anh y hay cô y s. B n DB2 Express-C c. DELETE và INSERT. RUNSTATS. chia nh" ra thành các trang c s d li u. Sau m t th i gian. RUNSTATS. bàn v các nhi m v c n thi t gi cho CSDL c a b n duy trì ho t ng c t t. REBIND Hình 12.ng gi ng nh t t c các b n DB2 hi n th i u ch a ng t t c các kh n ng t ng này. REBIND Có ba công vi c duy trì chính trong DB2.1 L nh REORG Qua th i gian. nh hình 12.1 mô t : REORG.Nhi m v b o trì Trong ch ng này chúng ta s. nh ng ng i không c n thuê làm liên t c làm qu n tr qu n lý máy ch d li u. Kh n ng t qu n lý là m t l i ích l n làm nh" g&n và làm v*a ph i s l ng nhân viên trong nh ng công ty. N u m t REORG c th c hi n. RUNSTATS và REBIND. nó c khuyên là nên ch y m t RUNSTATS. UPDATE. chu k m i l i c b t u v i REORG. L nh REORG s.m c REORG nh v i .
s s)n có v i m t b ng.1. DB2 cung c p l nh RUNSTATS c#p nh#t nh ng th ng kê này. Cú pháp: REORG TABLE <tablename> Ví d : REORG TABLE employee L nh REORGCHK có th c n c s a. … Thông tin v phân tích th ng kê không c c#p nh#t t ng. Khi nh ng th ng kê c s d li u c c#p nh#t. xác nh c d li u trong b ng thay i nh th nào. các b ng danh m c có các phân tích th ng kê v có bao nhiêu c t hi n di n trong m t b ng. DB2 có th ch&n m t ph ng án truy nh#p t t h n.có m t dòng so v i b ng có m t tri u dòng. trong khi l nh REORG tr c tuy n cho phép truy nh#p t i b ng. ph n tác d ng v i yêu c u v hi u n ng c a h th ng. Nh ng s + truy nh#p SQL t'nh c xác nh khi b n a ra l nh BIND. c dùng nh ng th ng kê m i nh t. ây là nh ng công vi c t t nh t cho nh ng b ng nh". nên b n không mu n DB2 c#p nh#t nh ng th ng kê sau m i thao tác trên c s d li u. và s d ng phân tích th ng kê các i t ng c s d li u c l u trong các b ng danh m c cho hi u su t khai thác c s d li u l n nh t. nh ng có th làm tiêu hao m t chút tài nguyên h th ng.employee 12.1. và m t REORG có th c th c hi n tr c tuy n hay không tr c tuy n. Thay vào ó. Ví d . C ch t i u là h th ng ánh giá tri nh#p hi u qu nh t th c. nh ng không cho phép truy nh#p t i b ng. L nh REORG không tr c tuy n th c hi n nhanh h n và hi u qu h n. .tablename> Ví d : RUNSTATS ON TABLE myschema.2 s. có bao nhiêu và nh ng ki u gì c a ch. có bao nhiêu hàng trong nó. Nó gi cho các th ng kê c s d li u luôn c#p nh#t. Nó tìm nh ng ng d%n truy nh v và truy v n d li u. Cú pháp: RUNSTATS ON TABLE <schema. không ph i t t c các câu truy v n s.2 L nh RUNSTATS C ch t i u c a DB2 (Optimizer) là “kh i óc” c a DB2. nó s. giúp chúng ta hi u ý t ng này. vì các th ng kê c dùng t i th i i m ó không gi ng nhau nh th i i m hi n t i.Nh p môn H qu n tr c s d li u DB2 132 các b ng. Chính vì thi t k ki u này. C ch t i u c a DB2 có th t o ra nh ng thay i g c r0 c b n trong ng d%n truy nh#p n u b ng ch. Hình 12.s 12.3 BIND/REBIND Sau khi ch y thành công l nh RUNSTATS. c dùng tr c m t REORG xác nh b ng hay ch. T n su t c a các th ng kê t#p h p này s.
và sau ó l u chúng thành gói. không t ng c#p nh#t tính toán l i ng d%n c s trên nh ng th ng kê m i nh t. Bây gi .c” ch a mã C v i t t c chú thích SQL. t o m t “th vi n” nh trình bày phía trên bên ph i c a hình. T p “. hai t p c sinh ra. Cú pháp: db2rbind database_alias -l <logfile> Ví d : / óng gói l i t t c các gói c a c s d li u sample và l u nó trong nh#t ký t i t p db2rbind sample -l mylog. n u m t l nh RUNSTATS c th c thi.1. th c hi n l nh sau: . tuy nhiên gói s.txt. L nh db2rbind có th c dùng óng gói l i các gói trên v i th ng kê m i nh t. Trong hình 12. Sau khi ti n biên d ch.bnd” gi ng nh v#y. i u gì s.3 trình bày cách th c hi n.2 m t ch ng trình nhúng vi t b ng C ( c l u tr nh m t t p v i ph n m r ng là “sqc”) c ti n biên d ch.4 Các công vi c duy trì t& Trung tâm i u khi n T* Trung tâm i u khi n b n có th REORG và RUNSTATS. và m t t p “.txt 12. x y ra n u m t tri u dòng c chèn vào bên trong b ng s d ng trong ch ng trình nhúng trên? Sau khi chèn. c c#p nh#t. nó c óng gói l u trong c s d li u. m t t p “.bnd” ch a t t c các câu l nh SQL.2 – Ti n trình k t n i SQL t-nh.Nh p môn H qu n tr c s d li u DB2 133 Hình 12. mylog. Hình 12. /óng gói thì t ng ng v i biên d ch các câu l nh SQL v i nh ng s + truy nh#p t t nh t c xác nh trên các th ng kê ã có t i th i i m này. nh ng th ng kê s. T p C v i ph n m r ng “.c” c biên d ch nh th ng l v i trình biên d ch C.
Nh p môn H qu n tr c s d li u DB2 134 Hình 12. Hình 12. khung nhìn ho t ng c s d li u phía d i bên ph i c a Trung tâm i u khi n s. Hình 12. cung c p thông tin v c s d li u nh là v kích th c. c a l n sau cùng. Vi c hi n th này cho phép b n nhanh chóng xác nh nh ng duy trì c n thi t cho c s d li u c a b n.4 hi n th nh ng thông tin này.3 – REORG và RUNSTATS t& Trung tâm i u khi n B n ch&n b ng mà b n mu n t ch c l i. dù nó có c b o trì t ng hay không. nh p ph i chu t và ch&n t ch c l i (cho REORG) hay ch y th ng kê (cho RUNSTATS) Hi n th$ thông s c s d li u: Khi b n ch&n m t c s d li u.4 – Hi n th$ thông s c s d li u t& Trung tâm i u khi n .
ho t ng nh là m t c a s b o trì. Hình 12. t* 2h sáng t i 4h sáng.5.Ng i dùng nh ngh'a m t c a s b o trì (khung th i gian) t i th i i m ó h th ng s.th c hi n b o trì m t cách t ng khi c n thi t và ang trong th i gian kích ho t c a c a s b o trì. Ho t ng b o trì t ng bao g+m nh ng b c sau ây: . .DB2 ch. thì khung th i gian này s.2 Các l a ch n b o trì Có 3 cách th c hi n vi c b o trì h th ng. 2.6 s. T o ra m t o n k ch b n (script) th c hi n vi c b o trì h th ng.5 – M Configure Automated Maintenance Wizard b o trì h th ng m t cách t ng theo h ng Hình 12. hi n ra c a s “C u hình d%n”. B n có th t o các k ch b n v i nh ng l nh b o trì và l#p l ch h p lý cho nó ho t 3. ng. RUNSTATS. b n có th m “Configure Automated Maintenance Wizard” nh hình minh h&a 12. T ng b o trì ng giám sát công vi c b o trì cho b n (b ng l ch REORG. DB2 t BACKUP) Trong ph n này. B o trì th công B n th c hi n ho t ng b o trì này m t cách th công khi có nhu c u phát sinh. 1. Ví d . chúng ta t#p trung ch y u vào cách b o trì t ng.Nh p môn H qu n tr c s d li u DB2 135 12.Có 2 lo i c a s b o trì chính: m t là th c hi n tr c tuy n. n u h th ng có ít nh t các ho t ng vào ngày ch nh#t. . . còn lo i kia là th c hi n ngo i tuy n. T* giao di n i u khi n chính. th c hi n công vi c b o trì mà không gây ra s xáo tr n.
Nh p môn H qu n tr c s d li u DB2 136 Hình 12.6 – C u hình b o trì h th ng m t cách t ng theo h ng d%n .
Nh p môn H qu n tr c s d li u DB2
137
Bài t p nhanh #9 – C u hình vi c b o trì t M c ích Trong bài t#p nhanh này, v i vài thao tác b o trì trên c s d li u m%u DB2. Các th t c
ng
n gi n, b n s, c u hình cho vi c t
ng
1. T* cây i t ng c a Trung tâm i u khi n, nh n chu t ph i vào c s d li u SAMPLE và ch&n m c “Configure Automatic Maintenance”. Nó s, m ra c a s th c hi n vi c b o trì t ng theo h ng d%n. 2. Trang Introduction c a “h ng d%n” hi n th nh ng cài t hi n th i c a ch c n ng t ng b o trì. N u b n t o ra c s d li u v i ch c n ng t ng b o trì, khi ó nó s, t ng c c u hình. B n có th dùng “h ng d%n” này c u hình l i ch c n ng t ng b o trì. B m Next chuy n t i trang ti p theo c a “h ng d%n”. 3. Trang Type c a “h ng d%n” yêu c u b n ch&n gi a vô hi u hóa t t c các tùy ch&n t ng l u gi và thay i c u hình c a vi c t ng b o trì. Ch&n m t ch c n ng thay i cài t hi n t i c a t ng l u gi . B m Next. 4. Trang Timing (th i gian) c a “h ng d%n” s, yêu c u b n ch- rõ c a s c th c hi n vào m i t i th 7 b o trì. C u hình cho c a s ngo i tuy n s, và ch nh#t t* gi a êm t i 6h sáng nh hình bên d i. B m nút Change bên c nh c a s b o trì ngo i tuy n và ch&n th i gian nh mong mu n. Sau tr l i “h ng d%n”. khi hoàn thành nh ng thông tin c n thi t, b m nút OK Thoát kh"i c a s tr c tuy n (b o trì tr c tuy n có th m b t k lúc nào). B m nút Next.
Nh p môn H qu n tr c s d li u DB2
138
5. / n trang Notification (c nh báo) c a “h t ng tác trong tr ng h p có m t ho t b" qua b c ó. B m Next.
ng d%n”, b n có th cài t m t s ng t ng b o trì b l i. Bây gi
6. / n trang Actives c a “h ng d%n”, b n có th ch&n là có t ng hóa các công vi c cá nhân hay không c.ng nh là c thông báo v các ho t ng c th khác.Trong ví d này, ph i ch c r ng t t c các h p ki m “Automate” u c ch&n và các h p ki m “Notify” u không c ch&n. B m Next. 7. Tr c khi th c hi n trang k ti p c a “h ng d%n”, b n nên c u hình v trí l u d phòng c a c s d li u. Lý t ng nh t là b n nên l u tr m t 'a v#t lý khác trong tr ng h p 'a b l i. T* trang Activies, ch&n ch c n ng “Backup database”, sau ó b m nút “Configure Settings”. 8. Trên trang Backup Criteria c a c a s “Configure Settings”, ch&n ch c n ng “Balance Database Recoverability with Performance”. Trên trang Backup Location, ch&n v trí l u d phòng và b m nút “Change”. Ch- ra m t v trí khác th c hi n l u d phòng (ph i b o m là b nh trong 'a ó). Trên trang Backup Mode, b o m là “Offline Backup” ã c ch&n. B m OK óng trang Backup Criteria. B m nút Next. 9. Trang Summary (tóm t t) c a “h ng d%n” ch a m t b ng tóm t t c a nh ng l a ch&n mà b n ã ch&n. B m nút Finish ch p nh#n và thi hành nh ng thay i ó.
Nh p môn H qu n tr c s d li u DB2
139
13
Ch ng 13 – Truy c p ng th i và khóa
Ch ng này t#p trung th o lu#n làm th nào cho phép nhi u ng i dùng truy c#p vào cùng m t d li u gi ng nhau t i cùng m t th i i m mà không làm nh h ng l%n nhau, và gi cho quá trình ho t ng c a h& phù h p. Chúng ta s, th o lu#n v khái ni m c a các giao d ch, truy c#p +ng th i và khóa. 13.1 Các giao d$ch M t giao d ch hay m t n v công vi c g+m có m t hay nhi u dòng l nh SQL mà khi th c hi n c n ph i c coi là m t n v riêng l2. Có ngh'a là n u m t trong nh ng dòng l nh trong giao d ch th t b i thì toàn b giao d ch th t b i, và b t k dòng l nh nào c thi hành n i m th t b i thì s, c quay lui (h+i x ), a d li u v giá tr , tr ng thái tr c ó. M t giao d ch k t thúc v i dòng l nh COMMIT, nó c.ng có ngh'a là báo hi u b t u m t giao d ch m i. Hình 13.1 cung c p cho chúng ta ví d c a m t giao d ch
Hình 13.1 – M t ví d v giao d$ch Trong hình 13.1, ví d b n mu n chuy n 100 ô la t* tài kho n ti t ki m (savings) c a b n sang tài kho n séc (checking). Vi c ó òi h"i ph i th c hi n công vi c này: Tr* 100 ô la tài kho n ti t ki m C ng 100 ô la vào tài kho n séc
Nh p môn H qu n tr c s d li u DB2
140
N u dãy các vi c trên không c xem xét nh là m t n v công vi c - m t giao d ch, hình dung i u gì s, x y ra n u có l i (x y ra) sau khi tr* ti n tài kho n ti t ki m, nh ng không c ng c ti n vào tài kho n séc. B n s, m t 100 ô la! 13.2 Truy c p ng th i Truy c#p +ng th i ý nói r ng nhi u ng i có th làm vi c cùng m t th i i m trên cùng m t c s d li u. DB2 c thi t k nh là m t c s d li u nhi u ng i dùng. Vi c truy c#p d li u ph i c k t h p chính xác và rõ r t s d ng m t c ch b o m tính toàn v7n và ch c ch n c a d li u. Xem ví d 13.2
Hình 13.2 - M t ví d c a truy c p ng th i và s c n thi t cho vi c i u khi n truy c p ng th i Trong hình 13.2, có 4 ng d ng, App A, App B, App C và App D ang c g ng truy c#p n cùng m t dòng (dòng 2) trong b ng d li u. Không có i u khi n truy c#p +ng th i, t tc ng d ng có th th c hi n các thao tác i v i dòng d li u này. Gi nh r ng t t c ng d ng ang c#p nh#t c t Age cho dòng 2 v i giá tr khác, ng d ng th c hi n c#p nh#t sau cùng s, là "ng i chi n th ng" trong tr ng h p này. Hi n nhiên trong ví d này m t i u khi n truy c#p +ng th i nào ó c òi h"i m b o ch c ch n cho k t qu . /i u khi n truy c#p +ng th i này d a vào vi c s d ng khóa b n ghi. Khái ni m khóa và truy c#p +ng th i có liên quan ch t ch, v i nhau. Khóa dùng t m th i ng n nh ng ng d ng thao tác trên chúng cho n khi m t thao tác k t thúc. N u chúng ta có nhi u khóa h n trong m t h th ng thì vi c truy c#p +ng th i s, ít i. Nói m t cách khác, n u chúng ta có ít khóa h n trong h th ng thì s, có nhi u truy c#p +ng th i h n. Nh ng khóa này s, t ng xu t hi n h tr m t thao tác và s, c gi i phóng khi thao tác k t thúc (khi s d ng l nh COMMIT ho c ROLLBACK). Các khóa có th t trên các b ng ho c các dòng. Có hai lo i khóa c b n: - Khóa chia s2 (khóa S) c s d ng khi ng d ng mu n &c và ng n c n c#p nh#t t* nh ng dòng khác - Khóa dành riêng (khóa X) – c s d ng khi m t ng d ng c#p nh#t, thêm hay xóa m t dòng Bây gi chúng ta ý n hình 13.3, nó có v2 gi ng nh xu t hi n thêm m t khóa hình 13.2 nh ng bây gi nó
Nh p môn H qu n tr c s d li u DB2
141
Hình 13.3 – M t ví d c a truy c p
ng th i, và s
c n thi t c a khóa
Trong ví d hình 13.3, n u App B truy c#p dòng th 2 u tiên, và th c hi n vi c UPDATE, App B gi m t khóa dành riêng (khóa X) trên dòng ó. Khi App A, App C và App D c g ng truy c#p vào dòng 2, chúng s, không th UPDATE dòng này b i vì khóa X. Vi c ki m tra này giúp b o m tính toàn v7n và ch c ch n c a d li u. khi không ki m tra truy c p ng th i 13.3 Các v n Khi không có i u khi n truy c#p +ng th i, chúng ta có th g p nh ng v n • • • • M t d li u c#p nh#t /&c v i không cam k t /&c không l p l i /&c th*a d i ây
13.3.1 M t d li u c p nh t M t d li u c#p nh#t là m t v n t ng t nh gi i thích tr d ng th c hi n c#p nh#t sau cùng s, là “ng i chi n th ng”.
c trong m c này, khi ng
Hình 13.4 – M t d
li u c p nh t
5 kéo theo nh ng s vi c này: 1. 4. App1 cu n l i nh ng thay i trên dòng ó App2 thì ang &c v i d li u không c g&i là “ &c v i không cam k t” c cam k t. . Và chu i vi c sau ó là: 1.Nh p môn H qu n tr c s d li u DB2 142 Trong hình 13. ng d ng c úng Hình 13.5 – /&c v i không cam k t Hình 13. App1 c#p nh#t m t dòng App2 c#p nh#t dòng t ng t App1 hoàn t t App2 hoàn t t D li u c#p nh#t c a App1 s. Bên trái là App1.3. và k t* ó d li u không h p l và 13. b m t khi App2 c#p nh#t l i nó.3 * c không l p l i /&c không l p l i ng ý r ng b n không t c k t qu gi ng nhau sau khi th c hi n vi c &c gi ng nhau v i nh ng thao tác gi ng nhau. 3. App2 &c giá tr m i c a dòng ó 3.2 * c v i không cam k t M t hành ng &c không cam k t ho c “ &c có ý x u” c#p n vi c m t &c nh ng thông tin mà không c cam k t. 2. và t t nhiên vi c này thì không n.4 có hai ng d ng c g ng c#p nh#t trên cùng m t dòng.3. App1 c#p nh#t m t dòng 2. và bên ph i là App2. do ó x y ra vi c “M t d li u” 13.
6.4 * c th&a V n &c không có th c gi ng nh v n &c không l p l i.6 2.7 cung c p cho chúng ta ví d c a v n này Hình 13.7 . d ng nh n u b n c Honolulu. M t dãy các s vi c là: g ng ghi m t chuy n bay t* Dallas n 1.6 – * c không l p l i Trong hình 13. t* lúc App1 không c cung c p d li u t l i. nó không th sao chép l i b ng d li u. App2 xóa m t dòng trong b ng (ví d . App1 m m t b ng ( c hi u nh b ng k t qu ) hi n hành nh b n th y trong hình 13. App2 hoàn t t nh ng thay i 4. nh ng khác nhau là nh ng l trình k ti p.* c th&a . Hình 13. b n có th thu c nh ng dòng v*a thêm vào mà úng ra thì chúng (dòng) ít h n. ó chính là v n l p l i” ng t ang &c l p c g&i là “ &c không 13. dòng v i destination “San Jose”) 3. App1 óng và m l i b ng Trong tr ng h p này.3.Nh p môn H qu n tr c s d li u DB2 143 Hình 13.
App1 s. d a vào s l a ch&n m c cô l#p. 13. N u dòng c c#p nh#t. b n có th có nh ng tác ng khác nhau cho c s d li u khóa m t ng d ng DB2 cung c p nh ng m c • • • • b o v khác nhau cô l#p d li u: /&c v i không cam k t (UR) 6n nh con tr" (CS) /&c n nh (RS) /&c l p l i (RR) 13. Nh ng v n v%n t+n t i v i c p • /&c v i không cam k t • /&c không l p l i • /&c th*a cô l#p này: Nh ng v n c ng n ng*a v i c p • M t d li u khi c#p nh#t cô l#p này là: 13.&c. Nó cung c p m t m c khóa t i thi u. 4.4.1 * c v i không cam k t /&c v i không cam k t c. Không có s khóa dòng nào t+n t i trên nh ng thao tác &c. 3. V n này c g&i là &c th*a ang &c l p l i. nó s. App1 m m t b ng App2 thêm m t dòng vào c s d li u App2 hoàn t t nh ng thay i App1 óng và l i ti p t c m b ng n i mà nó có tiêu chu n c a b ng Trong tr ng h p này. c gi cho n khi m t dòng m i c n p ho c n v làm vi c c k t thúc. thì khóa s. v i m c cô l#p này thì dòng “hi n hành” c a con tr" (cursor) b khóa. /ó là m c cô l#p th p nh t.2 (n $nh con tr+ 6n nh con tr" là c p cô l#p m c nh. V c b n.4. N u ó là dòng ch.ng c hi u nh &c có ý x u.7 trình bày chu i s ki n: 1. c gi cho n khi n v làm vi c c k t thúc Nh ng v n v%n t+n t i v i m c • /&c không l p l i • /&c th*a cô l#p này: Nh ng v n c ng n ng*a v i m c • M t d li u c#p nh#t • /&c không cam k t cô l#p này . và cung c p m c truy c#p +ng th i cao nh t. 2.4 Các m c cô l p B n có th ngh' các m c cô l#p nh là n i gi các chính sách khóa.Nh p môn H qu n tr c s d li u DB2 144 Hình 13. không th y d li u t ng t nh l y c nhi u dòng h n. n u các ng d ng khác không xâm nh#p xóa ho c s a m t b ng. và thao tác c#p nh#t gi nhi m v nh là n u chúng ta dùng c p cô l#p n nh con tr". chi c khóa s.
8 so sánh s khác nhau mà các m c cô l#p mang l i. Ví d n u b n có m t b ng ch a 10.Nh p môn H qu n tr c s d li u DB2 145 13. Nó cung c p c p khóa cao nh t.4. gi i phóng nó s m r+i nó l y dòng 2 v . nó khóa t t c các dòng tiêu chu n trong t#p h p k t qu . ho c thêm m i m t dòng mà có th nh h ng n t#p h p k t qu cho n khi m t n v công c hoàn t t. Không m t ch ng trình nào khác có th c#p nh#t. và khóa s. sau ó ch. C ch &c n nh s d ng m t m c khóa v*a ph i. T c là nh ng dòng không c n thi t trong t#p h p k t qu cu i cùng có th b khóa.4. M c cô l#p n nh con tr" gi m t cái khóa dòng 1 khi nó ang l y dòng ó v . Trong hình. không c gi i phóng cho n khi k t thúc m t giao tác (khi hoàn t t) . C ch &c l p l i b o m r ng nh ng câu truy v n t ng t nhau vi c c a ra b i m t ng d ng trong m t n v làm vi c s.000 dòng và câu truy v n tr v 10 dòng. b khóa. V n v%n còn t+n t i v i m c • không có Nh • • • • cô l#p này: cô l#p này: ng v n c ng n ng*a v i m c M t d li u khi c#p nh#t /&c không cam k t /&c không l p l i /&c th*a cô l p d li u 13. và truy c#p +ng th i t i thi u nh t.4. V n v%n t+n t i v i m c • /&c th*a Nh • • • cô l#p này: cô l#p này là: ng v n c h n ch v i m c M t d li u c#p nh#t /&c v i không cam k t /&c không l p l i 13.5 So sánh các m c Hình 13.… / i v i m c cô l#p &c n nh ho c &c l p l i. Khóa c gi trên t t c các dòng.có 10 dòng ó b khóa.4 * c l p l i C ch &c l p l i là m c cô l#p cao nh t. chúng ta nhìn th y m c cô l#p “ &c không cam k t” không khóa gì c .3 * c n $nh V i &c n nh. nh#n c k t qu gi ng nhau t i m i th i i m. t t c các dòng mà ng d ng làm vi c trong m t ph m vi u b khóa. b t c dòng nào l y v s. Cho m t con tr". xóa. x lý vi c xây d ng m t t#p h p k t qu . nh ng s.
NET hay JDBC và làm sao khi t nh ng thu c tính này ph i phù h l#p c a DB2: c ng d ng. nó m c nh. b ng 13. Ch!ng h n. Ch!ng h n c phát bi u có th dùng v i m nh SELECT … WITH {UR | CS | RS | RR} .rõ t i nhi u m c : • Phiên làm vi c trong ng d ng • K tn i • Câu l nh Nh ng m c cô l#p bình th ng c xác nh t i phiên ho c t i m không ch.Nh p môn H qu n tr c s d li u DB2 146 Hình 13.4. N u nh t i con tr" n m t ch ng trình p v i m t m c cô Table 13.1 cho th y nh ng m c cô l#p kh d' cho .1 – S M c cô l#p nh : so sánh c a thu t ng t m c cô l p WITH {m c cô l#p}.rõ c m c cô l#p trong ng d ng c a các b n.6 * t m c cô l p Nh ng m c cô l#p có th c ch.8 – So sánh các m c cô l p 13.
thay vì khóa nhi u hàng. N u ng d ng c a các b n không yêu c u có nh ng giá tr nh ví d . Hi u su t r t là quan tr&ng. Khi b t i u cho r ng nó t t h n là m t khóa trên toàn b b ng.5 Khóa leo thang M i khóa do DB2 t o ra s. t ng giá tr c a LOCKIST và MAXLOCKS.Ph n tr m c c i c a toàn b danh sách khóa cho m t ng d ng.S l ng c a b nh (trong trang 4k) d tr qu n lý nh ng khóa cho m&i ng d ng c n i. Hình 13. MAXLOCKS . còn v i SQL ng Vi c ch&n s d ng m c cô l#p nào ph thu c vào ng d ng c a các b n. ch&n cô l#p UR. Khóa leo thang không t t cho hi u n ng nh ng l i gi m s xung t. các m c thi t l#p các m c c t th i gian ch y. B i v#y. s leo thang khóa xu t hi n. c t t i th i i m óng gói. khóa leo thang xu t hi n khi m t ng d ng n yêu c u h n 44K trong t ng b nh khóa (200K * 22% = 44K). N u s leo thang khóa xu t hi n th ng xuyên v i s thi t l#p này.9 minh h&a cho i u này: Hình 13.Nh p môn H qu n tr c s d li u DB2 147 M t ng d ng c n xác nh “s b ” s hàng trong m t b ng. N u ng d ng c a các b n yêu c u i u khi n r t ch t trên d li u làm vi c v i nó. S m c nh là n m m i l n trang 4K (200K) trên Windows. ch&n cô l#p RR. T p nh#t ký tri u ch ng c a DB2 có th c dùng xác nh li u có . Con tr" c yêu c u m c cô l#p n nh v i ngo i l c a m t câu l nh SQL: SELECT COUNT(*) FROM tab1 WITH UR V i SQL nhúng.9 – Khóa leo thang Có hai tham s c u hình c s d li u chính liên quan • • n khóa leo thang: LOCKIST . s d ng l ng b nh nào ó. n u nh ng giá tr ng m nh c s d ng. M c nh là 22%. 13.
7 Ch khóa Khi hai ho c nhi u các ng d ng c n th c hi n m t phép toán trên cùng m t i t ng.Nh p môn H qu n tr c s d li u DB2 148 ph i s leo thang khóa ang xu t hi n. (db2diag. / b#t nh ng nh ch p nhanh cho khóa. / thu c a khóa vào m t th i gian nh t nh.672586 Application handle Application ID *LOCAL. thông tin theo dõi s.exe Authorization ID ADMINISTRATOR Application status Waiting Status change time Collected Application code page Locks held Total wait time (ms) = 11- = 9 = = 0001 = = = UOW = Not = 1252 = 4 = 0 List Of Locks Lock Name = 0x05000700048001000000000052 Lock Attributes = 0x00000000 Release Flags = 0x40000000 Lock Count = 255 Hold Count = 0 Lock Object Name = 98308 Object Type = Row Tablespace Name = TEST4K Table Schema = ADMINISTRATOR Table Name = T2 Mode = X Figue 13. th m c: C:\Program Files\IBM\SQLLIB\DB2) ng t p này n m trong th 13.log. m t trong s ó có th ph i i nh#n c khóa. c t#p h p.9: 8nh ch p nhanh k t qu c a m t ví d s d ng ng d ng khóa Application Lock Snapshot Snapshot timestamp 05-2002 00:09:08.6 Ki m soát khóa B n có th theo dõi nh ng s s d ng khóa b ng nh ch p nhanh khóa ng d ng DB2.9 – 0nh ch p nhanh khóa c a các ng d ng 13.00B9C5050843 Sequence number Application name db2bp. Theo m c nh m t ng d ng s. dùng l nh sau: c m t báo cáo GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENT ID <handle> Hình 13.DB2. . ta dùng l nh: UPDATE MONITOR SWICTHES USING LOCK ON Sau khi c cho phép.
T* CLP1 th c hi n các l nh sau: db2 connect to sample db2 +c update employee set firstnme = ‘Mary’ where empno = ‘000050’ / u tiên.10: Minh h&a m t tình hu ng b t c. theo nh ng b c sau ây: 1. g&i là "CLP1" và "CLP2" t ng ng).10 . ng i A gi c b t nho khô và gi s s. Ví d : SET LOCK TIMEOUT=WAIT n 13. Th i gian ch i m t ng d ng c a m t khóa c ki m soát b i tham s c u hình c s d li u. M hai c a s so n th o l nh c a DB2 (chúng tôi s. Trong thi t k ng d ng. ng i B gi c s a. 2. và sau ó th c hi n m t l nh c#p nh#t hàng trên b ng employee làm v i "empno= 50000". Theo m c nh. chúng ta có m t tình hu ng b t c. S ch i ch a bao gi c gi i quy t b i vì m i ng d ng ang gi m t tài nguyên mà nó ph c v cho nh ng nhu c u khác nhau.K$ch b n s b t c Trong hình 13. Thanh ghi CURENT LOCK TIMEOUT c n c dùng t th i gian ch khóa cho m t k t n i ã cho. Chúng i di n cho hai ng d ng khác nhau k t n i t i c s d li u.Nh p môn H qu n tr c s d li u DB2 149 i vô h n.8 V n khóa ph thu c và phát hi n M t s b t c (deadlock) xu t hi n khi hai ho c nhi u các ng d ng c n i t i cùng c s d li u. B i v#y. Hình 13. / mô ph"ng m t tình hu ng b t c DB2. t+n t i qua m&i giao d ch. Hình 13. nó s. chúng ta ang k t n i t i c s d li u có tên SAMPLE. không cho phép ng i khác dùng cho n khi ông ta có s a. Giá tr ng m nh c a tham s này là -1 ( i vô h n). M t khác. S thay i giá tr c a nó. thanh ghi này c t giá tr c a LOCKTIMEOUT. M t khi giá tr c a thanh ghi ã d ng SET LOCK TIMEOUT c t cho m t k t n i. và s. không cho phép ng i khác cho n khi ông ta có b t nho khô. L a .10. nh ng s b t c luôn là m t v n chi m nhi u th i gian.
DB2 s. nó i di n cho ng d ng th hai.ra r ng. b n c n ph i tái ki m tra nh ng giao d ch c không. 3. s d ng m t gi i thu#t bên trong xác nh giao d ch nào c n ph i quay lui (h+i x ). N u b n ang g p nhi u tình hu ng b t c. Phát bi u SELECT này c. ki m tra tham s c u hình c s d li u DLCHKTIME. 3. T i i m này.Nh p môn H qu n tr c s d li u DB2 150 ch&n "+c " trong câu l nh ch. T* CLP2 th c hi n nh ng l nh sau: db2 connect to sample db2 +c update employee set firstnme = ‘Tom’ where empno = ‘000030’ 4 c a s c a CLP2. 5. mà là i khóa c a hàng này tr v do CLP2 ã gi trong b c 3. Chúng tai ang c ý làm i u này sao cho chúng ta gi c khóa. Ch. nh ng l i c#p nh#t m t hàng khác b ng employee. chúng tôi không mu n c a s l nh c a DB2 t ng cam k t l nh này.&c) khi ng d ng c a b n cho phép. ng d ng CLP1 i mãi mãi. Th c hi n nh ng thay i d li u theo lô/nhóm. c ti p t c. Nó th#t s là không ph i là treo. Trong k ch b n b t c trên. Ch!ng h n DELETE FROM ( SELECT *FROM tedwas. bây gi chúng ta ang t o ra m t s b t c. th c ra nó ang i khóa CLP1 ang gi tr v . t kho ng th i gian ki m tra cho nh ng s b t c.t1 WHERE c1 = … FETCH FIRST s3000 ROWS ONLY) . 4. 2. L nh t* CLP2: db2 +c select firstnme from employee where empno = ‘000050’ B ng vi c ánh l nh SELECT trên. n u CLOCKTIMEOUT ã c l i v i giá tr ng m nh c a nó là -1. DB2 s. giá tr c a tham s này c t t i 10 giây.ghi nh#t ký thông tin giao d ch khi có yêu c u. Ch!ng h n. T y d li u ã s d ng nhanh chóng: ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 4. và m t giao d ch nào s.ng có v2 treo. Gi nh ng giao d ch càng ng n càng t t. câu l nh SELECT này có v2 s. L nh t* CLP1: db2 +c select firstnme from employee where empno = ‘000030’ Sau khi nh n Enter th c hi n câu l nh SELECT trên. treo.9 Truy c p ng th i và th c ti n khóa t t nh t Sau ây là m t s m7o nh" truy c#p +ng th i và th c ti0n khóa t t nh t: 1. /i u này có th t c b ng cách phát hành th ng xuyên nh ng l nh COMMIT (th#m chí cho nh ng giao d ch ch. chúng ta c.ng n i vào c s d li u SAMPLE. Tham s này s. hi n h u xem xem có th t ch c l i 13.
s d ng m nh FETCH FIRST n ROWS ONLY trong câu l nh SELECT. Ch!ng h n. Không khôi ph c nhi u d li u h n c n thi t. 7. .Nh p môn H qu n tr c s d li u DB2 151 5. 6. S d ng nh ng c tính t ng tranh c a nh ng công c chuy n i d li u trong DB2.ng s d ng khóa gi i h n th i gian (timeout) trên trên t*ng phiên làm vi c. B n có th c. B n *ng nên cho giá tr ng m nh c a nó là -1. / t tham s m c LOCKTIMEOUT cho c s d li u (kho ng gi a 30-120 giây).
Nh p môn H qu n tr c s d li u DB2 152 PH1N 3: H2C DB2 – PHÁT TRI3N 4NG D5NG Trong ph n này. R ng b n có th h&c c cách l#p trình s d ng DB2 nh m t máy ch d li u b ng nhi u ngôn ng khác nhau b ng cách kh o sát các ng d ng m%u i kèm trong th m c SQLLIB\samples khi chúng ta cài t máy ch DB2. chúng ta s. th o lu#n v các i t ng c a c s d li u n m t ng d i c a ng d ng nh th t c l u (stored procedure). hàm do ng i dùng nh ngh'a và b%y s ki n (trigger). s d ng DB2 trên n n Windows. Hình d i ây là m t s ch ng trình m%u vi t b ng Java. M t s ch ng trình Java m%u i kèm DB2. .
có th óng gói các câu l nh SQL và các nghi p v . M i câu SQL c g i t* máy khách n máy ch . chúng ta s. các th t c cho phép l u tr t#p trung t i m t n i nào ó các ng d ng khác c. N u nhi u câu SQL c th c thi theo ki u ó thì l ng d li u truy n trên m ng s. các ngôn ng c h tr CLR (Common Language Runtime) và OLE. t#p trung vào SQL PL vì tính ph bi n và n gi n c a nó. l nh CALL c dùng g&i th c hi n th t c. Cách th hai g&i th c . Tuy nhiên. th o lu#n v “th t c l u” (stored procedure). Hình 14. Java. H n n a.1 . Hình 14. 4 góc trên bên trái c a hình. góc d i ph i. Trong ch ng này.Gi m k. và sau ó t i máy khách (bên phía trái). Cobol.Nh p môn H qu n tr c s d li u DB2 153 14 Ch ng 14 – Các th t c SQL PL Trong ch ng này chúng ta s.t ng truy n m ng b6ng th t c. t ng lên.1 mô t cách ho t ng c a stored procedure. L u tr h p lí m t ph n ng d ng trong c s d li u cho phép c i ti n hi u su t th c hi n nh gi m kh n ng k7t ng truy n m ng. ta th y th t c l u “myproc” c l u trên máy ch ch a nh ng câu SQL t ng t trên. và máy ch tr k t qu v l i máy khách. Th t c l u trong DB2 có th vi t b ng SQL PL. ta th y m t vài câu l nh SQL c th c thi l n l t h t cái này n cái kia. C/C++.ng có th s d ng c. Th t c l u là m t i t ng ng d ng c s d li u.
c phân c p các quy n th c thi ho c chc xem các th t c.com/db2/express. Hình 14. hãy làm theo các b c sau. L u ý r ng không th t o c các th t c c vi t b ng các ngôn ng khác trong DWB. c truy n trên m ng và m t k t Th t c l u c.1.… DWB n nh m t hình nh riêng r. B c 1: T o m t d án DWB (project) T* menu.ng r t h u ích trong m c ích b o m#t c s d li u vì ng i s d ng s.1 DB2 Developer Workbench DB2 Developer Workbench (DWB) là công c c xây d ng trên n n t ng Eclipse. hàm. ch&n File -> New -> Project và ch&n Data Development Project. h th ng Kh n ng này là hoàn toàn kh thi vì ng i dùng không òi h"i nh ng quy n t ng minh trên các b ng ho c khung nhìn (view) trong th t c mà h& th c thi. ng d ng SQLJ.2 – DB2 Developer Workbench 14.3 d i ây. 14.2 Giao di n c a DWB. . Xem hình 14. Hình 14.có m t l nh g&i qu tr v cho máy khách. Có th t i DWB v t* trang “Download” trên a chhttp://ibm. ph c v cho vi c phát tri n các th t c. i u ó giúp cho c che ch n và không cho ng i dùng l y thông tin n u h& không có quy n. h& ch.2 T o m t th t c l u trong DWB / t o m t th t c b ng Java hay SQL PL. truy v n XML. (nó không ph i là m t ph n trong gói cài t DB2) nh ng hoàn toàn mi0n phí.c n cc p quy n th c hi n các th t c ó.Nh p môn H qu n tr c s d li u DB2 154 hi n m t th t c hi u qu h n vì ch.
Trong hình 14. th y d án m i t o trong tình tr ng m r ng.4 b n s.Nh p môn H qu n tr c s d li u DB2 155 Hình 14. B c 2: T o m t th t c Sau khi t o xong d án. ch&n c s d li u b n mu n s d ng và xác nh rõ th m c JDK (cái nào m c nh th ng là úng). xu t hi n d án m i v*a t o.3 – Data development project T*ng b c làm theo h ng d%n nh#p tên d án. phía bên ph i c a c a s (data perspective) s. .
có SQL PL và Java c h tr trong DWB) và các câu l nh SQL dùng trong th t c.Nh p môn H qu n tr c s d li u DB2 156 Hình 14. c t o ra và trong ó có s d ng o n mã m%u và các câu l nh SQL trong ví d c cung c p trên. Xem hình 14.4 – D án “ myProject” Hình 14.4 Cho th y các th m c khác nhau trong d án c a b n. M c nh.5 . tên và ngôn ng vi t th t c (l u ý r ng ch. cung c p cho b n câu l nh SQL m%u ví d . b n nh n chu t ph i vào th m c th t c và ch&n New -> Stored Procedure. Hoàn thành các thông tin c yêu c u trong t*ng b c t o m i m t th t c nh : th t c ó k t h p v i d án nào. T i ây b n có th nh n Finish và th t c s. DWB s. Khi mu n t o m t th t c.
dùng các o n mã m%u trên ti p t c kh o sát quy n sách này. Hình 14.5 – M t th t c m%u c phát sinh. b n biên d ch và tri n khai b ng cách nh p ph i vào nó trong khung bên trái và ch&n Deploy. / n gi n chúng ta s. .6 minh ho cho b c này.5. B c 3: Biên d$ch m t th t c Khi m t th t c ã c t o. B n có th Trong hình 14. o n mã m%u cho th t c “PROCEDURE1” thay th o n mã ó b ng o n mã riêng c a b n.Nh p môn H qu n tr c s d li u DB2 157 Hình 14.
1 C u trúc c a th t c Cú pháp c a th t c CREATE PROCEDURE proc_name [({tham s tùy ch n})] [thu c tính tùy ch n c a th t c] <câu l nh> Trong ó <câu l nh> là m t câu l nh ho c m t t#p các câu l nh trúc BEGIN [ATOMIC]……………[END] 14.2. b n có th th c thi nó b ng cách nh p ph i chu t vào nó và ch&n Run.2.2 M t s khái ni m v th t c SQL PL: Nh ng th t c l u v i ngôn ng th t c r t d0 t o và h&c. s d ng. xu t hi n trong khung “Result” góc d i ph i / th c thi m t th <procedure name> t c b ng dòng l nh. K t qu s. Trong DB2 th t c có hi u su t t t nh t. V i nh ng ngôn ng khác nh JAVA hay C thì ta s d ng t ng ng thu c tính LANGUAGE JAVA hay LANGUAGE C c nhóm b i c u .2 Nh ng thu c tính tùy ch n c a th t c Sau ây là 1 vài thu c tính tùy ch&n c a th t c: • LANGUAGE SQL Thu c tính này ch.Nh p môn H qu n tr c s d li u DB2 158 Hình 14. Th t c l u SQL PL (hay nói t t là “Th t c SQL”) là tiêu i m c a ch ng này. b n có th s d ng câu l nh CALL 14. LANGUAGE SQL là giá tr m c nh.ra ngôn ng mà th t c s.6 – Biên d$ch m t th t c B c 4: Th c thi m t th t c Khi m t th t c ã c biên d ch. 14.
INOUT v_p2 INT.Tham s vào OUT .4.Tham s v*a vào và ra /ây là m t ví d khác c a th t c l u mà b n có th th : CREATE PROCEDURE P2 ( IN v_p1 INT. nhi u th t c l u tr có th có cùng m t tên. ví d : -.ra danh sách tham s i kèm c a th t c ó. và i u này t o ra s d0 dàng cho vi c qu n lí các th t c l u tr . c a vào trong câu l nh CALL. 14. xóa m t th t c s d ng t* khóa SPECIFIC b n có th d ng câu l nh: DROP SPECIFIC PROCEDURE. END / g&i th t c này t* dòng l nh. N u t* khóa SPECIFIC không c s d ng thì v i câu l nh xóa th t c l u tr nh trên. IN .?) 14.3 Các lo i tham s Có 3 lo i tham s trong th t c l u tr SQL PL: • • • Ví d : CREATE PROCEDURE proc(IN p1 INT. t t c các tham s c n ph i g&i th t c trên b n ph i g&i nh sau: CALL proc (10. Ví d .4 Chú thích trong th t c SQL PL Có hai cách chú thích trong th t c SQL PL: • S d ng 2 d u g ch ngang (--). DB2 bi t c th t c nào c n c xóa (vì có r t nhi u th t c có tên gi ng nhau c ghi è) thì b n ph i ch. ?. OUT p2 INT. OUT v_p3 INT) LANGUAGE SQL SPECIFIC myP2 BEGIN -. ngh'a là. INOUT p3 INT) Khi g&i th t c. nh ng v i s l ng tham s khác nhau.ây là 1 chú thích theo ki u SQL .Nh p môn H qu n tr c s d li u DB2 159 • • RESULT SETS <n> Thu c tính này c n thi t n u th t c c a b n s. SET v_p3 = v_p1. Ví d .my second SQL procedure SET v_p2 = v_p2 + v_p1. B ng cách s d ng t* khóa SPECIFIC b n có th g n m t tên duy nh t v i nh ng th t c này. tr v t#p h p k t qu n SPECIFIC my_unique_name /ây là tên duy nh t c gán cho th t c. 4) D u h"i (?) c dùng cho các tham s tr v c a câu l nh CALL.2.2. M t th t c có th c n p è.Tham s ra INOUT . ta dùng câu l nh: CALL P2 (3.
Khi t* khóa ATOMIC cs d ng theo sau t* khóa BEGIN.1001.Nh p môn H qu n tr c s d li u DB2 160 • S d ng nh d ng nh ngôn ng l#p trình C. ngh'a là.00. temp8 VARCHAR(10) DEFAULT 'hello'. Ví d : SET total = 100. 14.2) DEFAULT 100.6 Khai báo bi n / khai báo bi n.2. temp12 CLOB(2G). Hình 14. temp10 TIME DEFAULT '1:50 PM'. back).00'.10.7 cho ta 1 minh h&a v câu l nh ghép.5 Câu l nh ghép M t câu l nh ghép trong th t c là m t câu l nh trong ó ch a r t nhi u l nh th t c và các câu l nh SQL c bao b i t* khóa BEGIN và END.7 Câu l nh gán / gán m t giá tr cho m t bi n. temp2 INTEGER DEFAULT 10. ví d : /* ây là 1 chú thích d ng C */ 14. temp5 DOUBLE DEFAULT 10000. N u có m t câu l nh th t b i. t t c s. temp3 DECIMAL(10. s d ng câu l nh SET. temp6 BIGINT DEFAULT 10000. s d ng câu l nh DECLARE nh sau: DECLARE var_name <data type> [DEFAULT value]. /ây là m t vài ví d : DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE DECLARE temp1 SMALLINT DEFAULT 0. .2.2. temp13 BLOB(2G).th hay câu l nh trong câu l nh ghép ph i hoàn thành câu l nh ghép c c tr v tr ng thái ban u (roll hoàn thành. Hình 14. temp11 TIMESTAMP DEFAULT '2001-01-05-12. temp7 CHAR(10) DEFAULT 'yes'. t t c các ch. temp9 DATE DEFAULT '1998-12-25'.7 – Câu l nh ghép 14. câu l nh ghép c xem nh là m t n v .1. temp4 REAL DEFAULT 10.
4 *i u khi n lu ng Nh trong r t nhi u ngôn ng khác.ng có th gán bi n v i các thu c tính ngoài c a c s d li u SET sch = CURRENT_SCHEMA. m nh RETURN < ích tr khai báo. SET first_val = (select c1 from T1 fetch first 1 row only) B n c. 14. FETCH < tên con tr > INTO <các bi n>.ng t ng ng v i câu l nh: VALUES(100) INTO total. dept. OPEN cur. CALLER: K t qu s. SQL PL có r t nhi u câu l nh có th c dùng i u khi n lu+ng th c hi n m c logic. c tr v cho ng d ng máy khách c tr v cho máy khách ho c th t c l u ã g&i nó. b t kì bi n nào c. v >] WITH RETURN có th c s d ng v i CLIENT: K t qu s. /ây là m t ví d c a th t c s d ng con tr": CREATE PROCEDURE set() DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE cur CURSOR WITH RETURN TO CLIENT FOR SELECT name. Ngoài ra. job FROM staff WHERE salary > 20000. chuy n giá tr (fetch) và óng con tr" nh sau: DECLARE <tên con tr > CURSOR [WITH <câu l nh SELECT>. Cú pháp m .l y dòng c gán v i giá tr NULL SET total = (select sum(c1) from T1).3 Các con tr+ (cursor) M t con tr" là m t t#p h p ch a k t qu c a câu l nh SELECT. END 14. u tiên trong b ng c thi t l#p n u có nhi u h n m t dòng thì ch.ng có th SET total = NULL M t bi u th c i u ki n s. Khi m t con tr" nh ng giá tr sau: • • c khai báo. OPEN <tên con tr >.Nh p môn H qu n tr c s d li u DB2 161 Câu l nh trên c. CLOSE < tên con tr >. D i ây là m t vài câu l nh c h tr : CASE (ch&n ra m t nhánh th c thi (tìm ki m IF FOR (th c thi m i dòng trong b ng) n gi n)) .
if (salind == SQL_NULL_DATA) printf(“Median Salary = NULL\n”). T trong C) LEAVE (r i kh"i m t kh i hay vòng l p) LOOP (l p vô h n nh) REPEAT GOTO RETURN CALL (g&i th t c) ng t v i câu l nh CONTINUE 14. /*Ch ra parameter marker trong stmt */ SQLINTEGER salind = 0.Output parm = cmd. DB2Type.Direction = ParameterDirection.Parameter. 0. 0. SQL_PARAM_OUTPUT. &salind). SQL_C_DOUBLE. &sal.NET o m t DB2 Command ch y th t c procName As String = “TRUNC_DEMO” cmd As DB2Command = conn. DB2Type.c ng d ng VB.Add(“v_lastname”.Add(“v_msg”.2f\n\n”.VarChar) parm. 1. SQLExecute(hstmt).CommandType = CommandType.0.Nh p môn H qu n tr c s d li u DB2 162 WHILE ITERATE (bu c ph i th c hi n vòng l p ti p theo. sal). 0.VarChar) parm. if (sqlrc == SQL_SUCCESS) { /* Có 1 k t qu khác */ sqlrc = SQLMoreResult(hstmt). /* L y t p k t qu u tiên */ sqlrc = StmtResultPrint(hstmt). stmt. /*Ch nh giá tr (variable) cho sal */ sqlrc = SQLPrepare(hstmt.ra cách g&i m t th t c b ng các ngôn ng khác nhau. G i th t c t& ng d ng CLI/ODBC l#p trình SQLCHAR *stmt = (SQLCHAR *) “CALL MEDIAN_RESULT _SET( ? )” . ch.Parameters. SQL_NTS).5 G i th t c Nh ng o n mã sau ây s.Output ‘ G i l i th t c .Direction = ParameterDirection. SQL_DOUBLE.CommandText = procName ‘ ng ký các tham s u ra cho DB2Command parm = cmd.StoredProcedure cmd. sqlrc = SQLBindParameter(hstmt. SQLDOUBLE sal = 20000. else printf(“Median Salary = %.CreateCommand() parm As DB2Parameter G i th t c t& Try ‘ T Dim Dim Dim cmd. } Xem chi ti t t p ví d c a DB2: sqllib/samples/sqlproc/rsultset.
SQLSTATE là tiêu chu n trong các h qu n tr cho c s d li u nh ng t ng quát h n. thành công nh ng có c nh báo < 0. con = DriverManager. DECLARE SQLCODE INT.6 L i và x" lý i u ki n c dùng xác nh s thành Trong DB2. chi ti t h n c SQLSTATE. Types. không tìm th y d li u (ví d nh : câu l nh FETCH không tr v d li u) / i v i SQLSTATE.prepareCall(“CALL trunc_demo(?. không thành công = 100. thi t l#p giá tr m t cách t ng cho nh ng t* khóa trên sau m i thao tác trên SQL (SQL operation). // ng ký tham s u ra callStmt.getConnection(url). cs. các giá tr c a nó nh sau: • Thành công: SQLSTATE ‘00000’ • Không th y: SQLSTATE ‘02000’ • C nh báo: SQLSTATE ‘01XXXX’ • Tr ng h p c bi t: các giá tr khác SQLCODE là m t c t cho c s d li u.execute().registerOutParameter(1.VARCHAR). } catch (Exception e) { /* x lý ngo i l } ây */ 14. các t* khóa SQLCODE và SQLSTATE công hay th t b i trong vi c th c thi m t câu l nh SQL. CallableStatement cs = con. callStmt.close().Nh p môn H qu n tr c s d li u DB2 163 Dim reader As DB2DataReader = cmd. giá tr c thi t l#p nh sau: • • • • = 0. Types. con. / i v i SQLCODE. Nhi u .ExecuteReader Catch myException As DB2Exception DB2ExceptionHandler(myException) Catch UnhandledExceptionHandler() End Try G i th t c t& ng d ng Java try { // K t n i CSDL m u String url = “jdbc:db2:sample”. thành công > 0.registerOutParameter(2. ?)”). DB2 s.VARCHAR). Nh ng t* khóa này c n c khai báo t ng minh trong ph n ngoài cùng c a th t c nh sau: DECLARE SQLSTATE CHAR[5].
UNDO – x lý này c dùng ch.8 minh h&a s khác nhau gi a các trình x lý i u ki n và hành vi c a nó . dòng x lý s. Nh ng hành ng này có th là Hành ng b t c câu l nh nào. m t i u ki n c th nh SQLSTATE ‘01004’ c t o ra khi có m t c làm tròn s trong quá trình thi hành câu l nh SQL. th t c s. b n có th t o ra m t trình x lý i u ki n. EXIT – x lý này dùng ch.ra r ng. Trong ví d c th này. c nói rõ h n M t i u ki n có th c t o ra b ng b t kì câu l nh SQL nào và s. và ph i ch. Ph l c A. Các lo i trình x" lý Có 3 lo i trình x lý: CONTINUE – X lý này dùng ch. bao g+m c các c u trúc i u khi n. Thay vì dùng SQLSTATE giá tr ‘01004’ ki m tra i u ki n này. sau khi ngo i l x y ra. tên “trunc” có th c gán cho i u ki n SQLSTATE ‘01004’ nh sau. k t thúc và tr v cho máy khách m t thông báo l i. trùng v i m t SQLSTATE. và s. i n cu i th t c. dòng x lý s.Nh p môn H qu n tr c s d li u DB2 164 SQLCODE có th trùng v i SQLSTATE. Hình 14. SQLCODE và SQLSTATE s. và trình x lý ã x c lý i u ki n. dòng x lý s. X lý s c . EXIT or UNDO) c thi hành x lý i u ki n. i n cu i th t c. N u m t i u ki n SQLEXCEPTION c t o ra. m t tên g&i có th c gán. Ví d . DECLARE trunc CONDITION FOR SQLSTATE ‘01004’ Các i u ki n khác ã • • • SQLWARNING SQLEXCEPTION NOT FOUND c nh ngh'a tr c: X" lý i u ki n / x lý m t i u ki n.ra r ng. sau khi ngo i l x y ra. và không có trình x lý nào.ra r ng.rõ các y u t sau: • • • /i u ki n mà nó ph i x lý N i ph c h+i l i quá trình th c thi (d a vào ki u c a trình x lý: CONTINUE. TI9P T:C i n câu l nh ti p theo sau câu l nh v*a t o ra. và trình x lý ã x lý i u ki n. không làm gì i ho c khôi ph c b t kì câu l nh nào ã c th c thi (roll back). sau khi ngo i l x y ra. và trình x lý ã x lý i u ki n.
Ví d này gi s r ng có m t b ng T2 ã c t o nh sau: CREATE TABLE T2 (c1 INT. ?)’. END . SET stmt = ‘INSERT INTO T2 VALUE (?. DECLARE st STATEMENT.7 SQL ng Trong SQL ng. INT value2 INT) SPECIFIC dyn1 BEGIN DECLARE stmt varchar(255). SQL ng c. Dùng l nh PREPARE song song v i l nh EXECUTE – ý t ng này c dùng th c thi a th t c SQL. value2. EXECUTE st USING value1. EXECUTE st USING value2. th c hi n v i SQL ng nh sau: ‘SELECT ‘ || col1 || ‘FROM ‘ || tabname. ph thu c và sai sót c th c thi theo hai cách: Dùng l nh EXECUTE IMMEDIATE – ây là ý t ng cho vi c th c thi th t c SQL n. trái ng c v i SQL t'nh. chúng ta s. Nó c. /o n mã sau a ra m t ví d v SQL ng s d ng c hai cách trên. c2 INT) CREATE PROCEDURE dyn1 (IN value1 INT.Nh p môn H qu n tr c s d li u DB2 165 Hình 14.ng SQL • • ng có th ngh dùng cho DDL tránh các v n c yêu c u khi th c hi n quy. toàn b câu l nh SQL không c nh#n bi t trong th i gian ch y. SET stmt = INSERT INTO T2 VALUES (9. PREPARE st FROM stmt. Ví d n u col1 và tabname là các bi n trong câu l nh này.8 – Ki u c a các trình x" lý i u ki n 14.ng c khi óng gói. 9)’. value1. EXECUTE IMMEDIATE stmt.
hàm ng i dùng $nh ngh-a. Các l nh SQL PL c s d ng trong các UDF và hàm b%y s ki n c.Nh p môn H qu n tr c s d li u DB2 166 15 Ch ng 15 – Hàm n i tuy n. Triggers) Trong ch ng này. các hàm x" ký các s ki n b%y (Inline SQL PL.ng có th ng m t mình.. SQL PL n i tuy n ch. chúng ta s.1 Hàm n i tuy n SQL Trong ch ng 14. it ng khác 15. sau ây là các t* khóa c a SQL PL n i tuy n: DECLARE <variable> SET CASE FOR GET DIAGNOSTICS GOTO IF RETURN SIGNAL WHILE ITERATE LEAVE /ây là nh ng t* khóa không n m trong SQL PL n i tuy n: ALLOCATE CURSOR ASSOCIATE LOCATORS DECLARE <cursor> DECLARE . ngh'a là có có th SQL PL.h tr m t t#p con trong toàn b các l nh SQL PL. b n thân nó ã là các SQL ng.ng là n i tuy n vì các mã l nh ã c thêm vào mã l nh c a các UDF và hàm b%y s ki n.HANDLER PREPARE EXECUTE EXECUTE IMMEDIATE LOOP REPEAT RESIGNAL CALL COMMIT/ROLLBACK . xem xét v các hàm n i tuy n SQL các c a CSDL nh hàm do ng i dùng nh ngh'a (UDF) và các b%y s ki n. chúng ta ã th o lu#n v vi c t o các th t c l u s d ng ngôn ng c s d ng n i tuy n. không n m trong m t th t c nào c . UDF. Ngôn ng SQL PL này c..
b%y sau (after) và b%y thay th (instead of) B%y tr c Các b%y tr c c kích ho t tr c khi m t dòng c thêm. INSERT INTO T3 values (sumevens).SYSDUMMY1). SET cnt = (SELECT 0 FROM SYSIBM.1 Các lo i b%y s ki n Có 3 lo i b%y ó là: b%y tr c (before). SET cnt=cnt+1. DECLARE err_msg VARCHAR(1000) DEFAULT ''. DECLARE sumevens INT DEFAULT 0. và b n ph i ch c ch n là ã t p c các b ng nh sau: CREATE TABLE T1 (c1 INT) CREATE TABLE T3 (c1 INT) BEGIN ATOMIC DECLARE cnt INT DEFAULT 0. Các thao tác là nguyên nhân các b%y này c th c thi. UPDATE và DELETE không c phép có trong b%y). END FOR.1 . N u các b n mu n th nó.Nh p môn H qu n tr c s d li u DB2 167 D i ây là ví d c a SQL ng s d ng SQL PL n i tuy n. END WHILE. SET err_msg = 'Rows with values > 100 is:' || char(cnt).2 B%y s ki n (Triggers) B%y s ki n là các i t ng c s d li u k t h p v i m t b ng c nh ngh'a b i các thao tác c th c hi n khi có m t trong các thao tác INSERT. db2 -td! –vf myScript. ho c DELETE c th c hi n trên b ng ó.2) = 0 THEN SET sumevens = sumevens + cnt.txt” thì b n có th th c hi n nó b ng l nh sau. b n các th l y nó làm m t ph n c a c a t p k ch b n. WHILE (cnt < 100) DO IF mod(cnt. g&i là triggering. END IF. M t ví d n gi n v b%y tr c c ch.2. UPDATE. Chúng c thi hành m t cách t ng. Các thao tác c th c hi n b i b%y này thì không th kích ho t c các b%y khác (vì th các thao tác INSERT.ra trên hinh 15. SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT = err_msg.c1 > 100 THEN SET cnt = cnt + 1. 15. END IF. FOR cur1 AS SELECT * FROM T1 DO IF cur1. END! N u b n l u o n ch ng trình n i tuy n trên vào t p k ch b n tên là “myScript.txt 15. s a hay xóa i.
N u c t “ending” không có giá tr gì khi chèn. chèn vào. ki m tra s h p l c a các giá tr chèn vào. CREATE TRIGGER validate_sched NO CASCADE BEFORE INSERT ON cl_sched REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC -. C:\Program Files\IBM\SQLLIB\BIN>db2 select * from cl_sched CLASS_CODE DAY ---------. i di n cho giá tr m i c a l nh INSERT.-----042:BF 4 553:MJA 1 543:CWM 3 778:RES 2 044:HD 3 abc 1 STARTING -------12:10:00 10:30:00 09:10:00 12:10:00 17:12:30 11:06:53 ENDING -------14:00:00 11:00:00 10:30:00 14:00:00 18:00:00 12:06:53 6 record(s) selected.1.current time) DB20000I The SQL command completed successfully. Th t c b%y “validate_sched” d i ây cho phép m r ng hàm b%y “default_class_end” ã mô t tr c ây. thì b%y này s. day. giá tr s.1 – Ví d v b%y tr c Trong hình 15. ban có th t o và th ki m tra b%y này khi k t n i v i c s d li u này. b n có th t o ra nó và ki m tra nó d a vào c s d li u SAMPLE.1.supply default value for ending time if null . Xin nh c l i r ng. B%y này s. m b o ch c ch n là có giá tr c a c t “starting” c ng 1 c chèn vào. b%y “defalt_class_end” s. B ng này là m t ph n c a c s d li u SAMPLE. b%y tr c l nh khi INSERT SQL c th c hi n trong b ng cl_sched.Nh p môn H qu n tr c s d li u DB2 168 Hình 15. Các l nh sau giúp ta ki m tra b%y này C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched (class_code. starting) values ('abc'. Bi n “n” trong nh ngh'a c a b%y s.
Các thao tác trong b%y này có th kích ho t các b%y khác (s n i t ng c cho phép n 16 m c). th c hi n vi c ghi thông tin v vi c thay i liên quan n b ng Salary vào trong bàng khácg&i là audit. END IF.salary) || ' by ' || USER) Trong ví d này thì th t c b%y audit_emp_sal c s d ng th c hi n vi c ki m tra trên c t salary c a b ng employee. và ti n t “n” s. Các th t c b%y không c t o t* DB2 Developer Workbench. ho c giá tr t+n t i trong b ng Salary còn “n. Chúng có th ct o t* trung tâm i u khi n ho c t* các công c dòng l nh khác (Command Window.salary” miêu t giá tr nh#t m i vào c t d li u Salary.starting + 1 HOUR.salary) || ' to ' || CHAR(n. ho c giá trì t+n t i trong b ng. B%y s ki n thay th B%y thay th c nh ngh'a trên các khung nhìn (view). c dùng i di n giá tr c. b%y thay th s. T i dòng “OLD as o NEW as n ” ch. B%y sau h tr các thao tác INSERT. c s d ng i di n giá tr m i sau ó t* câu l nh UPDATE.Nh p môn H qu n tr c s d li u DB2 169 IF (n.ending IS NULL) THEN SET n. UPDATE và DELETE.empno || ' sal- ary changed from ' || CHAR(o. Nh v#y.DAY=1 or n. th c hi n vi c c#p nh#t cho các l nh SQL triggering.DAY=7) THEN SIGNAL SQLSTATE '80001' SET MESSAGE_TEXT='class cannot be scheduled on a weekend'. -. ' Employee ' || o. ELSEIF (n. / nh ngh'a m t cách logic b%y này s. END B%y sau B%y sau c kích ho t sau khi các SQL triggering th c hi n thành công. D i ây là ví d c a m t b%y sau CREATE TRIGGER audit_emp_sal AFTER UPDATE OF salary ON employee REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DB2SQL INSERT INTO audit VALUES ( CURRENT TIMESTAMP.ending = n. “o. Ví d nh . END IF. c th c thi th c hi n vi c c#p nh#t các b ng g c mà các khung nhìn này th hi n.ra ti n t “o” này s.ending > '21:00') THEN SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT='class ending time is beyond 9pm'. n u b n th c hi n m t thao tác c#p nh#t trên m t khung nhìn. Khi m t ai ó t o s thay i trong c t này thì o n mã này s.salary” miêu t c c#p giá tr c.ensure that class does not end beyond 9pm IF (n. ho c Command Editor) . Command Line Processor.
Kh i t o m t b ng theo các thu c tính sau: Tên b ng: saleslog (nh#t ký bán hàng) C t u tiên: Tên: userid (mã ) Ki u d liêu: VARCHAR(128) Các thu c tính khác: NOT NULL C t th hai: Tên: daytime (th i i m) Ki u d li u: TIMESTAMP Các thu c tính khác: NOT NULL G i ý: Kh i t o b ng này s d ng CREATE TABLE có trong c a s nh#p l nh. Th t c: 1. b n s. C a s i tho i kh i t o b%y m ra. khi x y ra thay i d li u trên b ng (chèn.Kh i t o m t b%y b6ng Trung tâm i u khi n. 3. ho c s d ng Create table wizard t* Trung tâm i u khi n. và ch&n m c “Create”. m r ng tài li u c s d li u EXPRESS. s a. xóa). Trong bài t#p nhanh này. M c tiêu B%y là m t i t ng c s d li u c s d ng hoàn thành công vi c kinh doanh m t cách ch t ch.Nh p môn H qu n tr c s d li u DB2 170 Bài t p nhanh #10 . b n s. t o m t b%y b ng vi c s d ng Trung tâm i u khi n. l u nh#t ký bán hàng trong b ng SALES (bán hàng) cho m c ích ki m tra s sách. ghi vào nh#t ký bán hàng mã c a ng i bán hàng (user ID) cùng v i th i i m bán. 4. V i bài t#p nhanh này. B n s. Cái b%y này s. 2. c n kh i t o m t b ng ph c s d ng ghi nh#t ký bán hàng. Nh p chu t ph i trong th m c Trigger. /i n y theo thông tin trong c a s i tho i: S + b%y (Trigger schema): User ID (mã) c a ng c cài t m c nh) (nên i bán ã c nh#p vào Tên b%y (Trigger name): audit_sales (Ki m tra bán hàng) B ng hay s + hi n th : User ID (mã) c a ng c cài t m c nh) i bán ã c nh#p vào (nên B ng hay tên hi n th (Table or view name): SALES (bán hàng) Th i gian b%y ho t ng (Time to trigger action): After (sau) Khi nào thì b%y c th c hi n (Operation that causes the trigger to be executed): Update of columns (không li t kê b t c c t nào vì chúng ta mu n b%y th c hi n khi b t c c t nào trong s các c t c c#p nh#t) Chú thích (Comment): Logs all update actions on Sales table (Ghi nh#t ký t t c các ho t ng c#p nh#t trong b ng Sales) . M Trung tâm i u khi n. T* Trung tâm i u khi n.
th c hi n m t khi SQL triggering tác ng vào m t dòng.) . CURRENT TIMESTAMP). B%y theo dòng ngh'a là ho t ng c a b%y s.Nh p môn H qu n tr c s d li u DB2 171 5. c th c hi n m t l n sau khi b%y c kích ho t và k t thúc hoàn toàn. END (Ghi chú: o n b%y s. Nh#p o n mã ngu+n sau vào m c hành ng c a b%y: WHEN (1=1) BEGIN ATOMIC INSERT INTO saleslog (userid. Trong b ng Triggerred action. ch&n STATEMENT trong m c tùy ch&n For Each. daytime) VALUES (CURRENT USER.
9. Ki m tra l i m t l n n a n i dung c a b ng saleslog. và tr l i k t qu b ng centimetes. UPDATE và DELETE s.Nh p môn H qu n tr c s d li u DB2 172 Kích ch&n nút OK kh i t o b%y. hàm b ng (Table Functions) . Có là 4 lo i hàm: hàm vô h ng (Scalar Funcitons). các câu l nh INSERT. CLR (Common Language Runtime). DIGITS(). M t vài hàm vô h ng c cài t s)n là SUM(). hàm dòng (Row Functions). Ví d : m t hàm có th l y kích th c d li u vào b ng inch. nó cs px p thành b d li u nh#p và d li u xu t. . Truy v n b ng Saleslog m b o ch a có d li u trong b ng này. AVG(). và SUBSTR(). 6. và OLE (Object Linking and Embedding).t#p trung vào hàm vô h ng và hàm b ng. 8. Xem có bao nhiêu hàng trong ó.3. làm thay i tr ng thái c a c s d li u thì không c ch p nh#n. Trong bài này chúng tôi ch. 15. và hàm c t (Column Functions). COALESCE(). 7. Bây gi b n nên xem l i b%y ã c kh i t o trong tài li u Triggers th m c Trung tâm i u khi n. 15. Java. ph bi n và hi u su t c a chúng. DB2 h tr t o nh ng hàm s d ng SQL PL. Nó không th ch a các câu l nh SQL.3 Hàm ng i dùng $nh ngh-a (UDF) Hàm ng i dùng nh ngh'a là m t i t ng ng d ng c s d li u.1 Hàm vô h ng Hàm vô h ng tr l i m t giá tr n. Th c#p nh#t m t b n ghi trong b ng sales (G i ý: s d ng Command Editor ho c SQL Assist Wizard). chúng tôi nói ch y u v hàm SQL PL b i tính n gi n. C/C++. Lo i b" nh ng hàng có d li u trong b ng b ng l nh DELETE FROM saleslog. Trong cu n sách này.
ta s. Thay vì b n ph i i tên t t c các hàm NVL trong ng d ng thành COLALESCE.deptname FROM department d. th l i trong Command Window ho c Linux/UNIX v i l nh: db2 “values (deptname(‘000300’))” G i hàm vô h ng Hàm vô h ng c a ng i dùng có th c g&i trong câu l nh SQL.empno = p_empid). END IF. p_var2) ng h p này tr l i is u tiên là không r ng (not NULL) Hàm COALESCE trong tr D i ây là m t ví d khác c a hàm vô h ng. B n có th g&i chúng trong m nh FROM c a m t truy v n. END / ki m tra l i hàm. Ví d .‘B’) 15. SET v_department_name =( SELECT d. b t k âu giá tr vô h ng c s d ng. Hàm t ng ng cài t s)n trong DB2 c g&i là COALESCE.2 Hàm b ng Hàm b ng tr l i m t b ng c a các b n ghi. /ây là hai ví d bi u di0n l i g&i hàm vô h ng COALESCE: SELECT DEPTNAME. và nó tr l i mã s c a phòng/ban (department) c a m t nhân viên d a trên các mã (ID) c a h&: CREATE FUNCTION deptname(p_empid VARCHAR(6)) RETURNS VARCHAR(30) SPECIFIC deptname BEGIN AUTOMIC DECLARE v_department_name VARCHAR(30). các câu l nh INSERT. SET v_err = ‘Error:employee’ || p_empid || ‘was not found’.employee e WHERE e. tính n s chuy n i ng d ng c a b n t* Oracle sang DB2. ho c trong m nh liên quan n m t “Giá tr ”. IF v_department_name IS NULL THEN SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err. RETURN v_department_name.Nh p môn H qu n tr c s d li u DB2 173 DB2 cho phép b n tùy bi n xây d ng hàm ng i dùng nh ngh'a. Hàm b ng ng c l i v i hàm vô h ng là có th thay i tr ng thái c s d li u. b n có th t o m t UDF trong DB2 g&i nó là NVL.workdept = d. nh ng ây nó cho phép các l nh làm thay i . DECLARE v_err VARCHAR(70). b i v#y. Hàm b ng c. Trong ng d ng này.ng gi ng nh khung nhìn (view). M t vài hàm b ng c cài t s)n là SNAPSHOT_DYN_SQL() và MQREADALL().‘ABSENT’)FROM DEPARMENT VALUES COALESCE(‘A’.3. t* ó b n có th th ng xuyên s d ng nó theo ý ngh'a logic. b n g&i hàm NVL() c a Oracle kh p n i. UPDATE và DELETE c ch p nh#n. p_var2 VARCHAR(30)) nvlvarchar30 VARCHAR(30) COALESCE (p_var1 . Hàm c g&i là “deptname”. kích ho t hàm COLALESCE khi c g&i.deptno AND e. vi t hàm NLV nh d i ây: CREATE SPECIFIC RETURNS RETURN FUNCTION NVL (p_var1 VARCHAR(30) . COALESCE(MGRNO. và nó s.
th l i v i câu l nh sau: db2 “SELECT * FROM table(getEnumEmployee(‘D11’)) AS t” G i hàm b ng M t hàm b ng ng i dùng nh ngh'a c g&i trong m nh FROM c a câu l nh SQL. firstnme VARCHAR(12)) SPECIFIC getEnumEmployee RETURN SELECT e. . e.workdept = p_dept / ki m tra hàm trên. D i ây là m t ví d c a hàm b ng ng tr l i m t b ng li t kê m t nóm nhân viên trong phòng: CREATE FUNCTION getEnumEmployee(p_dept VARCHAR(3)) RETURNS TABLE (empno CHAR(6). lastname VARCHAR(15).lastname.2 minh h&a m t ví d c a cách g&i hàm “getEnumEmployee” mà chúng tôi ã ki m tra. xóa) m t cách m nh h n. e.empno. s a.L i g i m t hàm b ng. /i n hình là chúng th ho c gi l i m t b n ghi ki m tra.firstnme FROM employee e WHERE e. Hình 15.3 . Hình 15.Nh p môn H qu n tr c s d li u DB2 174 d li u (chèn. Hàm TABLE() c n s d ng và ph i có bí danh.
Trình so n th o m v i hàm chính. 3. M DBW ( G i ý: có s)n trong b ng ch&n Start) T* c a s Data Project Explorer ch&n d án b n ã t o bài t#p nhanh tr c và ch&n Open Project. DECLARE v_err VARCHAR(70). các b n s.Kh i t o UDF s" d ng DB2 Developer Wordbench M c ích: DB2 Developer Workbench (DWB) là m t công c phát tri n (IDE) vi t các th t c và các hàm. Sau ó ch&n m c SQL User-Defined Function. ph i t o m t hàm vô h ng do ng i dùng nh ngh'a trong DWB. 4. END 5. /óng DBW khi b n ã hoàn thành. R+i s a i mã l nh nh d i ây: CREATE FUNCTION booktitle(p_bid INTEGER) RETURNS VARCHAR(300) ----------------------------------------------------------SQL UDF (Scalar) ----------------------------------------------------------SPECIFIC booktitle F1: BEGIN ATOMIC DECLARE v_book_title VARCHAR(300). 7. B n có th ch&n m c User-Defined Function using Wizard n u c n c h ng d%n trong su t quá trình s d ng. SET v_book_title = (SELECT title FROM books WHERE p_bid = book_id). END IF. Quy trình th c hi n: 1.’. 2.Nh p môn H qu n tr c s d li u DB2 175 Bài t p nhanh #11 . . Cho ch y hàm b ng cách kích chu t vào nút Run trên thanh công c .Trong bài t#p nhanh này. 6. Sau khi hàm ch p nh#n nh#p m t tham s vào. em l i cho b n nhi u kinh nghi m h n v i DBW. m t c a s thông báo hi n ra yêu c u b n i n giá tr cho tham s . t t cho vi c trau d+i ki n th c v i ngôn ng SQL PL xây d ng các hàm ng i dùng nh ngh'a. SET v_err = ‘Error: The book with ID ‘ || CHAR(p_bid) || ‘was Not found. Nh#p giá tr : 80002 K t qu là gì? Th l i v i giá tr : 1002 /i u gì x y ra lúc này? (g i ý: Nhìn vào o n Messages c a Out-put view) 8. Xây d ng hàm b ng cách kích chu t ph i trên hàm và ch&n Deploy. IF v_book_title IS NULL THEN SIGNAL SQLSTATE ‘80000’ SET MESSAGE_TEXT = v_err. Ch&n m c New. RETURN v_book_title. Vi c này s. Kích chu t ph i vào th m c User-Defined Functions.
kho XML.1 S" d ng XML v i các c s d li u Các tài li u XML c l u d i d ng t#p tin v n b n. m t công ngh m i c cung c p trong DB2 phiên b n 9 h tr vi c l u tr thu n XML. SQL/XML và XQuery 16. Hình 16.1 th hi n ph n ki n th c trong b c tranh t ng quát c a DB2 s. Hình 16.1 – B c tranh t ng quát DB2: các l nh DB2. Có hai nguyên nhân chính là t i sao nhi u công ty xu t l u tr XML b ng c s d li u: . c c#p trong ch ng này. Xem ph n tài nguyên bi t thêm thông tin.Nh p môn H qu n tr c s d li u DB2 176 16 Ch ng 16 – SQL/XML và XQuery Trong ch ng này chúng ta bàn v pureXML. hay c s d li u. Nhi u ví d và khái ni m c bàn lu#n trong ch ng này c l y t* sách " IBM: DB2 9: T ng quan và B t u nhanh v i pureXML (IBM Redbook: DB2 9: pureXML overview and fast start).
Nhi u máy ch d li u. b n có th tích h p d li u XML m i cùng v i d li u quan h ã có. h tr tính b n v ng c a d li u m t cách tin c#y. ch. h+ s XML: • 16. Hình 16. và k t h p SQL v i XPath hay XQuery trong m t câu truy v n.2 gi i thích chi ti t h n hai l a ch&n cho c s d li u h tr XML. H n n a.1 c s d li u h tr XML M t c s d li u h tr XML s. sao l u và ph c h+i. tính hi u qu và kh n ng m r ng. Hi u n ng c a nó c. Tài li u XML dùng ph ng th c này c l u b ng c nh CLOB và c t ki u Varchar trong c s d li u. bao g+m máy ch DB2. Nh ng nguyên nhân t ng t l u tr d li u quan h trên c s( d li u XML: các c s d li u cung c p ch c n ng tìm ki m và rút trích hi u qu . không t hi u n ng t t.2 cho th y ph ng th c l u tr tài li u XML trong c s d li u “CLOB và Varchar”. Thông qua vi c tích h p. các c s d li u có th h tr các ng d ng web (web applications). Hình 16. thì nhi u nhà cung c p c s d li u v%n s d ng cách nh trên. .2. mà x lý tr c ti p trên 'a. XML là d li u gi ng nh các d li u khác.ng không cao vì các nh XML th ng r t l n do ó t n b nh .2 C s d li u XML Có hai lo i c s d li u C s d li u h tr XML C s d li u thu n XML 16.Nh p môn H qu n tr c s d li u DB2 177 • Qu n lý l ng l n h+ s XML là m t v n v c s d li u. SOA (Service Oriented Architecture) và các d ch v web (web services). h tr giao d ch.khác ph n nh d ng. S d ng hình nh hi n nhiên s. không t i hình nh vào b nh .2 – Hai l a ch n l u tr d li u XML trong c s d li u h tr XML Bên trái hình 16. s d ng mô hình quan h là mô hình chính l u tr d li u. l u tr d li u. ho c là l u tr d li u XML nh là i t ng l n có thu c tính. Ph ng th c này không linh ho t b i vì khó tìm c các ph n t bên trong nh. Tính tích h p: b ng cách l u tr các tài li u quan h và XML cùng v i nhau. d li u quan h có th c chuy n thành XML và ng c l i. Trong khi xem xét vi c này nh là công ngh c. /i u này c n s ánh x gi a mô hình d li u XML và mô hình d li u quan h .
Ph ng th c này c. S d ng ph ng pháp này mô hình phân c p c a tài li u XML b chuy n thành mô hình quan h . / nh d ng l u tr thì gi ng nh nh d ng x lý: không có s ánh x n mô hình quan h . 16. M.… . 16. m t c ch (engine) s. và không l u các tài li u XML thành d ng nh.ng không hi u qu : n u b n c n l y l i tài li u XML ban u. Ph ng pháp này c. ph ng th c này c minh h&a bên ph i c a hình 16. Khi s d ng các câu l n XPath hay XQuery. Trong hình. x lý các câu l nh ó ch không chuy n sang SQL. Hình 16.4 minh h&a b n cách truy xu t d li u trong DB2 phiên b n 9: S S S S d d d d ng SQL truy xu t d li u quan h . ng SQL v i XML m r ng truy xu t d li u XML ng XQuery truy xu t d li u XML ng XQuery truy xu t d li u quan h .2. deptdoc XML). vi c này còn t n chi phí khi s l ng b ng c k t n i càng nhi u. /ây là nguyên nhân t i sao g&i các c s d li u này là c s d li u thu n XML. b n ph i th c hi n các tác v SQL v i chi phí cao.i tên bên trái c a hình trên cho th y c t deptID c l u tr b ng nh d ng quan h (d ng b ng). gi s nh ngh'a b ng dept nh sau : CREATE TABLE dept (deptID char(8) . trong khi c t detdoc c l u b ng nh d ng phân c p ã c phân rã.3 bên d i phác h&a cách th c l u tr d li u quan h và d li u phân c p (các tài li u XML) trong DB2 phiên b n 9.2.Nh p môn H qu n tr c s d li u DB2 178 L a ch&n còn l i cho c s d li u h tr XML là ph ng th c phân rã.3 XML trong DB2 Hình 16. Toàn b tài li u XML dùng ph ng th c này b phân rã thành nhi u ph n (ph n t ) r+i l u trong các b ng.2 C s d li u thu n XML C s d li u thu n XML s d ng mô hình phân c p c a d li u XML l u tr và x lý XML bên trong.3 – XML trong DB2 Chú ý r ng khi nh ngh'a b ng dept có s d ng ki u d li u m i XML cho c t deptdoc. DB2 9 là máy ch th ng m i duy nh t cung c p tính n ng này. Hình 16.ng không linh ho t: m t thay i trong tài li u XML không d0 gì lan truy n n các b ng t ng ng và có th ph i t o nhi u b ng khác khi c n thi t. Hi n t i.
2. Ví d . S d ng pureXML (h p màu xanh) giúp gi m các dòng mã l nh. CLOB/Varchar hay phân rã l u tr các tài li u XML. IBM quy t nh dùng thu#t ng m i pureXML tránh s nh m l%n và t th ng hi u tên này các hãng khác v c s d li u hay XML không s d ng trùng thu#t ng bi u th cho các công ngh khác. Chú ý.có ngh'a là mã l nh ít ph c t p mà hi u n ng toàn th c c i thi n vì s dòng phân tích và b o trì trong mã l nh ít h n.3. ó là “native XML”. Chú ý r ng IBM dùng thu#t ng pureXML thay vì “native XML” Trong khi các hãng khác v%n dùng công ngh c. 16. còn m t ng i s d ng XML thì s.1 7u i m c a công ngh pureXML trong DB2 9 S d ng công ngh pureXML em l i nhi u u i m sau : 1.4 – B n cách truy xu t d li u trong DB2 Vì v#y. b ng cách l u tr các tài li u XML trong các c t c a b ng có s d ng ki u d li u m i XML.ng có h tr XML. xem DB2 nh là kho tr XML c p cao có h tr SQL. /i u này không ch. h& g&i nh ng công ngh c.5 minh h&a m t o n mã PHP c vi t v*a s d ng và không s d ng pureXML. s h tr pureXML chc cung c p khi t o ra c s d li u Unicode. B n có th gi m ph c t p c a mã. B n có th nâng cao kh n ng dùng d li u quan h . mô t công ngh này. trong khi m t ng i s d ng SQL xem DB2 nh là m t h qu n tr c s d li u quan h (RDBMS – Relational Database Management System) c p cao c. .Nh p môn H qu n tr c s d li u DB2 179 Hình 16. trong hình 16.
cách làm này không úng v i các lu#t chu n hóa trong c s d li u quan h . ph i thay i i m n là b ng m i. b i vì không nh ng l ng d li u ã có c n c chuy n l n mà còn t t c các câu SQL trong các ng d ng s. Trong hình. N u nhân viên “Michael” không có s i n tho i di ng thì tr ng.Nh p môn H qu n tr c s d li u DB2 180 Hình 16. N u b n mu n gi úng các lu#t này thì b n t o m t b ng Phone m i và chuy n toàn b thông tin s i n tho i qua b ng này.6 minh h&a m t ví d v s t ng tính linh ng.* ph c t p khi s" d ng hay không s" d ng pureXML 3. n u nhà qu n lí c a b n yêu c u b n l u tr không ch. B n c. M c nh là c s d li u không có XML. T o ra b ng Phone m i thì t n chi phí.5 . gi s r ng b n ã có c s d li u g+m các b ng Employee và Department.ng có th thêm nhi u s i n tho i di ng. chúng tôi a ra cách th c hi n vi c này s d ng XML bên trái hình bên d i. N u nhân viên “Christine” c.ng có m t s i n tho i di ng. . Hình 16. Tuy nhiên. Thay vào ó. S d ng XML và công ngh pureXML thay i l c + (schema) c a b n d0 dàng h n. thì thêm m t th2 (tag) m i l u thông tin này.m i nhân viên m t s i n tho i (s i n tho i nhà) mà còn l u thêm s th hai (s di ng) thì b n có th thêm m t c t trong b ng Employee và l u s i n tho i di ng trong c t m i ó.
9 c. Th c hi n các ki m tra dùng công ngh pureXML cho th y s c i thi n áng k cho nhi u ng d ng XML. C t gi a cho th y k t qu làm vi c v i XML b ng ph ng th c c.2 Khái ni m c b n v XPath XPath là m t ngôn ng mà ta có th dùng nó truy v n các tài li u XML.6 – T ng s m m d)o khi s" d ng XML 4..7 cho th y các k t qu ánh giá cho vi c m t công ty chuy n sang s d ng công ngh pureXML. B n có th c i thi n hi u n ng ng d ng XML c a mình.Nh p môn H qu n tr c s d li u DB2 181 Hình 16. và c t th ba là k t qu s d ng pureXML trong DB2 9. x d ng nh d ng "phân tích phân c p" gi i thích XPath ho t ng nh th nào. Chúng ta s. Hình 16.ng c g&i là nút (node) hay lá (leaf)).7 – S t ng hi u n ng khi s" d ng công ngh pureXML 16. Hình 16.3.8 mô t m t tài li u XML và hình 16. Hình 16. .ng minh h&a tài li u ó c trình bày v i d ng "phân tích phân c p" (c.
ta s d ng hàm "text()".thu c tính.Nh p môn H qu n tr c s d li u DB2 182 Hình 16. trong XPath b n s d ng nh ng d u g ch chéo (/) chuy n t* m t thành ph n này n m t thành ph n khác trong tài li u XML.1 minh h&a m t vài câu truy v n XPath và k t qu t ng ng khi áp d ng trên tài li u XML ã cho hình 16. b ng cách s d ng tài li u trong hình 16.9 v i XPath b n có th l y ra tên c a t t c các nhân viên thông qua câu truy v n sau: /dept/employee/name Các bi u th c XPath Các bi u th c XPath s d ng ng d%n y nh ra các thành ph n và/hay các thu c tính. / ch..9 . T ng t .Trình bày tài li u XML hình 16.9 . S d ng câu l nh CD b n i qua m t cây th m c nh sau: cd /directory1/directory2/.8 theo d ng “ phân tích phân c p” M t cách nhanh chóng h&c XPath ó là so sánh nó v i câu l nh i th m c (CD) trong MS-DOS hay trong Linux/UNIX.. Kí hi u "@" dùng ch.l y giá tr (text node) c a m t thành ph n.M t tài li u XML Hình 16.8 .. Ví d . B ng 16.
ta s d ng [n] v i ý ngh'a là thành ph n con th n s. c ch&n. cho ta nhi u ví d h n: XPath /dept/employee[@id=”902”]/name /dept[@bldg=”101”]/employee[office > “300”]/name //employee[office=”304” OR office=”216”]/@id /dept/employee[2]/@id B ng 16. c ch&n.2 . B ng 16.ra m t v t* có v trí. Ví d [@id="902"] có th c hi u là "v i i u ki n thu c tính id có giá tr b ng 902".3 s.Các ví d v v$ t& XPath K t qu <name>Peter Pan</name> <name>John Doe</name> 901 902 902 . b n có th ngh' chúng nh là m t thành ph n t ng ng v i m nh WHERE trong SQL. / ch.3 .9 XPath /dept/@bldg /dept/employee/@id K t qu John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 /dept/employee/@id 901 902 /dept/employee/name <name>Peter Pan</name> <name>John Doe</name> /dept/employee/name/text() Peter Pan John Doe /dept//phone <phone>408 555 1212</phone> <phone>408 555 9918</phone> B ng 16. Trong m t bi u th c XPath có th có nhi u v t*.2 cho ta thêm vài ví d d a trên tài li u XML XPath /dept/employee/*/text() hình 16. Ví d employee[2] ngh'a là ng i công nhân th 2 s.1 – Các ví d v bi u th c XPath i di n Các kí t Có 2 kí t i di n chính trong XPath: • "*" thay th cho b t kì tên th2 nào • "//" là kí t i di n cho "t* ây tr xu ng" (descendent-or-self) B ng 16.Nh p môn H qu n tr c s d li u DB2 183 K t qu 101 901 902 /dept/employee/name <name>Peter Pan</name> <name>John Doe</name> /dept/employee/name/text() Peter Pan John Doe B ng 16.Các ví d v kí t i di n trong XPath Các v$ t& c a XPath Các v t* c a XPath c t trong c p d u ngo c vuông []. M t cách t ng t .
M t chú ý quan tr&ng là các bi u th c XQuery và XPath phân bi t ký t vi t hoa và vi t th ng. Th c t XPath là m t t#p con c a XQuery. /ây là m t bi u th c cho phép ta thao tác v i các tài li u XML.. t ng ng v i bi u th c SELECT-FROM-WHERE.) trong bi u th c r ng b n tham chi u n v trí hi n t i./.>”300”] /dept/employee[office > “300”]/office /dept/employee[name = “John Doe”]/. cho phép b n tr v nh ng bi u th c khác.. XQuery h tr bi u th c FLWOR ( &c nh flower).ng c áp d ng v i XQuery.) chi u n ví trí trên nó m t c p (m c cha). gi s b n ã có 1 b ng v i nh ngh'a nh sau: CREATE TABLE dept (deptID CHAR(8). B ng 16. • LET: Gán m t bi n v i m t dãy. XQuery h tr c d li u có ki u và d li u không có ki u.Nh p môn H qu n tr c s d li u DB2 184 Tr c cha XPath: T ng t v i MS-DOS hay Linux/UNIX. XQuery h tr các bi u th c ng d%n nh v trí trong c u trúc phân c p XML./@bldg /dept/employee/name[. Ph n ti p theo s. gi i thích rõ h n v FLWOR XQuery: Bi u th c FLWOR FLWOR vi t t t cho: • FOR: l p qua t t c các ph n t c a m t dãy các thành ph n và gán m t bi n cho các thành ph n. do ó. Và tài li u XML sau c thêm vào trong các c t c a deptdoc: <dept bldg=”101”> <employee id=”901”> <name>John Doe</name> .. deptdoc XML).3 *$nh ngh-a XQuery XQuery là m t ngôn ng truy v n c t o ra cho XML. b n có th dùng m t d u ch m (. XQuery không ch a giá tr null vì tài li u XML b" i nh ng d li u thi u hay không xác nh. và hai d u ch m (../@bldg B ng 16. • WHERE: lo i ra các thành ph n trong quá trình l p • ORDER: s p x p l i các thành ph n trong khi l p • RETURN: t o ra giá tr tr v cho câu truy v n. Ví d . Trong SQL nó s.4 – Tr c cha Xpath nh ra tham K t qu <name>Peter Pan</name> <office>344</office> <office>344</office> 101 101 16. t t c nh ng gì chúng ta ã h&c tr c ây v XPath c.4 cho ta thêm vài ví d XPath /dept/employee/name[. XQuery tr v m t chu i các d li u XML.3.=”John Doe”]/./@id=”902”] /dept/employee/office[..
txt -. -.(2) create database mydb using codeset UTF-8 territory US . Không th dùng XQuery chèn tài li u XML khi nó ch a c nh ngh'a trong chu n.(3) connect to mydb . Ki m tra t p k ch b n sau. -. nó có th ch y trong DB2 Command Window ho c Linux shell dùng l nh này. @emp} </EmpList> Và s.4 Chèn các tài li u XML Vi c chèn các tài li u XML vào c s d li u DB2 có th th c hi n b ng câu l nh INSERT SQL.txt table_creation. hay công c IMPORT.deptdoc’)/dept let $emp := $d//employee/name where $d/@bldg > 95 order by $d/@bldg return <EmpList> {$d/@bldg. db2 -tvf table_creation.(4) create table items ( .3. cho ta k t qu sau: <EmpList bldg=”101”> <name> John Doe </name> <name> Peter Pan </name> </EmpList> 16.Nh p môn H qu n tr c s d li u DB2 185 <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=”902”> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept> Thì khi ó câu l nh XQuery sau s d ng FLWOR có th c th c hi n: xquery for $d in db2-fn:xmlcolumn(‘dept.(1) drop database mydb . -.
sku int. 7. TX. comments xml ). COMMENTS) L u ý r ng t p k ch b n này và nh ng t p liên quan pressc_book_quicklabs. 00112</addr>' ) . Xóa c s d li u “mydb”. nh#n c c m t thông báo l i.(7) IMPORT FROM "D:\Raul\clients. contact xml ). 3. L nh 7. Dallas. c cung c p trong t p nén exi chúng ta mô t t*ng dòng l nh 1. -. SKU. T o b ng “clients”. b n s. Trong câu l nh INSERT b n truy n tài li u XML vào nh là m t chu i bao b i d u nháy n. name varchar(50).(5) create table clients( id int primary key not null. b n nh#p d li u t* t p clients. ' John Smith'' . -. brandname varchar(30). BRANDNAME. L nh này c n thi t t o ra c 4. chèn ho c nh#p nhi u tài li u XML cùng v i d li u quan h vào c s d li u. NAME.del (m t t p ascii . CONTACT) . -. Gold' . nh ng nó không gây nh h ng n vi c ta ang làm.del" of del xml from "D:\Raul" INSERT INTO CLIENTS (ID.(6) insert into clients values (77.Nh p môn H qu n tr c s d li u DB2 186 id int primary key not null. srp decimal(7.del" of del xml from "D:\Raul" INSERT INTO ITEMS (ID. c t o. -.ng ki u d li u XML m i. vì v#y b c này là c n thi t t om tc s d li u thành m t c s d li u UNICODE. Bên d trong t p k ch b n. M t c s d li u UNICODE c òi h"i h tr pureXML. N u nh tr c ó ch a có “mydb”.zip i kèm v i sách. SRP. K t n i n c s d li u “mydb” v*a m i các i t ng trong c s d li u.. / ý th y c t cu i cùng trong b ng (c t “comments”) nh ngh'a nh là m t c t XML s d ng ki u d li u XML m i. itemname varchar(30). ITEMNAME. Dùng l nh IMPORT.2). ' <addr>111 Main St. chèn m t tài li u XML vào m t c t XML. C t cu i trong b ng (c t “contact”) c. STATUS.(8) IMPORT FROM "D:\Raul\items. status varchar(10). Thao tác này th ng c th c hi n trong các t p k ch b n làm nhi m v d&n d7p. 2. c nh ngh'a v i 6. T o b ng “items”. Dùng l nh SQL INSERT này. T o c s d li u “mydb” s d ng b mã UTF-8. 5.
<XDS FIL='Client5681. 4309.Ella Kimpton.<XDS FIL='Client9077. “XDS FIL=” c dùng tr" n m t t p tài li u XML c th . Chúng ta s.10 – N i dung c a th m c D:\Raul v i các tài li u XML /ây là n i dung c a t p clients.ra n i mà d li u XML c tham chi u b i t p clients.del.11 cho th y trung tâm i u khi n sau khi ch y t p k ch b n trên.Gold.<XDS FIL='Client9177.10) c h t.xml' /> 9177.del 3227. tìm hi u k$ h n t p clients.Standard.del ó c nh v (trong ví d này là th m c D:\Raul).Rita Gomez. 8877. Hình 16.xml'/>.Chris Bontempo. 5681.Tina Wang.Paula Lipenski.Silver. hãy xem n i dung c a th Hình 16.xml' />.del.Gold.Nh p môn H qu n tr c s d li u DB2 187 c d u phân cách).<XDS FIL='Client3227.Standard. . và b n c.Standard. 9077.<XDS FIL='Client8877.xml'/>.<XDS FIL='Client4309.xml'/> Trong t p clients. nh ng tr m c D:\Raul (Hình 16.Lisa Hansen.ng có th ch.del clients.xml' />.
Truy v n d li u XML v i SQL/XML S d ng nh ng câu l nh SQL thu n túy cho phép b n làm vi c v i c dòng và c t.m t ph n c a tài li u XML.Nh p môn H qu n tr c s d li u DB2 188 Hình 16. C a s này n m góc d i bên ph i c a hình 16.5 Truy v n d li u XML Trong DB2.5 bên d Tên hàm XMLPARSE XMLSERIALIZE XMLVALIDATE XMLEXISTS i mô t m t s hàm SQL/XML có s)n v i chu n SQL 2006 Mô t Tách (phân tích) thu c tính ho c d li u nh phân trong 1 i t ng l n.txt Trong hình là n i dung c a b ng CLIENTS. B ng 16. M t câu l nh SQL làm vi c c v i nguyên c tài li u XML. C t cu i cùng “Contact” là m t c t XML. DB2 u tuân theo chu n XML qu c t . b n c n s d ng SQL v i các l nh m r ng cho XML (SQL/XML). m t c a s khác m ra cho b n th y n i dung tài li u XML. tuy nhiên nó l i không có kh n ng làm vi c v i ch.3. có 2 cách truy v n d li u XML: • S d ng SQL v i các l nh m r ng cho XML (SQL/XML) • S d ng XQuery Trong c 2 cách trên. Khi b n nh p vào nút có ba d u ch m.11 – Trung tâm i u khi n sau khi th c hi n table_creation. l y ra giá tr XML Chuy n giá tr XML sang thu c tính ho c d li u nh phân trong 1 i t ng l n /ánh giá giá tr c a XML v i s + XML (XML Schema) và ghi chú ki u các giá tr c a XML Xác nh (ki m tra) câu truy v n XQuery có giá tr tr v không (ví d m t dãy giá tr hay nhi u h n) .11 16. Trong tr ng h p này.
N u th y. T ng t ví d tr c. Câu truy v n d i ây có th gi i quy t v n này: SELECT xmlquery(‘$c/Client/email’ passing contact as “c”) FROM clients WHERE status = “Gold” Dòng u tiên nói r ng ta mu n l y ra ph n t là a ch. duy t t* nút “Client” xu ng nút “Address”. là m t b ng quan h XMLCAST Ép ki u XML B ng 16. Nói cách khác. hàm XMLQUERY có th c s d ng sau m nh SELECT.5 .contact as “c”. Trong ó “clients” là tên b ng và “contact” là tên c t có ki u d li u XML.Nh p môn H qu n tr c s d li u DB2 189 Th c thi câu truy v n XQuery và tr v dãy k t qu Th c thi câu truy v n XQuery và k t qu tr v (n u có) s. B ng “clients” l u a ch. S d ng XMLEXISTS. trong khi hàm XMLEXISTS c s d ng sau m nh WHERE. Bi n “c” này sau ó c nh ngh'a b ng câu l nh passing clients. Trong ví d này. M nh WHERE g&i hàm XMLEXISTS. sau ó gi i h n l i k t qu tr v . XMLQUERY XMLTABLE Ví d 1: Gi s b n c n xác nh tên t t c khách hàng s ng m t vùng nào ó (có cùng mã vùng – zip). SELECT name FROM clients WHERE xmlexists ( ‘$c/Client/Address[zip=”95116”]’ passing clients. ta có th làm i u này b ng cách s d ng hàm XMLTABLE. hàm XMLEXISTS tr v “true” và DB2 l y ra tên khách hàng t ng ng.Các hàm SQL/XML Nh ng ví d minh h&a sau s d ng c s d li u “mydb” mà ta ã t o ra t* tr c.contact as “c” ) Dòng u tiên c a câu l nh SQL nói r ng b n mu n l y thông tin trong c t “name” c a b ng “clients”. cu i cùng là nút “zip” và xác nh xem khách hàng có s ng vùng có mã vùng ó không. b n tìm th y c t d li u XML phù h p v i mã vùng.khách hàng. chúng ta ang a tài li u XML vào bi n “c”. bao g+m mã vùng. nh rõ bi u th c XPath yêu c u DB2 tìm M nh “$c/Client/Address” xác nh ng d%n bên trong cây c u trúc c a tài DB2 có th tìm ra ph n t “zip”. Ký t $ c dùng khai báo “c” là m t li u XML bi n.th i n t c a tài li u XML ch không mu n l y ra c t d li u. trong m t c t XML. tài li u XML c l u trong bi n “$c”. c . Ví d 2: Chúng ta suy ngh' xem làm cách nào t o ra c m%u báo cáo g+m danh sách a chth i n t c a nh ng khách hàng “Vàng” (có tr ng thái “Gold”). chph n t “zip” có giá tr 95116. Ví d 3: Có tr ng h p b n mu n trình bày d li u XML theo d ng b ng. DB2 ki m tra d li u XML trong c t “contact”.
CustomerID integer path ‘CustomerID’. nh ng l n này ta không ch.ra khách hàng “vàng” là quan tâm c a chúng ta.ra r ng ta ch.Nh p môn H qu n tr c s d li u DB2 190 SELECT t. t t c d li u XML u c i thành ki u d li u v n có c a SQL. Dòng th ba ch. Message varchar(100) path ‘Message’) AS t Dòng u tiên cho bi t nh ng c t nào s. ch a d li u mà n ph n t ó trong tài li u XML.customerID. Dòng th t cho ta bi t c t này b ng “client”.comments as “c” columns Comment# integer path ‘CommentID’.e-mail u tiên c a nhóm khách th"a mãn yêu c u.comment#. Dòng ti p theo g&i hàm XMLTABLE ta c n (“i. c b&c l i trong các th2 HTML (trong tr ng h p này là th2 <p> và </p>).ngu+n d li u XML (c t “contact”). là nh ng ph n t T* dòng 4 n 6 là m nh “columns”. xmlquery( ‘for $e in $c/Client/email[1] return $e’ passing contact as “c” ) FROM clients WHERE status = ‘Gold’ Dòng th nh t xác nh r ng b ng k t qu c a câu truy v n bao g+m tên khách hàng và k t qu tr v t* hàm XMLQUERY. Nh ng c t b t u b ng “t” là c s trên các giá tr c a ph n t XML. th c hi n m t ví d n gi n có s d ng bi u th c XQuery FLWOR bên trong hàm XMLQUERY SQL/XML.comments”) và ng d%n mong mu n. c ánh x t ng ng v i nh ng c t trong b ng k t qu c a câu l nh SQL dòng 1. xác nh rõ c t XML c a DB2 s. xác nh nh ng ph n t XML c th nào s. i. Dòng th hai cho bi t thông tin này s. Ví d 6: Ví d d i ây minh h&a cách s d ng hàm XMLELEMENT t o ra m t dãy các ph n . xu t hi n trong t#p h p k t qu (results set). xmltable(‘$c/Comments/Comment’ passing i. và dòng n m ch.itemname. Dòng th hai cho bi t ph n t “email” u tiên c a ph n t “Client” s. t. Ví d 4: Bây gi ta s. SELECT xmlquery (‘for $e in $c/Client/email[1]/text() return <p>{$e}</p>’ passing contact as “c” ) FROM clients WHERE status = ‘Gold’ M nh return c a XQuery cho phép bi n i d li u XML u ra theo yêu c u.quan tâm n bi u di0n v n b n a ch. chuy n i thành. S d ng hàm text() dòng u tiên ch. Trong ví d này. SELECT name.tr v d li u XML mà còn c HTML. Ph n ánh x này có s tham gia c a ki u d li u mà các giá tr c a các ph n t XML s. c tr v . Ví d 5: Ví d này minh h&a l i hàm XMLQUERY có s d ng bi u th c XQuery FLWOR. Message FROM items I.
XQuery là ph ng pháp chính. SELECT xmlelement (name xmlelement (name xmlelement (name xmlelement (name FROM items WHERE srp < 100 “item”. xquery db2-fn:xmlcolumn(‘CLIENTS. sku) K t qu xu t ra c a câu truy v n trên nh sau: <item> <id>4272</id> <brand>Classy</brand> <sku>981140</sku> </item> … <item> <id>1193</id> <brand>Natural</brand> <sku>557813</sku> </item> Truy v n d li u XML v i XQuery Trong ph n tr c.nh trong tài li u XML làm tham s . Khi th c hành v i XQuery .s hàng hóa t i thi u trong kho (SKU) t ng ng v i các c t trong b ng “items”. và trong m t XQuery s tr ng h p. và XPath c nhúng vào bên trong câu l nh SQL. Lúc này. xquery for $y in db2-fn:xmlcolumn(‘CLIENTS. ta s.CONTACT’)/Client/fax return $y . brandname). nhúng SQL vào bên trong XQuery (b ng cách s d ng hàm “db2fn:sqlquery”). “id”. “sku”. “brand”. id). ta có th dùng hàm XMLELEMENT khi mu n chuy n t* d li u quan h sang d li u XML. Ví d 1: Làm m t truy v n XQuery n gi n là l y d li u liên l c c a khách hàng. cho r ng b n ang c g ng th c thi bi u th c SQL. ta ã th y c cách truy v n d li u XML v i câu SQL có ph n m r ng cho XML. Hàm db2-fn:xmlcolumn l y c t ta ch. N u không. Tr ng h p này.Nh p môn H qu n tr c s d li u DB2 191 t . g&i vài hàm. V c b n. s d ng c bi u th c FLWOR. SQL là ph ng pháp truy v n chính.CONTACT’) Nh luôn luôn thêm l nh “xquery” vào u bi u th c XQuery cho DB2 bi t r ng nó c n s d ng b phân tích (parser) XQuery. Còn trong ti p theo này. itemname). ta nói v cách s d ng truy v n d li u XML. m i ph n t này l i ch a trong nó các ph n t con (sub-element) có n i dung v ID. ta s. DB2 s. tên hàng hóa và ch. Câu l nh trên t ng ng v i câu l nh SQL sau ây: SELECT contact FROM clients Ví d 2: Ta s d ng bi u th c FLWOR l y thông tin v s fax c a khách hàng.
K t qu xu t ra c a câu truy v n trông gi ng nh sau (m c nh có th g+m a ch.</street> <city>Los Gatos</city> <state>ca</state> <zip>95302</zip> </address> </li> <li> <address> <street>4209 El Camino Real</street> <city>Mountain View</city> <state>CA</state> <zip>95302</zip> </address> </li> … </ul> Ví d 4: Ti p theo là cách nhúng SQL vào trong XQuery b ng vi c s d ng hàm db2fn:sqlquery.CONTACT.CONTACT’)/Client/Address order by $y/zip return <li>{$y}</li> </ul> K t qu HTML tr v trông nh sau: <ul> <li> <address> <street>9407 Los Gatos Blvd. Ch.Nh p môn H qu n tr c s d li u DB2 192 Dòng u tiên g&i b phân tích XQuery. c tr v trong m i l n l p. Dòng cu i cùng nói r ng giá tr c a bi n $y s. Dòng th hai yêu c u DB2 l p h t các ph n t con fax trong c t CLIENTS. Hàm db2-fn:sqlquery th c thi câu truy v n SQL và ch. M i ph n t fax c l u trong bi n $y.c a không gian tên (namespace) nh ng ây tôi không th hi n ra.tr v nh ng d li u XML c ch&n.nh ng câu truy v n SQL tr v d li u XML m i c truy n vào hàm db2-fn:sqlquery. m t khác thông tin xu t có th tr i ra thành nhi u dòng nên h i khó &c): <fax>4081112222</fax> <fax>5559998888</fax> Ví d 3: Ví d này ti p t c truy v n d li u XML và tr v k t qu là HTML xquery <ul> { for $y in db2-fn:xmlcolumn(‘CLIENTS. xquery for $y in db2-fn:sqlquery( ‘select comments from items where srp > 100’ )/Comments/Comment where $y/ResponseRequested = ‘Yes’ .
Truy n tên i t ng d ng ch th ng có th gây ra l i “tên i t ng không xác nh” (undefined object name) 16. Ph ng pháp 2: SELECT u. trong khi ó XQuery l i phân bi t ch in hoa và ch th ng. name CHAR(20). Gi s ta ã t o hai b ng v i các l nh sau: CREATE TABLE dept (unitID CHAR (8).unitID FROM dept d. ho c gi a m t c t XML và m t c t quan h . câu truy v n SQL l&c nh ng dòng d li u th"a i u ki n giá tr t i c t “srp” ph i l n h n 100.ra r ng l nh JOIN xu t hi n gi a ph n t “name” là ph n t con c a c t XML deptdoc c a b ng “dept”. unit u WHERE XMLEXITS( ‘$e//employee[name = $n]’ passing d.6 N i (join) v i SQL/XML Ph n này s.manager = XMLCAST( XMLQUERY(‘$e//employee/name’ passing d. ) Ta có th th c hi n l nh JOIN theo m t trong hai cách Ph ng pháp 1: SELECT u. là c t d li u XML. deptdoc XML) CREATE TABLE unit (unitID CHAR(8) primary key not null. Câu l nh XQuery (ho c XPath) ti p theo c áp d ng cho nh ng ph n t con. Ghi chú: DB2 không phân bi t ch in hoa và ch th ng và gi nh t t c tên b ng và tên c t u là ch in hoa. và c t quan h “manager” c a b ng “unit”. .deptdoc as “e”) AS char(20)) . T* các dòng ã l&c này l y ra c t “comments”.deptdoc as “e”.manager as “m”) Trên dòng 3 c a l nh này ch.unitID FROM dept d.3. mô t cách th c th c hi n l nh JOIN gi a hai c t XML c a hai b ng khác nhau. manager VARCHAR(20). Các hàm trên là hàm giao di n c a XQuery (XQuery interface function) do ó tên b ng và tên c t truy n vào các hàm này nên là ch hoa. . u. unit u WHERE u. .Nh p môn H qu n tr c s d li u DB2 193 return ( <action> {$y/ProductID $y/CustomerID $y/Message} </action> ) Trong ví d trên.
Ví d .3.project as “p”) L nh t ng ng s d ng XQuery s.DEPTDOC”)/dept for $proj in db2fn:xmlcolumn(“PROJECT.7 N i (Join) v i XQuery Gi s có các b ng sau c t o ra: CREATE TABLE dept(unitID CHAR(8). 16. 16. là: bên xquery for $dept in db2-fn:xmlcolumn(“DEPT. deptdoc XML) CREATE TABLE project(projectdoc XML) N u ta s d ng SQL/XML. project p WHERE XMLEXISTS( ‘$e/dept[@deptID=$p/project/deptID]’ passing d.m c quan h có th c dùng thay cho m t ch.XMLUPDATE Trong c hai tr ng h p. c#p nh#t ho c xóa tác ng m c tài li u.G&i th t c DB2XMLFUNCTION. n u trong ví d d i ây ta mu n thay th ph n t <state>. p. m t ch.Nh p môn H qu n tr c s d li u DB2 194 Trong l a ch&n này.deptdoc as “e”.8 Các l nh c p nh t và xóa Các l nh c#p nh#t và xóa d li u XML có th c th c hi n b ng m t trong hai cách: .m c XML. c t quan h thì bên trái c a l nh JOIN. Bi n “$proj” mang tài li u XML c a c t XML “projectdoc” c a b ng “project”.3. N u c t có quan h trái d u b ng. toàn b tài li u XML c thay th v i m t l n c#p nh#t. UPDATE clients SET contact=( xmlparse (documment ‘<Client> <address> <street>5401 Julio ave.PROJECTDOC”)/project where $dept/@deptID = $proj/deptID return $dept/employee Ph ng pháp th 2 này d0 phiên d ch h n – bi n “$dept” mang tài li u XML c a c t XML “deptdoc” c a b ng “dept”. câu truy v n s.S d ng câu l nh SQL UPDATE và DELETE . th#t v#y. nh sau: SELECT XMLQUERY ( ‘$d/delp/employee’ passing d.deptdoc as “d”) FROM dept d. Nh v#y dòng 4 th c hi n l nh JOIN gi a m t thu c tính c a tài li u XML u tiên và m t ph n t c a tài li u XML th hai. toàn b tài li u XML trên th c t b thay th .</street> <city>San Jose</city> <state>CA</state> <zip>95116</zip> </address> <phone> <work>4084633000</work> <home>4081111111</home> <cell>4082222222</cell> </phone> .
m c XML Trong m t tài li u XML.9 Ch.Nh p môn H qu n tr c s d li u DB2 195 </Client>’) ) WHERE id = 3227 16. các ch. gi s b ng sau ã c t o: CREATE TABLE customer(info XML) Và gi s h+ s sau ã c l u trong b ng này: <customerinfo Cid=”1004”> <name>Matt Foreman</name> <addr country=”Canada”> <street>1596 Baseline</street> <city>Toronto</city> <state>Ontario</state> <zip>M3Z-5H9</zip> </addr> <phone type=”work”>905-555-4789</phone> <phone type=”home”>416-555-3376</phone> <assistant> <name>Peter Smith</name> <phone type=”home”>416-555-3426</phone> </assistant> </customerinfo> 1) L nh này t o m t ch. và ch.m c trên m&i ph n t “name” CREATE UNIQUE INDEX idx3 ON customer(info) GENERATE KEY USING xmlpattern ‘//name’ AS sql VARCHAR(40) 4) L nh này t o m t ch. thu c tính ho c giá tr (v n b n).m c trên toàn b v n b n (t t c các giá tr ).3.m c trên ph n t “name” CREATE UNIQUE INDEX idx2 ON customer(info) GENERATE KEY USING xmlpattern ‘/customerinfo/name’ AS sql VARCHAR(40) 3) L nh này t o m t ch. Sau ây là m t s ví d . nó quá t n kém duy trì ch. xóa ho c chèn. /ây là l nh không nên dùng.m c s.m c thên thu c tính “Cid” CREATE UNIQUE INDEX idx1 ON customer(info) GENERATE KEY USING xmlpattern ‘/customerinfo/@Cid’ AS sql DOUBLE 2) L nh này t o m t ch.m c có th c t o ra theo các ph n t . r t l n .m c khi th c hi n các l nh c#p nh#t.
Nh p môn H qu n tr c s d li u DB2 196 CREATE UNIQUE INDEX idx4 ON customer(info) GENERATE KEY USING xmlpattern ‘//text()’ AS sql VARCHAR(40) .
Tìm ra ID và BRANDNAME c a các b n ghi mà tài li u XML c a nó có giá tr c a tr ng ResponseRequested là “No” L i gi i 2a) xquery db2-fn:xmlcolumn(‘ITEMS. Tìm ra t t c các n i dung chú thích (comments) trong tài li u XML trong b ng ITEMS b ng hai cách.COMMENTS’) xquery db2-fn:sqlquery(“select comments from items”) K t qu khác nhau là vì SQL tr l i giá tr NULL khi không có giá tr . s d ng c s d li u “mydb” c t o ra b ng vi c s d ng t p k ch b n table_creation.Nh p môn H qu n tr c s d li u DB2 197 Bài t p nhanh #12 – SQL/XML và XQuery M c ích B n ã th y nhi u ví d v cú pháp c a SQL/XML và XQuery và ã c gi i thi u trong DB2 Command Editor và công c DB2 Developer Workbench. Trong bài t#p này. Ta s. ch. còn XQuery không tr l i gì c .COMMENTS as “c” 2b) 2c) . SELECT id. brandname FROM items WHERE XMLEXISTS(‘$c/Comments/Comment[ResponseRequested=”No” passing ITEMS. T i sao khi ta s d ng l nh SQL sau l i không a ra cùng k t qu ? SELECT comments FROM items c. b n hãy ki m tra s hi u bi t c a b n v SQL/XML và XQuery b ng vi c th c hành v i các công c này. nh ã trình bày ch ng tr c 2. S d ng ho c C a s l nh ho c DWB: a.s d ng XQuery b.txt mà chúng ta ã gi i thích trong các ch ng tr c. Th t c 1. T o c s d li u “mydb” và n p d li u XML.
ng bao g+m b t c máy khách DB2 nào.1 – Trình i u khi n JDBC ki u 2 Hình 17. T p db2jcc.ibm.db2.jar c. . th c thi.1 minh h&a m t ng d ng JDBC s d ng trình i u khi n ki u 2. PHP và Ruby Ch ng này s. ho c nó có th c th y (trình i u khi n IBM DB2 cho JDBC và SQLJ) t* trang web DB2 Express-C (ibm.com/db2/express) 17. nh ng nó cung c p thông tin thích h p trong vi c s d ng chúng v i DB2.Nh p môn H qu n tr c s d li u DB2 198 17 Ch ng 17 – Phát tri n v i Java.1 Phát tri n ng d ng b6ng Java c bi t n nh trình i u khi n JCC) c Trình i u khi n IBM DB2 cho JDBC ( xem là t i u i v i các máy ch DB2 trên t t c các n n t ng. Hình 17. L u ý là URL không bao g+m hostname ho c thông tin v c ng b i vì i u này c th c hi n t* máy khách DB2. M c ích c a ch ng này không nh m h ng d%n v các ngôn ng trên. Hình 17. th o lu#n nh ng v n c b n c a vi c phát tri n ng d ng trong Java.2 a ra m t o n mã l nh cho ta th y làm th nào thi t l#p m t k t n i s d ng trình i u khi n JDBC ki u 2.jcc) bao g+m trình i u khi n ki u 2 và ki u 4. PHP và Ruby trên n n Rails s d ng m t máy ch DB2.1 Trình i u khi n JDBC ki u 2 (type 2) Trình i u khi n JDBC ki u 2 yêu c u m t máy khách DB2 ã c cài t n i mà ng d ng JDBC s. T p db2jcc.1.jar (com. 17.
Hình 17. Hình 17.2 – Thi t l p m t k t n i s" d ng trình i u khi n JDBC ki u 2 17. L u ý là URL bao g+m c hostname ho c thông tin v c ng.1.2 Trình i u khi n JDBC ki u 4 Trình i u khi n JDBC ki u 4 không yêu c u m t máy khách ph i k t n i n m t máy ch DB2.Nh p môn H qu n tr c s d li u DB2 199 Hình 17. .4 a ra m t o n mã l nh cho ta th y làm th nào thi t l#p m t k t n i s d ng trình i u khi n JDBC ki u 4.3 minh h&a m t ng d ng JDBC s d ng trình i u khi n ki u 4.3 – Trình i u khi n JDBC ki u 4 Hình 17.
net/package/pdo http://pecl. Ph n m r ng s)n có t* kho th vi n PECL d i s cho phép c a Apache 2. c#p nh#t và ghi các thao tác c s d li u thêm vào ó m r ng truy xu t n siêu c s d li u. d0 h&c t* th p n cao M nh. Nhanh chóng. PDO_ODBC: PDO_ODBC là trình i u khi n cho ph n m r ng c a Các i t ng d li u PHP (PHP Data Objects .PDO). Nó c IBM phát tri n và h tr .0. nh7 nhàng. nhanh. D0 dàng tích h p vào các môi tr ng/h th ng không thu n nh t. tính th c thi cao và kh chuy n 6n nh và an toàn M t s l a ch&n i v i J2EE và . K tn i n m t c s d li u DB2 ch a phân lo i (uncalalogued) n c s d li u DB2 s d ng m t trong . th ng s)n có trên các nhà cung c p (ISP) v i giá h p lý. và h ng i t ng. Nó có th c biên d ch làm vi c v i PHP 4 ho c PHP 5. / c ch ng t" thông qua tri n khai r ng rãi T o nên m t c ng +ng y s c s ng PHP là b ph#n c a LAMP (vi t t t c a các t* Linux. Apache HTTP Server. Tính ph bi n c a PHP d a trên các c tr ng c a ngôn ng : - - Nhanh.1 cho th y làm th nào k tn i hai ph n m r ng ã c mô t trên.1.2.net/package/PDO_ODBC /o n mã 17.1.php.4 – Thi t l p m t k t n i s" d ng trình i u khi n JDBC ki u 4 17. và nó ã c xây d ng trong PHP 5. Nó có th ng.Nh p môn H qu n tr c s d li u DB2 200 Hình 17.NET trên n n Web. Nó cung c p m t giao t ng thích ng c v i các th vi n c a DB2 m t cách t di n truy xu t d li u tiêu chu n cho PHP. và c t i u cho DB2. Có th tham kh o thêm t i: • • http://pecl. 17. là ngôn ng k ch b n c l#p v n n t ng c thi t k cho vi c phát tri n ng d ng Web. /ó là m t trong nh ng ngôn ng web c tri n khai r ng rãi nh t trên th gi i hi n nay. PHP / Perl / Python). MySQL. ibm_db2: Ph n m r ng ibm_db2 a ra m t giao di n l#p trình th t c ng d ng cho phép t o.2 Phát tri n ng d ng b6ng PHP PHP (PHP Hypertext Preprocessor) là m t ngu+n m . /ây là m t nhóm công ngh web mã ngu+n m . Ph n m r ng PDO_ODBC s d ng các th vi n DB2 truy xu t m t cách t nhiên. &c.1 L a ch n k t n i DB2 cho PHP IBM h tr truy xu t n c s d li u DB2 t* các ng d ng PHP thông qua hai ph n m r ng.php. Có y các c tính h tr cho các th t c l u tr và LOBs. và s)n sàng truy c#p n c s d li u DB2 thông qua m t giao di n c s d li u h ng i t ng ã c th t c hóa trong PHP 5.
2 – M t ng d ng PHP n gi n s" d ng ph n m r ng ibm_db2 i t p php. PHP5 và m t s th vi n ph bi n kèm theo bao g+m: ibm_db2.5.com/software/data/info/zendcore Zend [Core] cho IBM bào g+m cài t DB2 và máy khách IDS.ini nh sau: extension=php_ibm_db2. . hi u qu và s linh ho t c n thi t cho vi c v#n hành nh ng ng d ng PHP. 17. thay i t p php.2.7. Zend [Core] có th c t i v t i a ch.2 cung c p m t ví d cho m t ng d ng PHP r ng ibm_db2 *o n mã 17. xem hình minh h&a 17.ini nh sau: C u hình PHP cho jbm_db2 Trong Linux ho c UNIX b n c n thay extension=ibm_db2.6 và 17. và *ng ng i v các v ng m c c u hình này.2 4ng d ng công ngh Zend Core dành cho IBM Zend [Core] là b công c PHP hoàn ch-nh cho môi tr ng phát tri n và s n xu t các ng d ng web t i quan tr&ng cho doanh nghi p. m t máy ch HTTP c a Apache (tùy ch&n). b h ng d%n s d ng PHP.1 – K t n i nm tc s d li u bên ngoài n gi n s d ng ph n m /o n mã 17.instance_name=<instance name> / i v i Windows.Nh p môn H qu n tr c s d li u DB2 201 *o n mã 17. b n có th t i và cài t b ng d ng Zend Core for IBM s. máy ch IBM CloudscapeTM. c mô t 17.iso ibm_db2. Zend [Core] th hi n s ti n d ng và cài t môi tr ng PHP m t cách d0 dàng.sau: http://ibm.ng có th cài t máy ch DB2 Express-C.dll Ti p theo. Zend [Core] th hi n s tin c#y. và m t s ng d ng ví d trên DB2. Zend [Core] cho IBM c. PDO_INFOMIX. trong ph n ti p theo.
6 – C"a s c u hình PHP c a Zend [Core] .5 – C"a s qu n lý và i u khi n c a Zend [Core] Hình 17.Nh p môn H qu n tr c s d li u DB2 202 Hình 17.
Chính vì lý do ó mà IBM ã t o ra b công c phát tri n DB2 trên n n Rails (Startup Toolkit for DB2 on Rails). Ruby là ngôn ng l#p trình n gi n. Ruby giúp cho phát tri n các ng d ng m t cách d0 dàng.com/tech/db2onrails B công c này bao g+m: B cài t H ng d%n cài t và c u hình Ruby và Rails B cài t DB2 – Express C 9 và b công c kèm theo Các trình i u khi n (driver) cho DB2 Ruby và b thích h p cho DB2 Rails Ví d và bài t#p .3 Phát tri n ng d ng Ruby trên n n Rails Ruby là m t ngôn ng k ch b n h ng i t ng.Nh p môn H qu n tr c s d li u DB2 203 Hình 17.1 B công c phát tri n DB2 trên n n Rails IBM nh#n ra c t m quan tr&ng c a Ruby trên n n Rails trong c ng +ng phát tri n ng d ng web. /ây là b cài t c tích h p l i t o nên m t môi tr ng phát tri n DB2 b ng Ruby trên n n Rails.7 – C"a s c u hình PHP c a Zend 17.alphaworks. nhanh chóng và còn bao g+m t#p h p các th vi n r t phong phú. B công c này có th download t i a ch-: http://www.ibm. Rails là m t b khung hoàn ch-nh cho vi c phát tri n các ng d ng web d a trên c s d li u do Ruby phát tri n.3. ng và a n n d a trên mã ngu+n m . g&n nh7 c phát tri n b i Yukihiro Matsumoto (“Matz”) vào n m 1995. Rails cài t ki n trúc model-view-controller (MVC). 17. Rails n i lên nh là m t trong nh ng khung phát tri n ng d ng web m nh nh t k t* n m 2004 do David Heinemeier Hansson phát tri n.
1 cung c p m t s + t ng quan v nh ng vi c chúng ta nên làm khi g p s c .1 Thêm thông tin v mã các l i / thu th#p c nhi u thông tin h n t* o n mã l i mà chúng ta nh#n c hãy nh#p mã l i mà b n nh#n c v i d u ch m h"i (?) vào vùng nh#p l nh và nh n vào nút Execute. chúng ta s.2 d i ây .Nh p môn H qu n tr c s d li u DB2 204 Ph l c A – G/ r i A Trong ph n này.T ng quan v vi c g/ r i A. Hình A.1 . nói v cách làm th nào 0 gi i quy t (g( r i) nh ng v n có th g p ph i khi làm vi c v i DB2. Hình A. nh trong hình A.
nfy”). g&i n trình tr giúp (Help) c a DB2. D i ây là m t s ví d v kích ho t trình help. 4 h i u hành Linux/Unix thì nh#t ký thông báo qu n tr (Administration Notification) là m t t p v n b n <tên th hi n>. t t c các khai báo qu n tr u c ghi vào Windows Event Log. T t c nh ng ví d d i ây là t ng ng db2 db2 db2 db2 db2 ? ? ? ? ? SQL0104N SQL104N SQL – 0104 SQL – 104 SQL – 104N A. Hai ký t tiên cho ta bi t mã l p SQLSTATE 00: l nh thành công 01: có c nh báo 02: không tìm th y i u ki n T t c các mã l p khác c xem nh có l i u A. 4 h i u hành Windows. l nh không thành công và tr v m t l i SQLSTATE g+m 5 ký t . chu i này tuân theo chu n ISO/ANSI SQL92.nfy (ví d “db2inst. l nh thành công SQLCODE > 0.2 SQLCODE and SQLSTATE M t SQLCODE là mã nh#n c sau khi m&i câu l nh SQL ã các giá tr nh sau: c ch y. l nh thành công nh ng ch ng trình có c nh báo SQLCODE < 0.Nh p môn H qu n tr c s d li u DB2 205 Hình A.Tìm ki m thông tin v o n mã b$ l i D u ch m h"i (?) s. Ý ngh'a c a SQLCODE = 0. ví d nh#n c mã l i SQL là “-104”.2 . .3 Nh t ký khai báo qu n tr$ DB2 Nh#t ký khai báo qu n tr cung c p công c dùng ch n oán thông tin v các l i t i các i m phát sinh l i.
n i mà ng d ng c a b n ang ch y. Thông tin trong db2diag.M t ch ng trình nh#n d ng.log cung c p thông tin chi ti t h n v nh#t ký khai báo qu n tr DB2.thông i p A. Nh ng tr ng c tr ng c a db2cli. Ý ngh'a c a ch n oán C p t* 0 n 4. b n có th b#t ti n ích theo v t CLI kh c ph c nh ng s c cho nó. ng c nhân viên h tr k$ A. nh ng nó th thu#t s d ng. Nó th ng chc s d ng b i nhân viên h tr k$ thu#t DB2 hay ng i qu n tri có kinh nghi m.log trên náy ch và máy khách.thông tin quan tr&ng.log bao g+m: .V trí c a mã DB2 phát sinh l i .log 4 Linux/Unix db2diag.không có khai báo qu n tr nào c gi l i (không khuy n khích) 1 . Khi phát tri n m t ng d ng m i chúng ta nên c#p nh#t nh ng b n s a l i m i nh t tránh nh ng v n có th x y ra trong khi làm vi c.log c quy t nh b i tham s c u hình dbm cfg DIAGLEVEL.ra m c thông tin 0 . 0 là ít ý ngh'a nh t và 4 là cao nh t. nh là c u trúc d li u SQLCA và con tr" n v trí c a k t xu t ho c t p b%y 4 Windows. db2diag. cho phép b n có th so sánh nh ng dòng c a ng d ng trên t p db2diag. /i u này có th c làm b ng cách s a i t p db2cli. .log c ch a trong m t th m c m c inh: C:\Program Files\IBM\sqllig\<instance name>\db2diag.4 db2diag.M t thông i p ch n oán (b t u b ng “DIA”) gi i thích nguyên nhân c a l i .ini máy ch .5 Theo v t CLI V i CLI và các ng d ng Java. Trong t p v n b n c a b n s a l i có ch a danh sách nh ng l i mà nó s a ch a c.ng s)n có (db2trc).hành ng c n c th c hi n ngay l#p t c 3 . m c nh là 3 A. IBM s.ini c ch.Các d li u h tr s)n có.log Db2diag. không c n hành ng ngay l#p t c (m c nh) 4 .6 Kh c ph c và s"a l i trong DB2 /ôi khi m t l i mà b n thình lình g p ph i l i là nguyên nhân c a m t s c (l i) c a DB2.Nh p môn H qu n tr c s d li u DB2 206 Tham s c u hình DBM notifylevel cho phép ng c ghi l i i qu n tr ch.log c ch a trong th m c m c nh: /home/<instance_ owner>/sqllid/db2trum/db2diag. u n phát hành nh ng b n s a l i (Fixpacks) s a ch a nh ng l i ó (APARs).l i n ng ho c không th ph c h+i 2 .ra bên d i: Theo v t m c th p c. / xem phiên b n hi n .
ch&n About t* trình n Help.có hi u l c trong DB2 Express–C khi b n mua b n quy n 12 tháng Ngu n tài nguyên Các trang web 1.boulder. L u ý r ng.6.ibm. 1. ng ký nh#n email t i ây.jsp Trung tâm d li u cung c p ngu+n tài li u h ng d%n tr c tuy n.alphaworks. alphaWorks http://www.1.ibm.v… hoàn toàn mi0n phí.3.com/developerworks/forums/dw_forum. /ây là ngu+n tài nguyên c c#p nh#t m t cách th ng xuyên nh t. 1.com/developerworks/db2 Website này là m t ngu+n tài nguyên tuy t v i cho nh ng ng i phát tri n và nh ng ng i qu n tr h th ng c s d li u tìm th y c nhi u bài vi t.com/ /ây là n i t#p h p nhi u blog c a nh ng ng i phát tri n DB2. /ây là n i b n có th tìm th y nh ng công ngh m i nh t t* Phòng Nghiên c u c a IBM.com/software/data/db2/support/db2_9/ .com/ Website này cho phép b n truy xu t tr c ti p vào các công ngh n i tr i c a IBM. ho c tìm &c blog c a nhóm phát tri n DB2. b n c. 1.ibm.5. Trang web chính th c c a DB2 Express-C: www. b n s a l i và s h tr t* IBM ch.jsp?forum=805&cat=19 B n có th s d ng Di0n àn này ng t i các v n v k$ thu#t m i khi b n không th t mình tìm th y câu tr l i cho các v n ó.ng có th tìm th y các h ng d%n s d ng. t* c a s l nh gõ “db2level”. bài h ng d%n.7. b n có th download các b n vá l i t* Website này: http://www-306.4. 1. Trung tâm d li u DB2 http://publib.com/db2/express Website này cho phép b n download các file cài t cho máy ch DB2.Nh p môn H qu n tr c s d li u DB2 207 t i c a b n s a l i.planetdb2.ibm. Di0n àn DB2 Express: http://www. 1. planetDB2 http://www. developerWorks http://www-128.2.ibm.com/infocenter/db2luw/v9/index. 1. v. các driver dành cho DB2. H tr k$ thu#t DB2 N u b n ã ng ký h tr k$ thu#t 12 tháng t* DB2 Express-C. máy khách DB2.ibm.
Sardana. Windows™. Manoj K.com H p th DB2 dành cho các tr ng / i h&c: db2univ@ca. http://www.redbooks. Whei-Jen Chen. Don Chamberlin.redbooks. Saracco. Dwaine Snow. Chong. Information on Demand – Introduction to DB2 9 New Features Paul Zikopoulos. Leon Katsnelson ISBN-10: 0071487832 ISBN-13: 987-0071487832 7. Free Redbook: DB2 pureXML Guide Whei-Jen Chen. Piotr Pietrzak Tháng 5 n m 2006 – SG24-7218-00 http://www. Felicity Hendricks.html?Open 6. Ming-Pang Wei.ibm. Naomi Ngan. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™. Tháng 8 n m 2007. Java.com/abstracts/sg247315. Chris Eaton. and .ibm. DB2 9: pureXML overview and fast start Cynthia M.2 Raul F.com Email liên h . Matthias Nicola. Sylvia Qi. John Chun. Holger Kirstein.html?Open H p th DB2 Express-C: db2x@ca. UNIX®. Clara Liu. Drew Bradstock. Free Redbook: DB2 Express-C: The Developer Handbook for XML. 2nd Edition Zamil Janmohamed.ibm. PHP. Understanding DB2 – Learning Visually with Examples V8. Rav Ahuja Tháng 1 n m 2006 – SG24-7298 4.ibm. Fraser McArthur.com/abstracts/sg247218. Paul Yip ISBN: 0-13-100772-6 5. Tháng 1 n m 2005 – ISBN: 0-13-185916-1 3. Daniel Krook. Tháng 8 n m 2006 – SG24-7301-00 http://www. George Baklarz. and z/OS®. C/C++. Michael Gao.ibm. Rav Ahuja. Raul Chong. Art Sammartino.Nh p môn H qu n tr c s d li u DB2 208 Sách 1.com/abstracts/sg247301. Rakesh Ranjan.NET Whei-Jen Chen. Dobromir Goutev. i5/OS™. Redbook: Developing PHP Applications for IBM Data Servers.html?Open 2. Clara Liu. Kiran H Nair. Ippei Komi.redbooks.
Web 2. XQuery. t do b n xây d ng ng d ng. sinh viên. ho c b t k ai có ý nh phát tri n. Perl. DB2 Express-C c a IBM là m t h qu n tr d li u mi0n phí. DB2 Express-C ch y trên h th ng Windows và Linux và h tr nhi u ngôn ng l#p trình khác nhau. PHP.ng có th c ng ký v i giá th p. Nh ng h tr tr c tuy n c. Hi u v ki n trúc c a DB2. b n có th d0 dàng tri n khai nh ng ng d ng ã c xây d ng b ng DB2 Express-C lên nh ng n b n DB2 khác nh DB2 Enterprise. và SOA ã d%n n nh ng nhu c u v m t lo i h qu n tr d li u lai mang tính cách tân. . Mi0n phí ngh'a là DB2 Express-C có th c t do t i v . Hãy tham gia vào s phát tri n c a c ng +ng nh ng ng i s d ng DB2 Express-C ngay hôm nay. ho c phân ph i các ng d ng v c s d li u.n b n DB2 mi0n phí này r t lý t ng cho nh ng ng i phát tri n. s l ng d li u. Java. t do tri n khai s n ph m. khám phá ra cách hoàn toàn m i t o ra ch ng trình ng d ng. Phát tri n ch ng trình ng d ng s d ng c s d li u DB2. . nh ng ng i bán ph n m m c l#p. bao g+m c C/C++. * c cu n sách này Tìm th y t t c nh ng i u v DB2 Express-C. và Ruby. .0. Vi t mã SQL. : S phát tri n nhanh chóng c a XML. Chu n b cho k thi DB2 trong tr ng. H&c cách qu n tr C s d li u DB2. c.NET. và t do phân ph i l i các gi i pháp c a b n. th nghi m. và là c s d li u LAI có kh n ng qu n tr c XML và d li u quan h thu n túy m t cách d0 dàng. ho c s l ng ng i s d ng. nh ng ng i t v n. Luy n t#p b ng nh ng bài t#p th c hành. các qu n tr viên c s d li u. không gi i h n. N u b n mu n có nhi u ch c n ng cao c p h n n a i v i m t h qu n tr c s d li u. tri n khai. DB2 không t m t gi i h n nào cho kích th c d li u. Và. B n s. các công c và b o m#t DB2.Nh p môn H qu n tr c s d li u DB2 209 B t - u v i DB2 không th nào d dàng h n.ng nh cách phát tri n nh ng gi i pháp t phá.

Set-Cookie: stg=233; Domain=.scribd.com; Path=/; Expires=Wed, 24-Mar-27 11:04:10 GMT

Cache-Control: no-cache

Via: 1.1 varnish

X-Page-Type: docview

X-Served-By: cache, cache-iad2151-IAD

Server: nginx

X-Cache: MISS

X-Frame-Options: SAMEORIGIN

Vary: Accept-Encoding, User-Agent