...

DB2 Express-C N H P M Ô N

by user

on
Category: Documents
16

views

Report

Comments

Transcript

DB2 Express-C N H P M Ô N
NH
P MÔN
DB2 Express-C
M t cu n sách c a c ng
ng dành cho c ng
R A U L C H O N G, I A N H A K E S, R A V A H U J A
L
i n ó i
u
D R . A R V I N D K R IS H N A
ng
2
Nh p môn H qu n tr c s d li u DB2
Xu t b n l n th
ba (tháng 6 n m 2009)
Tài li u này s d ng cho IBM DB2 Express-C phiên b n 9.7 v i h
UNIX và Windows
B n quy n thu c công ty IBM
i u hành Linux,
M cL c
V cu n sách này................................................................................................................. 9
Thông cáo và Nhãn hi u hàng hóa................................................................................... 9
Ai nên c cu n sách này?............................................................................................. 10
C u trúc c a quy n sách này nh th nào?................................................................... 10
M t cu n sách giành cho c ng ng .............................................................................. 11
Tác gi và nh ng ng i óng góp ................................................................................. 12
L i c m n...................................................................................................................... 12
L i c m n c a b n ti ng Vi t........................................................................................ 13
L i nói u ...................................................................................................................... 16
PH N I – T NG QUAN VÀ CÀI
T ................................................................................. 17
Ch ng 1 – DB2 Express-C là gì? ................................................................................... 18
1.1 T do phát tri n, tri n khai và phân ph i… không có gi i h n! ............................... 19
1.2 Tr giúp ng i dùng và h tr k thu t .................................................................... 19
1.3 Các máy ch DB2 ..................................................................................................... 20
1.4 Máy khách DB2 và các trình i u khi n (drivers) ..................................................... 20
1.5 T do phát tri n ng d ng........................................................................................ 22
1.6 Phiên b n và n b n DB2......................................................................................... 23
1.7 Chuy n sang n b n DB2 khác ................................................................................ 23
1.8 B o trì và c p nh t cho DB2 Express-C................................................................... 24
1.9 Ph n m m mi n phí liên quan và các thành ph n DB2 ........................................... 24
1.9.1 IBM Data Studio ................................................................................................. 24
1.9.2 DB2 Text Search ................................................................................................ 25
1.9.3 WebSphere Application Server – n b n c ng ng (Community Edition)....... 25
1.10 Tóm t t.................................................................................................................... 25
Ch ng 2 – Các s n ph m và tính n ng liên quan ........................................................ 26
2.1 Các tính n ng kèm theo v i DB2 Express b n tr phí (FTL) ................................... 29
2.1.1 Các gói s!a l i ................................................................................................... 29
2.1.2 Tính s"n sàng cao và khôi ph c sau s c (High Availability Disaster Recovery
- HADR) ....................................................................................................................... 29
2.1.3 Nhân b n d li u................................................................................................ 30
2.2 Các tính n ng không có trong b n DB2 Express-C.................................................. 31
2.2.1 Phân vùng c s d li u.................................................................................... 32
2.2.2 Connection Concentrator - B t p trung k t n i................................................. 32
2.2.3 Geodetic Extender - B m r ng không gian a lý .......................................... 32
2.2.4 Label-based Access Control (LBAC) - Ki m soát truy c p d a trên nhãn ........ 32
2.2.5 B qu n lý t i công vi c (Workload Manager – WLM)...................................... 33
2.2.6 Nén sâu .............................................................................................................. 34
2.2.7 T ng thích v i SQL ......................................................................................... 35
2.3 Nh ng s n ph#m có tr phí liên quan n DB2 ....................................................... 36
2.3.1 DB2 Connect ...................................................................................................... 36
2.3.2 InfoSphere Federation Server ............................................................................ 37
2.3.3 InfoSphere Replication Server ........................................................................... 38
2.3.4 Optim Development Studio (ODS) ..................................................................... 38
2.3.5 Optim Database Administrator (ODA)................................................................ 39
4
Nh p môn H qu n tr c s d li u DB2
2.4 Các cung c p DB2 trên Cloud c a Amazon ............................................................. 39
2.5 Tóm t t...................................................................................................................... 39
Ch ng 3 - Cài t DB2 .................................................................................................... 40
3.1 Các i u ki n c n tr c khi cài $t .......................................................................... 40
3.2 Quy n cài $t h i u hành...................................................................................... 40
3.3 Cài $t theo th thu t (h ng d%n t&ng b c) ........................................................ 41
3.4 Ki m tra l i cài $t .................................................................................................... 48
3.5 Cài $t hàng lo t (Silent Install)................................................................................ 49
3.6 Tóm t t...................................................................................................................... 50
3.7 Bài t p nhanh............................................................................................................ 51
Ch ng 4 – Môi tr ng c a DB2..................................................................................... 55
4.1 C u hình DB2 ........................................................................................................... 64
4.1.1 Các bi n môi tr ng .......................................................................................... 65
4.1.2 T p c u hình qu n tr c s d li u (dbm cfg)................................................... 65
4.1.3 T p c u hình c s d li u (db cfg)................................................................... 68
4.1.4 ' ng ký lý l ch DB2 ............................................................................................ 69
1
4.2 Máy ch qu n tr DB2 (deprecated ) ........................................................................ 70
4.3 Tóm t t...................................................................................................................... 71
4.4 Bài t p....................................................................................................................... 71
Ch ng 5 – Các công c c a DB2................................................................................... 76
5.1 IBM Data Studio........................................................................................................ 78
5.2 Control Center (deprecated) ..................................................................................... 79
5.2.1 Kh i ng Control Center .................................................................................. 82
5.3 Nh p l nh tr c ti p (deprecated).............................................................................. 83
5.3.1 Ch y trình Nh p l nh tr c ti p ........................................................................... 84
5.3.2 Thêm m t k t n i c s d li u ......................................................................... 84
5.4 Th thu t tr giúp SQL (deprecated) ....................................................................... 85
5.5 Nút “Show SQL” (deprecated) .................................................................................. 87
5.6 Trung tâm tác v (deprecated) ................................................................................. 88
5.6.1 C s d li u Tools Catalog (deprecated) ........................................................ 89
5.7 Nh t ký(- Journal (deprecated) ................................................................................. 90
5.7.1 Kh i ch y Journal .............................................................................................. 91
5.8 Health Monitor (deprecated) ..................................................................................... 92
5.8.1 Health Center ..................................................................................................... 92
5.9 Qu n l(í b nh t
ng ........................................................................................... 94
5.10 K ch b n .................................................................................................................. 94
5.10.1 Các k ch b n SQL ............................................................................................ 95
5.10.2 K ch b n h i u hành (Shell) .......................................................................... 96
5.11 Xét t i h i u hành Windows Vista....................................................................... 97
1
Deprecated: nh ng tính n ng phiên b n hi n nay còn h tr , nh ng có th không
h tr n a các phiên b n sau. Các tính n ng này s)
c k t h p trong IBM Data
Studio
c
M cl c
5
5.12 K t lu n................................................................................................................... 97
5.13 Bài t p..................................................................................................................... 98
PH N II – H C DB2: QU N TR C S D LI U ......................................................... 103
Ch ng 6 - Ki n trúc DB2............................................................................................... 104
6.1 Mô hình x! lý DB2 .................................................................................................. 104
6.2 Mô hình b nh DB2 .............................................................................................. 106
6.3 Mô hình l u tr DB2 ............................................................................................... 107
6.3.1 Các trang và ph n m r ng ............................................................................. 108
6.3.2 Vùng m (Buffer pool) .................................................................................... 108
6.3.3 Không gian b ng – Table spaces..................................................................... 110
6.4 Tóm t t.................................................................................................................... 116
6.5 Bài t p..................................................................................................................... 116
Ch ng 7 – K t n i máy khách DB2.............................................................................. 120
7.1 Các th m c DB2 ................................................................................................... 120
7.1.1 Th m c c s d li u h th ng ..................................................................... 120
7.1.2 Th m c c s d li u c c b ......................................................................... 121
7.1.3 Th m c nút ..................................................................................................... 121
7.1.4 Th m c DCS .................................................................................................. 121
7.2 Công c tr giúp c u hình (deprecated)................................................................. 121
7.2.1 Các cài $t c n thi t trên máy ch ................................................................... 122
7.2.2 Các cài $t c n thi t trên máy khách ............................................................... 125
7.2.3 T o lý l ch cho máy khách và máy ch ............................................................ 129
7.3 Tóm t t.................................................................................................................... 132
7.4 Bài t p..................................................................................................................... 132
Ch ng 8 - Làm vi c v i các
i t !ng c s" d# li u ............................................... 135
8.1 L c
(schemas)................................................................................................. 135
8.2 Tên công c ng ho$c bí danh (public synonyms or public aliases) ......................... 136
8.3 B ng (tables)........................................................................................................... 137
8.3.1 Ki u d li u ...................................................................................................... 137
8.3.2 C t khoá chính (Identity columns).................................................................... 142
8.3.4 Các b ng danh sách h th ng ......................................................................... 143
8.3.5 Khai báo các b ng t*ng quát t m th i (DGTTs) .............................................. 144
8.3.6 T o b ng t m t*ng quát (CGTTs) .................................................................... 146
8.4 Khung nhìn.............................................................................................................. 147
8.5 Ch+ m c................................................................................................................... 147
8.5.1 Tr giúp thi t k (Design Advisor) ................................................................... 147
8.6 Toàn v,n tham chi u .............................................................................................. 149
8.7 Ti n hóa c a l c
(Schema Evolution) ............................................................. 150
8.8 Tóm t t.................................................................................................................... 152
8.9 Bài t p..................................................................................................................... 152
Ch ng 9 -$%&c ti n 'ch di chuy(n d# li u ................................................................... 156
9.1 Ti n -ch EXPORT ................................................................................................... 157
9.2 Ti n -ch IMPORT .................................................................................................... 158
9.3 Ti n -ch LOAD ........................................................................................................ 159
6
Nh p môn H qu n tr c s d li u DB2
9.4 Công c db2move................................................................................................... 161
9.5 Công c db2look ..................................................................................................... 161
9. 6 Tóm t t................................................................................................................... 164
9.7 Bài t p..................................................................................................................... 164
Ch ng 10 - B o m)t C s" d# li u ............................................................................. 168
10.1 Ch ng th c........................................................................................................... 169
10.2 Quy n h n ............................................................................................................ 170
10.2.1 '$c quy n ...................................................................................................... 170
10.2.2 Quy n h n (authorities).................................................................................. 171
10.2.3 Vai trò ............................................................................................................. 176
10.3 Xem xét vi c nhóm các $c quy n ....................................................................... 177
10.4 Nhóm PUBLIC ...................................................................................................... 177
10.5 L nh GRANT và REVOKE ................................................................................... 177
10.6 Vi c ki m tra quy n và $c quy n........................................................................ 178
10.7 Tính n ng b o m t m r ng trên Windows .......................................................... 180
10.8 Tóm t t.................................................................................................................. 180
10.9 Bài t p................................................................................................................... 180
Ch ng 11 – Sao l u và Khôi ph c............................................................................... 185
11.1 Nh t kí c s d li u ............................................................................................ 185
11.2 Các ki u nh t kí .................................................................................................... 186
11.3 Các ki u ghi nh t kí .............................................................................................. 187
11.3.1 Ghi tu n t quay vòng.................................................................................... 187
11.3.2 Ghi nh t kí l u tr .......................................................................................... 188
11.4 Ghi nh t kí c s d li u t& Trung tâm i u khi n............................................... 189
11.5 Các tham s c a nh t kí ....................................................................................... 191
11.6 Sao l u c s d li u........................................................................................... 192
11.7 Khôi ph c c s d li u ....................................................................................... 194
11.7.1 Các ki u khôi ph c d li u............................................................................. 194
11.7.2 Ph c h i c s d li u ................................................................................... 195
11.8 Thao tác khác v i câu l nh BACKUP và RESTORE ........................................... 195
11.9 Tóm t t.................................................................................................................. 196
11.10 Bài t p................................................................................................................. 196
Ch ng 12 – Nhi m v b o trì ....................................................................................... 199
12.1 REORG, RUNSTATS, REBIND ........................................................................... 199
12.1.1 L nh REORG ................................................................................................. 200
12.1.2 L nh RUNSTATS ........................................................................................... 200
12.1.3 BIND / REBIND .............................................................................................. 201
12.1.4 Các công vi c b o trì t& Control Center (Trung tâm 'i u khi n) .................. 202
12.2 Các l a ch n b o trì ............................................................................................. 203
12.3 T*ng k t ................................................................................................................ 205
12.4 Bài t p................................................................................................................... 205
Ch ng 13 - Truy c)p
ng th i và khóa ..................................................................... 208
13.1 Giao d ch (Transactions)....................................................................................... 208
13.2 Truy xu t ng th i (Concurrency)....................................................................... 209
M cl c
7
13.3 M t s v n
n u không có s ki m soát truy c p ng th i............................. 210
13.3.1 M t d li u c p nh t (lost update) ................................................................. 210
13.3.2 ' c d li u không hoàn t t ( Uncommited read) ........................................... 211
13.3.3 ' c d li u không th l$p l i (Non-repeatable read) ..................................... 212
13.3.4 ' c d li u th&a (Phantom read) .................................................................. 213
13.4 Các m c cô l p..................................................................................................... 214
13.4.1 ' c không cam k t......................................................................................... 215
13.4.2 .n nh con tr/............................................................................................... 215
13.4.3 ' c *n nh .................................................................................................... 217
13.4.4 ' c l$p l i....................................................................................................... 217
13.4.5 So sánh các m c
cô l p d li u................................................................ 218
13.4.6 '$t m c cô l p ............................................................................................... 218
13.5 Khóa leo thang...................................................................................................... 220
13.6 Ki m soát khóa ..................................................................................................... 221
13.7 Ch khóa .............................................................................................................. 222
13.8 V n
khóa ch t và phát hi n ............................................................................. 222
13.9 Truy c p ng th i và th c ti n khóa t t nh t...................................................... 224
13.10 Tóm t t................................................................................................................ 225
13.11 Bài t p................................................................................................................. 225
PH N III – H C DB2: PHÁT TRI*N +NG D,NG........................................................... 231
Ch ng 14 – Gi i thi u vi c phát tri(n ng d ng v i DB2 ........................................ 233
14.1 Phát tri n ng d ng DB2: B c tranh l n.............................................................. 233
14.2 Phát tri n ng d ng phía máy ch ....................................................................... 235
14.2.1 Các th t c l u ............................................................................................... 235
14.2.2 Các hàm ng i dùng nh ngh a ................................................................... 236
14.2.3 Các b%y s ki n ............................................................................................. 236
14.3 Phát tri n ng d ng phía máy khách ................................................................... 237
14.3.1 SQL nhúng ..................................................................................................... 237
14.3.2 SQL t nh và SQL ng ................................................................................... 238
14.3.3 CLI và ODBC.................................................................................................. 240
14.3.4 JDBC, SQLJ và pureQuery ............................................................................ 244
14.3.5 OLE DB .......................................................................................................... 245
14.3.6 ADO.NET ....................................................................................................... 246
14.3.7 PHP ................................................................................................................ 248
14.3.8 Ruby on Rails ................................................................................................. 248
14.3.9 Perl ................................................................................................................. 249
14.3.10 Python .......................................................................................................... 249
14.4 XML và DB2 pureXML .......................................................................................... 250
14.5 D ch v Web.......................................................................................................... 250
14.6 Các API qu n lý .................................................................................................... 252
14.7 Các phát tri n khác ............................................................................................... 252
14.7.1 Làm vi c v i Microsoft Access và Microsoft Excel ........................................ 252
14.8 Các công c phát tri n.......................................................................................... 254
14.9 Các ch ng trình m%u.......................................................................................... 254
8
Nh p môn H qu n tr c s d li u DB2
14.10 Tóm t t................................................................................................................ 255
ng 15 - DB2 pureXML............................................................................................. 256
15.1 S! d ng XML v i c s d li u ........................................................................... 257
15.2 C s d li u XML ............................................................................................... 257
15.2.1 C s d li u có h tr XML.......................................................................... 257
15.2.2 C s d li u thu n XML ............................................................................... 258
15.3 XML trong DB2 ..................................................................................................... 259
15.3.1 0u i m c a công ngh pureXML ................................................................. 260
15.3.2 C b n v XPath............................................................................................ 262
15.3.3 C b n v XQuery ......................................................................................... 265
15.3.4 Chèn các tài li u XML .................................................................................... 267
15.3.5 Truy v n d li u XML ..................................................................................... 270
15.3.6 K t n i v i SQL/XML...................................................................................... 277
15.3.7. K t n i v i XQuery ........................................................................................ 278
15.3.8 Các thao tác c p nh t và xóa......................................................................... 278
15.3.9 'ánh ch+ m c XML ......................................................................................... 281
15.4 Làm vi c v i l c
XML.................................................................................... 282
15.4.1 ' ng kí l c
XML ..................................................................................... 282
15.4.2 Ki m tra tính h p l theo l c
XML.......................................................... 285
15.4.3 Các h tr XML khác ..................................................................................... 286
15.5 Tóm t t.................................................................................................................. 287
15.6 Bài t p................................................................................................................... 287
Ph l c A – Kh-c ph c s. c ......................................................................................... 289
A.1 Tìm thêm thông tin v các mã l i ........................................................................... 290
A.2 SQLCODE và SQLSTATE ..................................................................................... 290
A.3 Nh t ký thông báo qu n tr DB2 ............................................................................. 291
A.4 db2diag.log ............................................................................................................. 291
A.5 Theo v t CLI ........................................................................................................... 292
A.6 Khi m khuy t và s!a l i trong DB2........................................................................ 292
Ph l c B – Tham kh o và Tài nguyên .......................................................................... 293
B.1 Tham kh o.............................................................................................................. 293
B.2 Các trang Web: ...................................................................................................... 293
B.3 Sách ....................................................................................................................... 295
B.4 Email liên h ........................................................................................................... 296
Ch
V cu n sách này
Thông cáo và Nhãn hi u hàng hóa
© Copyright IBM Corporation 2007, 2009
All right Reserved.
IBM Canada
8200 Warden Avenue
Markham, ON
L6G 1C7
Canada
Không
c phép sao chép hay mô ph/ng tài li u này ho$c m t ph n c a tài li u này d
thông qua b t c ph
tr
i b t c hình th c hay
ng ti n nào ho$c theo cách phiên d ch ra m t ngôn ng khác mà không có s
ng ý
c c a t t c các ch s h u tác quy n nêu trên.
IBM không có b o
m ho$c tuyên b nào liên quan
mang tính hàm ý/suy di n nào v giá tr th
n n i dung này và c th là ch i b/ b t c s
ng m i hay tính phù h p
mb o
i v i b t c m c ích c th nào. IBM
không ch u trách nhi m v b t c sai sót nào có kh n ng t n t i trong tài li u này, bao g m nh ng không gi i
h n trong ph m v các sai sót trong quá trình d ch thu t. Các thông tin
t
c bao hàm trong tài li u này là
i
ng ch u s thay *i mà không c n thông báo. IBM b o l u quy n th c hi n b t c s thay *i nào nh th
mà không có ngh a v thông báo cho b t c cá nhân nào v các tr
không
a ra b t c cam k t nào
i v i vi c c p nh t các thông tin
Các thông tin trong tài li u này có liên quan
ng h p i u ch+nh hay thay *i nh th . IBM
c bao hàm trong tài li u này.
n các s n ph#m không ph i c a IBM, do các nhà cung c p các s n
ph#m y cung c p. IBM ch a th! nghi m các s n ph#m y và không th xác nh n tính chính xác v tình tr ng
ho t
ng, kh n ng t
các v n
ng thích ho$c các kh1ng
th c m c có liên quan
nh có liên quan các s n ph#m không ph i c a IBM. ' i v i
n hi u qu c a các s n ph#m không ph i c a IBM, xin liên h v i các nhà
cung c p các s n ph#m này.
IBM, bi u t
ng IBM, và ibm.com là nhãn hi u hàng hóa ã
ph#m và d ch v khác có th là nhãn hi u hàng hóa ã
nhãn hi u ã
ng ký c a IBM
c
ng ký c a t p oàn IBM trên toàn th gi i. Tên s n
ng ký c a IBM ho$c các công ty khác. Danh sách các
ng t i t i m c “Copyright and trademark information” c a trang
www.ibm.com/legal/copytrade.shtml.
Java và t t c các nhãn hi u Java là nhãn hi u hàng hóa
n
ng ký c a công ty Sun Microsystem, Inc. t i M2, các
c khác, ho$c c hai.
Microsoft và Windows là nhãn hi u hàng hóa c a t p oàn Microsoft t i M2, các n
Linux là nhãn hi u
ng ký c a Linus Torvalds t i M2, các n
UNIX là nhãn hi u
ng ký c a The Open Group t i M2, các n
c khác, ho$c c hai.
c khác, ho$c c hai.
Nh ng tên c a công ty, s n ph#m hay d ch v khác có th là nhãn hi u ã
Các m c tham kh o trong s n ph#m xu t b n này có liên quan
mang hàm ý r3ng IBM có ý
nh phát tri n các s n ph#m
c khác, ho$c c hai.
ng k(ý c a các công ty khác.
n các s n ph#m hay d ch v c a IBM không
m i qu c gia mà IBM có c s ho t
ng.
10
Nh p môn H qu n tr c s d li u DB2
Ai nên /c cu n sách này?
Quy n sách này giành cho b t k4 ai ang làm vi c ho$c mu n làm vi c v i c s d li u,
nh qu n tr h c s d li u (DBAs), ng i phát tri n ng d ng, nhà t v n, ki n trúc
ph n m m, giám 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 nh
th nào?
Ph n I, T*ng quan và Cài $t, gi i thích n b n DB2 Express-C là gì, gi i thi u h s n
ph#m DB2 và các ch c n ng, giúp 5 cài $t và t o m i c s d li u, và khám phá các
công c s"n có c a DB2.
Ph n II, H c DB2: Qu n tr c s d li u,
c thi t k
b n làm quen v i môi tr ng,
ki n trúc, k t n i t& xa, các i t ng d li u, chuy n d li u (nh p và xu t d li u), an
toàn, sao l u và khôi ph c, truy c p ng th i và khóa c a DB2, và các công vi c b o trì
thông th ng.
Ph n III, H c DB2: Phát tri n ng d ng, gi i thi u vi c phát tri n ng d ng trên DB2, bao
g m phát tri n ng d ng trên máy ch , trên máy khách. C6ng th o lu n v SQL/XML,
XQuery, và pureXML.
Ph l c có các thông tin c n thi t v s!a l i.
Bài t p i kèm v i ph n l n các ch ng; và c6ng cung c p các t p u vào c n thi t
th c hành, nó
c nén trong t p expressc_book_quicklabs.zip i kèm theo sách này.
Tài li u c a cu n sách c6ng
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), và r t sát v i b ng video các trình bày có th th y trang web
www.channelDB2.com/oncampus. B n có th xem thêm thông tin v ch ng trình này
trang DB2 Express-C, a ch+ www.ibm.com/db2/express/students.html.
Chú ý:
' bi t thêm thông tin v ch ng trình “DB2 on Campus”, xem video
http://www.channeldb2.com/video/video/show?id=807741:Video:3902.
a ch+
Cu n sách này là l n xu t b n th 3, chúng tôi ã có nhi u thay *i và b* xung. V i nh ng
ng i ã c cu n xu t b n l n 2 v DB2 9.5, chúng tôi ã ánh d u
các b n có th
th y các thay *i ã
c c p nh t phiên b n DB2 9.7. Các ph n có thay *i các b n có
th d dàng nh n th y b3ng bi u t ng.
V cu n sách này
M t cu n sách giành cho c ng
11
ng
Cu n sách này do ' i ng6 phát tri n DB2 Express-C làm ra và cung c p mi n phí cho
c ng ng DB2 Express-C. Trong khi vi t, b n tr c c a cu n sách này ã
ct ih n
45.000 l n và
c nh ng ng i tình nguy n trên kh p th gi i d ch sang 9 th ti ng. M t
n l c th t s t& c ng ng!. 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, làm n
g!i k ho ch th c hi n v
a ch+ [email protected] v i tiêu
“DB2 Express-C book
changes.”
Thành công c a cu n sách này ã ti p thêm s c m nh cho vi c phát tri n thêm h n 25
cu n sách cung c p tr c tuy n v các s n ph#m c a IBM, và c v công ngh ngoài IBM
n a. Cu n sách này là m t ph n c a T sách Giành cho c ng ng (Community Book
Series),
c
a ra vào tháng 10 n m 2009.
' có thêm thông tin v cu n sách này hay v T sách Giành cho c ng
trang web IBM® DB2 Express-C t i a ch+ www.ibm.com/db2/express.
ng, hãy th m
12
Nh p môn H qu n tr c s d li u DB2
Tác gi và nh#ng ng
Nh ng ng
này.
i óng góp
i sau ây ã cung c p n i dung và có các óng góp có ý ngh a cho cu n sách
Raul F. Chong – Ch biên
Raul là Giám
Toronto.
c ch
ng trình “DB2 on Campus” t i phòng thí nghi m IBM
Ian Hakes – ' ng tác gi và biên t p
Ian tr c ây làm ng i h tr c ng ng DB2 Express-C và bây gi là chuyên
gia t i phòng thí nghi m IBM Toronto.
Rav S. Ahuja – ' ng tác gi và Xu t b n
Rav là giám
c c p cao c a s n ph#m DB2
phòng thí nghi m IBM
Toronto.
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 c a h và vi c phát
tri n các tài li u tham kh o trong sách này
Ted Wasserman, Clara Liu và Paul Yip phòng thí nghi m IBM Toronto, ng
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
developerWorks, và Matthía Nicola v i bài trình bày v pureXML.
ng trên
Kevin Czap và Grant Hutchingson v i các tài li u k2 thu t v phát tri n DB2
Katherine Boyachok và Natasha Tolub v i thi t k bìa
Susan Visser biên t p và giúp 5 xu t b n cu n sách này
i ã
V cu n sách này
13
L i c m n c a b n ti ng Vi t
Sau khi có b n d ch sang ti ng Vi t c a cu n sách “Nh p môn DB2 Express-C” l n th 2,
nó ã
c c ng ng nhi t tình ón nh n, $c bi t là các b n sinh viên. V i l n xu t b n
th 3 này (n m 2009) cu n sách ã
c b* xung nhi u thông tin và các tính n ng m i
c a phiên b n DB2 Express-C 9.7. Tr c nhu c u cho sinh viên có tài li u h c t p, nghiên
c u và s! d ng b n DB2 9.7 m i và tân ti n nh t hi n nay, chúng tôi ã quy t nh kêu
g i các b n sinh viên tình nguy n tham gia d ch cu n sách này.
M t l n n a, các b n sinh viên l i tham gia r t nhi t tình, mong mu n có
c cu n sách
b* ích cho c ng ng, a s các b n ang là sinh viên, nh ng có b n nay ã ra tr ng, i
làm, có b n ã thành giáo viên… Tôi th t s cám n t t c các b n.
Chúng ta t hào r3ng ây úng là m t quy n sách do c ng ng và vì c ng ng. Vì trình
và th i gian h n ch , dù có th còn nhi u khi m khuy t, 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
c hoàn thi n h n. Hy v ng r3ng
các b n sinh viên s) ti p t c chuy n n c ng ng nh ng n ph#m m i, v i ch t l ng
ch c ch n s) t t h n.
Nguy n Khiêm
Ch
ng trình H tr giáo d c ' i h c
IBM Vi t Nam
14
Nh p môn H qu n tr c s d li u DB2
Danh sách sinh viên tham gia d0ch và hi u ính:
STT
Tên
1
2
3
4
Cao H ng Nga
'$ng H u Anh
'ào Mai Ly
' u Qu c To n
5
6
7
8
9
'
'
'
'
H
' c C ng
Hà L c
Th D u H ng
Th Huy n Trang
V nH n
T1 m c
15.3.5
Ph l c A
Ch ng 1
1.5
Ch
ng 2
2.2
2.2.5
2.3
Ch ng 4
n
m c
15.3.5.1
B.4
1.4
1.10
2.1.3
2.2.4
2.2.7
2.5
4.0
Hi u ính Ch1
10
11
12
13
14
15
789ng 79(: 2(;<.
Hu4nh H ng T>
Hu4nh Ph c H i
Hu4nh Tu n Anh
Hu4nh Tùng
Ki u Hu4nh Thu Th y
Ch
16
17
Lê Hoàng Hà
Lê Nh t Tùng
ng 3
4.1
Hi u ính Ch3-Ch4
4.2
Ch ng 5
5.3
Lên trang
5.7
5.13
18
Lê Thành Huy
Hi u ính Ch6
3.3
4.1.4
4.4
5.2.1
5.6.1.2
5.9
5.13
Hi u ính Ch10 (2)
19
Lê Trung Quang
Ch
ng 6
6.3.2.1
20
Nguy n 'ình Qu ng
Ch
ng 7
7.2.2
7.2.3
7.4
Hi u ính Ch7
21
22
23
Nguy n Kim Dung
Nguy n Nh t Khánh
Nguy n Ph m Quang Thành
24
25
Nguy n Phi Thanh
Nguy n Ph ng Nam
6.3.3
Ch ng 8
8.3.2
6.5
8.3.1.4
8.3.6
8.4
Hi u ính Ch8
8.7
Tr
' ih
' ih
' ih
' ih
Hà N
' ih
' ih
' ih
ng
c C n Th
c Bách Khoa Hà N i
c FPT
c Công Ngh , 'H QG
i
c FPT
c Công ngh Thông tin
c Nông Nghi p Hà N i
' i h c Khoa h c T Nhiên,
Tp. H Chí Minh
' i h c Khoa h c T Nhiên,
Tp. H Chí Minh
' i = c An Giang.
' i h c Bách Khoa 'à N"ng
' i h c An Giang
' i h c Bách Khoa 'à N"ng
' i h c Công ngh Thông tin
RMIT
RMIT
' i h c Công ngh Thông tin
' i h c Nông Lâm Tp.H Chí
Minh
TT. Công ngh Ph n m m
' i h c C n Th
TT. Công ngh Ph n m m
' i h c C n Th
' i h c Hùng V ng Tp. H
Chí Minh
H c vi n Công ngh B u
chính Vi n thông Hà N i
H c vi n Công ngh B u
chính Vi n thông Hà N i
H c vi n Công ngh B u
chính Vi n thông Hà N i
' i h c Công ngh Thông tin
' i h c C n Th
' i h c Khoa h c T nhiên
Tp. H Chí Minh
' i = c An Giang
D án Tabmis, 32 Cát Linh,
Hà N i
V cu n sách này
26
27
28
29
30
31
32
33
34
35
36
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
Nguy
n Qu c Tu n
n ;=(Dung
n Th H3ng Nga
n Th Hòa
n Th Kim Quy
n Th Li u
n Th Ng c Lan
n Th Nh Qu4nh
n Ti n Long
n Tr ng Hi u
n Trung Hi u
37
38
Nguy n V n Nam
Nguy n Xuân V nh H ng
39
40
8.8
Ch ng 9
9.4
Ch ng 10
10.2.2.2
Hi u ính Ch9-Ch10
10.7
Ch ng 11
11.6
Ch ng12
Hi u ính Ch11
8.9
9.3
9.7
10.2.2.1
10.6
10.9
11.5
11.10
12.1.4.1
12.2
Ch ng 13
12.4
13.3.4
Ph m H u Thanh Bình
Phan Nguyên C ng
13.4
13.5
13.4.6
13.9
41
42
43
Phan Th Quy t
Phùng 'ình V6
T ' c Hoàng Thiên Ân
13.11
5.12
3.7
14.3.1
44
Tr n Anh Huy
13.10
5.10
3.4
Ch ng 14
Hi u ính Ch13
45
46
Tr n ' c Hi u
Tr n Hoài Thu
14.3.2
Ch ng 15
Hi u ính Ch12 –
Ph l c A,B
Hi u ính Ch14
Hi u ính Ch15
14.3.4
14.3.3
15.3
47
Tr n Ng c Hoà
48
49
50
51
52
53
54
55
Tr n Th H ng Giang
Tr n v n Trúc
Tr n Xuân Chi n
Tr ng Th Hi u
V6 ' c Tuy n
V6 Th Thanh Mai
14.4
15.3.1
15.3.3
15.3.5.2
15.3.8
15.4.2
Hi u ính Ch2
Hi u ính Ch5
14.3.10
14.10
15.3.2.3
15.3.4
15.3.7
15.4.1
15.7
15
' i h c FPT
' i = c ;=?i Nguyên
' i = c ;=?i Nguyên
' i h c Bách khoa Hà N i
' i h c Công ngh Thông tin
' i h c Khoa H c Hu
' i h c Thái Nguyên
' i h c 'à L t
' i h c Công ngh Thông tin
' i h c Bách Khoa Hà N i
' i h c Khoa hoc T nhiên,
Tp. H Chí Minh
' i h c Khoa H c Hu
Ð i h c Nông lâm Tp. H Chí
Minh
' i h c Duy Tân - 'à N"ng
' i h c Công Ngh , 'H QG
Hà N i
' i h c S ph m Hu
' i h c Bách khoa Hà N i
'ai h c M Tp.H Chí Minh
' i h c M Tp. H Chí Minh
Cao 1ng Bách Khoa 'à
N"ng
' i h c M Tp. H Chí Minh
' i h c Bách Khoa Hà N i
' i h c Bách Khoa Hà N i
' i h c Bách Khoa Hà N i
' i h c Bách Khoa Hà N i
' i h c Hùng V ng Tp. H
Chí Minh
' i h c FPT
' i h c FPT
' i h c Công ngh Thông tin
' i h c S ph m Hu
' i h c FPT
' i h c Công ngh Thông tin
16
Nh p môn H qu n tr c s d li u DB2
L i nói
u
Sáng t o là s
t phá c a các ti n b công ngh . T i IBM, sáng t o ã tr thành c i
ngu n c a s phát tri n c s d li u. Là ng i i tiên phong trong k2 thu t qu n tr d
li u trong nh ng n m 60 và 70, 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, bi u hi n b3ng 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à, 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, qu n tr nh ng d li u t i quan tr ng c a h .
Tuy nhiên DB2 không ch+ dành cho các doanh nghi p l n. V i vi c
a ra b n DB2
Express-C, công ngh n i ti ng DB2 ã 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 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.
Có r t nhi u sáng t o công ngh hi n di n trong DB2 Express-C. M t s trong chúng
nh3m vào kh n ng tiên ti n m i, m t s khác l i h ng t i gi m thi u gánh n$ng qu n tr ,
m t s khác n a l i c i thi n hi u n ng, gi m chi phí h t ng. Chúng tôi s) không trình bày
chúng
ây, hy v ng các b n s) b cu n hút khi c quy n sách này – chúng tôi ch+ xin
mô t m t v n
hóc búa nh t.
DB2 Express-C
c xây d ng trên n n công ngh “Viper”, 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. '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.0 trong ó các lu ng
d li u XML là r t nhi u. 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, 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. Và t t nhiên, n u b n c n tr
giúp h tr t& IBM, b n ch+ c n nh n chu t vào nút Help.
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, nó s)
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 k2 n ng qu n tr c6ng
nh phát tri n ng d ng DB2. K2 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, 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
t ng vào s h tr và c* v6 t& c ng ng. 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 mi n phí cho c ng ng.
Tôi mong các b n 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 b n, và giúp d ch cu n sách này sang các ngôn ng khác, nh v y nh ng
ng i khác s) có l i t& s hi u bi t c a b n.
Arvind Krishna
Phó ch t ch, C s d li u
Ban Qu n tr thông tin, Nhóm ph n m m IBM
PH N I – T NG QUAN VÀ CÀI
T
Ch
ng 1 – DB2 Express-C là gì?
1
Ph n m m máy ch d li u DB2 Express-C là m t s n ph#m thu c dòng IBM DB2 – bao
g m nh ng 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à m t phiên b n mi n phí, không gi i h n và d s! d ng c a DB2. Ch ‘C’
trong DB2 Express-C là vi t t t c a t& C ng ng(Community). M t c ng ng nh ng
ng i s! d ng DB2 Express-C k t h p l i
giúp 5 nhau, c tr c tuy n và không tr c
tuy n. C ng ng DB2 Express-C bao g m nhi u cá nhân và các công ty thi t k , phát
tri n, tri n khai hay s! d ng các gi i pháp c c d li u. Các thành viên c a c ng ng
bao g m:
Nh ng nhà phát tri n ng d ng c n n m t ph n m m c s d li u chu#n và m
xây d ng các ng d ng c l p, d ng khách-ch , trên n n web hay ch ng
trình ng d ng kinh doanh.
ISVs – các nhà cung c p ph n m m c l p, nh ng nhà cung c p ph n c ng, c
s h t ng hay nh ng gi i pháp khác, mu n óng gói m t máy ch d li u y
tính n ng nh m t ph n trong nh ng gi i pháp c a h .
Nh ng nhà c v n, qu n tr c s d li u và các ki n trúc s công ngh thông tin
c n m t máy ch d li u m nh
luy n t p, phát tri n k n ng, làm mô hình và
ánh giá.
Nh ng công ty m i thành l p, hay nh ng công ty v&a và nh/ c n
d li u tin c y cho các ng d ng và ho t ng c a công ty.
n m t máy ch
Nh ng ng i yêu thích c s d li u và h ng thú v i nh ng công ngh m i mu n
có m t máy ch d li u d s! d ng
xây d ng Web 2.0 và các ng d ng th h
m i.
Sinh viên, giáo viên và nh ng ng
có m t máy ch d li u linh ho t
i dùng vì m c ích h c t p, nghiên c u mu n
gi ng d y, h c t p hay nghiên c u.
DB2 Express-C có cùng các tính n ng c b n và cùng n n t ng nh các phiên b n
th ng m i c a DB2 trên Linux, Unix và Windows. DB2 Express-C có th ch y trên c h
th ng 32-bit ho$c 64 bit v i h i u hành Linux ho$c Windows. Nó c6ng có th ch y
c
trên Solaris (x64) và có phiên b n th! nghi m trên Mac OS X (x64). Nó có th ch y trên
nh ng h th ng v i b t kì b vi x! lý và b nh nào, và không yêu c u m t b nh chuyên
d ng hay cài $t nào khác trên h th ng. DB2 Express-C còn bao g m pureXML.
Ch
ng 1 – DB2 Express-C là gì?
19
PureXML là m t công ngh duy nh t ch+ có c a DB2, nó l u tr và x! lý tr c ti p các v n
b n XML.
1.1 T. do phát tri(n, tri(n khai và phân ph i… không có gi i h2n!
'ó chính là ý t
ng chính c a DB2 Express-C:
T do phát tri n: N u b n là m t nhà phát tri n ng d ng và c n m t c s d li u
cho ng d ng c a b n, b n có th dùng DB2 Express-C.
T do tri n khai: N u b n ang làm trong khâu s n xu t, và c n m t h th ng qu n
lý d li u
l u l i nh ng 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 n
m t máy ch d li u óng gói, b n có th dùng DB2 Express-C. M$c dù DB2
Express-C
c nhúng trong s n ph#m c a b n, và u c phân ph i m i khi b n
bán s n ph#m c a mình, nó v%n mi n phí. B n c n ph i ng kí v i IBM
tái
phân ph i DB2 Express-C; t t nhiên vi c ng kí này là mi n phí.
Không gi i h n: Trong khi nh ng h c s d li u khác có gi i h n v kích th c,
s l ng c s d li u và s ngu i dùng, v i DB2 Express-C không có các gi i
h n v kích th c d li u. C s d li u c a b n có th ti p t c phát tri n mà
không vi ph m i u kho n s! d ng. C6ng không có i u kho n nào gi i h n s k t
n i hay s ng i s! d ng trên m i máy ch .
Chú ý:
' hi u thêm v DB2 Express-C và vai trò c a nó trong th gi i thông tin theo yêu c u và
Web 2.0, xin m i xem thêm video :
http://www.channeldb2.com/video/video/show?id=807741:Video:3922
1.2 Tr! giúp ng
i dùng và h3 tr! k4 thu)t
N u b n có th c m c k2 thu t v DB2 Express-C, b n có th
a câu h/i lên di n àn
DB2 Express-C. Di n àn mi n phí này
c qu n lý b i nh ng chuyên gia DB2 t& IBM,
m$c dù chính c ng ng m i là nh ng ng i gi i áp chính trên c s t nguy n.
IBM c6ng cho ng i dùng l a ch n mua b n quy n giá [email protected] phiên b n ph n m m máy ch
d li u DB2 Express theo n m (còn g i là b n quy n th i h n c
nh – FTL). B n này gao
g m s h tr k thu t 24x7 và
c c p nh t ph n m m. Thêm vào ó, v i chi phí hàng
n m ($2.995 cho m t máy ch t i M2 - giá có th thay *i t i các qu c gia khác), b n c6ng
có th có thêm nh ng ch c n ng nh : tính s"n sàng cao và tính n ng ph c h i khi g$p s
c - HADR (clustering for High Availability and Disaster Recovery), di trú d li u truy v n
( tái t o l i d li u v i nh ng máy ch DB2 khác), và Sao chép nén ( t o ra nh ng
b n sao chép d tr
c nén l i c a c s d li u). Thông tin thêm v l a ch n mua b n
quy n có th tìm th y t i www.ibm.com/db2/express/support.html
20
Nh p môn H qu n tr c s d li u DB2
1.3 Các máy ch DB2
T t c các phiên b n máy ch DB2 u có chung thành ph n lõi, chúng
c óng gói
cho ng i dùng có th ch n nh ng ch c n ng c n thi t v i m c giá phù h p. Hình 1.1
minh h a các phiên b n DB2 khác nhau.
DB2 Enterprise Edition
DB2 Workgroup Edition
DB2 Express Edition
DB2 Express-C
+
Extra
functionality
+
Extra
functionality
+
Extra
functionality
Hình 1.1 – Máy ch DB2
Nh ta th y trên hình 1.1, DB2 Express-C c6ng gi ng nh DB2 Express nh ng thi u i
m t vài thành ph n. DB2 Express-C
c mi n phí. H tr k thu t
c th c hi n thông
qua m t di n àn tr c tuy n mi n phí, ho$c b n có th nh n
c s h tr k thu t chính
th c 24x7 t& phía IBM n u b n tr phí hfng n m (Fixed Term License – b n quy n th i
h nc
nh)
Hình 1.1 c6ng gi i thích t i sao có th
dàng nâng c p t& b n DB2 Express-C n u trong
t ng lai b n mu n nâng c p lên b t kì phiên b n nào khác c a máy ch DB2, vì t t c
máy ch DB2 có chung thành ph n lõi. 'i u này c6ng có ngh a là b t kì ng d ng nào
c phát tri n trên m t phiên b n có th ho t ng trên các phiê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 phiên b n có th áp d ng
cho các phiên b n khác.
1.4 Máy khách DB2 và các trình i u khi(n (drivers)
M t máy khách DB2 bao g m nh ng ch c n ng c n thi t
k t n i n m t máy ch
DB2; tuy nhiên, không ph i lúc nào c6ng c n thi t ph i cài $t m t máy khách DB2. Ví du,
m t ng d ng JDBC ki u 4 ch+ yêu c u m t trình i u khi n JDBC
có th k t nói n
m t máy ch DB2. Máy khách DB2 và trình i u khi n (driver) g m nhi u lo i:
IBM Data Server Client (Máy khách d li u)
i n
h a, các trình i u khi n.
y
nh t, bao g m công c giao
Ch
ng 1 – DB2 Express-C là gì?
21
IBM Data Server Runtime Client (Máy khách d li u th i gian th c): m t máy khách
g n nh, v i nh ng tính n ng c b n, bao g m c trình i u khi n.
DB2 Runtime Client Merge Modules for Windows (Máy khách th i gian th c DB2
k t h p v i môdun cho Windows): ch y u
c dùng
nhúng m t máy khách
DB2 th i gian th c thành m t ph n c a cài $t cho m t ng d ng Windows.
IBM Data Server Driver for JDBC and SQLJ (trình i u khi n máy ch d li u IBM
cho JDBC và SQLJ): cho phép các ng d ng Java k t n i t i máy ch DB2 mà
không c n ph i cài $t c m t máy khách y .
IBM Data Server Driver for ODBC and CLI (trình i u khi n máy ch d li u IBM
cho ODBC và CLI): cho phép ODBC và ng d ng CLI k t n i t i m t máy ch DB2
mà không c n n máy khách.
IBM Data Server Driver Package (B trình i u khi n máy ch d li u IBM): Bao
g m m t trình i u khi n dùng cho Windows h tr môi tr ng .Net cùng v i
ODBC, CLI và mã ngu n m . Trình i u khi n này tr c ây có tên là IBM Data
Server Driver for ODBC, CLI and .Net (Trình i u khi n máy ch d li u IBM cho
ODBC, CLI và .Net)
Hình 1.2 cho ta th y các máy khách và trình i u khi n DB2 hi n có.
Hình 1.2 – Máy khách DB2 và trình i u khi(n.
A bên trái Hình 1.2, ta có th th y t t c các máy khách và trình i u khi n. M$c dù t t c
máy khách DB2 ã bao g m trình i u c n thi t, b t u t& ph n m m máy ch d li u
DB2 phiên b n 9 chúng tôi c6ng cung c p nh ng trình i u khi n c l p khác. Máy khách
22
Nh p môn H qu n tr c s d li u DB2
DB2 và trình i u khi n có th s! d ng
k t n i t i m t máy ch DB2 trên Linux, UNIX
hay Windows. ' k t n i t i m t DB2 cho z/OS® hay DB2 cho máy ch i5/OS®, b n c n
thông qua máy ch DB2 Connect™ ( gi a hình 1.2). Chúng ta s) th o lu n ph n m m
DB2 Connect (DB2 connect) trong Ch ng 2.
Chú ý:
M$c dù cu n sách này t p trung vào máy ch d li u DB2, các máy khách d li u IBM
c6ng có th k t n i t i nh ng máy ch d li u khác trong h IBM nh Informix. Vì th tên
“máy khách d li u IBM” (IBM Data Server client) thì t*ng quát h n, còn tên “máy khách
DB2” (DB2 client) thì c th h n.
1.5 T. do phát tri(n ng d ng
DB2
a ra 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 dòng
s n ph m DB2. S! d ng chu#n SQL trong 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 chung cho vi c truy c 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 SQL và các giao di n l p trình
ng d ng (APIs) cho phép các nhà phát tri n nhúng các câu l nh SQL ng và t nh vào
trong các ch ng trình ng d ng kh chuy n. DB2 có m t b cung c p qu n lý .NET riêng
và tích h p v i công c Microsoft® Visual Studio.
Các ngôn ng và các chu#n có th s! d ng v i DB2 bao g m:
SQL, XQuery, XPath
C/C++ (CLI, ODBC and embedded SQL)
Java (JDBC and SQLJ)
COBOL
PHP
Perl
Python
Ruby on Rails
.NET languages
OLE-DB
ADO
MS Office: Excel, Access, Word
Web services
Ch
ng 1 – DB2 Express-C là gì?
23
1.6 Phiên b n và n b n DB2
N u b n m i làm quen v i DB2, b n có th b m h m t chút v s khác bi t gi a m t
phiên b n DB2 (DB2 version) và m t n b n DB2 (DB2 edition).
Vài n m m t l n, IBM công b m t phiên b n DB2 m i. M t phiên b n m i bao g m các
tính n ng m i và các c i ti n áng k c a s n ph#m. Hi n t i, DB2 phiên b n 9
ch
tr chính th c b i IBM. M t phiên b n c6ng có th có m t vài l n phát hành, các phiên b n
c c p nh t vài ch c n ng m i nh ng không áng k
m b o ó là m t phiên b n
m i. Ví d , 9.5 và 9.7 là các l n phát hành cho phiên b n DB2 9. Trong vài n m qua, IBM
a ra m t b n phát hành m i cho DB2 m i n m m t n hai l n, tuy nhiên các phiên b n
m i
c
a ra cách nhau trên 3 n m. B n phát hành m i nh t th i i m hi n t i là 9.7,
phiên b n này tr thành phiên b n chính th c (GA) vào tháng 6 n m 2009. M i b n phát
hành có th có vài m c
ch+nh s!a, th ng ch a các b n vá l i ho$c t ng ng v i các
m c
gói vá l i và hi m khi
a ra ch c n ng m i. T i th i i m này, phiên b n, phát
hành và ch+nh s!a (Version – Release - Modification / V - R - M) c a DB2 Express-C là
9.7.0 t ng ng v i m t m c
mã là 9.7 v i gói vá l i là 0, i u này có ngh a là nó
m c
GA.
M$t khác, các n b n là các l a ch n ho$c 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 các tính n ng khác nhau v i giá thành và b n quy n xác
nh. DB2 phiên b n 9.7 (
c bi t n v i tên là DB2 9.7) có nhi u n b n; ví d : DB2
Express-C 9.7, DB2 Express 9.7, DB2 Workgroup 9.7, và DB2 Enterprise 9.7 (xem Hình
1.1).
1.7 Chuy(n sang n b n DB2 khác
Khi c s d li u c a b n c n
c m r ng, có th b n c n nâng c p t i m t n b n
DB2 mà nó h tr c u hình ph n c ng l n h n. N u tình hu ng này x y ra, th t d dàng
nâng c p lên m t n b n DB2 khác:
N u b n nâng c p lên m t n b n DB2 khác trên cùng m t h th ng máy tính, hãy
g5 b/ DB2 Express-C, và sau ó cài $t l i n b n DB2 m i. Khi b n g5 b/ DB2
Express-C, c s d li u c a b n s) không b xóa (Nh ng t t nh t là nên sao l u
l i c s d li u).
N u b n nâng c p DB2 và n b n m i s)
c cài $t trên m t máy tính khác l n
h n, s! d ng cùng m t h i u hành gi ng nhau, thì cài $t n b n DB2 m i trên
máy tính m i và sao l u c s d li u máy tính c6, sau ó chép t p nh sao l u
sang máy m i r i ph c h i t p sao l u này v i c s d li u c a máy tính m i. B n
c6ng nên l u thi t l p c u hình (dbm cfg) trên máy c6, và áp d ng c u hình này vào
máy m i. Các l nh sao l u và ph c h i
c nói chi ti t trong Ch ng 11, Sao l u
và ph c h i. Dbm cfg
c nói chi ti t trong Ch ng 5, Môi tr ng DB2.
Trong các tr
ng h p khác, ng d ng khách không c n thay *i.
24
Nh p môn H qu n tr c s d li u DB2
1.8 B o trì và c)p nh)t cho DB2 Express-C
B n cài $t c a DB2 Express-C
c làm m i theo nh k4. Nh ng c p nh t này th ng
i kèm v i s xu t hi n c a các b n phát hành ho$c các phiên b n m i ho$c khi có m t s
l ng áng k l i c a s n ph#m. Trong quá kh , nh ng c p nh t cho DB2 Express-C
th ng th c hi n 1 n m m t l n. Tuy nhiên, chú ý r3ng DB2 Express-C là m t b n mi n
phí không i kèm v i các b n phát hành b o chính th c hay các b n s!a l i nh k4 nào
c ( ó là nh ng b n phát hành vài l n m t n m). M t khi b n c p nh t m i ho$c b n phát
hành c a DB2 Express-C xu t hi n thì nh ng b n phát hành tr c ó c a DB2 Express-C
không
c gi l i n a.
Nh th o lu n tr c ó, n u b n c n truy c p t i nh ng mi ng vá l i b o m t và nh ng
c p nh t ph n m m nh k4 hay các gói s!a l i, IBM cung c p c ch mua b n quy n
h3ng n m (FTL). M t khi b n mua b n quy n, b n cài $t DB2 Express-C c a b n
c
c p nh t v i khóa b n quy n cho FTL, cho phép b n
c h tr k2 thu t DB2 và truy c
t i nh ng b n c p nh t và gói vá l i trong su t th i gian ng ký còn có hi u l c. Mua b
quy n c6ng cho phép b n nâng c p phiên b n mi n phí, ho$c n u b n mu n s! d ng m
phiên b n hay b n phát hành $c bi t, và ch+ s! d ng nh ng gói vá l i và b n vá b o m
mi n là b n phát hành ó
c h tr và ng ký hàng n m c a b n
c duy trì.
p
n
t
t
1.9 Ph n m m mi5n phí liên quan và các thành ph n DB2
T t c các ph n m m
c t i v mi n phí t i trang t i v c a DB2 Express-C
(www.ibm.com/db2/express/download.html). Bên c nh ph n m m DB2 Express-C, còn có
nh ng ph n gói ph n m m h u ích có th
c t i v và s! d ng mi n phí:
Visual Studio Add-ins
DB2 Spatial Extender
Có nh ng công c b* sung d a trên DB2 Express-C
c t i v t i trang web IBM
Alphaworks (www.alphaworks.ibm.com/datamgmt) mà b n c m th y h u ích:
Starter Toolkit for DB2 on Rails (www.alphaworks.ibm.com/tech/db2onrails/)
Web 2.0 Starter Toolkit for DB2 (www.alphaworks.ibm.com/tech/web2db2)
N u b n ang tìm m t máy ch
ng d ng web t m c5 nh/ mi n phí thì IBM cung c p:
WebSphere® Application Server – Community Edition (WAS CE)
1.9.1 IBM Data Studio
IBM Data Studio là m t công c d a trên Eclipse cho phép b n qu n lý c s d li u và
giúp b n phát tri n XQuery, SQL scripts, nh ng hàm ng i dùng nh ngh a, và nh ng th
t c l u tr (stored procerdures). M t b s!a l i ã
c tích h p vào công c này. Thêm
vào ó, IBM Data Studio cho phép b n làm vi c v i các s
mô hình hóa d li u v t lý
(PDM)
hi u v các quan h th c th gi a các b ng. Nó c6ng có th giúp b n phát tri n
và xu t b n d li u nh m t d ch v Web s! d ng cách ti p c n kéo th ch không c n
l p trình. IBM Data Studio thay th các công c DB2 nh Control Center và Command
Ch
ng 1 – DB2 Express-C là gì?
25
Editor ã l i th i (chúng i kèm v i DB2 nh ng không
c phát tri n ti p n a). IBM Data
Studio
c th o lu n chi ti t trong Ch ng 5, các công c DB2.
1.9.2 DB2 Text Search
Tìm ki m v n b n DB2 (DB2 Text Search) là m t thành ph n tích h p tùy ch n c a DB2.
Nó
c trang b công ngh IBM OmniFind™, và nó cho phép b n tìm ki m m nh m),
nhanh chóng và chi ti t trong các tài li u v n b n, bao g m t t c các tài li u XML
c
l u tr trong DB2. Thành ph n này s! d ng x! lý ngôn ng
tìm ra các d ng khác nhau
c a ph n tìm ki m trong v n b n. Ví d , n u b n tìm ki m t& “study”, DB2 Text Search
c6ng tìm các d ng khác nhau c a t& này nh là “studies” hay “studied”.
' cài $t thành ph n DB2 Text Search, ch n custom installation c a DB2 Express-C và
ch n tính n ng DB2 Text Search mà trong danh m c Server h tr .
Chú ý:
Ch c n ng t ng t c6ng có trong m r ng c a DB2
NSE ã b l i th i so v i DB2 Text Search.
1.9.3 WebSphere Application Server – 6n b n c ng
c g i là NET Search Extender (NSE).
ng (Community Edition)
IBM WebSphere Application Server - Community Edition (WASCE) là m t máy ch
ng
d ng Java EE 5 t m c5 nh/
c s! d ng mi n phí. ' c xây d ng trên công ngh
Apache Geronimo, nó s! d ng nh ng thay *i m i nh t t& c ng ng mã ngu n m
phân ph i thành b n tích h p, có kh n ng truy c p và n n t ng linh ho t cho vi c phát
tri n và tri n khai các ng d ng Java. Tùy ch n h tr k2 thu t cho WASCE có giá tr
thông qua các b n tr ti n hàng n m.
1.10 Tóm t-t
n b n DB2 Express-C là n b n mi n phí t t nh t. Nó phân ph i mi n phí
phát tri n,
tri n khai và phân ph i mà không có s gi i h n v kích th c c s d li u, trong khi ó
v%n có cùng ch c n ng lõi và công ngh pureXML nh các n b n khác c a DB2. DB2
Express-C h tr m t m ng r ng l n bao g m các khách hàng, các nhà phân ph i, các
ngôn ng phát tri n và nó cung c p cách nâng c p d dàng sang các n b n DB2 khác.
2
Ch ng 2 – Các s n ph m và tính n ng liên
quan
Ch ng này miêu t các tính n ng DB2
c kèm theo v i b n tr phí c a m t phiên b n
DB2 Express b n quy n theo t&ng n m (b n quy n th i h n xác nh hay FTL - Fixed
Term License). Nó c6ng miêu t nh ng $c tính kèm theo các phiên b n DB2 khác, trong
m t vài tr ng h p, dành cho phiên b n mi n phí.
Nh ng s khác bi t gi a phiên b n mi n phí (không
c b o m) DB2 Express-C và
ch n l a tr phí hàng n m cho DB2 Express
c nêu ra trong b ng 2.1 bên d i.
Tính n ng
Nh ng kh n ng c a nhân DB2
Các công c qu n lý mi n phí
Các công c phát tri n mi n phí
Các kh n ng c l p
Tính n ng pureXML
H tr t& c ng ng không m t
phí***
H tr chính th c c a IBM
24x7
Các b n s!a l i
Tính s"n sàng cao (HADR)
Nhân b n d li u SQL
Nén sao l u
S! d ng t i a b x! lý
S! d ng t i a b nh
Kh n ng c p nh t
Truy xu t
cài $t nh ng t p
nh cho nh ng phiên b n/b n
phát hành tr c
Giá trên m i máy ch theo
n m**
Mi5n phí
(Không
!c b o
Có
Tr phí* (FTL)
m)
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Không
Có
Không
Không
Không
Không
2 nhân
2GB
T o l i hoàn toàn lúc phát
hành m i, th ng m t l n
m in m
Không, ch+ có s"n t p nh
cho s phát hành hi n th i
và b n ki m nghi m
0
Có
Có
Có
Có
4 nhân (t i a 2 )
4GB
Các b n vá b o m t và
gói s!a l i vài l n m i
n m
Có, thông qua IBM
Passport Advantage
US $2,995
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
27
B ng 2.1: S. so sánh DB2 Express-C MI7N PHÍ v i Tr phí (FTL)
* Các tính n ng i kèm v i B n tr phí ch+ có s"n khi B n tr phí có hi u l c.
** Giá b n tr phí cho M2 và các n
c thay *i không c n báo tr
c. Giá
các n
c khác nhau có th khác
nhau.
*** Tr giúp d a vào c ng
ng không m t phí thông qua di n àn tr c tuy n.
B ng 2.3 li t kê nh ng tính n ng c a s n ph#m và khi nào chúng
c kèm theo v i các
phiên b n khác nhau c a DB2 9.7. Các tính n ng mà b n có th mua riêng [email protected]
c
c
li t kê b3ng tên cho phiên b n DB2 t ng ng và
c ánh d u v i n n xám nh t.
Ch c n ng
S nhân b n
SQL ng nh t
(replication)
Liên h th ng
ng nh t
(Federation)
Net Search
B n DB2
Express tr phí
(FTL)
B n DB2
Express
Có
Có
B n DB2
Workgroup
Server Edition
(WSE)
Có
B n DB2
Enterprise
Server Edition
(ESE)
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Có
Tính s"n sàng
cao
Có
Có
Có
Có
Có
Không
Có
Có
Không
Có
Có
Không
Không
Không
Có
Có
Có
Extender, DB2
Text Search
B m r ng
không gian
(Spatial
Extender)
Nén sao l u
Công ngh
pureXML
S"n sàng cao
và ph c h i sau
s c
®
Tivoli S(ys(tem
Automation
D ch v sao
chép cao c p
Tái c u trúc
tr c tuy n
MQT
MDC
Truy v n song
Không
Không
Không
Không
Không
Không
28
Nh p môn H qu n tr c s d li u DB2
song
K tn it p
trung
Phân ho ch
b ng
B qu n lý
Nén: m c
hàng, ch+ m c,
XML, b ng t m
Qu n lý truy
xu t theo nhãn
(LBAC)
B m r ng a
tr c (Geodetic)
Ki m tra truy
v n
Qu n lý kh i
l ng công
vi c DB2
S giám nh
hi u n ng
Nhân b n Q
ng nh t
Không
Không
Không
Có
Không
Không
Không
Có
Không
Không
Không
Không
Không
Không
Có
Tính n ng t i
u hóa l u tr
Không
Không
Không
Không
Không
Không
Không
Không
Không
Không
Không
Không
Tính n ng qu n
lý truy xu t tiên
ti n
Tính n ng qu n
lý d li u a
tr c (Geodetic)
Tính n ng t i
u hóa hi u
n ng
Không
Không
Không
Không
Không
Không
Tính n ng sao
chép ng nh t
cho ESE
Không
Phân ho ch c
Không
Không
Không
s d li u
B ng 2.2 - Các b n DB2 Phiên b n 9.7: tính n ng và ch c n ng h3 tr!
Các tính n ng s"n có v i các b n DB2 khác là:
Các tính n ng b n DB2 Express tr phí:
Tính s"n sàng cao
Các tính n ng kèm theo v i phiên b n DB2 Workgroup không m t phí:
High Availability and Disaster Recovery (HADR ), Tivoli System Automation, Online
Re-org, Advanced Copy Services
DB2 có s"n trên các n n t ng UNIX m r ng: AIX®, Solaris, và HP-UX
Các tính n ng kèm theo b n DB2 Enterprise Edition không m t phí:
Phân ho ch b ng (vùng)
Materialized Query Tables (MQT)
Multi-dimensional Clustering (MDC)
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
29
Truy v n song song
K t n i t p trung
B
i u khi n (Governor)
Các tính n ng c a b n DB2 Enterprise Edition:
Tính n ng t i u hóa l u tr (g m c nén)
Qu n lý truy xu t cao c p (m n và b o m t cao c p)
T i u hóa hi u n ng (Qu n lý kh i l
v n song song)
Qu n lý d li u o
c (phân tích v trí
Các s n ph#m mi n phí liên quan
ng công vi c, Giám
nh hi u n ng, Truy
a lý)
n DB2:
DB2 Connect
InfoSphere Warehouse Editions
InfoSphere Balanced Warehouse
WebSphere Federation Server
WebSphere Replication Server
2.1 Các tính n ng kèm theo v i DB2 Express b n tr phí (FTL)
Ph n này ch+ ra các gói s!a l i cho DB2, HADR và nhân b n SQL.
2.1.1 Các gói s a l3i
M t gói s!a l i DB2 là m t b mã s!a l i ng d ng lên s n ph#m DB2 ã
c cài $t,
theo th t
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. V i m t b n cài $t có b n quy n, b n s!a l i mi n phí
t i v và cài $t. Chúng
th ng có s"n h3ng quý ho$c theo b o hành.
' t i b n s!a l i m i nh t, xem trang h tr k2 thu t DB2 t i
http://www.ibm.com/software/data/db2/support/db2_9/
2.1.2 Tính s8n sàng cao và khôi ph c sau s. c (High Availability Disaster Recovery
- HADR)
High Availability Disaster Recovery (HADR) là m t tính n ng áng tin c y cung c p m t
gi i pháp s"n sàng cao và khôi ph c sau s c cho nh ng h/ng hóc c c b c6ng nh toàn
b . M t môi tr ng HADR th ng có hai máy ch d li u, chính và ph (có th
v trí a
lý khác nhau). Máy ch chính là n i c s d li u ngu n
c l u tr và
c truy xu t
b i ng d ng khách. Nh các giao d ch
c x! lý trên c s d li u chính, c s d li u
l u các b n ghi
ct
ng chuy n t i máy ch th hai thông qua m ng. Máy ch th
hai có m t b n sao c a c s d li u chính, th ng
c t o b3ng vi c sao l u c s d
li u s c p và l u tr nó trên h th ng th th c p. Khi b n ghi c s d li u chính
c
30
Nh p môn H qu n tr c s d li u DB2
ghi, chúng c6ng
c sao chép và $t vào c s d li u th hai. Thông qua s sao chép
liên t c các b n ghi, c s d li u th hai gi s sao chép
c ng b v i c s d li u
chính và có th thay th n u c s d li u chính b h/ng.
M t gi i pháp HADR h tr DB2
y
a
n cho b n:
Kh n ng chuy n *i máy ch nhanh, v i s không *i *i v i khách hàng và các
ng d ng khách
Giao d ch hoàn toàn không chia nh/ (atomicity)
ch ng m t d li u
Kh n ng nâng c p các h th ng ho$c ng d ng không th y s ng t d ch v
D phòng h th ng
li u b tai n n nh h
xa, cung c p kh n ng ph c h i hoàn toàn t& trung tâm d
ng
D dàng qu n lý v i các công c
T tc
i u này v i nh h
h a c a DB2
ng không áng k t i hi u n ng chung c a h th ng
Chú ý:
' xem m t trình di n HADR làm vi c nh nào, vui lòng ghé th m:
http://www.ibm.com/software/data/db2/express/demo.html
B t u t& DB2 9.7 s) có kh n ng cho phép máy khách c trên máy ch
Kh n ng “ c ch
ch ” s) s"n sàng v i DB2 9.7 B n vá 1.
ch
ch .
2.1.3 Nhân b n d# li u
Tính n ng này cho phép nhân b n d li u gi a m t máy ch ngu n n i d li u thay *i
c gi l i (capture), và m t máy ch ích n i d li u thay *i
c c p nh t (apply).
Hình 2.1 cung c p m t t*ng quan cách làm vi c c a nhân b n.
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
31
Hình 2.1 –Nhân b n SQL
Trong Hình 2.1 có hai máy ch , m t máy ch ngu n và m t máy ch ích. Trên máy ch
ngu n, m t ch ng trình Capture b t l y nh ng thay *i t i c s d li u. Trên máy ch
ích, m t ch ng trình Apply ghi l i nh ng thay *i t i b n sao c s d li u. Nhân b n
h u d ng cho nh ng m c ích yêu c u sao chép d li u, bao g m kh n ng thay th , c p
2
d li u cho kho d li u và data marts , và ki m tra l ch s! thay *i d li u. Vi c s! d ng
tính n ng nhân b n SQL b n có th nhân b n d li u gi a DB2 Express và các máy ch
d li u IBM khác, bao g m nh ng máy ch trên các h th ng 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 mô t m t s tính n ng có s"n các phiên b n khác c a DB2 nh ng không có
phiên b n Express-C và phiên b n DB2 Express có b n quy n dài h n tính theo n m.
2
Data marts là kho l u tr d li u
c thi t k
t p trung vào các ch c n ng kinh
doanh $c tr ng c a
n v c th trong t* ch c. Data marts th ng là t p con d li u c a
m t data warehouse,
32
Nh p môn H qu n tr c s d li u DB2
2.2.1 Phân vùng c s" d# li u
Tính n ng phân vùng c s d li u (DPF) cung c p s truy v n phân tán có kh n ng x!
lý trên m t nhóm các máy ch c s d li u. Tính n ng này ch+ có nh ng phiên b n
InfoSphere Warehouse và cho phép d li u
c dàn tr i trên nhi u phân vùng c s d
li u hay nh ng i m nút n3m trên các máy ch khác nhau. DPF d a trên ki n trúc không
chia gì c (shared-nothing), m i phân vùng c s d li u l u tr m t t p con c a toàn th
d li u trên các * a c l p c a nó.
M i máy tính khi tham gia vào m t c m c s d li u s) mang l i thêm s c m nh x! lý d
li u d a trên nh ng tài nguyên v n có c a nó nh b vi x! lý, b nh , * a. 'i u này cho
phép phân m nh nh ng tác v l n và nh ng câu truy v n ph c t p thành nh ng tác v
nh/ h n và phân tán kh p các nút i m c s d li u khác nhau
có th ti n hành x!
lý song song. N u c s d li u ch+ n3m trên m t máy ch
n [email protected] thì s k t h p trên s) có
tính ng th i cao h n và th i gian ph n h i nhanh h n. DPF $c bi t h u d ng trong
nh ng môi tr ng kho d li u (data warehouse) l n và nh ng yêu c u công vi c c a
Business Intelligent (BI) liên quan t i hàng tr m gigabytes th m chí hàng tr m terabytes
d li u.
2.2.2 Connection Concentrator - 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 s l ng l n ng i dùng cùng k t
n i ng th i. Tr c ây, m i k t n i t i c s d li u u yêu c u m t tác nhân c s d
li u. B t p trung k t n i này
a ra m t khái ni m m i v "tác nhân v t lý", cho phép m t
tác nhân x! lý nhi u k t n i. Ch ng 6, Ki n trúc DB2 s) mô t chi ti t h n v lo i tác
nhân này.
2.2.3 Geodetic Extender - B m" r ng không gian 0a lý
B m r ng không gian a lý DB2 là m t tính n ng có tr phí trên phiên b n DB2
Enterprise Server. Ph n m r ng này làm cho s phát tri n c a nh ng ng d ng Business
Intelligence hay ng d ng cho chính ph i n t! mà yêu c u s phân tích v vùng a lý
tr nên d dàng h n. B m r ng không gian a lý DB2 có th xây d ng m t qu
ac u
o v i b t c kích c5 nào. H u h t nh ng thông tin v v trí, a i m
c thu th p s!
d ng t& nh ng h th ng trên toàn th gi i nh GPS và
c th hi n trên nh ng t a
kinh tuy n/v tuy n (geocode). Nh ng d li u ki u nh
a ch+ có th
c chuy n thành
geocode b3ng b m r ng này và nh ng ng d ng kinh doanh s) ho t ng t t h n n u
chúng
c l u tr d i d ng không h qui chi u này, t c là b/ qua nh ng phép chi u
b n
(t& trái t lên m t m$t ph1ng): l p trình bày v n dùng
hi n th và in b n .
2.2.4 Label-based Access Control (LBAC) - Ki(m soát truy c)p d.a trên nhãn
Ki m soát truy c p d a trên nhãn cung c p s b o m t chi ti t h n t i m i m c
dòng
hay c t. Nó s! d ng m t nhãn có s k t h p nh ng phiên s! d ng c a ng i dùng và
nh ng dòng hay c t d li u
c c p quy n truy c p t i d li u b ng c a b n. Hình 2.2
minh h a c ch làm vi c c a LBAC.
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
33
Hình 2.2 – Ví d v c ch làm vi c c a LBAC
A hình trên, b ng EMP có m t c t là SALARY và m t c t ID ch a nhãn cho m i dòng
c
a vào. Nh ng c t khác hình trên
c s! d ng ch+ v i m c ích minh h a. N u
câu truy v n trong hình
c th c thi, thì d a trên nhãn mà ng i dùng có thì anh ta s)
th y nh ng dòng khác nhau. C t v i t a là 'NO LBAC' bi u di n nh ng dòng s)
c
ch n n u LBAC không
c cài $t. Và nh b n th y là t t c nh ng dòng có giá tr l ng
l n h n hay b3ng 50.000 u
c ch n.
Gi s! ng i dùng th c thi m t câu truy v n có nhãn security là 100. B n có th th y
nh ng dòng
c ch n trong tình hu ng này c t 3 tính t& bên trái (c t có tên là 'SEC =
100'). A tình hu ng này, DB2 s) tìm nh ng dòng mà l ng l n h n hay b3ng 50.000, sau
ó nó ki m tra nhãn security m i dòng. Ví d nh dòng u tiên có giá tr c t l ng là
60000 và giá tr ID nhãn là 255. Khi ng i dùng này có m t ID nhãn là 100 v n nh/ h n
255, anh ta s) không th th y dòng này, và do ó k t qu tr v t& câu truy v n s) không
có dòng ó.
C ch b o m t ki m soát truy c p d a trên nhãn ph i
b o m t có quy n SECADM.
c cài $t b i ng
i qu n tr v
2.2.5 B qu n lý t i công vi c (Workload Manager – WLM)
B qu n lý t i công vi c qu n lý t i c a c s d li u d a trên ng i s! d ng và các ng
d ng u tiên k t h p v i tài nguyên s"n có và gi i h n t i c a công vi c. Nó cho phép b n
i u ch+nh kh i l ng công vi c và truy v n c s d li u
truy v n cái quan tr ng và u
tiên truy v n cao h n
có th th c thi nhanh chóng, và ng n ch$n s
c quy n truy v n
34
Nh p môn H qu n tr c s d li u DB2
tài nguyên h th ng (truy v n x u – “rogue”), m b o r3ng h th ng c a b n ch y hi u
qu . WLM
c m r ng h n trong DB2 9.7 và cung c p kh n ng m nh m) h n Query
Patroller và công c DB2 Governor s"n có v i phiên b n tr c c a DB2.
2.2.6 Nén sâu
DB2 h tr m t vài ki u nén:
NULL và giá tr nén m$c
nh.
Ki u nén này áp d ng cho các c t th ng có giá tr NULL ho$c h th ng m$c
giá tr là 0, không có b nh
a
c s! d ng.
nh
Bó nhi u chi u (Multidimentional Clustering)
Bó các b ng nhi u chi u mà
ó các trang d li u v t lý
c bó l i theo nhi u
chi u. Nó s! d ng các ch+ m c theo các kh i ngh a là nó nén ch+ m c b i trong
tr ng h p này ch+ m c tr/ n m t kh i ch không tr/ n m t b n ghi.
Sao l u c s d li u nén
Áp d ng v i cho các hình nh sao l u. Các ch+ m c và các không gian b ng LOB
c6ng
c nén.
Nén hàng d li u
Nén theo hàng làm vi c b3ng cách thay th các chu i l$p l i trong m t hàng d li u
v i m t ký hi u nh/ h n. Các ánh x c a các ký hi u nh/ h n và các chu i
c
gi trong m t t& i n. Nén theo hàng có th c i thi n hi u xu t trên kh i vào/ra,
nh v y nhi u hàng
c trao *i qua l i gi a a và b nh h n vì các hàng nh
h n. B n c6ng có th có l i t& vi c ti t ki m dung l ng a mà thông th ng ó là
kho n chi phí l n nh t trong ngân sách IT c a các công ty. ' i v i kh i l ng công
vi c c a CPU, nó ph i làm thêm m t chút nh nén hàng khi l u, gi i nén tr c khi
x! lý. C6ng l u ý r3ng các d li u nh t ký (log data) c a các d li u nén c6ng
c nén.
Khi truy c p vào các c t XML và LOB thông th ng DB2 s) không s! d ng b nh , mà
th c hi n tr c ti p vào ra v i a. Nó
c th c hi n nh v y b i vì XML và LOB th ng
có kích th c l n, n u mang chúng n b nh s) c n t o ra nhi u trang
b nh . Tuy
nhiên v i DB2 9.5, XML l u trong b ng (inline) cho các tài li u nh/ (nh/ h n 32k) là
c
phép. Ngh a là tài li u XML nh/ có th
c l u tr cùng v i các hàng c a b ng c s , và
nó không n3m trong i t ng l u tr n i t i riêng bi t
c g i là XDA. L i th c a
ph ng pháp này có hai m$t th nh t là các tài li u XML có th
c truy c p thông qua
b nh và th hai là các tài li u XML có th có l i t& các vi c nén hàng d li u.
V i phiên b n m i DB2 9.7 nó có m t s c i ti n h n
Bên trong
it
nén:
ng XDA (n i XML l u tr ) c6ng có th nén.
Ch+ m c và b ng t m th i (h th ng và s! d ng) có th
LOBs có th n3m trong b ng (inline) t
ng t nh XML
c nén
Ch
2.2.7 T
ng 2 – Các s n ph#m và tính n ng liên quan
35
ng thích v i SQL
Trong khi nhi u nhà cung c p theo các tiêu chu#n SQL 92 và SQL/PSM, không ph i t t c
các tính n ng tiêu chu#n u
c h tr , và l i h tr các tính n ng khác không n3m
trong tiêu chu#n này. V i tính n ng t ng thích DB2 9.7 SQL, hi n nay DB2 h tr h u h t
các cú pháp PL/SQL cái mà
c h tr b i các nhà cung c p RDBMS khác và thêm vào
ó là SQL PL c a DB2. Hình 2.3 tóm t t cách h tr này làm vi c nh th nào.
Hình 2.3 – PL/SQL h3 tr! trong DB2
T& hình trên b n s) th y r3ng trình biên d ch PL/SQL ã
trong c ch (engine) c a DB2.
c phát tri n và xây d ng
SQL c6ng có các tính n ng t ng thích h tr cho công c g i là CLPPlus. CLPPlus là
m t công c dòng l nh cho phép b n th c thi câu l nh SQL và các câu l nh khác. Nó
t ng t nh b x! lý dòng l nh DB2 (CLP). Hình 2.4 minh h a công c CLPPlus
36
Nh p môn H qu n tr c s d li u DB2
Hình 2.4- CLPPlus
H tr h u h t các ki u d li u PL/SQL và c6ng h tr các ki u k t h p nh
BINARY_INTEGER, RAW… Các ki u d li u khác c a Oracle nh VARCHAR2 u
c
h tr mà không c n tính n ng t ng thích SQL, nh ng b n c n ph i kích ho t chúng
b3ng cách ng kí bi n DB2_COMPATIBILITY_VERTOR. Có r t nhi u gi i thích v ki u
d li u Oracle và bi n ng kí trong cu n sách này.
Tính t ng thích c a SQL mô t
trên là s"n có trong các n b n DB2 9.7 Workgroup và
n b n Enterprise. D ki n s) có
c trong n b n DB2 Express DB2 (bao g m tùy ch n
ng ki hàng n m ho$c là FTL) trong t ng lai g n.
Trong khi h tr PL/SQL và tính n ng CLPPlus là không có s"n trong DB2 Express 9.7,
các tính n ng khác s) làm cho vi c chuy n *i d dàng h n các ng d ng Oracle sang
DB2. Nó bao g m các ki u d li u m i, các hàm vô h ng m i, h tr mô un và ng
ngh a cam k t hi n t i (currently committed semantics) cho m c cô l p con tr/ (CS).
Nh ng tính n ng này
c th o lu n sau trong cu n sách này.
2.3 Nh#ng s n ph m có tr phí liên quan
n DB2
Trong ph n này cung c p m t cách ng n g n v s n ph#m tr phí và nh ng l a ch n
có th
c s! d ng v i DB2.
2.3.1 DB2 Connect
DB2 Connect là ph n m m có phí cho phép m t máy khách DB2 ch y trên h i u hành
Linux, UNIX ho$c Windows k t n i t i m t DB2 c a z/OS ho$c i5/OS trên máy ch nh
hình 2.5. DB2 Connect không c n thi t khi vi c k t n i theo h ng ng c l i; khi b n k t
n i t& DB2 c a z/OS ho$c c a i5/OS t i máy ch DB2 trên h i u hành Linux, UNIX,
Windows. DB2 Connect có hai n b n chính ph thu c vào nhu c u k t n i c a b n: m t
phiên b n cho cá nhân (DB2 Connect Personal), và m t phiên b n dành cho doanh nghi p
(DB2 Connect Enterprise).
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
37
Hình 2.5 - DB2 Connect
2.3.2 InfoSphere Federation Server
Tr c ây
c bi t n là WebSphere Information Integrator ( i v i h tr t p h p d
li u), WebSphere Federation Server cho phép t p h p các c s d li u, ngh a là b n có
th ch y truy v n c s d li u
làm vi c v i các i t ng t& các h th ng c s d
li u quan h khác nhau. Ví d , n u mua WebSphere Federation Server, b n có th truy
v n gi ng nh Li t kê 2.1 d i ây.
SELECT
FROM
*
Oracle.Table1
DB2.Table2
SQLServer.Table3
A
B
C
WHERE
A.col1 < 100
and B.col5 = 1000
and C.col2 = 'Test'
Li t kê 2.1 - Truy v n
38
Nh p môn H qu n tr c s d li u DB2
Hình 2.6 minh h a WebSphere Federation Server
c s d ng.
Hình 2.6 – WebSphere Federation Server
' i v i h qu n tr c s d li u quan h nó là m t ph n c a h c s d li u c a IBM, h
tr tính n ng t p h p d li u
c xây d ng trong DB2 Express- C. 'i u này có ngh a là
s n ph#m WebSphere Federation Server không
c yêu c u khi, ví d nh , b n mu n
ch y m t truy v n gi a hai c s d li u DB2 khác nhau, ho$c gi a m t c s d li u
DB2 và c s d li u quan h Informix (Informix là m t thành ph n c a h IBM).
2.3.3 InfoSphere Replication Server
Tr c ây
c bi t n v i tên g i WebSphere Information Integrator ( h tr nhân
b n), InfoSphere Replication Server cho phép i v i các nhân b n SQL c a c s d li u
khi không có máy ch d li u IBM can thi p vào. Nó c6ng bao g m tính n ng QReplication i v i nhân b n d li u có s! d ng hàng thông i p (message queues).
2.3.4 Optim Development Studio (ODS)
Tr c ây
c bi t n v i tên g i Data Studio Developer, ODS là m t công c d a trên
Eclipse
có th d dàng tích h p v i Data Studio, và chia [email protected] d li u gi ng nh Eclipse.
ODS có th giúp b n t o nh ng c s d li u phát tri n b3ng cách chép và dán t& h
qu n tr c s d li u ã có s"n trên Oracle ho$c DB2.
Ch
ng 2 – Các s n ph#m và tính n ng liên quan
39
2.3.5 Optim Database Administrator (ODA)
Tr c ây
c bi t n v i tên Data Studio Administrator, ODA là m t công c d a trên
Eclipse
có th d dàng tích h p v i Data Studio, và chia [email protected] d li u gi ng nh Eclipse.
ODA cung c p kh n ng qu n lý thay *i và kh n ng t
ng thay *i gi n
d dàng
h n.
2.4 Các cung c p DB2 trên Cloud c a Amazon
'i u áng chú ý
c nói n là IBM ã h p tác v i d ch v Web c a Amazon (Amazon
Web Services – AWS)
ch y DB2 trên cloud c a Amazon (Elastic Compute Cloud EC2). AWS cung c p m t b các d ch v tích h p
hình thành n n t ng i n toán trong
ám mây, và xu t hi n d i hình th c tr phí theo m c dùng (pay-as-you-go). AWS cho
phép b n thuê n ng l c tính toán (nh ng máy ch và l u tr
o), và b n ch+ tr cho nh ng
tính n ng mà b n s! d ng. Ví d , gi s! b n c n m t máy ch o EC2 cho các ho t ng
c s d li u bình th ng, và trong th i gian cao i m ho$c cho nhu c u mùa v b n c n
thêm máy ch c s d li u trong vài gi . Trong tr ng h p này b n s) ch+ tr ti n máy
ch c s d li u cho AWS trong vài gi mà b n ch y nó.
IBM cung c p ba l a ch n
DB2 Express-C AMIs
tri n khai DB2 trên n n Cloud c a Amazon:
ánh giá và phát tri n.
Tr ti n là dùng ngay AMIs s"n sàng v i DB2 Express và DB2 Workgroup
Kh n ng t o AMIs c a riêng b n b3ng cách s! d ng gi y phép s! d ng DB2
' bi t thêm thông tin và làm th nào
c p website: www.ibm.com/db2/cloud
b t
u v i DB2 trên Amazon EC2, xin m i truy
2.5 Tóm t-t
DB2 Express–C
c cung c p mi n phí, d s! d ng, và là n n t ng v ng ch c cho vi c
phát tri n nh ng ng d ng c s d li u, tri n khai vào s n xu t, và th m chí nhúng và
phân ph i ng d ng v i các gi i pháp c a bên th ba. 'ó là ý t ng hay n u b n th y
tho i mái v i s h tr d a vào c ng ng và không có nhu c u cho các b n s!a l i g n
nh t ho$c các tính n ng tiên ti n. Tuy nhiên, n u b n c n có h tr k2 thu t chính th c t&
IBM, c p nh t ph n m m th ng xuyên, ho$c s! d ng ngu n l c b* sung, và tính n ng h
tr bó (cluster) máy ch , IBM cung c p m t gi y phép s! d ng DB2 Express v i kho n chi
phí th p hàng n m. N u b n c n thêm nhi u tính n ng tiên ti n cho nh ng tác v quan
tr ng và các ng d ng c s d li u l n, IBM cung c p các n b n DB2 m r ng và các
s n ph#m có liên quan. 'i u này cho phép b n b t u nh/ t& DB2 Express-C, và d dàng
m r ng lên quy mô cao nh doanh nghi p yêu c u.
Ch
ng 3 - Cài
3
t DB2
Vi c cài $t DB2 hoàn toàn không ph c t p, và trong quá trình cài $t,
n gi n là l a
ch n các tùy ch n m$c nh s) có m t máy ch DB2 b t lên và ho t ng trong th i gian
ng n.
3.1 Các i u ki n c n tr
c khi cài
t
DB2 Express-C có th s! d ng trên các h i u hành nh : Linux, Sun Solaris (x64), và
Microsoft Windows® 2003, XP và Vista. Nó c6ng có giá tr nh là b n th! nghi m trên
MAC OS X. Ki n trúc b x! lý yêu c u là 32 bit, 64 bit và PorwerPC (Linux). N u b n c n
ch y DB2 trên m t n n khác (nh UNIX), b n nên mua m t trong nh ng n b n máy ch
d li u khác ã
c gi i thi u ph n tr c trong quy n sách này. Các yêu c u v h
i u hành cho t t c các n b n DB2 c6ng
c mô t trong tài li u này:
http://www.ibm.com/software/data/db2/udb/sysreqs.html
V gi i h n tài nguyên ph n c ng, DB2 Express-C có th
c cài $t trên h th ng v i
b t k4 s l ng nhân CPU và b nh nào, tuy nhiên, nó s)
c t i u hóa i v i h
th ng lên t i 2 CPU v t lý và 2GB c a b nh
i v i các phiên b n mi n phí, i v i các
phiên b n tr phí c a DB2 Express yêu c u h th ng lên t i 4 CPU và 4GB RAM. H
th ng có th là h th ng v t lý, ho$c h th ng o
c t o ra b i s phân chia ho$c do
vi c ch y các ph n m m máy o. D nhiên b n có th ch y nó trên các h th ng nh/ h n
n u b n mu n, ví d nh h th ng 1 CPU v i 1GB RAM.
' có nh ng thông tin m i nh t các yêu c u c a DB2 Express-C v ph n c ng, xem trên
trên trang DB2 Express-C t i http://www.ibm.com/software/data/db2/express/about.html
3.2 Quy n cài
th
i u hành.
' cài $t DB2 Express-C trên Linux ho$c Windows b n ph i là ng
hành có
quy n.
i s! d ng h
i u
V i Linux, b n ph i là root (superuser)
cài $t DB2 Express-C. B n c6ng có th cài $t
DB2 Express-C khi không ph i là ng i dùng root, tuy nhiên, b n s) b h n ch khi làm
vi c v i s n ph#m. Ví d , khi cài $t bên d i quy n root, b n không th t o ra nhi u h n
các th hi n m$c nh ã
c t o ra trong lúc cài $t.
V i Windows, tài kho n ng i s! d ng ph i thu c v nhóm Administrator trên máy n i
mà b n s) th c hi n cài $t. M t l a ch n khác, trên Windows 2008, Windows Vista, ho$c
Ch
ng 3 - Cài $t DB2
cao h n, ng i dùng không ph i là qu n tr c6ng có th th c hi n cài $t, nh ng s)
nh c nh5 xác nh s
y quy n qu n tr b i DB2 Setup Wizard.
41
c
ID ng i dùng cài $t ph i n3m trong nhóm Domain Administrator trên mi n n u s cài $t
yêu c u m t tài kho n mi n
c t o ho$c
c xác minh.
B n c6ng có th s! d ng tài kho n Local System s"n có (built-in)
ti n hành cài $t, dù
nó không
c
ngh . Tài kho n Local System không yêu c u m t kh#u, nh ng nó
không th truy c p tài nguyên trên m ng.
Tài kho n ng
i dùng c6ng ph i có quy n “Truy c p máy tính này qua m ng”.
Chú ý:
Xem Video trình di n v vi c cài $t DB2 Express-C t i liên k t này. M$c dù s trình di n
này gi i thích DB2 9.5, nó không khác quá trình cài $t DB2 9.7, m t i u khác ó là màu
s c c a giao di n cài $t:
http://www.channeldb2.com/video/video/show?id=807741:Video:4442.
3.3 Cài
t theo th thu)t (h
ng d9n t1ng b
c)
M$c dù có nhi u cách cài $t DB2 Express-C, cách d 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 DB2. Sau khi t i v và gi i nén DB2
Express-C, b n có th ti n hành cài $t nh sau:
Windows: th c thi t p setup.exe trong th m c EXP/image/
Linux: th c thi l nh db2setup trong th m c exp/disk1/
DB2 Express-C d dàng cài $t theo các h c d%n cài $t DB2 t&ng b c. Thông th ng,
thi t l p m$c nh là y , t t c các vi c b n c n làm là ch p nh n i u kho n s! d ng.
Nh n vào nút Next cho n khi nút “Finish” ho t ng, và sau ó nh n vào nút Finish. Sau
vài phút, quá trình cài $t k t thúc, DB2 s)
c kh i ng và th c thi!
Hình 3.1 th hi n c!a s* cài $t DB2 (DB2 Setup Launchpad). Nh n vào Install a Product
và sau ó ch n Install New
cài $t m t b n sao chép m i c a DB2 Express-C lên h
th ng. N u b n ã có cài $t DB2 Express-C phiên b n tr c ho$c n b n DB2 khác, b n
có th th y nút v i tên là “Work with Existing”. Trong DB2, b n
c cho phép cài $t s n
ph#m nhi u l n, và các cài $t ó có th là các phiên b n ho$c các c p phát hành khác.
42
Nh p môn H qu n tr c s d li u DB2
Hình 3.1 – B-t
u cài
t DB2 (DB2 Setup Laundpad)
Sau khi ch p nh n i u kho n s! d ng, thông th ng b n nên ch n ki u cài $t “Typical”
(m$c nh) nh hình 3.2. N u b n mu n bao g m thành ph n DB2 Text Search, ch n
“Custom”.
Ch
Hình 3.2 – Các ki(u cài
ng 3 - Cài $t DB2
43
t
Trong b c ti p theo, nh hình 3.3, b n có th ch n cài $t s n ph#m, t o m t t p ph n
h i, ho$c c hai. T p ph n h i
c th o lu n trong ph n 3.4, Silent Install. L a ch n m$c
nh (“Install IBM DB2 Express Edition on this computer and save my settings in a
response file”) là m$c nh.
44
Nh p môn H qu n tr c s d li u DB2
Hình 3.3 – L.a ch/n cài
t
L a ch n giá tr m$c nh trong vài màn hình ti p theo cho n khi b n g$p màn hình
gi ng nh trong hình 3.4, b n c n gõ vào ID ng i dùng, ID này s)
c s! d ng
cài
$t và th c thi các th hi n và các d ch v khác.
N u b n s! d ng m t ID ng i dùng ang t n t i, ng
nhóm Local Adminstrator trong Windows.
i dùng này ph i là m t ph n c a
N u ID c a ng i dùng b n nh p vào không t n t i, nó s)
Administrator. B n có th
tr ng tr ng Domain n u ng
thu c mi n nào c .
Tên ID ng
m$c nh
c t o ra nh là m t Local
i dùng b n nh p vào không
i dùng m$c nh trong Windows là db2admin. Trong Linux, ID ng
c t o là db2inst1.
i dùng
Ch
Hình 3.4 – Xác 0nh thông tin ng
ng 3 - Cài $t DB2
i dùng cho máy ch DB2 Administration
Cu i cùng, trong hình 3.5, cài $t theo h ng d%n t&ng b c s) hi n th m t danh sách
t*ng k t nh ng gì s)
c cài $t và nh ng giá tr c u hình khác
c cung c p các
b c tr c. Khi b n nh n vào nút “Finish”, quá trình cài $t b t u, và các t p ch ng
trình s)
c $t vào h th ng c a b n.
45
46
Nh p môn H qu n tr c s d li u DB2
Hình 3.5 – T:ng k t nh#ng ph n s;
!c cài
t
Khi quá trình cài $t hoàn thành, m t c!a s* gi ng nh hình 3.6 xu t hi n, cho b n bi t k t
qu c a quá trình cài $t t&ng b c, nh b t k4 các b c ti p theo
c yêu c u
hoàn
thành quá trình cài $t.
Ch
Hình 3.6 – Quá trình cài
ng 3 - Cài $t DB2
47
t hoàn thành
Sau khi b n nh n vào nút “Finish” trong c!a s* k t qu cài $t
First Steps (b c u tiên)
c b t u, nh hình 3.7.
hình 3.6, ng d ng DB2
Bng d ng nh/ th hi n m t vài tùy ch n khác
b t u v i DB2, nh là t o ra c s d
li u m%u m$c nh (tên là SAMPLE) ho$c
t o ra m t c s d li u m i cho riêng b n.
N u b n không mu n khám phá DB2 thông qua First Steps lúc này, b n có th óng c!a
s*, và g i nó sau này.
' b t u DB2 First Steps trên Windows b3ng tay, ch n Start -> Program -> IBM DB2 ->
DB2COPY1 (m c nh) -> Set-up Tools -> First Steps ho$c ch y l nh db2fs t& d u nh c
l nh.
Trên Linux, th c thi l nh db2fs t& c!a s* màn hình
u cu i (terminal).
48
Nh p môn H qu n tr c s d li u DB2
Hình 3.7 – First Steps
3.4 Ki(m tra l2i cài
t
Sau khi cài $t DB2, b n có th th c hi n ba câu l nh t& Command Windows DB2 (trên
Windows) ho$c t& terminal (trên Linux)
xác nh n là quá trình cài $t c a b n ã th c
hi n y :
db2level: ây là câu l nh
hi n th thông tin v s n ph#m DB2 ã
$t, c p
óng gói, và các chi ti t khác.
db2licm: ây là câu l nh
s n ph#m DB2 c a b n ã
c cài
li t kê t t c các thông tin b n quy n $c tr ng cho
c cài $t.
db2val: ây là m t câu l nh m i có giá tr trong DB2 9.7. Nó xác nh n tính h p l
cho s cài $t b3ng cách xác nh n ch c n ng chính c a b n sao DB2. Nó m
b o cho các th hi n c a b n là ch c ch n, và t o ra c s d li u và k t n i c s
d li u.
Ch
Hình 3.8 bên d
ng 3 - Cài $t DB2
49
i cung c p nh ng ví d v k t qu s! d ng 3 l nh trên.
Hình 3.8 – các câu l nh db2level, db2licm, db2val ( ki(m tra l2i cài
t.
A hình trên, k t qu xu t ra màn hình t& l nh db2level cho bi t b n ang ch y DB2 9.7
(DB2 v9.7.0.441) t i Fix Pack 0, có ngh a là mã DB2 là b n g c (GA) không có thêm vào
b n vá nào. L nh db2licm –l cho bi t b n ã cài $t phiên b n DB2 Express-C, là phiên
b n không c n ch ng nh n b n quy n, nó
c cho phép s! d ng trên 2 core CPU, và
trên 2Gb RAM. K t qu xu t ra t& l nh db2val thì ã th hi n rõ ràng.
Chú ý:
N u b n mu n ki m tra tính ch c ch n c a c s d li u t i b t k4 lúc nào, s! d ng ti n
ích INSPECT
3.5 Cài
t hàng lo2t (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; ho$c máy ch DB2 là m t ph n trong ng d ng b n xây d ng và b n 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
ng d ng ó. Khi ó, cài
$t hàng lo t là ph ng pháp phù h p cho b n.
50
Nh p môn H qu n tr c s d li u DB2
DB2 h tr cài $t hàng lo t b3ng 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. D i ây là m t trích o n c a m t t p biên b n m%u.
PROD=UDB_EXPRESS_EDITION
LIC_AGREEMENT=ACCEPT
FILE=C:\Program Files\IBM\SQLLIB\
INSTALL_TYPE=TYPICAL
LANG=EN
INSTANCE=DB2
DB2.NAME=DB2
DEFAULT_INSTANCE=DB2
DB2.SVCENAME=db2c_DB2
DB2.DB2COMM=TCPIP
...
Li t kê 3.1 – t p biên b n m9u
Có m t vài ph
ng pháp t o ra t p biên b n:
Cài $t DB2 Express-C m t l n trên máy tính, s! d ng ph ng pháp cài $t theo
h ng d%n t&ng b c. M t trong các tùy ch n u tiên khi b n cài $t theo
ph ng pháp này (nh hình 3.3) cho phép b n l a ch n ánh d u 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. 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 $t. Vì t p này là
t p v n b n nên sau ó b n có th s!a l i nó tùy ý.
Ch+nh s!a t p biên b n m%u
này (có ph n m r ng là .rsp)
c cung c p b i t p nh DB2 Express-C. T p m%u
c $t trong th m c db2/platform/samples/
Trong Windows, b n có th s! d ng l nh sau
t o t p biên b n:
db2rspgn –d <output directory>
Cu i cùng,
cài $t DB2 hàng lo t s! d ng t p biên b n, trong Windows s! d ng l nh:
setup -u <response filename>
Trên Linux s! d ng l nh:
db2setup -r <response filename>
3.6 Tóm t-t
Ch ng này ã gi i thi u các chi ti t c a quá trình cài $t DB2-Express-C. Phiên b n DB2
này có giá tr trên Linux, Solaris và Windows, và có th ch y trên ki n trúc PC 32-bit, 64-bit
và PowerPC. Sau khi th o lu n v yêu c u quy n ng i dùng c n thi t
cài $t DB2 trên
m t h th ng, chúng ta ti n n th c hi n vi c cài $t s! d ng DB2 Installation Wizard
GUI. Th o lu n v vi c kích ho t báo cáo quá trình cài $t theo sau, bao g m ch y DB2
Ch
ng 3 - Cài $t DB2
51
First Step và ki m tra l i cài $t. Và cu i cùng, chúng ta bi t
c b3ng cách nào t o và
th c thi cài $t hàng lo t DB2 b3ng cách s! d ng t p biên b n.
3.7 Bài t)p nhanh
Trong bài t p này, b n s) cài $t DB2 Express-C và t o ra c s d li u m%u
M c tiêu
Tr
c khi b n có th khám phá t t c các tính n ng và các công c v i DB2 Express-C,
u tiên b n ph i cài $t nó vào h th ng. Trong bài t p này, b n s) th c hi n cài $t c
b n DB2 Express-C trên Windows. T ng t , cài $t theo h ng d%n c6ng có giá tr trên
Linux, vì v y các b c th c hi n u r t gi ng nhau.
Th t c
1. L y v nh c a DB2 Express-C: t i v nh DB2 Express-C thích h p t& trang web
DB2 Express-C (www.ibm.com/db2/express). Gi i nén t p vào th m c b t k4.
2. ' nh v các t p: Ch+
nén.
n th m c (ho$c *
a) ch a t p cài $t DB2 ã
c gi i
3. Ch y DB2 Setup Launchpad: kh i ch y DB2 Setup Launchpad b3ng cách nh p
ôi t p setup.exe. Trên Linux, ch y l nh db2setup quy n root. T&
Laundpad, nh n vào tùy ch n Install Product phía bên trái c!a s*.
4. Ch y cài $t DB2 theo h ng d%n t&ng b c: Cài $t DB2 t&ng b c ti n hành
ki m tra t t c các yêu c u h th ng
c tìm th y n u có b t k4 m t cài $t DB2
ang t n t i. Nh n vào Install New
b t u t&ng b c, sau ó nh n Next.
5. Xem l i các i u kho n ràng bu c: ' c và ch p nh n các i u kho n trong gi y
phép s! d ng (ch n “I Accept ....” ) và nh n vào nút Next.
6. L a ch n ki u cài $t: trong bài t p này, l a ch n tùy ch n Typical ( ây là m$c
nh). Tùy ch n Compact th c thi các cài $t c b n, trong khi tùy ch n Custom
cho phép b n tùy ch+nh các tính n ng mà b n mu n cài $t. Nh n nút Next
ti p
t c.
7. Ch n cài $t, t o t p biên b n, ho$c c hai: V i m$c nh vì v y DB2
và c6ng t o ra t p biên b n. Nh n nút Next
ti p t c.
c cài $t,
8. Ch n th m c cài $t: Màn hình cho phép b n tùy ch+nh * a và th m c n i mà
mã DB2
c cài $t vào h th ng c a b n. ' m b o dung l ng
cài $t
DB2. S! d ng thi p l p * a và th m c m$c nh cho ví d này (xem bên d i):
Drive:
C:
Directory:
Nh n vào nút Next
C:\Program Files\IBM\SQLLIB
ti p t c
52
Nh p môn H qu n tr c s d li u DB2
9. Nh p vào thông tin ng i dùng: M t khi DB2 Express-C ã
c cài $t, nh ng
ti n trình DB2 s)
c ch y d i t cách là d ch v h th ng. Nh ng d ch v này
yêu c u ph i
c ng nh p b3ng tài kho n h th ng
có th th c hi n. Trong
môi tr ng Windows b n s! d ng tài kho n m$c nh
c
ngh là db2admin.
N u tài kho n này ch a t n t i, DB2 s) t o ra cho b n. B n c6ng có th s! d ng
tài kho n s"n có trong h th ng, nh ng tài kho n này ph i là tài kho n có quy n
qu n tr . Chúng tôi
ngh s! d ng m$c nh. ' m b o vi c xác nh m t kh#u
cho tài kho n. Trên Linux s! d ng ID ng i dùng m$c nh db2inst1 cho th
hi n riêng, db2fenc1 cho ng i dùng “fenced”, và dasusr1 cho ng i dùng
qu n tr máy ch DB2. Nh n Next
ti p t c.
10. C u hình th hi n DB2: M t th hi n DB2 có th
c xem nh là kho ch a c s
d li u. M t th hi n ph i t n t i tr c khi b t k4 m t c s d li u nào
ct o
ra trong nó. Trong quá trình cài $t trên Windows, m t th hi n
c g i là DB2
ct
ng t o ra. Trong môi tr ng Linux, th hi n m$c nh là db2inst1.
Chúng ta s) gi i thích chi ti t các th hi n này các ch ng sau c a quy n sách
này.
M$c nh, th hi n DB2
c c u hình
l ng nghe k t n i TCP/IP trên c*ng
50000. C hai giao th c và c*ng có th
c thay *i b3ng cách nh n vào nút
Configure. Chúng ta s! d ng thi t l p m$c nh trong ví d này. Nh n vào nút Next
ti p t c.
11. B t u cài $t: Xem l i t*ng k t quá trình cài $t
tr c. Nh n nút Finish
b t u sao chép các t p
th c thi m t vài ti n tình kh i t o c u hình.
c l a ch n các tùy ch+nh
n n i cài $t. DB2 c6ng s)
12. First Steps: Sau khi quá trình cài $t
c hoàn thành, m t ti n ích kh i ch y
khác,
c g i là First Steps,
c hi n th . First Steps c6ng có th
cb t
sau v i l nh db2fs.
u
13. C s d li u SAMPLE là m t c s d li u mà b n có th s! d ng v i m c ích
ki m tra. Nó có th
c t o t& First Steps b3ng cách nh n vào nút Create
SAMPLE Database, nh n vào nút ó, và m t c!a s*
c th hi n bên d i. L a
ch n tùy ch n th hai (XML and SQL object and data). C s d li u SAMPLE
c6ng có th
c t o ra b3ng cách s! d ng l nh db2sampl –xml –sql.
Ch
ng 3 - Cài $t DB2
53
14. Sau vài phút, b n có th xác nh n c s d li u ã
c t o. M công c DB2
Control Center l a ch n: Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) ->
General Administration Tools -> Control Center. B n c6ng có th b t u Control
Center b3ng l nh db2cc. L n u tiên b n b t u Control Center, m t c!a s*
pop-up s) h/i b n l a ch n hi n th Control Center mà b n mu n. Chúng tôi
ngh ch n m$c nh (Advanced), và nh n OK. Bên trái c!a s*, th m c t t c các
c s d li u. N u b n không tìm th y c s d li u SAMPLE trong th m c ó,
ch c ch n b n làm t i l i hi n th b3ng cách ch n View -> Refresh.
15. Kh i ng l i máy: ây là b c không b t bu c. M$c dù b c này không áng k
trong tài li u h ng d%n cài $t DB2 chính th c, chúng tôi
ngh nên kh i ng
l i h th ng (n u có th , ít nh t trên Windows)
m b o r3ng t t c các ti n
trình kh i ng thành công và
gi i phóng tài nguyên c a h th ng ã b chi m
d ng trong quá trình cài $t.
16. Ki m tra l i quá trình cài $t DB2 b3ng cách s! d ng các l nh: db2level,
db2licm, và db2val. T& Windows Start Menu, m DB2 Command Windows
54
Nh p môn H qu n tr c s d li u DB2
theo sau: Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) -> Command
Line Tools -> Command Window. T& Command Window (ho$c shell trong Linux)
gõ db2level và ki m tra k t qu xu t ra màn hình. Th c hi n t ng t cho l nh
db2licm –l. Ti p theo, s! d ng l nh db2val. N u db2val hoàn thành thành
công, cài $t c a b n ã th c hi n y !. N u có l i, xem l i t p nh t ký xác
nh thông i p l i chi ti t. K t qu xu t ra màn hình ph i t ng t nh
c th
hi n hình 3.8 ph n trên.
Ch
ng 4 – Môi tr
ng c a DB2
4
Môi tr ng c a DB2 bao g m các i t ng c s d li u khác nhau và các t p c u hình
t ng ng. Hình 4.1 cung c p m t cái nhìn t*ng quát v các l nh khác nhau và các công
c
làm vi c v i DB2, và nó c6ng ánh d u môi tr ng c a DB2 vùng bên ph i. 'ó là
khu v c tr ng tâm c a ch ng này. Vùng bên trái c a hình v) th hi n các l nh DB2 khác
nhau: SQL, SQL/XML và các câu XQuery
c s! d ng
t ng tác v i máy ch d li u
DB2. A ph n gi a c a hình v) th hi n tên c a m t vài công c
c s! d ng t ng tác
v i máy ch d li u DB2.
Hình 4.1 – Hình v; t:ng quát DB2: Môi tr
ng c a DB2
Chú ý:
Xem video trình di n v môi tr
ng DB2 t i các liên k t sau:
56
Nh p môn H qu n tr c s d li u DB2
' mô t môi tr
ng c a DB2, chúng ta s) t&ng b
c mô t t&ng thành ph n.
Hình 4.2 bi u di n s th hi n l i c a máy ch d li u DB2 sau khi cài $t DB2 Express-C
9.7.
Hình 4.2 – Th( hi n l2i máy ch DB2 sau khi cài
t DB2 Express-C 9.7
Nh là m t ph n cài $t trong Windows, m t th hi n m$c nh
c g i là DB2 (dbinst1
trên Linux)
c t o ra. 'i u này
c th hi n l i b i khung màu xanh bên trái hình 4.3.
M t th hi n n gi n là m t môi tr ng c l p n i mà ng d ng có th ch y, và c s
d li u có th
c t o. B n có th t o ra nhi u th hi n trên máy ch d li u, và s! d ng
chúng v i nh ng m c ích khác nhau. Ví d , m t th hi n có th
c s! d ng
gi các
c s d li u cho các s n ph#m s! d ng, m t th hi n khác có th
c s! d ng
ki m
tra môi tr ng c s d li u, và m t th hi n khác dành cho vi c phát tri n môi tr ng.
T t c các th hi n này u c l p; vì v y i u hành th c thi trên m t th hi n s) không
nh h ng n các th hi n khác.
Ch
Hình 4.3 - Th( hi n DB2 m c 0nh
ng 4 – Môi tr
ng c a DB2
57
!c t2o
' t o m t th hi n DB2 m i, s! d ng l nh db2icrt <tên th hi n>, ph n <tên
th hi n>
c thay b3ng m t tên bao g m 8 ký t . Ví d ,
t o th hi n myinst, chúng
ta s! d ng l nh: db2icrt myinst.
Hình 4.4 bi u di n m t th hi n m i
bi t vùng bên ph i.
c g i là myinst trong m t khung màu xanh riêng
Hình 4.4 – Máy ch DB2 v i hai th( hi n
Chú ý là m i th hi n có m t c*ng duy nh t. 'i u này giúp cho vi c phân bi t gi a các th
hi n khi b n mu n k t n i n m t c s d li u n m t th hi n
c
a ra t& máy
khách t& xa s! d ng TCP/IP. N u b n s! d ng DB2 Command Windows, b n có th th c
58
Nh p môn H qu n tr c s d li u DB2
hi n b t k4 th hi n
Windows:
kích ho t nó b3ng cách s! d ng l nh i u hành h th ng trên
set db2instance=myinst
Chú ý là không nên $t b t k4 kho n tr ng tr c và sau d u b3ng (=). Trong ví d này, bây
gi n u b n t o ra m t c s d li u t& Command Window, nó s)
c t o trong th hi n
myinst.
' li t kê t t c các th hi n trong h th ng, th c hi n l nh:
db2ilist
Trong Linux, m t th hi
chuy n *i gi a các th
dùng này
c bi t nh
hi n c a ng i dùng c
n ph i trùng kh p v i ng i dùng h i u hành Linux, vì v y
hi n b n có th th c hi n chuy n *i gi a các ng i dùng. Ng i
là m t th hi n riêng. B n có th
ng xu t và ng nh p v i th
a th hi n khác, ho$c s! d ng l nh su.
B ng 4.1 li t kê m t vài l nh h u ích c a c p
th hi n (Instance).
L nh
Mô t
db2start
Kh i
db2stop
D&ng m t th hi n hi n t i
db2icrt
T o m t th hi n m i
db2idrop
Xóa 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 ang ho t
ng m t th hi n hi n t i
B ng 4.1 – Các l nh DB2 h#u ích t2i c p
ng
th( hi n
Các l nh trên có th
c thay th b3ng cách th c thi thông qua Control Center. Ví d ,
trong Control Center, n u b n m r ng th m c Instances và nh n chu t ph i lên th hi n
b n mu n, b n có th ch n Start, b3ng v i vi c s! d ng l nh db2start t& Db2
Command Window, ho$c Stop, b3ng v i vi c s! d ng l nh db2stop nh hình 4.5.
Ch
ng 4 – Môi tr
ng c a DB2
59
Hình 4.5 – Các l nh Instance t1 Control Center
' t o c s d li u trên m t th hi n ang ho t
Command Windows:
ng, s! d ng l nh này t& DB2
db2 create database mydb1
' li t k t t c các c s d li u
c t o, th c hi n l nh:
db2 list db directory
Bên trong b t k4 th hi n nào, b n có th t o ra nhi u c s d li u. M t c s d li u là
m t t p h p các i t ng nh b ng (tables), khung nhìn (views), ch+ m c (indexes),… C
s d li u là các
nv
c l p, vì v y, không th chia [email protected] các i t ng v i các c s d
li u khác. Hình 4.6 bi u di n vi c m t c s d li u MYDB1
c t o bên trong th hi n
(instance) DB2.
60
Nh p môn H qu n tr c s d li u DB2
Hình 4.6 – C
s" d# li u MYDB1
!c t2o trong th( hi n DB2
B ng 4.2 Bi u di n vài l nh b n có th s d ng t i c p
L nh/L nh SQL
c s d li u (database).
Mô t
db2 create database
T o m t c s d li u m i
db2 drop database
Xóa m t c s d li u
db2 connect to <database_name>
K tn i
db2 create table/create view/create index
Các câu l nh SQL
t o t&ng
t ng table, views, và indexes
B ng 4.2 – Các l nh và câu l nh SQL t2i c p
c
n m t c s d li u
i
s" d# li u
N u chúng ta mu n t o m t c s d li u khác có cùng tên (MYDB1) nh ng trong th hi n
myinst, các l nh sau t& DB2 Command Windows s)
c s! d ng:
db2
set
db2
set
list db directory
db2instance=myinst
create database mydb1
db2instance=db2
Ch
Hình 4.7 th hi n m t c s d li u MYDB1 m i
Hình 4.7 – C
s" d# li u MYDB1
ng 4 – Môi tr
ng c a DB2
61
c t o trong th hi n myinst.
!c t2o trong th( hi n myinst
Khi m t c s d li u
c t o, có m t vài i t ng
c t o ra m$c nh: không gian
b ng (table spaces), các b ng (tables), m t vùng nh
m (buffer pool) và các t p nh t ký.
Vi c t o các i t ng các th i i m khác nhau, ó là t i sao l nh create database
yêu c u m t vài phút
x! lý. Hình 4.8 th hi n 3 không gian b ng
c t o m$c nh
bên trái c a hình. Không gian b ng s)
c th o lu n chi ti t h n Ch ng 6, ki n trúc
DB2, nh ng bây gi , tìm hi u không gian b ng nh là các t ng logic gi a các b ng logic
và tài nguyên v t lý, nh là các a và b nh .
62
Nh p môn H qu n tr c s d li u DB2
Hình 4.8 – Không gian b ng
!c t2o m c 0nh khi m t c s" d# li u
!c t2o
Không gian b ng SYSCATSPACE ch a các b ng System Catalog. System Catalog
c
g i là t
i n d li u trong h qu n tr c s d li u. Nó v c b n thì ch a các thông tin
h th ng mà không th ch+nh s!a ho$c xóa b/, nói cách khác c s d li u s) không làm
vi c chính xác. Không gian b ng TEMPSPACE1
c s! d ng b i DB2 khi nó c n thi t
thêm vào không gian n các ho t ng khác nh là s p x p. Không gian USERSPACE1 thì
thông th ng
c s! d ng
l u tr các b ng c s d li u ng i dùng n u không có
không gian b ng xác nh khi t o ra m t b ng.
B n c6ng có th t o riêng cho b n các không gian b ng s! d ng câu l nh CREATE
TABLESPACE. Hình 4.9 th hi n không gian b ng MYTBLS1
c t o bên trong c
li u MYDB1 trên th hi n DB2. Khi b n t o m t không gian b ng, b n xác nh các
b nh (buffer pool)
s! d ng. Vì v y, n u b n có m t b ng “nóng”, ó là, m t b
c s! d ng r t th ng xuyên, b n có th c p phát nhanh nh t các a và b nh
cách gán vào m t không gian b ng v i các mô t này.
Hình 4.9, chúng tôi ch+ ra các i t ng khác
IBMDEFAULTBP, và các t p nh t ký.
c t o m$c
nh: m t buffer pool
s d
a và
ng
b3ng
cg i
M t buffer pool c n b n là m t b nh cache
c s! d ng b i c s d li u, không ch+ là
thông tin
c l u tr trong các a cho c s d li u, nh ng trong khi b n ang làm vi c
trên c s d li u, các t p nh t ký l u tr t t c ho t ng th c thi trên d li u. Hi u các
t p nh t ký nh là các t p t m
ct
ng l u khi các ho t ng
c th c thi. Các
nh t ký
c th o lu n chi ti t h n Ch ng 11, Sao l u và Ph c h i.
Ch
Hình 4.9 – Buffer pool và nh)t ký
ng 4 – Môi tr
ng c a DB2
63
!c t2o m c 0nh
A ph n tr c chúng ta ã th o lu n các môi tr ng c l p, và vì v y, m t c s d li u
v i cùng m t tên có th
c t o trong m t vài th hi n. Gi ng nh các th hi n, c s
d li u c6ng là các
nv
c l p, vì v y, các i t ng trong c s d li u không có
quan h
n các i t ng trong c s d li u khác. Hình 4.10 th hi n m t không gian
b ng mytbls1 bên trong c hai c s d li u MYDB1 và c s d li u SAMPLE, bên trong
th hi n DB2. 'i u này h p lý b i vì c s d li u là các
nv
c l p. Chú ý là hình 4.10
không th hi n các i t ng m$c nh khác c a hai c s d li u SAMPLE do ch v)
trong hình b h n ch .
64
Nh p môn H qu n tr c s d li u DB2
Hình 4.10 – Các không gian b ng cùng tên trong các c s" d# li u khác nhau
Khi b n ã t o ra m t không gian b ng, b n có th t o các i t ng bên trong không gian
b ng nh là các tables, views và indexes. 'i u này
c minh h a trong hình 4.11.
Hình 4.11 – Các Tables, views, indexes
!c t2o bên trong không gian b ng
4.1 C u hình DB2
Các tham s DB2 có th
c c u hình b3ng cách s! d ng công c Configuration Advisor
Tool (công c tr giúp c u hình). ' có th vào
c công c tr giúp c u hình t& Control
Center (trung tâm i u khi n), nh p chu t ph i lên m t c s d li u b t kì và ch n
Configuration Advisor. D a vào nh ng thông tin mà b n cung c p v tài nguyên và kh i
l ng công vi c c a b n, công c h tr c u hình s) cung c p m t danh sách các tham s
DB2 nên
c thay *i v i các giá tr phù h p cho t&ng tham s . N u b n mu n hi u rõ
h n v c u hình trên DB2, hãy c ti p nh ng ph n sau; v m$c khác, b n c n s! d ng
công c Configuration Advisor và nh v y s) giúp b n thành th o h n khi làm vi c v i
DB2!
M t máy ch DB2 có th
Các bi n môi tr
c c u hình
4c p
riêng bi t:
ng
T p c u hình qu n tr c s d li u (dbm cfg)
T p c u hình c s d li u (db cfg)
' ng ký lý l ch DB2 (profile)
'i u này
c mô t
hình 4.12. Trong hình này, hãy chú ý t i bên trong c a m i hình
ch nh t. Nh là, các bi n môi tr ng
c thi t l p h i u hành c a máy ch , trong
Ch
khi ó các tham s t p c u hình qu n tr c s d li u
ng ký lý l ch DB2 (DB2 profile)
c thi t l p ho$c h
(instance).
ng 4 – Môi tr
ng c a DB2
65
c thi t l p c s d li u, và
i u hành ho$c l p th hi n
Hình 4.12 – C u hình DB2
4.1.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 m c h i u hành. M t bi n môi tr ng
chính là DB2INSTANCE. Bi n này ch+ ra th hi n ang ho t ng mà b n ang làm vi c
trên nó. Và còn
cho các l nh DB2 c a b n áp d ng trên ó. Ví d ,
thi t l p th hi n
cho myinst trong Windows, b n c n th c thi l nh h i u hành sau:
set db2instance=myinst
4.1.2 T p c u hình qu n tr0 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 có nh h ng n th
hi n và t t c các c s d li u ch a bên trong. T p c u hình qu n tr c s d li u có th
c xem hay s!a *i b3ng cách s! d ng dòng l nh, ho$c thông qua DB2 Control Center
(trung tâm i u khi n DB2).
' làm vi c v i dbm cfg t& Control Center, b n ch n i t ng th hi n t& th m c th
hi n c a trung tâm i u khi n, nh p chu t ph i
hi n ra trình n và sau ó ch n
Configure Parameters. Minh h a trong hình 4.13.
66
Nh p môn H qu n tr c s d li u DB2
Hình 4.13 – C u hình dbm cfg t1 Control Center (trung tâm i u khi(n).
Sau khi ch n Configure Parameters, m t màn hình s) hi n th ra nh trong hình 4.14 v i
danh sách các tham s dbm cfg.
Ch
ng 4 – Môi tr
ng c a DB2
67
Hình 4.14 – Danh sách các tham s dbm cfg
Ph n l n là các tham s
ng, ngh a là các thay *i s) có hi u l c ngay l p t c; tuy nhiên,
c6ng có các tham s khi thay *i có th yêu c u kh i ng l i th hi n m i có hi u l c. T&
Command Line (dòng l nh), có th th c hi n kh i ng l i b3ng cách s! d ng 2 l nh
db2stop và db2start.
Tr c khi m t th hi n ng&ng, thì t t c các trình ng d ng ph i
c ng t k t n i. N u
b n mu n d&ng th hi n ngay l p t c b n có th s! d ng l nh db2stop force.
M t th hi n c6ng có th
cách nh p chu t lên i t
c d&ng thông qua Control Center (trung tâm i u khi n) b3ng
ng th hi n và ch n Stop ho$c Start.
B ng 4.3 cung c p m t s câu l nh h u d ng
qu n lý dbm cfg t& Command Line.
L nh
Mô t
db2 get dbm cfg
L y thông tin v dbm cfg
db2 update dbm cfg
using <parameter_name> <value>
B ng 4.3 – Các l nh ( thao tác v i dbm cfg
C p nh p giá tr cho m t tham s c a dbm cfg
68
Nh p môn H qu n tr c s d li u DB2
4.1.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 riêng bi t. T p c u hình c s d li u có th
c xem ho$c thay *i b i các dòng
l nh, ho$c thông qua DB2 Control Center (trung tâm i u khi n c a DB2).
' làm vi c v i db cfg t& Control Center, b n ch n i t ng c s d li u t& th m c c
s d li u c a Control Center, nh p chu t ph i
hi n ra trình
n và ch n Configure
Parameters. Minh h a trong hình 4.15.
Hình 4.15 – C u hình cho db cfg t1 Control Center (trung tâm i u khi(n)
Sau khi ch n Configure Parameters, màn hình hi n ra nh trong hình 4.16 v i danh sách
các tham s c a db cfg.
Ch
ng 4 – Môi tr
ng c a DB2
69
Hình 4.16 – C u hình c s" d# li u db cfg
B ng 4.4 cung c p m t s câu l nh h u d ng
L nh
qu n lý db cfg t& Command Line.
Mô t
get db cfg for <database_name>
L y thông tin v db cfg c a c s d
li u mong
update db cfg for <database_name>
using <parameter_name> <value>
C p nh p giá tr cho m t tham s c a
db cfg
B ng 4.4 – Các l nh ( thao tác v i db cfg
4.1.4
ng ký lý l0ch DB2
Các bi n ng ký lý l ch DB2 g m các tham s có th
c $c t n n t ng ho$c có th
c thi t l p toàn c c (tác ng n t t c các th hi n), ho$c c p
th hi n (tác
ng t&ng th hi n riêng bi t).
B ng 4.5 cung c p m t s l nh h u d ng
L nh
thao tác v i các bi n
ng ký lý l ch DB2.
Mô t
db2set -all
Li t kê t t c các bi n
ang
c thi t l p
ng ký lý l ch DB2 hi n
db2set –lr
Li t kê t t c các bi n
ng ký lý l ch DB2
70
Nh p môn H qu n tr c s d li u DB2
db2set <parameter>=<value>
B ng 4.5 – Các l nh ( thao tác v i
B ng 4.6 M t s bi n
Bi n
ng ký
Gán m t giá tr cho m t tham s
ng ký lý l0ch DB2.
ng ký lý l ch hay dùng nh t
Mô t
DB2COMM
Ch+ nh nh ng qu n tr giao ti p
c s d li u.
c kh i
ng cùng v i qu n tr
DB2_EXTSECURITY
Trong Windows, ng n ch$n s truy c p trái phép t i DB2 b3ng
cách khóa t p h th ng DB2
L u tr tên c a b n sao hi n ang dùng c a DB2.
DB2_COPY_NAME
B ng 4.6 – Các bi n
' chuy n sang m t b n sao DB2 ã cài khác, th c thi l nh
installpath\bin\db2envar.bat. Bi n này không th
s! d ng cho m c ích này.
ng ký lý l0ch DB2 th
c
ng dùng.
Ví d ,
cho phép giao ti p s! d ng giao th cTCPIP, thi t l p bi n
thành TCPIP nh sau:
ng ký DB2COMM
db2set db2comm=tcpip
4.2 Máy ch qu n tr0 DB2 (deprecated)
Máy ch qu n tr DB2 (The DB2 Administration Server-DAS) là m t ti n trình ng m ch y
t i máy ch DB2, nó cho phép các máy khách t& xa có th qu n tr máy ch DB2. DAS là
c n thi t khi s! d ng b công c
h a DB2, ho$c c c b ho$c t& xa. A m i máy tính ch+
có duy nh t m t DAS nh trong hình 4.16.
Ch
ng 4 – Môi tr
ng c a DB2
71
Hình 4.16 –Máy ch qu n tr0 DB2 (DAS)The DB2 Administration Server (DAS)
4.3 Tóm t-t
Trong ch ng này, chúng ta ã tìm hi u v môi tr ng c a DB2, bao g m khái ni m và
vi c t o thành c a các th hi n và c s d li u, cùng v i các l nh th ng g$p c a
chúng. T& ó, chúng ta xem xét các m$t chính c a th hi n, g m các không gian b ng:
ba ki u không gian b ng có giá tr , và các b ng, các cách nhìn, và các ch+ m c có th
c t o bên trong không gian b ng; b
m (bufferpools); và các b n ghi.
Sau cùng, chúng ta ã th o lu n v c u trúc c u hình cho DB2, và làm th nào thay *i
nó b n c p
khác nhau, b n c p
ó là: các bi n môi tr ng; t p c u hình qu n tr
c s d li u; t p c u hình c s d li u; và ng ký lý l ch DB2.
4.4 Bài t)p
Các bài t p trong ph n này s) giúp b n hi u h n v các khái ni m ã
trong ch ng này, và s) gi i thi u cho b n m t s công c c a DB2.
c th o lu n
Ph n 1: T2o 1 c s" d# li u m i b<ng cách dùng Create Database Wizard
Trong ph n này, b n s) t o 1 c s d li u s! d ng Create Database Wizard
Center (trung tâm i u khi n).
Control
Th t c
1. T& khung hi n th các i t ng t i trung tâm i u khi n bên trái, nh p chu t
ph i lên th m c All Databases và ch n Create Database -> With Automatic
Maintenance s) hi n lên Create Database Wizard.
72
Nh p môn H qu n tr c s d li u DB2
2. Ch+ ra tên c s d li u và v trí trong trang Name c a wizard. S! d ng các giá tr
cho d i ây:
Database Name:
Default Drive (Windows):
Default Path: (Linux):
Alias:
Comment:
Nh n nút Next
EXPRESS
C:
/home/db2inst1
N u
tr ng m c
nh là EXPRESS
ây là tùy ch n, có th b tr ng
chuy n sang trang ti p c a wizard.
L u ý: Trên Windows, m$c nh b n ch+ có th t o m t c s d li u trên m t * a, không
ch+ trên
ng d%n. N u b n mu n t o trên
ng d%n, thì ph i thi t l p bi n ng ký
DB2_CREATE_DB_ON_PATH
3. Trong trang Storage, không nên thay *i b t c gì, và nh n Next.
4. Trong trang Maintenance,
offline …), và nh n Next.
nguyên s l a ch n m$c
nh (Yes, I can specify an
5. Xác nh rõ c!a s* th i gian b o trì ch
ngo i tuy n (offline) trong trang
Timing c a wizard. C u hình cho c!a s* kh i ng lúc 1 gi sáng m i ngày th
hai t i th n m trong m t kho ng 6 gi . Nh n nút Next.
6. C u hình thông báo trên trang Mail Server c a trình wizard. DB2 có th g!i tin
nh n t i ai ó m t cách t
ng, ho$c g!i m t th
i n t! n u m t v n
hay
i u ki n không t t
c phát hi n. N u b n mu n c u hình cho i u này, b n c n
ch+ ra m t máy ch SMTP có giá tr cho DB2 trong vi c g!i th . Trong bài t p này
chúng ta không có m t máy ch SMTP nào, vì v y hãy
tr ng trang này và nh n
Next.
Xem l i các tùy ch n mà b n ã ch n trên trang Summary c a trình wizard. Nh n nút
Finish
b t u quá trình t o c s d li u. Vi c t o c s d li u th ng m t m t vài
phút, trong kho ng th i gian này m t ch+ s ti n
c hi n th .
Ph n 2: Làm vi c v i các th.c th(, c s" d# li u và c u hình
Trong ph n này, b n s) t o m t th hi n m i, m t c s d li u trên th hi n ó, và thay
*i các tham s c u hình trên máy ch trong Windows. B n có th th c hi n t& trung tâm
i u khi n (Control Center) ho$c t& c!a s* l nh DB2 (DB2 Command Window). Chúng tôi
s) h ng d%n cho b n b3ng cách s! d ng c!a s* l nh DB2.
Th t c
1. M c!a s* l nh DB2 b3ng cách ch n Start -> Programs -> IBM DB2 ->
DB2COPY1 (Default) -> Command Line Tools -> Command Window. Ngoài ra, có
Ch
m t cách ng n h n
db2cmd.
kh i
ng 4 – Môi tr
ng c a DB2
73
ng c!a s* l nh DB2 là ch n Start -> Run, và gõ
2. T& c!a s* l nh DB2, t o m t th hi n m i v i tên newinst
db2icrt newinst
3. Chuy n sang th c th newinst và ki m tra nó th c s là th hi n hi n t i c a
b n. Sau ó kh i ng nó.
set db2instance=newinst (Không có các kho ng tr ng tr
c ho$c sau d u “=”!)
db2 get instance ('i u này ki m tra là th hi n newinst th hi n hi n t i)
db2start
4. T o m t c s d li u có tên newdb v i các giá tr m$c nh trong th hi n
newinst. 'i u này s) t n vài phút nh vi c t o DB2 bên trong các i t ng
trong c s d li u và cung c p m t s c u hình kh i t o.
db2 create database newdb
5. K t n i và ng t k t n i t& c s d li u m i newdb sau ó h y nó.
db2 connect to newdb
db2 terminate
db2 drop db newdb
6. D&ng th hi n hi n t i newinst
db2stop
7. Li t kê t t c các th hi n trong máy ch c a b n
db2ilist
8. Chuy n *i sang th hi n DB2 và ch c ch n r3ng ã chuy n
set db2instance=db2
db2 get instance
9. H y th hi n newinst
db2idrop newinst
10. Tìm giá tr hi n t i c a tham s FEDERATED c a dbm cfg. Nó nên có giá tr m$c
nh là NO
db2 get dbm cfg
Trong h
i u hành Linux b n có th làm nh sau: db2 get dbm cfg | grep FEDERATED
74
Nh p môn H qu n tr c s d li u DB2
11. Thay *i giá tr c a tham s FEDERATED c a dbm cfg thành YES và ki m tra thay
*i ã
c th c hi n.
db2 update dbm cfg using FEDERATED YES
Vì FEDERATED không ph i là tham s
ng, nên nh ng thay *i c a nó s) không
có hi u l c cho n khi b n d&ng và kh i ng l i th hi n. Tuy nhiên,
d&ng
m t th hi n, b n ph i m b o r3ng không có b t c k t n i nào. M t cách m
b o i u này là th c thi nh ng l nh:
db2 force applications all
db2 terminate
Kh i
ng l i th hi n, và ki m tra giá tr m i c a tham s FEDERATED:
db2stop
db2start
db2 get dbm cfg
12. K t n i c s d li u SAMPLE v i nh danh (userID) và m t kh#u (password) mà
b n ang s! d ng trên h i u hành
db2 connect to sample user <userID> using <password>
13. Xem l i s
ng d ng ang ch y trên th hi n hi n t i c a b n
db2 list applications
14. M m t c!a s* l nh DB2 khác và k t n i m t l n n a t i c s d li u SAMPLE
mà không ch+ rõ nh danh và m t kh#u. Sau ó xem l i b n có bao nhiêu k t n i.
db2 connect to sample
db2 list applications
15. T t nhanh m t k t n i t& c!a s* l nh DB2. 'i u này cho ta m t ví d làm th nào
có th k t thúc nhanh chóng công vi c c a m t ng i dùng (ng i mà ang
truy c p tài nguyên h th ng)
db2 force application (<application handle for db2bp.exe>)
X! lý các ng d ng là m t s hay m t ‘x! lý’ c a ng d ng mà b n mu n c 5ng
b c. B n s) t
c s này t& u ra c a dòng l nh db2 list
applications. Bng d ng db2bp.exe bi u di n cho c!a s* l nh DB2.
16. Ki m tra k t n i c a m t trong các c!a s* DB2 ã b t t c 5ng b c. N u b n
không bi t r3ng k t n i ó là c a cái nào trong hai c!a s* l nh DB2 b t t c 5ng
b c, th c hi n l nh này trên c hai.
db2 select * from staff
Ch
ng 4 – Môi tr
ng c a DB2
75
C!a s* l nh DB2 b t t c 5ng b c s) tr v m t thông báo l i v i mã SQL1224N.
C!a s* l nh DB2 khác s) tr v cho b n k t qu
u ra c a câu truy v n.
17. H y và t o l i DAS (máy ch qu n tr DB2), và kh i
db2admin
db2admin
db2admin
db2admin
ng nó.
stop
drop
create
start
18. L y và xem giá tr hi n t i c a bi n
ng ký DB2COMM
db2set –all
19. B/ thi t l p bi n
ng ký DB2COMM và ki m tra nó ã th c hi n ch a
db2set db2comm=
db2stop
(B n s) nh n v m t l i trên db2stop n u b n có k t n i nào ó. B n nên làm gì?
Hãy tham kh o b c ti p theo
gi i quy t v n
này)
db2start
db2set –all
20. Thi t l p bi n ng kí DB2 DB2COMM thành tcpip và npipe trong th hi n c a
b n và ki m tra l i giá tr m i
db2set db2comm=tcpip,npipe
db2stop
db2start
db2set -all
21. Ki m tra giá tr hi n t i c a tham s LOGSECOND c a db cfg, và sau ó thay *i
giá tr c a nó thành 5 và ki m tra l i giá tr m i
db2
db2
db2
db2
connect to sample
get db cfg
update db cfg using LOGSECOND 5
get db cfg
Ch
ng 5 – Các công c c a DB2
5
Trong ch ng này, chúng tôi s) trình bày v m t vài công c mà b n có th s! d ng v i
DB2. ' i v i DB2 9.7, h u h t các công c
c mô t trong ch ng này hi n không còn
c ánh giá cao, nên m$c dù chúng v%n
c h tr trong phiên b n này nh ng s)
không
c phát tri n thêm, và có th s) không còn
c bao g m trong nh ng s n
ph#m trong t ng lai. IBM Data Studio là s thay th cho nh ng công c này.
Vòng tròn / trong Hình 5.1 bi u th các m c
c chú tr ng trong ch
Hình 5.1 – Hình nh t:ng quan v DB2: Các công c c a DB2
ng này.
Ch
ng 5 – Các công c c a DB2
77
Chú ý:
Xem các video trình bày v các công c c a DB2 và các li t kê mã t i các liên k t sau:
http://www.channeldb2.com/video/video/show?id=807741:Video:4202
http://www.channeldb2.com/video/video/show?id=807741:Video:4182
Hình 5.2 li t kê t t c các công c c a DB2 có th truy xu t t& m c IBM DB2 trên thanh
Start Menu. H u h t nh ng công c này là gi ng nhau trên c Linux và Windows.
Hình 5.2 – Các công c c a DB2 trong m c IBM DB2 trên thanh Start menu
B ng 5.1 Cung c p danh sách các l nh có th
c s! d ng
kh i ng h u h t các
công c ph* bi n trên c Linux và Window. B ng này còn li t kê ra nh ng công c nào v%n
c h tr
phiên b n DB2 9.7 nh ng s) b ng&ng h tr
các trong các phiên b n sau
này.
Tên công c
L nh
Ng1ng h3 tr! " các
phiên b n sau này?
Command Editor
db2ce
Ng&ng
Command Line processor
db2
Không
Command Window (Only on
Windows platforms)
db2cmd
Không
Control Center
db2cc
Ng&ng
Task Center
db2tc
Ng&ng
Health Center
db2hc
Ng&ng
78
Nh p môn H qu n tr c s d li u DB2
Configuration Assistant
db2ca
Ng&ng
First Steps
db2fs
Ng&ng
B ng 5.1 – Các l nh dùng ( kh"i
ng các công c c a DB2
5.1 IBM Data Studio
Trong DB2 9.7, IBM Data Studio là công c chính dùng
qu n tr c s d li u, và phát
tri n c s d li u v i DB2. Data Studio là mi n phí. Nó có th ch y trên c Linux và
Window, và là m t ph n c a IBM Integrated Data Management. S phát tri n c a Data
Studio d a trên m t l ch trình, nó không nh t thi t ng b v i các phiên b n c a DB2, tuy
nhiên các s n ph#m s) m t ra s m nh t có th . Ví d , DB2 9.7 và IBM Data Studio 2.2
c phát hành trong cùng m t ngày c a tháng 6 n m 2009.
Hình 5.3 mô t giao di n c a IBM Data Studio.
Hình 5.3 - IBM Data Studio
N u b n ã quen v i Eclipse, b n s) chú ý r3ng Data Studio d a trên Eclipse. V i Data
Studio, b n th ng làm vi c trong c!a s* h ng Data (
c ánh d u góc trên bên
ph i trong hình 5.3). B n c6ng có th chuy n thành h ng Java, n u b n ang phát tri n
m t ch ng trình Java. 'ó là hai khung nhình khác c6ng
c ánh d u trong hình trên:
Data Project Explorer (góc trên bên trái)
Ch
Data Source Explorer (góc d
ng 5 – Các công c c a DB2
79
i bên trái)
Khung nhìn Data Project Explorer
c ng i phát tri n c s d li u dùng
v i mã SQL, XQuery, th t c, UDFs, và các d ch v Web.
làm vi c
Khung nhìn Data Source Explorer
c ng i qu n tr c s d li u s! d ng trong vi c
qu n lý các th hi n c a DB2 và c s d li u. V i vi c s! d ng khung nhìn này b n có
th th c thi h u h t các ch c n ng có s"n tr c ây trong Control Center.
Trong hình, khung nhìn v i tiêu
PROCEDURE1 là m t trình so n th o cho các th t c
c ch n trong Data Project Explorer. Tùy thu c vào thao tác mà b n ang th c thi, trình
so n th o ho$c các c!a s* khác s) xu t hi n, cho phép b n v&a biên t p các o n mã
v&a trình di n các m c khác.
V
Hi
tri
vi
i IBM Data Studio, b n còn có th làm vi c v i các máy ch d li u khác, nh Informix.
n t i, các công ty làm vi c v i nhi u máy ch d li u và có nhi u nhóm qu n tr và phát
n c s d li u nh/ ã có thêm các i u ki n
làm vi c và qu n lý t t c các công
c trên v i ch+ m t công c .
Chú ý:
' bi t thêm chi ti t v Data Studio,
c
c p trong cu n sách mi n phí Nh p môn
Data Studio và là m t ph n trong b sách này. Nó s)
c phát hành vào tháng 10 n m
2009.
5.2 Control Center (deprecated)
Tr
nh
c khi có DB2 9.7, công c ch y u cho vi c qu n tr c s d li u là Control Center,
c mô t trong Hình 5.4.
80
Nh p môn H qu n tr c s d li u DB2
Hình 5.4 - DB2 Control Center
Control Center (Trung tâm i u khi n) là công c tích h p cho phép b n:
Hi n th các h th ng, các th hi n, các c s d li u, các
b n;
it
Kh i t o, thay *i và qu n lý các c s d li u và các
ng d li u;
Ch y các công c
it
ng d li u c a
h a khác c a DB2
Khung phía bên trái cung c p cây phân c p tr c quan c a các i t ng d li u trong m t
ho$c nhi u h th ng c a b n, cung c p các “th m c” cho các B ng, Khung nhìn… Khi
b n nháy kép vào m t th m c (ví d , th m c Tables, nh trong Hình 5.4), khung phía
bên ph i s) li t kê t t c các i t ng liên quan, trong tr ng h p này, t t c các b ng
t ng ng trong c s d li u SAMPLE. N u b n ch n m t b ng ã cho trong khung trên
bên ph i, khung góc d i bên ph i s) cung c p các thông tin chi ti t h n v b ng ó.
Nh n chu t ph i vào các th m c ho$c i t ng khác trong cây ' i t ng s) hi n th ra
th c n có th áp d ng i v i th m c ho$c i t ng
c ch n. Ví d , khi nh n chu t
ph i vào m t th hi n và ch n Configure parameters cho phép b n quan sát và c p nh t
các t p c u hình qu n lý c s d li u. Gi ng nh th , n u b n nh n chu t ph i lên trên
m t C s d li u và ch n Configure parameters, b n có th quan sát và c p nh t các
Ch
ng 5 – Các công c c a DB2
81
t p c u hình cho c s d li u ó. Các thông s môi tr ng DB2 và các thông s c u hình
s)
c th o lu n chi ti t trong Ch ng 5, Môi tr ng DB2.
L n u tiên b n kh i ng Control Center, b n ph i l a ch n ki u hi n th nào
s!
d ng. L a ch n ki u hi n th xác nh các ki u tùy ch n và các i t ng c s d li u
c trình bày. Hình 5.5 hi n th H p tho i l a ch n ki u hi n th c a Control Center.
Hình 5.5 - H p tho2i l.a ch/n ki(u hi(n th0 c a Control Center
Ki u hi n th Basic cung c p các ch c n ng c t lõi c a DB2. Ki u hi n th Advanced cung
c p nhi u tùy ch n và ch c n ng h n. Ki u hi n th Custom cho phép b n tùy ch+nh các
ch c n ng, tùy ch n và i t ng mà b n th y.
' g i l i H p tho i tùy ch n ki u hi n th cho Control Center, ch n Tools -> Customize
Control Center nh trong Hình 5.6.
82
Nh p môn H qu n tr c s d li u DB2
Hình 5.6 – Customizing the Control Center
5.2.1 Kh"i
ng Control Center
Có r t nhi u cách
kh i
Thông qua th c
ng Control Center:
n Start c a Windows
Th c thi l nh db2cc t& d u nh c l nh
Nh n vào bi u t ng Control Center
nào khác c a công c DB2 GUI
trên thanh công c c a b t k4 công c
S! d ng bi u t ng DB2 trong khay h th ng c a Windows nh trong Hình 5.7
(nh n chu t ph i lên bi u t ng DB2 màu xanh lá cây và ch n l nh th c thi là DB2
Control Center)
Hình 5.7 – Kh"i
ng DB2 Control Center t1 khay h th ng c a Windows
Ch
ng 5 – Các công c c a DB2
83
5.3 Nh)p l nh tr.c ti p (deprecated)
S! d ng c!a s* nh p l nh c a DB2, b n có th th c thi các l nh DB2, SQL và các câu
l nh XQuery, phân tích k ho ch th c hi n c a m t câu l nh, và xem ho$c s!a l i k t qu
c a câu truy v n. Hình 5.8 là hình nh c a 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ó.
Hình 5.8 – C a s: nh)p l nh c a DB2
Trong vùng nh p l nh (input area), b n có th nh p nhi u câu l nh cùng lúc, nh ng c n
m b o t t c các câu l nh k t thúc b3ng m t ký t k t thúc. Khi b n n ch n nút th c
hi n (xem hình 5.9, nút u tiên bên trái trên), các câu l nh s)
c th c hi n l n l t.
N u b n ánh d u m t câu l nh nào ó thì ch+ mình câu l nh này s)
c th c hi n. 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 k4 câu l nh SQL
nào. Song, b n c6ng 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
thi t l p m t k t n i t i c s d li u.
Hình 5.9 – C a s: nh)p l nh – Th= l nh
84
Nh p môn H qu n tr c s d li u DB2
5.3.1 Ch2y trình Nh)p l nh tr.c ti p
B n có th kh i
ng C!a s* nh p l nh b3ng m t trong nhi u cách sau ây:
T& Start c a Windows: Start -> Programs -> IBM DB2 -> DB2COPY1 (Default) ->
Command Line Tools -> Command Editor
T& m t c!a s* nh p l nh, gõ db2ce
T& th c
n Tools c a Trung tâm i u khi n
Nhúng trong Trung tâm i u khi 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 t k4 khi nào m t i t ng mà b n có th truy v n
c ch n (c s d
li u, b ng… ), b n có th kh i ng C!a s* nh p l nh b3ng 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.
T& Trung tâm i u khi n, nh n ch n bi u t ng C!a s* nh p l nh
công c c a Trung tâm i u khi n, xem hình 5.10
trên thanh
Hình 5.10 – Bi(u t !ng C a s: nh)p l nh trong Trung tâm i u khi(n
5.3.2 Thêm m t k t n i c s" d# li u
' thêm m t k t n i vào c s d li u, nh n vào nút Add (xem hình 5.8). M t h p tho i
nh trong hình 5.11 s) xu t hi n.
Ch
ng 5 – Các công c c a DB2
85
Hình 5.11 – Thêm m t k t n i c s" d# li u
5.4 Th thu)t tr! giúp SQL (deprecated)
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, lúc này trình tr giúp SQL Assist Wizard - m t công c
s"n có t& trình so n th o dòng l nh (Command Editor) - s) giúp b n. Nh hình 5.12 bên
d i, b n có th tri u g i trình tr giúp SQL Assist Wizard trong Command Editor b3ng
cách nh p chu t vào bi u t ng cu i cùng có ký hi u SQL. L u ý r3ng bi u t ng này s)
ch+ hi n th sau khi b n ã k t n i vào c s d li u.
86
Nh p môn H qu n tr c s d li u DB2
Hình 5.12 – G/i trình tr! giúp SQL Assist Wizard
Hình 5.13 trình bày v trình tr giúp SQL Assist Wizard. Trình tr giúp này r t d s! d ng.
' u tiên, b n ch n ki u c a câu l nh SQL mà b n c n tr giúp (SELECT, INSERT,
UPDATE, DELETE). Tùy theo câu l nh b n ch n, các tùy ch n khác nhau s)
c hi n th
ra. A ph n cu i c a c!a s*, b n s) nhìn th y câu l nh SQL
c hình thành nh th nào
khi b n nh n ch n t&ng tùy ch n khác trong trình tr giúp.
Ch
ng 5 – Các công c c a DB2
87
Hình 5.13 – Trình tr! giúp SQL Assist wizard
5.5 Nút “Show SQL” (deprecated)
H u h t các công c và trình tr giúp
h a GUI c a DB2 cho phép b n xem l i và thao
tác trên câu l nh hi n th i ho$c câu l nh SQL
c t o b3ng cách s! d ng công c ho$c
trình tr giúp. ' xem ph n này, nh p chu t vào nút Show SQL trong công c b n ang
thao tác, nh hình 5.14 và hình 5.15
Hình 5.14 – Nút “Show SQL”
Hình 5.15 –
u ra c a m t ph n trình bày v nút “Show SQL”
88
Nh p môn H qu n tr c s d li u DB2
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 cho vi c h c cú
pháp SQL, c6ng nh
l u l i nh ng câu l nh ho$c dòng l nh vào m t t p
ti n s!
d ng v sau này. B n c6ng có th t o k ch b n b3ng cách s! d ng l i nh ng câu l nh và
dòng l nh ã
c t o ra tr c ó.
5.6 Trung tâm tác v (deprecated)
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 : m t t p h p nh ng ho t ng, nh ch y các l nh DB2, các l nh c a h i u hành, hay
nh ng k ch b n. Các thao tác ti p theo sau ó s)
c th c hi n tùy theo vi c tác v ó
th t b i hay thành công. L y ví d m t tác v sao l u m t c s d li u quan tr ng vào lúc
3 gi sáng. N u tác v này
c th c hi n thành công, m t email s)
c g!i n ng i
qu n tr c s d li u (DBA)
cung c p thông tin này. M$t khác, n u tác v sao l u này
không
c th c hi n thành công, Trung tâm tác v s) g!i thông báo n DBA. Hình 5.16
minh h a Trung tâm tác v .
Hình 5.16 – Trung tâm tác v
Ch
ng 5 – Các công c c a DB2
89
5.6.1 C s" d# li u Tools Catalog (deprecated)
T t c các thông tin chi ti t v các tác v và l ch th c hi n tác v
c l 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. C s d li u này ph i
c t o s"n t& tr c
có th lên l ch cho các tác v . ' t o m t c s d li u Tools
Catalog, b n có th s! d ng câu l nh sau ây:
CREATE TOOLS CATALOG systools CREATE NEW DATABASE toolsdb
Trong ví d
trên, 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. Chúng ta s) nói nhi u h n v các s
(schema) trong Ch ng 8, Làm vi c v i các i t ng d li u.
5.6.1.1 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 b3ng cách nh n vào Tools
-> Task Center, nh minh h a trong hình 5.17. M t cách khác, b n có th kh i ng công
c này t& menu Start c a Windows: Start -> Programs -> IBM DB2 -> DB2COPY1(Default)
-> General Administration Tools -> Task Center.
Hình 5.17 – Kh"i
ng Trung tâm tác v
5.6.1.2 Lên l0ch v i Trung tâm tác v
90
Nh p môn H qu n tr c s d li u DB2
B t k4 lo i k ch b n nào (dù có
c t o b3ng công c có giao di n
h a ng i dùng
GUI c a DB2 hay không) c6ng có th
c lên l ch b3ng cách s! d ng Trung tâm tác v .
Các tác v s)
c ch y vào th i i m
c lên l ch t& h th ng n i mà b n ã t o c s
d li u tools catalog. Chúng tôi khuy n khích b n t mình khám phá Trung tâm tác v .
Vi c t o m t tác v khá n gi n.
5.7 Nh)t ký$- Journal (deprecated)
Công c
h a Journal trong DB2 cung c p cho nhà qu n lý c s d li u m t b nh t ký
v i các ho t ng trên m t m%u n tr c tuy n. Hình 5.18 cho th y thông tin b n có th
thu
c t& Nh t ký.
Hình 5.18 – Nh)t ký
Ch
ng 5 – Các công c c a DB2
91
Lo2i thông tin
Mô t
Task History
(L ch s! tác v )
Database History
(L ch s! c s d li u)
Message
(thông i p)
T t c các tác v theo l ch trình ã x y ra và tình tr ng thành
công c a chúng
B n ghi chép v các ho t ng c a c s d li u ã thi hành
(sao l u, ph c h i, REORGs, v.v.)
L ch s! c a các thông i p
c tr v t& các công c c a DB2.
'i u này r t h u ích n u b n mu n g i l i và so sánh các thông
báo l i c , hay n u b n óng m t h p tho i quá nhanh hay do
b t c#n.
Ch a các thông i p m c h th ng. Các l i nghiêm tr ng
c
ghi nh n
ây.
Notification Log
(Biên b n các thông
báo)
B ng 5.2 – Các thông tin mà Nh)t k$ý cung c p
5.7.1 Kh"i ch2y Journal
B n có th kh i ch y Journal t& Trung tâm i u khi n b3ng cách nh p vào Tools ->
Jounal, nh hình 5.19. Ngoài ra, b n còn có th kh i ng công c này t& th c
nc a
Start c a Windows: Start -> Programs -> IBM DB2 -> DB2COPY1(Default) -> General
Administration Tools -> Journal.
Hình 5.19 - Kh"i ch2y nh)t ký
92
Nh p môn H qu n tr c s d li u DB2
5.8 Health Monitor (deprecated)
Health Monitor là m t ch ng trình ng m
c m$c nh ch y bên trong c ch c a DB2,
nó theo dõi t t c các khía c nh liên quan n s c kh/e c a c s d li u (b nh , không
gian qu n lý, các ho t ng t
ng ã
c xác nh tr c… ). Khi m t s b ph n c a
DB2 ang ho t ng bên ngoài các thông s
c thi t l p, m t ngo i l s)
c g i và
g!i l u ý n nhà qu n tr c s d li u. Có ba lo i tr ng thái c nh báo:
Attention: m t tr ng thái không bình th
ng.
Warning: m t tr ng thái không quan tr ng
ch+ ra r3ng h th ng không
ct i u
n m c c n l u tâm ngay, nh ng có th
Alarm: tr ng thái nghiêm tr ng òi h/i có m t hành
ng t c thì.
Health Center có th b t ho$c t t b3ng cách s! d ng tham s HEALTH_MON c a c u
hình qu n l(c s d li u.
5.8.1 Health Center
Health Center là m t công c
h a dùng
t ng tác v i Health Monitor. Health Center
phân tích các c nh báo v s c kh/e c a h th ng qua các m c th hi n, c s d li u, và
table space. Hình 5.20 cho th y công c Health Center.
Hình 5.20 – Health Center
5.8.1.1 Kh"i ch2y Health Center
B n có th kh i ng Health Center t& Control Center b3ng cách ch n Tools -> Health
Center. 'i u này
c th hi n qua hình 5.21. B n c6ng có th kh i ng công c này t&
Start -> Programs-> IBM DB2 -> DB2COPY1(Default) -> Monitoring Tools -> Health Center
Ch
Hình 5.21 – Kh"i
ng 5 – Các công c c a DB2
ng Health Center
5.8.12 C u hình thông báo c a Health Center
M t khi Health Center ã ch y, b n có th l p c u hình các thông báo s c b3ng cách
nh n chu t trên m c Health Center -> Configure -> Alert Notification nh ch+ ra hình
5.22. Thông báo s c cho phép b n
a thông tin tên ng i, a ch+ th
i n t! ho$c s
máy nh n tin c a ng i nh n thông báo n u có thông báo s c x y ra.
93
94
Nh p môn H qu n tr c s d li u DB2
Hình 5.22 – Thông báo s. c
5.9 Qu n l$í b nh t.
ng
Qu n lí b nh t
ng (Self-tuning memory manager - STMM)
c gi i thi u l n u
tiên trong phiên b n DB2 9 là m t trong s các tính n ng t
ng nh3m
n gi n hóa các
tác v c u hình b nh b3ng cách t
ng thi t l p giá tr vào các tham s
u vào c a
chúng. Khi
c kích ho t, b i u ch+nh s) linh ho t và t
ng phân ph i các vùng nh
còn tr ng n các tác v hi n c n thêm vùng nh c a c s d li u. Trình i u ch+nh b
nh áp ng vi c thay *i c a các kh i công vi c $c thù, b3ng cách hi u ch+nh các giá tr
c a tham s truy n vào c a c u hình b nh và kích th c c a b
m nh3m t i u hóa
hi u su t làm vi c. ' m STMM, ta c p nh t thông s db cfg
SELF_TUNING_MEM sang ON.
M t s các tính n ng tính toán t
ng khác nh t b o trì (automatic maintenance) và t
c u hình thi t b l u tr (automatic storage)
c
c p n trong nh ng ph n khác c a
cu n sách này.
5.10 K0ch b n
Chúng ta s) th y h u ích khi có th t o ra các t p k ch b n bi u di n m t vài l nh DB2
ho$c câu l nh SQL l$p l i. Ví d , hàng ngày m t ng i qu n tr c s d li u (DBA) có th
mu n ch y m t k ch b n
c
a ra
ki m tra s l ng hàng c a m t b ng quan
tr ng. Có hai d ng k ch b n chung, ó là:
Các k ch b n SQL.
Các k ch b n h
i u hành (Shell).
Ch
ng 5 – Các công c c a DB2
95
5.10.1 Các k0ch 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 t o c s d li u. Nh ng
k ch b n này khá d hi u và không ph thu c vào h i u hành c th nào. Tuy nhiên các
bi n và các tham s không
c h tr trong k ch b n SQL. Ví d , các l nh
c trình bày
trong li t kê 5.1 d i ây
c l u l i trong m t 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;
COMMIT;
Li t kê 5.1 - M t m9u k0ch b n SQL
!c l u trong t p script1.db2
A k ch b n trên, t t c các câu l nh u là câu l nh SQL và m i câu l nh
c phân cách
nhau b i d u phân cách câu l nh, trong tr ng h p này là d u ch#m ph#y (;). Tên c a t p
có th không c n s! d ng ph n m r ng “db2”. B t k4 ph n m r ng nào u có th s!
d ng
c.
5.10.1.1 Th.c thi k0ch b n SQL
M t k ch b n SQL có th
c th c thi t& trình so n th o l nh (Command Editor) ho$c
c!a s* dòng l nh DB2 (DB2 Command Window) trên h i u hành Windows, ho$c t&
Linux shell. ' ch y k ch b n trong li t kê 5.1 t& c!a s* dòng l nh DB2 ho$c t& Linux
shell, b n có th s! d ng l nh sau:
db2 -t -v -f script1.db2 -z script1.log
ho$c t
ng
ng v i l nh:
db2 –tvf script1.db2 –z script1.log
Trong câu l nh trên:
-t ch+ nh r3ng các câu l nh s! d ng kí t k t thúc câu l nh m$c
ch m ph#y).
-v ch+ nh ch
có l i (verbose mode),
c th c thi lên màn hình.
-f
ch+
ch
nh ( ó là m t d u
này DB2 s) hi n th câu l nh ang
nh r3ng tên c a t p n3m ngay sau c này là m t t p k ch b n.
-z ch+ nh r3ng tên c a t p n3m ngay sau c này
c s! d ng vào vi c hi n th lên
màn hình trong quá trình phân tích sau ó ( ây là tùy ch n, nh ng
c khuyên
dùng).
Khi c -t
ch m ph#y
c s! d ng và không có d u phân cách câu l nh nào
c ch+ ra thì d u
c m$c nh là d u phân cách câu l nh. Có th có m t s tình hu ng mà
96
Nh p môn H qu n tr c s d li u DB2
d u phân cách câu l nh khác v i m$c nh là c n thi t. Ví d , m t k ch b n ch a mã SQL
PL c n ph i s! d ng m t kí t k t thúc câu l nh khác, h n là ph i s! d ng kí t m$c nh
– d u ch m ph#y, b i vì các d u ch m ph#y ã
c s! d ng trong vi c nh ngh a i
t ng SQL PL
k t thúc các câu l nh th t c.
Ví d , trong t p k ch b n functions.db2
c trình bày trong li t kê 5.2 phía d i, b n
có th th y nó có ch a câu l nh t o m t hàm, và m t d u ch m ph#y c n
c $t phía
cu i câu l nh SELECT b i vì nó là m t ph n cú pháp yêu c u bên trong hàm. ' k t thúc
câu l nh CREATE FUNCTION chúng ta s! d ng m t d u ch m than (!). N u chúng ta s!
d ng d u ch m ph#y
k t thúc câu l nh t o hàm thì s) có m t xung t trong k ch b n
t o hàm v i k ch b n
c s! d ng trong câu l nh SELECT, khi ó k t qu là m t l i
c
a ra b i DB2.
CREATE FUNCTION f1()
SELECT …
;
…
END!
Li t kê 5.2- N i dung c a t p k0ch b n functions.db2
' thông báo cho DB2 bi t r3ng m t kí t k t thúc câu l nh khác m$c nh
ta s! d ng c -d, theo ngay sau ó là kí t k t thúc câu l nh mong mu n, nh
d i ây:
c s! d ng,
c ch+ ra
db2 –td! –v –f functions.db2 –z functions.log
' bi t thêm v các c khác có th
c s! d ng khi ch y l nh t& c!a s* dòng l nh
(Command Window) ho$c t& Linux shell, s! d ng l nh sau:
db2 list command options
5.10.2 K0ch b n h
i u hành (Shell)
Các k ch b n h i u hành cung c p tính linh ho t và m nh m) h n so v i các k ch b n
SQL, b i vì chúng cho chúng ta kh n ng thêm vào ph n lô-gíc l p trình. Chúng ph thu c
h i u hành, nh ng chúng h tr các tham s và các bi n. Li t kê 5.3 trình bày ví d c a
m t k ch b n h i u hành Windows
n gi n:
set
set
set
db2
db2
del
db2
db2
db2
db2
DBPATH=C:
DBNAME=PRODEXPR
MEMORY=25
CREATE DATABASE %DBNAME% ON %DBPATH% AUTOCONFIGURE USING
MEM_PERCENT %MEMORY% APPLY DB AND DBM
CONNECT TO %DBNAME% USER %1 USING %2
schema.log triggers.log app_objects.log
set schema user1
–t –v –f schema.db2 –z schema.log
–[email protected] -v –f triggers.db2 –z triggers.log
–[email protected] -v –f functions.db2 –z functions.log
Ch
Li t kê 5.3 – N i dung c a t p k0ch b n h
' th c thi k ch b n h
v i Windows:
i u hành này t& ch
ng 5 – Các công c c a DB2
97
i u hành create_database.bat
dòng l nh, b n có th s! d ng l nh sau
create_database.bat db2admin ibmdb2
Trong ó, db2admin là nh danh ng i s! d ng (userID) và là tham s
b n, còn ibmdb2 là m t kh#u và là tham s th hai c a k ch b n.
u tiên c a k ch
Trên Windows s! d ng ph n m r ng “bat”
ch+ cho h i u hành bi t r3ng ây là m t
t p có kh n ng th c thi theo kh i. Trên Linux, b n c n ph i thay *i ch
trên t p tin
ch+ nh r3ng t p tin này có kh n ng th c thi b3ng cách s! d ng l nh chmod +x. Sau ó,
b n có th ch y l nh gi ng nh cách
c p trên.
5.11 Xét t i h
i u hành Windows Vista
'$c tr ng c a b i u khi n truy c p ng i s! d ng (UAC) trong Windows Vista khi n cho
các ng d ng kh i ng theo úng chu#n, th m chí nh danh ng i s! d ng là m t qu n
tr viên h th ng. 'i u này có ngh a là công c DB2 ho$c các l nh b n kh i ng trong
Vista s) gi ng nh là ang ch y, nh ng s) n y sinh v n
có liên quan t i vi c truy c p.
' tránh v n
này c n ph i s! d ng bi u t ng t t có tên “Command window –
Administrator” (“c!a s* dòng l nh – ng i qu n tr ”)
c t o ra trong quá trình cài $t cho
nh ng ng i s! d ng Vista. T& c!a s* này b n có th ch y các l nh khác và kh i ch y
các công c khác (s! d ng các l nh trình bày b ng 5.1
u ch ng này). Ti p ó, t&
b ng ch n Windows Vista Start ho$c b t kì bi u t ng t t DB2 nào, tìm công c DB2 b n
mu n ch y, nh n chu t ph i vào ó và ch n ch y d i quy n qu n tr viên (Run as
administrator).
N u ch
b o m t m r ng DB2
c b t, ây là m$c nh (xem chi ti t ch ng 10, B o
m t c s d li u), b n ph i ch c ch n r3ng nh danh ng i s! d ng là m t thành viên
trong nhóm qu n tr viên DB2 (DB2ADMNS)
kh i ch y các công c
h a óng vai trò
nh trung tâm i u khi n (Control Center).
5.12 K t lu)n
Trong ch ng này chúng ta ã xem xét m t m ng l n các công c c n thi t cho vi c qu n
tr , nh c u hình, và qu n lí máy ch c s d li u DB2.
Phiên b n DB2 9.7 s p t i s) coi IBM Data Studio nh công c qu n tr chính cung c p
m t h ng ti p c n m i i v i vi c qu n tr c s d li u và công vi c phát tri n.
Chúng ta c6ng ã th o lu n v các công c giao di n ng i s! d ng
h a (GUI) hi n t i
nh : Control Center, SQL Assist wizard, Tash Center và Journal, Health Agent và Monitor.
Tuy nhiên, các công c x! lí dòng l nh (Command Line Processor) và c!a s* dòng l nh
(Command Window) s) ti p t c tr thành m t ph n c a ng d ng trong các phiên b n 9.7.
C6ng v y, công c Self Tuning Memory Management chi m m t ph n l n trong vi c x! lí
t i u hóa c s d li u.
98
Nh p môn H qu n tr c s d li u DB2
Y u t ch ch t trong các b công c c a b t kì ng i qu n tr c s d li u nào là vi c
s! d ng các k ch b n
th c thi các hàm và các l nh DB2. Trong ch ng này, chúng ta
ã có m t cái nhìn sâu r ng v các k ch b n h i u hành và các k ch b n SQL, $c bi t là
làm cách nào chúng ta so n th o, l u tr và th c thi các k ch b n ó.
Cu i cùng chúng ta k t thúc v i chú ý r3ng làm th nào
i u hành Windows Vista.
m b o cho DB2 ch y t t trên h
5.13 Bài t)p
Trong ch
ng này này chúng ta s) th c hành v các k ch b n trong DB2.
Ph n 1: S d ng k0ch b n v i c s" d# li u EXPRESS
Trong ph n này, ta s) làm quen v i c s d li u EXPRESS b3ng dòng l nh (Command
Editor) và hai k ch b n có s"n.
Th t c
1. ' thu n ti n khi làm vi c v i các b ng và d li u trong c s d li u EXPRESS,
có hai k ch b n tên là Lab_Chpt5.db2 và Lab_Chpt5.dat ã
c t o s"n.
K ch b n Lab_Chpt5.db2 ch a các l nh
t o b ng do ó nó
c th c hi n
tr c. K ch b n Lab_Chpt5.dat ch a các l nh chèn d li u vào b ng. C hai
t p này n m trong t p nén expressc_book_exercises_9.7.zip i kèm theo
sách này. ' th c hi n k ch b n, hãy m Command Editor. Ch c ch n r3ng c s
d li u v&a t o s)
c ch n trong danh sách kéo th c a thanh công c . N u c
s d li u m i không xu t hi n trong danh sách, b n hãy thêm m t k t n i n nó
b3ng cách s! d ng nút Add.
2. Nh n Selected
Open trên c!a s* Command và chuy n n th m c l u hai
k ch b n. Ch n t p Lab_Chpt5.db2 và nh n nút OK. N i dung c a k ch b n s)
c hi n th trong vùng nh p l nh c a Command Editor. Nh n nút Run
ch y
k ch b n. Xác minh r3ng không g$p l i khi ch y k ch b n.
3. L p l i b
c 2 v i t p Lab_Chpt5.dat.
C s d li u m i v&a t o là ví d
n gi n v m t c!a hàng bán sách trên m ng internet.
B ng BOOKS ch a t t c thông tin v nh ng cu n sách
c l u tr . B ng CUSTOMERS
ch a thông tin v các khách hàng c a c!a hàng. Cu i cùng là b ng SALES, b ng này l u
tr thông tin v vi c bán hàng. Khi khách hàng $t mua m t cu n sách, m t b n ghi
c
t o ra trong b ng SALES. D i ây là s
quan h và thi t k c a các b ng.
Ch
ng 5 – Các công c c a DB2
99
BOOKS table
book_id
title
cost
image
(INTEGER)
(INTEGER)
DECIMAL(7,2)
BLOB (1MB)
Primary Key
CUSTOMERS table
cust_id
firstnme
lastname
address
email
(INTEGER
)
VARCHAR
(100)
VARCHAR(1
00)
VARCHAR(3
00)
VARCHAR(1
00)
SALES table
sales_id
prod_id
cust_id
qty
price
purch_date
(INTEGER)
(INTEGER)
(INTEGER)
(INTEGER)
DECIMAL(7,2)
TIMESTAMP
Primary
Ph n 2: T2o m t k0ch b n cài
t cho c s" d# li u EXPRESS
Các k ch b n là m t c ch m nh m) 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, sao l u, và tri n khai c s d li u. 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, i u này giúp cho
chúng linh ho t h n. Trong ph n này, b n s) t o ra các k ch b n h i u hành
tri n
khai c s d li u EXPRESS là EXPRESS2. Các k ch b n này s) g i các l nh SQL ã t o ra
tr c ó cho t&ng i t ng c s d li u. ' ti t ki m không gian, bài t p này ch+ th
hi n nh ng k ch b n và câu l nh trên n n Windows. N u mu n làm vi c trên Linux, b n
ph i th c hi n nh ng thay *i phù h p v i s h ng d%n sau ây.
Th t c
1. M m t trình so n th o v n b n và nh p vào các thông tin nh hình d i
ây. H u h t khi các b n gõ s) g$p l i, chúng tôi c tình không cung c p t p này
các b n làm quen và s!a các l i khi g$p ph i.
L u ý r3ng có th b n ph i ch+ nh
ng d%n tuy t i c a các t p
schema.ddl, triggers.ddl và app_objects.ddl, các t p này n3m trong t p
expressc_book_exercises_9.7.zip
c kèm theo sách này.
100
Nh p môn H qu n tr c s d li u DB2
2. L u t p tin k ch b n vào trong m t th m c nh là C:\express và $t tên là
create_database.bat.
L u ý: N u b n s! d ng Wordpad, trong c!a s* h p tho i Save As, m b o b n
ã ch n tùy ch n MS-DOS Format. N u b n l u các t p tin v i m t nh d ng
khác Wordpad có th t o thêm m t s ký t #n, vi c này có th s) gây ra v n
trong lúc th c hi n các k ch b n. Ngoài ra, b n hãy $t d u ngo$c kép bao l y tên
t p tin nh th hi n trong hình bên d i)
m b o r3ng Windows không thêm
ph n m r ng .TXT.
Ch
ng 5 – Các công c c a DB2
101
3. ' th c thi các k ch b n t ng tác v i DB2, b n ph i có m t môi tr ng dòng l nh
DB2. ' m c!a s* DB2 Command, ch n Start -> Program Files -> IBM DB2 ->
DB2COPY1 (default) -> Command Line Tools -> Command Window. Cách khác,
ch n Start-> Run, gõ db2cmd, và nh n OK nh hình d i ây.
4. ' ch y k ch b n, b n nh p l nh sau vào c!a s* Command Window:
cd C:\express
create_database.bat db2admin ibmdb2
102
Nh p môn H qu n tr c s d li u DB2
5. B n hãy dành ít phút
làm quen v i k ch b n mà b n v&a t o xong. B n có hi u
nh ng gì x y ra t i t&ng dòng l nh hay không?
6. Hãy c g ng tr l i nh ng câu h/i sau:
A. K t n i c s d li u
c thi t l p
âu?
B. Ký hi u %1 và %2 có ngh là gì?
C. Dòng l nh sau ây dùng
ích gì?
làm gì? Nó
c s! d ng
âu? Dùng vào m c
SET DBPATH=C:
D. Dòng l nh sau ây dùng
làm gì?
del schema.log, triggers.log, app_objects.log
E. 'i u gì x y ra khi k ch b n
c g i mà l i không có b t k4 tham s nào?
F. T i sao nh ng k ch b n SQL
c g i không ch a các câu l nh CONNECT
TO? Làm th nào
nó k t n i v i c s d li u?
PH N II – H C DB2:
QU N TR C S D LI U
Ch
ng 6 - Ki n trúc DB2
Trong ch
ng này, chúng ta s) tìm hi u s b v ki n trúc DB2. B n s)
6
ch cv :
Mô hình x! lý DB2.
Mô hình b nh DB2
Các mô hình l u tr DB2
Chú ý:
' bi t thông tin thêm v ki n trúc DB2, các b n có th xem video t i:
http://www.channeldb2.com/video/video/show?id=807741:Video:4482
6.1 Mô hình x
lý DB2
Hình 6.1 mô t mô hình x! lý DB2. Trong mô t này, hình ch nh t i di n cho các quá
trình x! lý và hình b u d c i di n cho các lu ng. Quá trình x! lý chính c a DB2
cg i
là db2sysc. Theo quy trình này có m t s lu ng x! lý, trong ó có m t lu ng chính c6ng
c g i là db2sysc. 'ây là lu ng chính có th sinh ra các lu ng khác. Khi m t ng d ng
t& xa s! d ng câu l nh SQL CONNECT
k t n i n máy ch , b l ng nghe t& xa
(remote listeners) dành cho các giao th c truy n thông s) nh n yêu c u này và liên h v i
tác nhân i u ph i DB2 (db2agent). M t tác nhân DB2 c6ng gi ng nh m t nhân viên th c
hi n các ho t ng nhân danh cho DB2. Khi ng d ng ch y c c b , ngh a là ch y trên
cùng m t máy ch v i DB2, các b c u t ng t , ch+ có m t tác nhân db2ipccm x! lý
yêu c u thay vì x! lý t& lu ng c a db2tcpcm. Trong m t s tr ng h p, ch1ng h n nh khi
c kích ho t song song, m t db2agent có th sinh ra các tác nhân khác có vai trò nh
nh ng lu ng db2agntp. Các tác nhân khác th hi n trong hình nh db2pfchr, db2loggr,
db2dlock c6ng có th
c s! d ng cho nh ng m c ích khác nhau. Các quy trình
th ng g$p
c mô t trong B ng 6.1, và nh ng lu ng ph* bi n nh t
c mô t trong
B ng 6.2.
Ch
ng 6 - Ki n trúc DB2
105
Figure 6.1 – Mô hình x lý DB2
Quy trình
db2sysc (Linux)
db2syscs (Win)
db2acd
db2wdog
db2vend
db2fmp
Mô t
Là b máy hay còn g i là h th ng i u khi n chính c a DB2. B t u
t& DB2 9.5, ch+ có m t ti n trình a phân lu ng chính cho toàn b phân
vùng. T t c các Engine Dispatchable Units (EDUs) là các lu ng trong
ti n trình này. N u không có ti n trình này, máy ch c s d li u
không th v n hành
c.
Ti n trình n n tính toán c l p (The autonomic computing daemon),
c s! d ng
th c hi n nh ng tác v
c l p phía máy khách,
ch1ng h n nh theo dõi tình tr ng, các ti n ích b o d 5ng t
ng, và
l ch trình qu n lý. Ti n trình này tr c ây
c g i là db2hmon.
B ph n giám sát c a DB2. 'ây là ngu n g c c a b máy x! lý chính,
db2sysc. Nó thu h i tài nguyên n u ti n trình db2sysc b ch m d t m t
cách b t th ng.
Ti n trình b o v nhà cung c p
c gi i thi u trong DB2 9.5. T t c
o n code c a nhà s n xu t th 3 ch y bên trong ti n trình này n3m
ngoài b máy ho t ng DB2. Bng d ng c a nhà s n xu t th 3 là
nh ng ch ng trình không do IBM cung c p, có th t ng tác v i
DB2, ví d : vi c ghi nh t kí (log) có th do qu n nhà cung c p th 3
th c hi n, b3ng cách xác nh tham s c a hàm thoát ra kh/i ng
d ng c a ng i s! d ng.
Các ti n trình
c b o v s) ch y mã ng i dùng trên máy ch bên
ngoài t ng l!a, bao g m các th t c l u tr và các hàm do ng i
106
Nh p môn H qu n tr c s d li u DB2
dùng nh ngh a. Ti n trình này thay th cho nh ng ti n trình
d ng trong phiên b n tr c c a DB2 là db2dari và db2udf.
B ng 6.1 – Nh#ng ti n trình th ng g p c a DB2
Tên lu ng
c s!
Mô t
Lu ng i u khi n h th ng, ch u trách nhi m trong vi c kh i ng, t t
và qu n lý các th hi n c a DB2.
db2tcpcm
B l ng nghe giao ti p TCP/IP.
Tác nhân i u ph i m nh n các ho t ng liên quan c s d li u
db2agent
i di n cho các ng d ng (ít nh t 1 tác nhân/ k t n i, l thu c vào
Connection Concentrator có
c kích ho t hay không.
Là các tác nhân con
c kích ho t n u thu c tính
INTRA_PARALLEL
c thi t l p là YES. Lu ng này th c hi n các
db2agntp
quá trình ho t ng c s d li u cho ng d ng. db2agent s) ph i
h p ho t ng gi a nh ng tác nhân con db2agntp khác nhau.
db2pfchr
B l y s"n d li u I/O không ng b c a DB2 (NUM_IOSERVERS)
db2pclnr
B ghi d li u I/O không ng b c a DB2 (NUM_IOCLEANER)
B ng 6.2 – Các lu ng DB2 th ng g p
db2syscs
6.2 Mô hình b nh DB2
Mô hình b nh DB2 bao g m các vùng khác nhau trong b nh
m c th hi n, m c c
s d li u, m c ng d ng và m c tác nhân nh trong Hình 6.2. Chúng tôi s) không gi i
thích c th t&ng vùng trong b nh mà ch+ gi i thi u m t t*ng quan.
Ch
ng 6 - Ki n trúc DB2
107
Hình 6.2 - Mô hình b nh DB2
B nh chia [email protected] qu n lý c s d li u
c c p phát khi m t th hi n
c kh i t o.
Thông th ng, vùng nh này không chi m nhi u không gian. Khi l n u tiên k t n i v i
c s d li u, B Nh C S D Li u Toàn C c (Database Global Memory)
cc p
phát. Trong kh i này, vùng m là m t trong nh ng ph n quan tr ng nh t, giúp c i thi n
hi u su t truy v n. Kích th c c a các b
m s) quy t nh kích th c c a B Nh C
S D Li u Toàn C c.
B nh riêng bi t m i tác nhân là vùng nh
c s! d ng riêng b i m i tác nhân DB2.
N u không s! d ng b k t n i t p trung, thì m i k t n i s) yêu c u m t tác nhân. Thông
th ng m t tác nhân s! d ng kho ng 3 n 5 MB. V i b k t n i t p trung, m t s k t n i
có th s! d ng chung m t tác nhân, do ó gi m b t nhu c u b nh v t lý.
6.3 Mô hình l u tr# DB2
Trong ph n này chúng tôi s) mô t nh ng khái ni m sau ây:
Trang và ph n m r ng (pages and extents)
108
Nh p môn H qu n tr c s d li u DB2
Vùng
m (buffer pool)
Không gian b ng (table space)
6.3.1 Các trang và ph n m" r ng
M t trang là m t n v l u tr t i thi u trong DB2. Các kích th c trang cho phép là: 4K,
8K, 16K và 32K. Ph n m r ng là m t nhóm các trang. Trong DB2, làm vi c v i m t trang
t i m t th i i m s) làm gi m hi u su t; vì v y, DB2 s) thay th b3ng cách làm vi c v i
các ph n m r ng t i m t th i i m. Kích th c trang và kích th c ph n m r ng
c
nh ngh a khi làm vi c v i các vùng m và không gian b ng nh chúng ta s) th y trong
các ph n ti p theo.
6.3.2 Vùng
m (Buffer pool)
M t vùng m là vùng nh cache th c cho d li u b ng và ch+ m c. Nó c i thi n hi u su t
b3ng cách gi m t n su t c/ghi (I/O) tr c ti p mà chú tr ng vào vi c c(pre-fetching)/ghi
không ng b . Nh v y, DB2 bi t nh ng gì c n thi t cho các trang, c chúng t& a và
a vào vùng m
s"n sàng cho vi c s! d ng.
Vùng m
c c p phát theo các
n v b nh c a các trang là 4K, 8K, 16K, 32K. Nên
có ít nh t m t vùng m m i c s d li u, và ít nh t m t vùng m v&a v i không gian
b ng theo kích th c trang ã cho.
6.3.2.1 T2o m t vùng
m
' t o m t vùng m b n có th s! d ng câu l nh CREATE BUFFERPOOL. Ngoài ra, có
th s! d ng công c Control Center, b n có th nh p chu t ph i vào th m c Buffer Pool
trong m t c s d li u ã cho và ch n Create, nh trong Hình 6.3
Ch
Hình 6.3 – T2o m t vùng
ng 6 - Ki n trúc DB2
m
Sau khi ch n Create, h p tho i Create Buffer Pool s) xu t hi n nh Hình 6.4
Hình 6.4 – H p tho2i Create Buffer Pool
109
110
Nh p môn H qu n tr c s d li u DB2
H u h t các thông s trong h p tho i u d hi u. Các thông s Non-blocked và Blocked
th hi n s trang s) t n t i v i d ng kh i hay là không. Vùng m d a trên kh i s) b o
m các trang k c n nhau trên * a khi
c di chuy n v%n k c n nhau thành m t kh i;
i u này s) làm t ng hi u su t ho t ng, s l ng trang
c ch+ nh không
cv t
quá 98% so v i s trang cho vùng m. N u giá tr là 0 thì s) vô hi u hóa vi c hình thành
kh i nh p xu t (I/O).
Khi vùng
m
c t o,
c th hi n trong Control Center, nh Hình 6.5.
Hình 6.5 – Màn hình Control Center sau khi t2o vùng
m SAMP16K
6.3.3 Không gian b ng – Table spaces
Không gian b ng là giao di n lô-gíc gi a các b ng lô-gíc và b nh v t lý (vùng m) và
không gian ch a nó (* a). L nh CREATE TABLESPACE dùng
t o m t không gian
b ng, ta có th ch+ nh các thông s :
Kích c5 trang cho m t không gian b ng (4KB, 8KB, 16KB, hay 32KB). Kích c5
trang ph i t ng quan v i vùng nh
m v i cùng kích th c trang.
Tên c a vùng nh
Kích c5 m r ng
m ph i liên quan t i không gian b ng này.
Ch
ng 6 - Ki n trúc DB2
Kích c5 cho m t l n pre-fetch (tham kh o khái ni m pre-fetch
pool)
111
m c 6.3.2 Buffer
6.3.3.1 Các lo2i không gian b ng
Không gian b ng g m có 3 lo i:
Lo i thông th
ng
Lo i này dùng cho b ng ng i dùng (user tables). Ví d , không gian b ng
USERSPACE1
c t o v i m$c nh thu c lo i không gian b ng thông th
ng.
Lo i l n
Chúng
c s! d ng
tách bi t d li u có dung l ng l n (LOB data) vào không
gian b ng riêng c a nó. Lo i này c6ng dùng
l u tr d li u XML,
c t o ra
theo h tr pureXML, b3ng cách dùng ki u d li u XML cho các c t. Không gian
b ng l n là thi t l p m$c nh.
Lo i t m th i
Có hai lo i không gian b ng t m:
- Không gian t m h th ng
- ' c DB2 s! d ng cho nh ng ho t ng bên trong, nh nh ng ho t ng
s p x p. Ví d , không gian b ng TEMPSPACE1,
c m$c nh t o ra khi t o
m i m t c s d li u, ây chính là không gian b ng t m h th ng. Luôn ph i
có ít nh t m t không gian b ng t m h th ng.
- Không gian b ng t m ng
i dùng
- ' c s! d ng
t o ra nh ng b ng t m do ng i dùng nh ngh a, ví d
nh : Declared Global Temporary Tables (DGTTs), Create Global Temporary
Tables (CGTTs). Chúng th ng b nh m l%n v i không gian b ng t m h
th ng. Ng i dùng ph i t o không gian b ng t m tr c khi DGTTs và CGTTs
có th
c s! d ng.
6.3.3.2 Qu n lý không gian b ng
Không gian b ng có th
c phân lo i d a trên cách qu n lý. 'i u này có th
nh trong câu l nh CREATE TABLESPACE:
c ch+
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 (B l u tr do h
th ng qu n lý). Có ngh a là h i u hành s) qu n lý b l u tr . Chúng r t d qu n lý, và
các b qu n lý là các th m c h th ng. Không gian l u tr s) không
c c p phát
tr c, nh ng kích th c t p có th m r ng m t cách linh ho t. M t khi b n ch+ nh n i
l u tr , chúng s)
cc
nh vào lúc kh i t o và nh ng không gian l u tr khác s)
không
c thêm vào sau ó, tr& khi b n khôi ph c l i n i l u tr c a nó. Khi s! d ng
112
Nh p môn H qu n tr c s d li u DB2
không gian b ng SMS, d li u b ng, ch+ m c, và d li u dung l
th tr i r ng trên nh ng không gian b ng khác nhau.
ng l n (LOB data) không
Qu n lý b"i c s" d# li u
Lo i không gian b ng này còn g i là Database Managed Storage – DMS (B l u tr do
CSDL qu n lý). 'i u này có ngh a là chính DB2 s) qu n lý vi c l u tr . Vi c qu n lý không
gian òi h/i nhi u h n s can thi p th công c a nhà qu n tr (DBA). Vùng ch a s)
c
c p phát tr c nh ng t p tin và nh ng thi t b thô (raw devices). V i nh ng thi t b thô
này, d li u s)
c ghi vào m t cách tr c ti p mà không c n nh vào c ch caching
vào/ra c a h i u hành.
Vùng ch a có th
c m r ng, h y b/ ho$c nh l i kích th c b3ng cách s! d ng câu
l nh ALTER TABLESPACE. Không gian b ng DMS là lo i không gian có hi u n ng ho t
ng cao nh t, và d li u b ng, ch+ m c và d li u dung l ng l n (LOB data) có th
c chia ra thành nhi u không gian b ng riêng bi t, chính i u này làm t ng hi u n ng
ho t ng.
Qu n lý b"i b l u tr# t.
ng
Không gian b ng lo i này
c qu n lý b i b l u tr t
ng, c6ng quen thu c nh
không gian b ng SMS, nh ng v i hi u n ng và tính linh ng t t nh t c a không gian
b ng DMS. Chính vì v y ây là lo i không gian b ng m$c nh khi b n b t u v i DB2 9.
V i nh ng không gian b ng lo i này, u tiên ng i dùng ph i ch+ nh
ng d%n l u tr
và m t nhóm nh ng thi t b l u tr mà DB2 s) dùng
qu n lý không gian. Không có m t
nh ngh a rõ ràng nào v vùng ch a. Vùng ch a t
ng
c t o thông qua nh ng
ng d%n l u tr . Vi c thêm vùng ch a m i c6ng nh s phát tri n c a nh ng vùng
ch a ã có s) hoàn toàn
c qu n lý b i DB2. N u m t
ng d%n l u tr không
c
ch+ nh trong câu CREATE DATABASE,
ng d%n c s d li u s)
c s! d ng
thay
th (
ng d%n c s d li u là n i l u tr nh ng nh ngh a chính c a c s d li u).
N u
ng d%n c s d li u c6ng không
c ch+ nh, nó s)
c l y t& bi n
DFTDBPATH, bi n này dùng
c u hình vi c qu n lý c s d li u. Trên Windows,
ng d%n c s d li u ch+ có th là tên * a, không ph i m t
ng d%n.
' cho phép l u tr t
ng, u tiên b n ph i t o c s d li u v i thi t l p cho phép l u
tr t
ng (thao tác m$c nh) và k t h p v i m t b
ng d%n l u tr . Sau khi t o, n u
c n thi t, b n có th
nh ngh a l i
ng d%n l u tr , s! d ng thao tác RESTORE. Sau
ó, b n ã có th t o m t không gian b ng
s! d ng b l u tr t
ng ( ây c6ng là
thao tác m$c nh).
Không gian b ng lo i này r t gi ng v i không gian b ng DMS, nh ng các thao tác
ct
ng, nên ta g i nó là
c qu n lý b i DB2; i u này bao g m s
ng ký, ch+ nh vùng
ch a và vi c t
ng thay *i kích th c.
Bây gi b n hãy xem m t ví d v s qu n lý b i không gian b ng l u tr t
ng. ' u
tiên, b n t o m t c s d li u v i thi t l p cho phép l u tr t
ng, nh ví d sau:
M$c
nh s) cho phép l u tr t
ng:
Ch
ng 6 - Ki n trúc DB2
113
CREATE DATABASE DB1
Ch+
nh l u tr t
ng m t cách t
ng minh:
CREATE DATABASE DB1 AUTOMATIC STORAGE YES
L u tr t
nh. N u
ng s)
c thi t l p m$c nh, nh ng
ng d%n l u tr là m t th m c, nó ph i
ng d%n l u tr thì ch a
c t o tr c h t:
c ch+
Ví d trên Windows:
CREATE DATABASE DB1 ON C:/, C:/storagepath1, D:/storagepath2
Chú ý thông s
u tiên trong danh sách là m t * a, vì nó s) cho bi t
ng d%n
c s d li u ch+ có th là * a, không th là m t
ng d%n trên Windows.
Thông s này c6ng có th
c s! d ng nh m t trong nh ng
ng d%n l u tr .
Nh v y,
ng d%n c s d li u là C:, và
ng d%n l u tr bao g m C: và
C:\storagepath1 và D:\storagepath2 là hai th m c còn l i trong s nh ng
ng
d%n ph i
c t o u tiên.
Ví d trên Linux:
CREATE DATABASE DB1 ON /data/path1, /data/path2
L u tr t
ng
c vô hi u hóa m t cách t
ng minh:
CREATE DATABASE DB1 AUTOMATIC STORAGE NO
Ti p theo, t o không gian b ng v i thi t l p cho phép l u tr t
L u tr t
ng trên không gian b ng
c thi t l p m$c
ng nh ví d sau:
nh:
CREATE TEMPORARY TABLESPACE TEMPTS
L u tr t
ng trên không gian b ng
c thi t l p m t cách t
ng minh:
CREATE TABLESPACE TS2 MANAGED BY AUTOMATIC STORAGE
Khi l u tr t
ng
c thi t l p ng m nh, kích c5 ban u s)
c cung c p, cùng v i
vi c ch+ nh kích c5 t ng, c6ng nh kích c5 t i a mà nó có th
t
c.
CREATE TABLESPACE TS1
INITIALSIZE 500 K
INCREASESIZE 100 K
MAXSIZE 100 M
114
Nh p môn H qu n tr c s d li u DB2
6.3.3.3 Cách th c d# li u
!c l u tr# trong các không gian b ng
M$c nh, DB2 s) ghi vào các ph n m r ng (extents) c a * a ngay khi nó chuy n qua
vùng ch a khác. Ví d , n u b n có m t không gian b ng kích th c 4K v i m t ph n m
r ng có kích th c là 8, s! d ng 3 vùng ch a thô trên không gian b ng DMS, có ngh a là
32K d li u (4K x 8 trang trên 1 ph n m r ng = 32K) s)
c ghi vào m t vùng ch a
tr c khi
c ghi vào vùng ch a khác. 'i u này
c th hi n Hình 6.6. L u ý r3ng
các b ng không s! d ng chung các ph n m r ng (extents).
Hình 6.6 – Ghi d# li u trong không gian b ng
6.3.3.4 T2o không gian b ng s d ng Control Center
' t o m t không gian b ng s! d ng Control Center, nh p ph i chu t trên th m c Table
Spaces bên trong c s d li u ã cho và ch n Create nh Hình 6.7. C!a s* Create table
space xu t hi n, nh Hình 6.8.
Ch
ng 6 - Ki n trúc DB2
Hình 6.7 – T2o m t không gian b ng t1 Control Center
Hình 6.8 – C a s: t2o không gian b ng
C!a s* hi n lên
hình 6.8 s) h
ng d%n các b
c
t o m t không gian b ng.
115
116
Nh p môn H qu n tr c s d li u DB2
6.4 Tóm t-t
Trong ch ng này, chúng ta ã
c h c v ba khía c nh ch y u c a ki n trúc DB2: mô
hình x! lý, mô hình b nh , và mô hình l u tr . V khía c nh mô hình x! lý, chúng ta ã
xem qua nh ng ti n trình và nh ng lu ng ho t ng th ng g$p, bao g m ti n trình
db2sysc, không có ti n trình này thì DB2 không ho t ng
c.
Ch ng này ã bàn lu n r t k2 v mô hình l u tr , bao hàm 3 khía c nh quan tr ng nh t
là: trang và ph m vi, vùng m (bufferpool) (g m c nh ng chi ti t v vi c kh i t o) và
không gian b ng (table space). Sau cùng, chúng ta ã tìm hi u nh ng lo i không gian
b ng khác nhau, và cách th c qu n lý chúng (SMS, DMS, Automatic), và tìm hi u cách t o
m t không gian b ng s! d ng Control Center.
6.5 Bài t)p
Bài t p này s) giúp b n hi u v nh ng mohình x! lý, mô hình b nh và và cách th c l u
tr c a DB2 trên Windows. B n s)
c nh c l i v nh ng ti n trình và nh ng lu ng ho t
ng khác nhau, n m v ng v cách th c s! d ng b nh c a DB2, và th c hành t o m t
c s d li u s! d ng hình th c l u tr t
ng và l u tr theo
ng d%n trên Windows.
Ý t ng c a vi c s! d ng hình th c l u tr theo
ng d%n là vi c t o trên nhi u * a,
nh ng vì máy tính c a b n không
c thi t l p v i nhi u * a thì bài t p này v%n có th
s! d ng v i * C:\ c a b n.
Th t c:
7. B n hãy xem nh ng ti n trình ang ch y trên Windows. Tr c h t, b n m c!a s*
DB2 Command Windows (Start -> run -> db2cmd) và ph i t t ti n trình DB2 ang
m b3ng câu l nh: db2stop force
8. M Windows Task Manager, ch n [email protected] Processes, nh p chu t vào c t Image
Name
s p x p các ti n trình theo tên, và tìm ti n trình db2sysc.exe, nh hình
bên d i.
Ch
ng 6 - Ki n trúc DB2
B n s) không tìm th y ti n trình db2syscs.exe vì b n ã
hi n c a DB2 b c 1.
c yêu c u ph i t t th
9. Kh i ng th hi n DB2 v i câu l nh: db2start, và l$p l i b
gi thì b n có th tìm th y ti n trình db2syscs.exe.
c tr
10. Bây gi b n s) xem xét m c tiêu th c a CPU. Hãy làm theo các b
G. T t h t các ng d ng khác ang ch y trên máy tính
có ch ng trình nào ang ch y.
117
c ó. Và bây
c sau:
ch c ch n r3ng không
H. M m i m t c!a s* DB2 Command Windows và ch y l nh: db2stop force
I.
Trên c!a s* Task Manager, chuy n sang [email protected] Performance
J.
Gi cho c!a s* Task Manager và DB2 Command Windows n3m c nh nhau
nh hình d i. Ghi nh n l i kho ng b nh v t lý và m c s! d ng CPU.
118
Nh p môn H qu n tr c s d li u DB2
K. Ch y câu l nh db2start và cùng lúc ó b n theo dõi m c s! d ng CPU và
dung l ng b nh v t lý. B n s) th y m t
ng nh n cao trên bi u
s!
d ng CPU, và l ng b nh v t lý gi m i kho ng 50MB n 70MB. 'ây
chính là l ng b nh mà DB2 ang s! d ng. N u b n ch y l i câu l nh
db2stop force thì tình tr ng b nh s) tr v nh tr c ó.
11. L$p l i b c trên nh ng l n này b n s) chú ý n nh ng gì s) x y ra sau khi k t
n i vào c s d li u SAMPLE. Ch y câu l nh sau trên c!a s* DB2 Command
Window:
db2start
db2 connect to sample
Ch
ng 6 - Ki n trúc DB2
119
12. Ngay khi b n k t n i t i c s d li u SAMPLE, b n s) th y dung l ng b nh
v t lý b gi m i. Nguyên nhân là do khi b n k t n i v i m t c s d li u, máy tính
s) ph i c p phát vùng nh cho b nh toàn c c c a c s d li u ó (bao g m
vùng m, n i l u các ch+ m c,… ).
13. L$p l i b c trên, l n này b n s) tìm hi u nh ng gì x y ra sau khi vùng m
c
t o theo các kích th c khác nhau. B n ph i ch c r3ng b nh v t lý trong máy
không
c s! d ng quá m c. Vì n u nh th DB2 s) không c p vùng m ngay
l p t c mà nó s) i n lúc c s d li u ng&ng ho t ng. H n th n a, m t h
th ng vùng m nh/ s)
c s! d ng
thay th , và DB2 s) s! d ng nó n khi
nào có
b nh v t lý c n thi t
t o vùng m m i. Ví d ,
t o m t vùng
m kho ng 160MB, b n ch y câu l nh sau, sau khi ã k t n i v i c s d li u
SAMPLE:
db2 create bufferpool mybp immediate size 5000 pagesize 32k
14. T o m t c s d li u mydb1 s! d ng cách l u tr t
ng, v i
ng d%n c s
d li u là C:, và
ng d%n l u tr là C:\mystorage1, C:\mystorage2. Ch y
câu l nh sau trên c!a s* DB2 Command Window:
db2 create database mydb1 on C:\, C:\mystorage1, C:\mystorage2
Bây gi , n u b n ch y câu l nh trên thì ch c ch n s) nh n
c thông báo l i vì
tr c h t b n ph i t o các
ng d%n C:\mystorage1, C:\mystorage2. Hãy
t o các
ng d%n trên và th! l i l n n a!
Ch
ng 7 – K t n i máy khách DB2
7
Ch ng này trình bày các cài $t c n thi t
k t n i t& m t máy khách DB2 n m t máy
ch DB2 s! d ng giao th c TCP/IP. Chú ý r3ng m t máy ch DB2 i li n v i m t thành
ph n máy khách, do ó nó c6ng ch y nh m t máy khách
k t n i t i m t máy ch DB2
khác. Có m t s cách
thi t l p k t n i máy khách DB2, tuy nhiên trong ch ng này
chúng ta ch+
c p t i ph ng th c d dàng nh t, ó là s! d ng Configuration Assistant
(công c tr giúp c u hình).
Chú ý:
' có thêm thông tin v k t n i máy khách DB2, m i
c gi xem video
liên k t sau:
http://www.channeldb2.com/video/video/show?id=807741:Video:4222
B t u t& phiên b n DB2 9.7, Configuration Assistant s) không còn
c h tr , tuy
nhiên nó v%n
c gi l i trong s n ph#m này và chúng ta v%n có th s! d ng.
7.1 Các th m c DB2
Các th m c DB2 là các t p nh phân ch a thông tin v nh ng c s d li u mà b n có
th k t n i t& máy tính c a mình. Có b n th m c:
Th m c c s d li u h th ng
Th m c c s d li u c c b
Th m c nút
Th m c DCS
Chúng ta có th xem xét l i và c p nh t n i dung trong các th m c này b3ng công c
Configuration Assistant GUI.
7.1.1 Th
m c c s" d# li u h th ng
Th m c này gi ng nh m c l c c a m t cu n sách. Nó ch+ ra t t c các c s d li u t&
c c b (local) cho n t& xa (remote) mà b n có th k t n i t i. V i m t c s d li u c c
b , nó l u m t con tr/ t i th m c c s d li u c c b . V i m t c s d li u t& xa, nó s)
l u m t con tr/ t i m t m c trong th m c nút (node). ' xem l i n i dung c a th m c
này ta s! d ng dòng l nh:
Ch
ng 7 – K t n i máy khách DB2
121
list db directory
7.1.2 Th
m c c s" d# li u c c b
Th m c này ch a thông tin v các c s d li u n3m ngay trên máy tính c a b n mà b n
có th k t n i t i. ' xem l i n i dung c a th m c này ta s! d ng dòng l nh:
list db directory on <drive/path>
7.1.3 Th
m c nút
Th m c này ch a thông tin v cách k t n i t i m t c s d li u t& xa ã
c bi t. Ví
d , n u k t n i s! d ng giao th c TCP/IP, m t m c c a nút TCP/IP s) bao g m a ch+ IP
c a máy ch ch a c s d li u DB2 b n ang mu n k t n i, và c*ng c a th hi n ch a
c s d li u. ' xem l i n i dung c a th m c này ta s! d ng dòng l nh:
list node directory
7.1.4 Th
m c DCS
Th m c này ch+ xu t hi n sau khi b n ã cài $t ph n m m DB2 Connect cho z/OS (máy
tính l n), hay DB2 cho i5/OS. ' xem l i n i dung c a th m c này ta s! d ng dòng l nh:
list dcs directory
7.2 Công c tr! giúp c u hình (deprecated)
S! d ng công c tr giúp c u hình v i giao di n
h a, b n có th d dàng c u hình k t
n i gi a máy khách và máy ch DB2. ' ch y công c này trong Windows, b n có th
ch n: Start -> Programs -> IBM DB2 -> DB2COPY1 -> Set-up Tools -> Configuration
Assistant.
B n c6ng có th kh i ng công c này b3ng c!a s* dòng l nh v i l nh db2ca. Hình 7.1
mô t công c tr giúp c u hình.
122
Nh p môn H qu n tr c s d li u DB2
Hình 7.1 - Công c tr! giúp c u hình
7.2.1 Các cài
t c n thi t trên máy ch
'ây là hai vi c c n thi t c n thi t l p trên máy ch :
1) DB2COMM
Bi n s này c a DB2 Registry (s* ng ký DB2) xác nh các b l ng nghe c a giao th c
truy n thông nào nên
c dùng
qu n lý các yêu c u t& các máy khách. TCP/IP
th ng
c s! d ng làm giao th c truy n thông. Khi thay *i tham s này ta c n ph i
kh i ng l i th hi n ch a c s d li u. ' xem l i và thay *i giá tr c a DB2COMM
trong công c tr giúp c u hình, ch n Configure -> DB2 Registry nh trong Hình 7.2 và
Hình 7.3.
Ch
ng 7 – K t n i máy khách DB2
Hình 7.2 – Truy c)p DB2 Registry
Hình 7.3 – Ki(m tra giá tr0 c a bi n DB2COMM c a DB2 Registry
123
124
Nh p môn H qu n tr c s d li u DB2
2) SVCENAME
Tham s c u hình qu n lý c s d li u (database manager configure - dbm cfg) s)
c
$t là tên d ch v (nh
ã
c nh ngh a trong t p các d ch v TCP/IP) hay s c*ng
s! d ng khi b n mu n truy c p t i các c s d li u c a th hi n này. T& công c tr giúp
c u hình, ch n Configure -> DBM configuration nh trong Hình 7.4.
Hình 7.4 – Xem l2i dbm cfg trong công c tr! giúp c u hình
Khi b n ang c!a s* DBM Configuration, tìm n ph n Communications, và tìm m c
SVCENAME. B n có th thay *i giá tr thành xâu kí t hay th m chí là m t s c*ng n u
c n thi t. Xem Hình 7.5.
Ch
ng 7 – K t n i máy khách DB2
125
Hình 7.5 – Xem l2i tham s SVCENAME c a dbm cfg
7.2.2 Các cài
t c n thi t trên máy khách
T i máy khách, tr
c h t b n c n bi t các thông tin sau:
Tên c a c s d li u b n mu n k t n i
S c*ng c a th hi n DB2 phía máy ch ch a c s d li u. B n c6ng có th s!
d ng tên d ch v mi n là có m t m c t ng ng trong t p các d ch v TCP/IP
Tài kho n ng
Tài kho n ng
i dùng và m t kh#u c a h i u hành
i dùng ph i
c nh ngh a tr c ó
k t n i t i c s d li u.
phía máy ch
Các thông tin trên có th
c l y t& máy khách DB2 s! d ng công c tr giúp c u hình.
' u tiên, ch y th thu t Add Database b3ng vi c nh p chu t vào l a ch n Selected ->
Add Database Using Wizard nh Hình 7.6
126
Nh p môn H qu n tr c s d li u DB2
Hình 7.6 – Tri u g/i th thu)t Add Database
B n c6ng có th g i th thu t này b3ng cách nh p chu t ph i vào kho ng tr ng trong công
c tr giúp c u hình và ch n Add Database Using Wizard. Hình 7.7 là Add Database
Wizard.
Hình 7.7 – Th thu)t Add Database
Ch
ng 7 – K t n i máy khách DB2
127
Trong Add Database Wizard có ba l a ch n:
1. S
d ng m t lý l0ch
Có th có nhi u tr ng h p b n c n c u hình cho nhi u máy khách
k t n i t i cùng
m t máy ch DB2. Trong tr ng h p này, nên th c hi n t t c c c u hình trên m t máy
khách và l u l i các c u hình ó vào m t t p “lý l ch”. V i t p này, b n có th n p t t c
thông tin tr c ti p vào các máy khách khác. Trong Hình 7.7, n u b n ch n “Use a Profile”
thì b n có th n p thông tin t& m t “lý l ch” ã t n t i. Chi ti t s)
c nói rõ các ph n
sau, còn ch ng này ch+ mô t cách t o ra h s cho máy ch và máy khách.
2. Tìm ki m trên m2ng
Ph ng th c này còn
c g i là khám phá (Discovery). Nó cho phép tìm ki m trên m ng
m t máy ch , m t th hi n và m t c s d li u t ng ng cho tr c. ' ph ng th c
này ho t ng, DAS ph i
c ch y trên m i máy ch ch a c s d li u
c tìm ra. Có
hai cách
th c hi n tìm ki m:
Tìm ki m (Search):
Tìm ki m trên toàn m ng. Cách này không nên dùng n u m ng l n v i nhi u b
t p trung m ng (hub) vì s) t n nhi u th i gian cho vi c nh n d li u t& m i h
th ng.
'ã bi t (Known):
Tìm ki m trên m ng m t máy ch
Hai ph
Hình 7.8 – Ph
ng th c này
ã bi t t i
a ch+ b n cung c p.
c minh h a trong Hình 7.8
ng th c tìm ki m Search và Known
128
Nh p môn H qu n tr c s d li u DB2
Có nh ng khi ng i qu n tr không mu n các máy khách tìm ki m trên m ng nh ng c s
d li u có các thông tin bí m t. Vi c này có th
c ng n ch$n t& m c DAS, m c th
hi n hay m c c s d li u. Chi ti t Hình 7.9.
Hình 7.9 – C u hình các tham s cho phép tìm ki m
Hình 7.9 ch+ ra các m c khác nhau mà b n có th cho phép hay vô hi u hóa tìm ki m. A
m c DAS, b n có th cho tham s DISCOVER giá tr SEARCH hay KNOWN. A m c th
hi n, tham s DISCOVER_INST c a dbm cfg có th
c $t giá tr DISABLE hay
ENABLE. Cu i cùng, m c c s d li u, tham s DISCOVER_DB có th
c $t là
ENABLE hay DISABLE. Thi t l p các tham s này m t cách h p lý cho phép b n i u
khi n vi c tìm ki m c s d li u.
3. C u hình th công m t k t n i t i c s" d# li u
S! d ng ph ng th c này, b n s) t thêm m t tên máy ch (host), các s c*ng và thông
tin c a c s d li u cho công c tr giúp c u hình
nó t o ra m t danh m c các câu
l nh
th c thi c u hình k t n i. Công c tr giúp c u hình s) không ki m tra xem các
thông tin ó là úng hay sai. B n s) bi t nó sai n u không th k t n i t i máy ch . T ng
t , c n m b o tài kho n ng i dùng và m t kh#u
k t n i t i c s d li u t& xa là
chính xác. M$c nh thì vi c xác th c s)
c ti n hành trên máy ch DB2 b n ang mu n
Ch
k t n i, do ó b n ph i cung c p tài kho n ng
máy ch ó.
ng 7 – K t n i máy khách DB2
i dùng và m t kh#u
c
129
nh ngh a trên
7.2.3 T2o lý l0ch cho máy khách và máy ch
N u b n ang c u hình m t s l ng l n máy ch hay máy khách, &ng nên cài $t m i
máy m t cách riêng bi t mà hãy cài $t cho m t máy, sau ó xu t ra m t lý l ch t& vi c cài
$t ó và sau ó áp d ng cho t t c các máy còn l i. Vi c này ti t ki m r t nhi u th i gian
qu n tr khi cài $t môi tr ng.
' t o m t lý l ch
c tùy bi n t& công c tr giúp c u hình, nh p chu t vào th c
Configure, sau ó ch n Export Profile -> Customize, nh trong Hình 7.10.
Hình 7.10 – Xu t m t lý l0ch
Hình 7.11 ch+ ra các tr
ng c n ph i i n
xu t ra m t lý l ch
n
130
Nh p môn H qu n tr c s d li u DB2
Hình 7.11 – H p tho2i Customize Export Profile (Tùy ch>nh xu t lý l0ch)
Hình 7.12 là k t qu sau khi nh p “Export” trên h p tho i Customize Export Profile.
Hình 7.12 – K t qu xu t t p lý l0ch
' n p vào m t lý l ch
c tùy bi n b3ng công c tr giúp c u hình, nh p chu t vào th c
n Configure, sau ó ch n Import Profile -> Customize nh trong Hình 7.13
Ch
ng 7 – K t n i máy khách DB2
Hình 7.13 – N2p m t lý l0ch
Hình 7.14 ch+ ra các tr
ng c n ph i i n
n p m t lý l ch
Hình 7.14 – H p tho2i Customize Import Profile (Tùy bi n n2p lý l0ch)
131
132
Nh p môn H qu n tr c s d li u DB2
7.3 Tóm t-t
K t n i t& m t máy khách t i m t máy ch là m t khía c nh c t lõi c a vi c qu n lý c s
d li u quan h . Trong ch ng này chúng ta ã xem xét k t n i máy khách, b t u v i
m c ích và n i dung c a c s d li u và các th m c liên quan trong DB2.
Ti p theo chúng ta th o luânn vi c s! d ng công c tr giúp c u hình v i giao di n
h a
thi t l p k t n i máy khách – máy ch , bao g m nh ng gì c n ph i c u hình c hai
phía k t n i.
Chúng ta c6ng ã xem xét cách s! d ng th thu t Add Database
t om tk tn it i
máy ch thông qua m t trong ba ph ng th c: s! d ng m t lý l ch có s"n, tìm ki m trên
m ng (còn g i là khám phá), hay th c hi n th công b3ng cách i n các thông tin c n thi t
c a máy ch . Sau ó, vi c t o lý l ch cho máy khách và máy ch
c mô t chi ti t h n.
7.4 Bài t)p
Công c tr giúp c u hình có th
c s! d ng
c u hình nhanh chóng và d dàng các
k t n i c s d li u t& xa. Trong bài t p này, b n s) t o danh m c m t c s d li u n3m
trên m t máy ch DB2 t& xa (
c bi u di n b i tr m làm vi c c a ng i c nh b n), s!
d ng c hai ch
Search và Discover. Khi c s d li u
c t o danh m c, b n có th
truy c p nó gi ng nh nó
c $t trên h th ng c c b . T t c các ti n trình giao ti p này
u
c DB2 th c hi n ng m.
Bài t p này
c
a ra v i gi s! b n ang làm vi c trong m t m ng máy tính. N u
không, máy tính c a b n c6ng luôn có th
c s! d ng v&a là máy khách v&a là máy
ch và làm theo các ch+ d%n sau
k t n i t i h th ng c a chính b n.
Th
t c:
1. H/i ng
i ch c a máy ch (ho$c ng
ih
ng d%n) các thông tin:
2. Thông tin c s d li u t& xa:
(PR)
Giao th c
__TCPIP____
(IP)
' a ch+ IP ho$c 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 __
G i ý:
' l y tên c a máy ch trên Windows, gõ hostname t& c!a s* l nh
' l y
a ch+ IP trên Windows, gõ ipconfig t& c!a s* l nh
3. M công c tr giúp c u hình. (G i ý: Có th m t& th c
4. M th c
n Start c a Windows).
n Selected và ch n Add Database Using Wizard.
Ch
ng 7 – K t n i máy khách DB2
133
5. Trên trang Source c a th thu t, ch n tùy ch n Manually Configure a Connection
to a Database. Nh p nút Next
i t i trang sau c a th thu t.
6. Trên trang Protocol c a th thu t, ch n tùy ch n TCP/IP. Nh p nút Next
trang sau c a th thu t.
7. Trên trang TCP/IP c a th thu t, i n tên y
c a máy ch ho$c
c b c (1). Nh p nút Next
i t i trang sau c a th thu t.
it i
a ch+ IP l y
8. L u ý: Tùy ch n Service Name có th
c s! d ng n u b n có m t m c trên t p
Services l u trên máy c c b v i m t s c*ng
c nh ngh a t ng ng v i
c*ng ang l ng nghe c a th hi n máy ch t& xa. Khi s! d ng l a ch n này, DB2
s) nhìn vào t p các d ch v trên máy c c b ch không ph i trên máy ch , do ó
s! d ng b n ph i thêm m t m c vào trong t p này.
9. Trên trang Database c a th thu t, i n tên c a c s d li u
c nh ngh a
trên máy ch t& xa l y
c t& b c (1) vào tr ng Database Name. L u ý r3ng
tr ng Database Alias
ct
ng i n v i cùng giá tr . Bí danh c a c s d
li u là tên mà các ng d ng c c b s! d ng
k t n i t i c s d li u ó. Khi
b n t o m t c s d li u tên là SAMPLE, DB2 s) không cho phép b n t o danh
m c m t c s d li u khác v i cùng tên ó. Do ó, b n c n s! d ng m t bí danh
khác. Trong ví d này, thay *i bí danh thành SAMPLE1. B n có th thêm l i chú
thích (tùy ch n) v c s d li u này n u mu n. Nh p nút Next
i t i trang sau
c a th thu t.
10. Trên trang Data Source c a th thu t, 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. Vi c này s) t
ng ký c s d li u vào trong b qu n lý ODBC c a Windows (Windows ODBC
Manager) cho b n. Trong ví d này, b/ ch n tùy ch n Register this database for
ODBC vì b n s) không s! d ng ODBC. Nh p nút Next
i t i trang sau c a th
thu t.
11. Trên trang Node Options c a Wizard, ch+ rõ h i u hành c a máy ch ch a c s
d li u t& xa. Do t t c các tr m trong phòng máy u s! d ng Microsoft Windows
nên c n m b o m c Windows
c ch n t& danh sách s* xu ng (drop-down
list). Tr ng tên c a th hi n (instance) nên $t là DB2. N u tr ng này ang
tr ng, $t cho nó giá tr DB2. Nh p nút Next
i t i trang sau c a th thu t.
12. Trang System Options giúp b n m b o thông tin c a h th ng và tên máy ch
c i n úng và ki m tra các cài $t c a h i u hành Nh p nút Next
it i
trang sau c a th thu t.
13. Trang Security Options cho phép b n ch+ ra n i và ph ng th c b n mu n ng i
dùng xác nh n. Ch n tùy ch n Use authentication value in server’s DBM
Configuration. V i l a ch n này, ph ng th c xác th c s)
c xác nh b i
tham s AUTHENTICATION trong t p c u hình c a th hi n (Instance). Nh p nút
Finish
t o danh m c c s d li u t& xa và óng th thu t. M t h p tho i xác
nh n xu t hi n. Nh p nút Test Connection
m b o b n có th k t n i t i c s
134
Nh p môn H qu n tr c s d li u DB2
d li u. Thêm vào ó, ph i m b o tên ng i dùng và m t kh#u b n cung c p là
úng v i m t tài kho n ã
c nh ngh a trên máy ch t& xa (b i vì tham s
AUTHENTICATION c a máy ch có th
c $t giá tr là SERVER). N u vi c ki m
tra k t n i thành công thì b n ã t o danh m c thành công c s d li u t& xa.
Ng c l i, hãy quay l i b3ng th thu t và m b o r3ng b n ã i n úng t t c
các thông tin. (Nh p nút Change
tr l i các cài $t c a th thu t).
14. M Control Center và th! xem các b ng khác nhau trong c s d li u t& xa m i
c l p danh m c.
15. Tr l i công c tr giúp c u hình (Configuration Assistant) và th! l p danh m c
m t c s d li u khác, l n này s! d ng tùy ch n Search the Network. Th c hi n
t&ng b c v i th thu t gi ng v i khi b n c u hình k t n i th công. L u ý r3ng
v i các m ng l n, vi c tìm ki m ki u khám phá (Discovery) có th m t nhi u th i
gian
tr v k t qu .
Ch ng 8 - Làm vi c v i các
d# li u
8
i t !ng c s"
Trong ch ng này chúng ta th o lu n v các i t ng c s d li u nh l c
(schemas), b ng (tables), khung nhìn (views), ch+ m c (indexes), tu n t (sequences)…
M ts
i t ng d li u nâng cao nh b%y s ki n (triggers), các hàm cho ng i dùng
nh ngh a (UDFs), các th t c
c l u tr s) th o lu n trong Ch ng 14, Nh p môn
phát tri n ng d ng v i DB2.
Chú ý:
' bi t thêm thông tin v làm vi c v i các
it
ng c s d li u, xem video t i:
http://www.channeldb2.com/video/video/show?id=807741:Video:4242
8.1 L !c
L
(schemas)
c
là không gian tên (name spaces) cho t p h p các
c s! d ng nh sau:
L c
cung c p các ch+ d%n v quy n s h u trên
v i m t ng d ng.
Nhóm các
it
it
it
ng. Ch c n ng chính
ng ho$c m i quan h
ng có quan h v i nhau m t cách h p lý.
T t c các i t ng d li u c a DB2 ngo i tr& các t& ng ngh a công c ng (public
synomym) thì i u có hai ph n tên theo tiêu chu#n; L c
là n!a ph n u tiên c a tên:
<tên_l
c
>.<tên_
i t
ng>
Tên i t ng theo quy chu#n ph i là duy nh t. Khi b n k t n i n c s d li u và t o ra
ho$c tham chi u n m t i t ng mà không ch+ rõ tên l c
c th , khi ó DB2 s) s!
d ng mã tài kho n mà b n k n i n c s d li u làm tên l c . Ví d , n u b n k t
n i n c s d li u SAMPLE v i tài kho n arfchong, và t o ra b ng artists s! d ng
câu l nh CREATE TABLE:
CREATE TABLE artists …
136
Nh p môn H qu n tr c s d li u DB2
Tên
it
ng theo quy chu#n
y
c t o ra là arfchong.artists
B n c6ng có th s! d ng câu l nh set schemas
Xem li t kê 8.1 bên d i:
$t l i l
c
cho m t giao d ch.
connect to sample user arfchong using mypsw
select * from staff ## This looks for arfchong.staff
set schema db2admin
select * from staff ## This looks for db2admin.staff
Li t kê 8.1 - M t ví d s d ng câu l nh set schemas
M t h th ng thi (contest system) có th
c s! d ng
minh h a cho vi c s! d ng
l c . M t công ty ang t* ch c m t cu c thi mà các thành ph n tham gia c n t o ra
các b ng và th c hi n m t s câu l nh SQL. Các thành ph n tham gia g!i n m t mã tài
kho n gi ng nhau
k t n i n c s d li u và o n k ch b n gi ng nhau
t o ra
b ng,
ó t t c các i t ng không
c xác nh, th t v y, chúng không có tên l c
ò. Sau khi các thành ph n d thi ng nh p thành công vào h th ng, h th ng s) t sinh
ra tên l c
d a trên nhãn th i gian sau khi k t n i. V i ph ng pháp này, ng i tham
gia A s) làm vi c trên b ng v i tên gi ng nh ng i tham gia B, nh ng v i l c
c ah
thì khác nhau, và vì th không x y ra ng
gi a các công vi c c a thành ph n tham gia
thi.
8.2 Tên công c ng ho c bí danh (public synonyms or public aliases)
V i DB2 9.7 thì khái ni m tên công c ng, c6ng
c bi t nh là bí danh công c ng. Tên
công c ng cho phép tham chi u n i t ng mà không c n ch+ ra m t l c
c th .
Xem li t kê 8.2 bên d i.
connect to sample user arfchong using mypsw
create public synonym raul for table arfchong.staff
select * from raul
select * from arfchong.raul ## Error
connect to sample user db2admin using psw
select * from raul
Li t kê 8.2 – M t ví d c a bí danh công c ng
Trong li t kê 8.2, tr c tiên b n k t n i v i tên tài kho n là arfchong và t o ra tên công
c ng raul và cho nó tham chi u t i b ng arfchong.staff. Tên công c ng c a chính
nó thì không
c s! d ng trong l c . N u b n c th!, b n s) nh n m t thông báo l*i.
Ng i dùng khác nh db2admin trong ví d c a li t kê 8.2 có th s! d ng bí danh raul
khi nó là công c ng.
Trong ví d trên, n u t& khóa public không
c s! d ng, bí danh
c t o ra là tên
riêng (private synonym). Xem li t kê 8.3, nó là cùng ví d v i li t kê 8.2 nh ng s! d ng tên
riêng.
connect to sample user arfchong using mypsw
create synonym raul for table arfchong.staff
select * from raul
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
137
select * from arfchong.raul ## OK, it also works
connect to sample user db2admin using psw
select * from raul ## Error, cannot find db2admin.raul
select * from arfchong.raul ## OK, this works
Li t kê 8.3 – M t ví d c a bí danh riêng
Trong li t kê 8.3 b n ã th y nh ng i u khác nhau vì tên là riêng, nó không th tham
chi u khi k t n i n m t tài kho n khác mà không ch+ rõ l c
c th .
8.3 B ng (tables)
B ng là t p h p các d li u có m i liên h v i nhau
c s p x p m t cách h p lý theo
c t và hàng. Li t kê 8.4 bên d i s) cung c p cho b n b3ng cách nào
t o ra m t b ng
d li u s! d ng câu l nh CREATE TABLE.
CREATE TABLE artists
(artno
SMALLINT
name
VARCHAR(50)
classification CHAR(1)
bio
CLOB(100K)
picture
BLOB(2M)
)
IN mytbls1
not null,
with default 'abc',
not null,
logged,
not logged compact
Li t kê 8.4 – M t ví d c a câu l nh CREATE TABLE
Trong ph n ti p theo, chúng ta s) mô t nh ng thành ph n chính c a câu l nh CREATE
TABLE này.
8.3.1 Ki(u d# li u
Danh sách các ki u d li u
c h tr trong DB2 trong hình 8.1.
138
Nh p môn H qu n tr c s d li u DB2
Hình 8.1- Ki(u d# li u
!c cài
t s8n trong DB2
Các ki u d li u
c trình bày trong hình 8.1
c mô t chi ti t trong các tài li u v
DB2; h u h t các ki u d li u trong DB2 thì ph* bi n ho$c t ng t v i các h qu n tr c
s d li u quan h khác, vì th chúng tôi không mô t chúng
ây. M$t khác, m t vài ki u
d li u gi ng nh nh ng i t ng l n (LOBs) không th cung c p m t cách tr c quan
cho nh ng ng i dùng m i.
Ki u d li u i t
ho$c các t p tin
ng l n
c dùng
l u tr các chu*i ký t l n, chu*i nh phân l n
c ch+ ra trong hình 8.2.
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
139
Hình 8.2 – Ki(u d# li u LOBs
Các i t ng l n nh phân th ng
c vi t t t
cho d hi u: M t
phân là m t BLOB, m t i t ng l n ký t là m t CLOB và m t i t
c6ng
c bi t nh là DBCLOB.
Hình 8.1 Danh sách các ki u d li u m i
i t ng l n nh
ng l n ký t 2 byte
c thêm vào trong DB2 9.7:
BOOLEAN
ARRAY
ROW
CURSOR
Các ki u d li u này là m t ph n c a các ki u d li u trong h qu n tr c s d li u
Oracle mà
c h tr trong DB2 phiên b n này. Các ki u d li u trong Oracle s)
th o lu n chi ti t h n trong ph n sau c a ch ng này.
8.3.1.1 Các ki(u d# li u do ng
c
i dùng 0nh ngh4a (User-defined types)
DB2 cho phép b n t
nh ngh a các ki u d li u c a chính b n s! d ng các ki u d li u
do ng i dùng nh ngh a (UDTs). UDTs có th
c phân lo i nh sau:
Distinct type
Structured type
Reference type
140
Nh p môn H qu n tr c s d li u DB2
Array type
Row type
Cursor type
Ki u Reference, ki u Array, ki u Row, ki u Cursor là nh ng ki u d li u m i trong DB2
9.7 và
c s! d ng v i các th t c SQL PL. Trong ó, ki u d li u Distinct d a trên các
ki u d li u có s"n trong DB2. UDTs
c s! d ng khi:
Có nhu c u thi t l p ng c nh cho các giá tr
Có nhu c u ép ki u trong DB2
Các câu l nh SQL trong li t kê 8.5 sau ây minh b3ng cách nào và khi nào s! d ng ki u
d li u Distinct type trong UDTs:
CREATE DISTINCT TYPE POUND AS INTEGER WITH COMPARISONS
CREATE DISTINCT TYPE KILOGRAM AS INTEGER WITH COMPARISONS
CREATE TABLE person
(f_name
VARCHAR(30),
weight_p POUND NOT NULL,
weight_k KILOGRAM NOT NULL )
Li t kê 8.5 – M t ví d v ki(u Distinct
Trong li t kê 8.5, trên có hai ki u Distinct
c t o ra: POUND và KILOGRAM. C hai i u
c t o ra d a trên ki u d li u có s"n là INTEGER. M nh
WITH COMPARISONS
c nh ngh a nh ph n cú pháp ch+ ra r3ng vi c thay các hàm cùng tên c6ng gi ng nh
vi c các ki u d li u
c t o ra.
B ng person s! d ng hai ki u UDTs m i trong c t weight_p và weight_k theo th t
ch+ ra. 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
B n s) nh n m t thông báo l i b i vì hai c t v i ki u d li u khác nhau
c so sánh.
Th m chí weight_p và weight_k dùng ki u d li u theo th t là POUND và
KILOGRAM, c hai ki u d li u này
c t o ra u d a trên ki u INTEGER, b3ng cách
t p UDTs, thì vi c so sánh này c6ng không th th c hi n
c. V n
chính là nh ng gì
mà b n mu n, b i vì trong th c t , vi c so sánh gi a pounds và kilograms là i u vô lý.
Trong ví d k ti p, b n mu n so sánh c t weight_p v i ki u integer; tuy nhiên, hai ki u
d li u này là khác nhau và vì th b n s) nh n
c thông báo l i tr& khi b n s! d ng
ch c n ng ép ki u.
Nh b n th y trong phát bi u d i ây, chúng ta s! d ng ch c n ng ép ki u POUND()
s so sánh có th th c hi n
c. Nh nêu trên, ch c n ng ép ki u POUND()
ct o
Ch
ra v i UDT khi s! d ng m nh
DISTINCT TYPE.
ng 8 - Làm vi c v i các
it
ng c s d li u
141
WITH COMPARISONS trong câu l nh CREATE
SELECT F_NAME FROM PERSON
WHERE weight_p > POUND(30)
8.3.1.2 Các ki(u d# li u trong h c s" d# li u Oracle
Các ki u d li u
c s! d ng trong Oracle ã
c h tr trong DB2: NUMBER,
VARCHAR2, TIMESTAMP(n), “DATE”, BOOLEAN, INDEX BY, VARRAY, Row Type, Ref
Cursor. Công vi c u tiên là b n c n cho phép kh n ng ó b3ng bi n ng ký
DB2_COMPATIBILITY_VECTOR nh sau:
db2set DB2_COMPATIBILITY_VECTOR=FF
db2stop
db2start
Khi bi n ng ký
c cho phép, c s d li u m i s) có th h tr các ki u d li u li t kê
trên. M t vài ki u d li u
c s! d ng trong ng c nh n i mà SQL PL
c s! d ng.
Chú ý:
N u b n s! các phiên b n c a DB2 mà có h tr SQL Compatibility (
c gi i thi u trong
ch ng 2), b n có th s! d ng các ki u d li u trên n i mà SQL/PL
c s! d ng. N u
trong tr ng h p này, giá tr $t cho bi n ng ký DB2_COMPATIBILITY_VECTOR s) là
‘FFF’ thay vì là ‘FF’ nh trình bày ví d trên.
8.3.1.3 Ép ki(u ng m
Nhi u ngôn ng
ng gi ng nh Ruby trên Rails ho$c PHP cho phép ép ki u ng m. Trong
các phiên b n tr c thì vi c này là m t v n . V i DB2 9.7, thì v n
ã
c gi i quy t
vì ép ki u ng m ho$c “weak typing” ã
c cho phép. Nó có ý ngh a gì, m t ví d minh
h a, b n có th gán ho$c so sánh ki u d li u chu i thành ki u d li u s nh trình bày
bên d i:
create table t1 (col1 int)
select * from t1 where col1 = '42'
Trong ví d trên, chu*i ‘42’ có th
c so sánh v i d li u ki u s nguyên
c t col1.
Thêm vào ó, v i DB2 9.7 b n
c phép ch+ nh các tham s không ki u và d li u
không ki u NULLs trong nhi u tình hu ng. Xem ví d bên d i:
select ?, NULL, myUDF(?, NULL) from t1
8.3.1.4 Các giá tr0 NULL
142
Nh p môn H qu n tr c s d li u DB2
Giá tr NULL i di n cho m t tr ng thái không xác nh. Câu l nh CREATE TABLE có th
khai báo c t s! d ng m nh
NOT NULL
m b o r3ng c t ch a giá tr d li u
c
bi t tr c. B n có th ch+ nh giá tr m$t nh cho m t c t n u NOT NULL
c khai báo.
Phát bi u ti p theo cung c p m t ví d minh h a:
CREATE TABLE
ID
NAME
DEPT
JOB
YEARS
SALARY
COMM
)
staff (
SMALLINT NOT NULL,
VARCHAR(9),
SMALLINT NOT NULL with default 10,
CHAR(5),
SMALLINT,
DECIMAL(7,2),
DECIMAL(7,2) with default 15
Trong ví d trên, c t ID và DEPT
c khai báo là NOT NULL. C t DEPT c6ng
báo giá tr m$t nh là 10 n u ta không cho s khác.
c khai
8.3.2 C t khoá chính (Identity columns)
M t c t khóa chính là m t c t ki u s nó
ct
ng sinh ra m t giá tr duy nh t cho
t&ng dòng khi thêm vào. Ch+ có th
c m t c t khóa chính cho m i b ng.
Có hai cách
ngh a:
t o ra giá tr cho m t c t khóa chính, tùy thu c vào cách nó
c
nh
Generated always: giá tr luôn luôn
c t o ra b i DB2. Các ng d ng không
c phép cung c p m t giá tr t ng minh.
Generated by default: giá tr có th
c cung c p t ng minh b i m t ng d ng
ho$c, n u không có giá tr
c
a ra, thì DB2 s) t o m t giá tr . DB2 không th
b o m tính duy nh t. Tùy ch n này là
dành cho d li u tuyên truy n, và cho
vi c d5 ra và n p l i c a m t b ng
Chúng ta hãy xem ví d sau ây:
CREATE TABLE subscriber(
subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100 INCREMENT BY 100),
firstname VARCHAR(50),
lastname VARCHAR(50) )
Trong ví d , c t subscriberID có ki u d li u là INTEGER
c nh ngh a nh là m t c t
khóa chính luôn
c t o ra. Giá tr t o ra s) b t u t& 100, và m i l n nó s)
c t ng
thêm 100.
8.3.3 Các
i t !ng tu n t.
M$c dù các i t ng tu n t là c l p v i các b ng, chúng
c
c p trong ph n này,
vì chúng làm vi c m t cách t ng t nh c t khóa chính. S khác bi t là i t ng tu n
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
143
t t o ra các s duy nh t trong toàn b c s d li u, trong khi c t khóa chính t o ra s
duy nh t trong m t b ng thôi. D i ây là m t ví d :
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
Li t kê 8.6 – M t ví d v tu n t.
PREVVAL cung c p giá tr hi n t i c a dãy tu n t , trong khi NEXTVAL cung c p giá tr
ti p theo. Ví d trên c6ng s! d ng SYSIBM.SYSDUMMY1. 'ây là m t b ng danh sách h
th ng, nó có ch a m t c t và m t hàng. Nó có th
c s! d ng trong tr ng h p truy
v n òi h/i u ra c a m t giá tr duy nh t. Các b ng danh sách h th ng này
c mô t
trong ph n k ti p.
8.3.4 Các b ng danh sách h th ng
M i c s d li u u có các b ng và khung nhìn danh sách h th ng riêng. Chúng l u tr
các siêu d li u (metadata) v các i t ng c a c s d li u. N u các b ng h th ng b
l i, c s d li u c a b n s) không s! d ng
c. B n có th truy v n các b ng gi ng
nh b t k4 các b ng c s d li u bình th ng. Ba l c
(schema)
c s! d ng
xác nh các b ng danh sách h th ng:
144
Nh p môn H qu n tr c s d li u DB2
SYSIBM: các b ng c b n, t i u hóa cho s! d ng DB2
SYSCAT: các khung nhìn d a trên các b ng SYSIBM, t i u hóa cho d s! d ng
SYSSTAT: c s d li u th ng kê
Sau ây là m t s ví d v các khung nhìn:
SYSCAT.TABLES
SYSCAT.INDEXES
SYSCAT.COLUMNS
SYSCAT.FUNCTIONS
SYSCAT.PROCEDURES
8.3.5 Khai báo các b ng t:ng quát t2m th i (DGTTs)
Khai báo b ng t m là các b ng
c t o ra trong b nh và
c s! d ng b i m t ng
d ng và sau ó b h y m t cách t
ng khi các ng d ng ch m d t. Nh ng b ng t m này
ch+ có th
c truy c p b i ng d ng ã t o ra chúng, và chúng không t n t i trong b t
k4 danh sách b ng DB2 nào. Truy c p vào các b ng t m này cung c p hi u n ng r t hi u
qu vì không có tranh ch p, không có khóa c a các dòng, không có ng nh p m$c nh
( ng nh p là tùy ch n), và không có ki m tra th#m quy n. Ngoài ra nó còn có h tr ch+
m c (index) cho các b ng t m, có ngh a là, b t k4 ch+ m c chu#n nào i u có th
ct o
ra trên m t b ng t m. B n c6ng có th ch y RUNSTATS ch ng lên các b ng.
Khai báo b ng t m t bên trong m t ng i dùng không gian b ng t m,
c xác nh
tr c khi t o ra b t k4 khai báo b ng t m. Các câu l nh trong Li t kê 8.7 cung c p m t ví
d v 3 cách khai báo b ng t m:
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;
Li t kê 8.7 – Làm vi c v i DGTTs
Khi m t khai báo b ng t m
c t o ra, l c
c a nó là SESSION; l
mô t khi tham chi u DGTT. M t mã nh n d ng ng i dùng (user ID)
c
ph i
c
c dùng
t o ra
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
145
m t b ng t m s) có t t c các $c quy n trong b ng. M i ng d ng t o ra m t b ng t m
s) t o ra m t b n sao c l p nh trong Hình 8.3.
Hình 8.3 – Ph2m vi mô t các b ng t2m
Li t kê 8.8 t o ra s gi i h n ph m vi c a mô t các b ng t m thông th
m t không gian b ng t m c a ng i dùng ã
c t o ra.
T
ng. Nó cho r3ng
DB2 Command Window #1:
db2 connect to sample
db2 declare global temporary table mydgtt (col1 int, col2 varchar(10)) on
commit preserve rows
db2 insert into session.mydgtt values (1,'hello1'),(2,'hello2'),
(3,'hello3')
db2 select * from session.mydgtt
COL1
COL2
----------- ---------1 hello1
2 hello2
3 hello3
3 record(s) selected.
T DB2 Command Window #2:
db2 connect to sample
db2 select * from session.mydgtt
SQL0204N "SESSION.MYDGTT" is an undefined name.
SQLSTATE=42704
Li t kê 8.8 – Làm vi c v i DGTTs – ph2m vi
Nh b n th y trong li t kê 8.8 khi b n s! d ng SESSION.MYDGTT trong phiên làm vi c th
hai (DB2 Command Window #2), b n nh n
c m t l i b i vì DGTT không
c mô t
146
Nh p môn H qu n tr c s d li u DB2
trong phiên làm vi c này. Chú ý r3ng m t mô t DGTT s! d ng m nh
ON COMMIT
PRESERVE ROWS b i vì làm vi c trong DB2 Command Window s) cam k t tr m$c nh
trong m i câu l nh
a vào.
8.3.6 T2o b ng t2m t:ng quát (CGTTs)
Trong khi DGTTs cho phép b n t o m t b ng t m, nh ngh a b ng không th
c chia
[email protected] gi a các k t n i khác nhau ho$c phiên làm vi c (session). M i khi m t phiên
c thi t
l p, các l nh DECLARE GLOBAL TEMPORARY TABLE ã
c th c thi. V i vi c t o
b ng t m th i t*ng quát (CGTTs) thì khác, nh ngh a b ng t m th i ch+ c n
c t o ra
m t l n, vì nó th ng
c l u tr trong các danh sách c a DB2. 'i u này có ngh a r3ng
các k t n i khác có th ch+ c n s! d ng b ng mà không c n ph i t o ra nó m t l n n a.
M$c dù c u trúc b ng có th
c s! d ng ngay l p t c, d li u cho m i k t n i c l p
v i nhau, và s) bi n m t sau khi óng k t n i. Ví d , chúng ta hãy nhìn vào li t kê 8.9. Nó
gi
nh m t không gian b ng t m ng i dùng ã
c t o ra.
T
DB2 Command Window #1:
db2 connect to sample
db2 create global temporary table mycgtt (col1 int, col2 varchar(10)) on
commit preserve rows
db2 insert into mycgtt values (1,'hello1'),(2,'hello2'), (3,'hello3')
db2 select * from mycgtt
COL1
COL2
----------- ---------1 hello1
2 hello2
3 hello3
3 record(s) selected.
T DB2 Command Window #2:
db2 connect to sample
db2 select * from mycgtt
COL1
COL2
----------- ---------0 record(s) selected.
Li t kê 8.9 – Làm vi c v i CGTTs – ph2m vi
Trong li t kê 8.9, chúng ta th y r3ng trong DB2 Command Window #2 (phiên làm vi c ho$c
k t n i khác), không c n t o l i CGTT, b n có th d dàng tham chi u n b ng t m; tuy
nhiên, không có dòng nào
c tr v b i vì d li u ã
c t o ra chi ti t cho phiên làm
vi c u tiên.
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
147
8.4 Khung nhìn
Khung nhìn là m t th hi n c a d li u trong b ng. D li u cho khung nhìn không
c
l u tr riêng r), nh ng t n t i khi khung nhìn
c vi n d%n (invoked). Nh ng khung nhìn
l$p, ó là khung nhìn
c t o d a trên các khung nhìn khác,
c h tr . T t c thông
tin v khung nhìn
c gi trong các danh sách khung nhìn DB2 sau: SYSCAT.VIEWS,
SYSCAT.VIEWDEP, và SYSCAT.TABLES. Li t kê 8.10 cung c p m t ví d v cách t o ra
và s! d ng khung nhìn:
CONNECT TO MYDB1;
CREATE VIEW MYVIEW1
AS SELECT ARTNO, NAME, CLASSIFICATION
FROM ARTISTS;
SELECT * FROM MYVIEW1;
u ra:
ARTNO
-----10
20
30
...
NAME
------------HUMAN
MY PLANT
THE STORE
CLASSIFICATION
-------------A
C
E
Li t kê 8.10 – Làm vi c v i các khung nhìn
8.5 Ch> m c
Ch+ m c là m t t p h p các giá tr
c s p x p c a m i i m trong hàng c a m t b ng.
M t ch+ m c luôn là duy nh t và nó c6ng giúp c i ti n hi u n ng. M t s ký t
$c bi t mà
b n có th mô t trong các ch+ m c:
S p x p ch+ m c có th theo chi u t ng ho$c gi m
Các khóa ch+ m c có th là duy nh t ho$c không là duy nh t
Nhi u c t có th
c dùng cho ch+ m c (nó
N u ch+ m c và d li u v t lý
g i là m t ch+ m c gom nhóm
c g i là ch+ m c kép)
c gom l i trong m t ch+ m c tu n t , chúng
c
Ví d :
CREATE UNIQUE INDEX artno_ix ON artists (artno)
8.5.1 Tr! giúp thi t k (Design Advisor)
Tr giúp thi t k là m t công c tuy t v i giúp b n trong vi c thi t k t i u c s d li u
cho m t kh i l ng công vi c SQL nh t nh. Tr giúp thi t k có th giúp b n v i vi c
148
Nh p môn H qu n tr c s d li u DB2
thi t k các ch+ m c, các b ng truy v n c th (Materialized Query Tables - MQTs), bó d
li u a chi u (Multi-dimension clustering - MDC) và tính n ng phân m nh c s d li u.
Tr giúp thi t k t
c g i t& Control Center; nh n chu t ph i vào m t c s d li u và
ch n Design Advisor nh trong hình 8.4.
Hình 8.4 – G/i tr! giúp thiêt k t1 Control Center
Hình 8.5 th hi n Design Advisor. Làm theo các b
v n thi t k c a DB2.
c trong th thu t này
t
ct
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
149
Hình 8.5 – Trình Tr! giúp thi t k
8.6 Toàn v?n tham chi u
Toàn v,n tham chi u cho phép c s d li u c a b n qu n lý các quan h gi a các b ng.
B n có th thi t l p ki u quan h cha – con gi a các b ng nh trong hình 8.6. Trong hình
này, có hai b ng, DEPARTMENT và EMPLOYEE, liên k t v i nhau b i s c a
Department. C t WORKDEPT trong b ng EMPLOYEE ch+ có th ch a các s c a
Department ã t n t i trong b ng DEPARTMENT. B i vì trong ví d này, b ng
DEPARTMENT là b ng cha và b ng EMPLOYEE là b ng con ho$c b ng ph thu c. Hình
v) c6ng th hi n câu l nh CREATE TABLE c n thi t i v i b ng EMPLOYEE
thi t l p
quan h .
150
Nh p môn H qu n tr c s d li u DB2
Hình 8.6 – M t ví d v toàn v?n tham chi u gi#a các b ng
Trong toàn v,n tham chi u, các ng c nh
dùng.
Ng# c nh
c li t kê trong B ng 8.1 sau là th
ng
c
Mô t
B ng cha
B ng ph thu c
M t b ng d li u i u khi n mà khóa cha t n t i
M t b ng ph thu c v d li u v i b ng cha. Nó c6ng ch a m t khóa
ngo i. ' i v i m t hàng t n t i trong m t b ng ph thu c, m t hàng
h p l ph i t n t i b ng cha.
Khóa chính
Mô t m t khóa cha c a b ng cha. Nó không th ch a giá tr NULL và
giá tr ph i là duy nh t. M t khóa chính bao g m m t ho$c nhi u c t
trong m t b ng
Khóa ngo i
Tham chi u n khóa chính c a b ng cha
B ng 8.1 – Ng# c nh khóa Toàn v?n tham chi u
D li u trong các b ng có th
c liên k t v i d li u trong m t ho$c nhi u b ng khác
thông qua toàn v,n tham chi u. Các ràng bu c c6ng có th d a vào các giá tr d li u mà
chúng phù h p v i m t tài s n nh t nh ho$c quy t c kinh doanh. Ví d , n u m t c t l u
tr gi i tính c a m t ng i, ràng bu c có th tuân theo ch+ m t giá tr là “M” i v i Nam
và “F” i v i n .
8.7 Ti n hóa c a l !c
(Schema Evolution)
Khi vi c kinh doanh c n ph i thay *i, h t ng công ngh thông tin h tr và h th ng c6ng
ph i
c thay *i. 'i u này có ngh a trong th gi i c s d li u, các b ng m i ph i
c t o ra, các b ng ã t n t i ph i b xóa i ho$c ch+nh s!a, các b%y s ki n (trigger
logic) ph i thay *i, và t ng t v y. M$c dù nh ng thay *i này d làm, trong th c t ,
chúng có th khó kh n và ph c t p. Quá trình b o trì lâu dài là yêu c u b t bu c, ph c
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
151
t p, nhi u th t c r i ro ph i
c th c hi n. M t trong nh ng lý do c a nh ng thay *i
này g$p nhi u khó kh n tr c ó là DB2 yêu c u t t c các i t ng ph i phù h p t t
c các l n, và do ó, các hành ng nh h ng n các i t ng ang
c thay *i
không
c phép, ho$c s) gây ra vi c các i t ng ph thu c b phá h y. Hình 8.7 cung
c p m t k ch b n m%u.
Hình 8.7 – K0ch b n m9u l !c
phát tri(n
Nh m t ví d , hình 8.7, mô t View1 c n thay *i mà nó không ch+ d a trên TableQ1
v i thông tin tài chính quý u tiên c a công ty, mà còn d a vào TableQ1 và TableQ2
v i thông tin quý m t và hai, theo th t . Thông th ng b n s) ph i xóa View1 và t o l i
v i các mô t m i; tuy nhiên, View2 là c l p v i View1. Tr c DB2 9.7, DB2 không cho
phép b n xóa View1 b i vì s ph thu c vào View2. B n s) ph i xóa View2 tr c, sau
ó b n m i có th xóa View1 và t o l i c hai khung nhìn. V i DB2 9.7, các quy t c ã
c m r ng. Bây gi , thay *i có nh h ng c l p n các i t ng ph thu c
c
cho phép. ' i t ng ph thu c (View2 trong ví d ), ph i
c ki m tra l i tính h p l
tr c khi s! d ng, nh ng vi c này
c th c hi n m t cách t
ng. Vi c này
c g i là
t
ng ki m tra l i s h p l . Thông s AUTO_REVAL c a db cfg
c s! d ng
b t
ho$c t t tính n ng t
ng ki m tra l i s h p l và
xác nh khi c n ph i th c hi n
vi c ki m tra này. Ví d , n u b n $t thông s này là DEFERRED_FORCE, vi c ki m tra
h p l s)
c hoãn l i cho n khi i t ng không h p l ho$c các i t ng ph thu c
b truy c p, nh ng các câu l nh CREATE s) cho phép (v i m t c nh báo) i v i i
t ng ph thu c mà không t n t i.
Nh ng thay *i khác nh h ng n các mô hình ph thu c bao g m vi c th c hi n các
tính n ng nh cú pháp CREATE OR REPLACE i v i khung nhìn, hàm, th t c, trigger,
tên i di n, và vân vân. Ví d :
create or replace procedure p1 begin ... end
V i cú pháp này, n u m t i t ng (trong ví d này, th t c P1) không t n t i, nó s)
c
t o. N u nó ã t n t i tr c ó, nó s) b thay *i. Hành ng th hai là quan tr ng cho các
i t ng ph thu c. Khi P1 b thay *i, các i t ng ph thu c trong P1
ct
ng
ki m tra l i.Tình hình t ng t s) x y ra cho các tính n ng m i nh RENAME COLUMN,
và thay *i ki u d liêu v i ALTER COLUMN, nó c6ng
c m r ng h tr vi c thay *i
nhi u lo i d li u.
152
Nh p môn H qu n tr c s d li u DB2
M t khái ni m liên quan
c bi t n nh là m t hi u l c m m (soft invalidation) cho
phép ng i dùng xóa m t i t ng ngay c khi các giao d ch ang ch y s! d ng chúng.
B t k4 giao d ch m i s) b t& ch i truy c p vào i t ng b xóa.
8.8 Tóm t-t
Trong ch ng này, chúng ta ã có m t cái nhìn t*ng quan v các i t ng c s d li u
trong DB2: chúng là gì, cách chúng
c t o ra và làm th nào
s! d ng chúng. Chúng
ta ã gi i thi u qua các l c
c s d li u (database schemas), và so sánh chúng v i
các bí danh công c ng (public synonyms), c6ng nh so sánh xem các bí danh t ng minh
và các bí danh riêng (private synonyms) khác nhau nh th nào.
Ti p ó, chúng ta ã th o lu n khá k2 v các b ng (tables) và các thành ph n c a chúng:
các ki u d li u (bao g m c ki u có s"n (built-in) và ki u ng i dùng t
nh ngh a), các
c t khóa chính (identity columns), các i t ng tu n t (sequence objects), và các b ng
t m th i (Global temporary tables). K ti p là vi c xem xét các khung nhìn (views), ch+ m c
(indexes) và s! d ng giao di n tr giúp thi t k (Design Advisor GUI)
t ng c ng kh
n ng truy c p và ph c h i c a d li u bên trong b ng.
Cu i cùng, chúng ta ã kh o sát tính toàn v,n tham chi u
xác nh quan h gi a các
b ng, và khái ni m m i v ti n hóa c a l c
(schema evolution) cho phép các i
t ng d li u có th
c thay *i mà không làm ph c t p hóa khi không c n thi t.
8.9 Bài t)p
T& tr c t i gi , b n ã quen v i vi c s! d ng các b ng có s"n trong c s d li u
SAMPLE
minh h a cho các khái ni m. Tuy v y, b n s) c n ph i t t o ra các b ng cho
riêng mình trong c s d li u. Trong bài t p này, b n s) s! d ng th thu t h ng d%n
t o b ng (Create Table Wizard)
t o hai b ng m i trong c s d li u SAMPLE.
Th t c
16. M Create Table Wizard nh
ã trình bày ch ng tr c ó. (Control Center ->
All Databases -> SAMPLE -> (nh n chu t ph i) Table object -> Create …)
17. '$t tên b ng, t o các nh ngh a c t và các tham chi u n u có. B ng s)
c s!
d ng
l u các thông tin v các
dùng v n phòng
c s! d ng trong m t d
án t i c s d li u SAMPLE. M i l n các thi t b
c mua, m t hàng s)
c
thêm vào b ng này. B ng s) bao g m sáu c t:
- product_id:
nh danh duy nh t c a s n ph#m ang
c mua
- description:
mô t v s n ph#m
- quantity:
s l
- cost:
giá c a s n ph#m
- image:
hình nh c a s n ph#m (n u có)
- project_num:
mã s c a d án mua s n ph#m này
ng mua
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
153
18. A trang u tiên c a h ng d%n, i v i tên s
, nh p vào ID b n ang dùng
ng nh p, và s! d ng tên b ng là SUPPLIES. B n c6ng có th gõ vào ghi chú tùy
ý. Nh n vào nút Next
sang trang ti p theo c a h ng d%n.
19. T& trang này, b n có th thêm các c t vào b ng. Nh n vào nút ADD
c t.
thêm các
20. Gõ product_id vào Column name và ch n ki u d li u là INTEGER. B/ d u
ch n Nullable và nh n vào nút Apply
nh ngh a c t.
21. L$p l i b c này cho các c t còn l i c a b ng s! d ng các tùy ch n
c hi n th
trong b ng sau. Khi t t c các c t ã
c thêm vào, nh n nút OK và danh sách
các c t v&a
c t o s)
c t*ng h p l i. Nh n nút Next
ti p t c t i trang ti p
theo c a h ng d%n.
Column Name
Attributes
product_id ( ã t o)
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
154
Nh p môn H qu n tr c s d li u DB2
Chú ý: Tùy ch n NOT LOGGED có th
c ch+ rõ khi khai báo các c t LOB. 'i u
này là b t bu c i v i các c t có dung l ng d li u l n h n 1GB. Nó c6ng
c
khuyên dùng cho các c t LOB có dung l ng d li u l n h n 10MB b i vì s thay
*i các c t ch a d li u l n có th làm y t p nh t kí r t nhanh (log file). Ngay c
khi NOT LOGGED
c s! d ng, các thay *i i v i các t p LOB trong quá trình
giao d ch v%n có th quay lui l i tr ng thái lúc u thành công. C6ng c n chú ý
r3ng c t image là c t duy nh t
c nh ngh a NULLABLE. B n hãy th! ngh
xem t i sao nó l i
c nh ngh a nh v y?
22. A ây, t t c các thông tin b t bu c cho vi c t o b ng u ã
c cung c p.
B3ng cách b/ qua các ph n khác c a h ng d%n, các tùy ch n
c thi t l p giá
tr m$c nh. B n có th thêm vào các khóa và các ràng bu c b t c khi nào sau
khi b ng ã
c t o.
23. Thêm vào m t ràng bu c cho b ng
gi i h n giá tr c a c t quantity. A trên trang
Constraint c a h ng d%n, nh n vào nút ADD. A tr ng Check Name, gõ vào:
valid_quantities. T i tr ng Check Condition, gõ vào: quantity > 0.
Nh n nút OK. B n s) th y m t b n tóm t t c a các ràng bu c v&a
c t o trên
trang Constraint c a h ng d%n. Nh n nút Next
ti p t c n trang ti p theo c a
h ng d%n.
24. B n có th ti p t c theo các b c trong th thu t h ng d%n
thay *i các tham
s khác c a b ng. Ho$c b n có th nh y n trang Summary hay n gi n n nút
Finish
t o b ng.
25. T& Trung tâm i u khi n Control Center, nh n vào th m c Tables bên d i c
s d li u SAMPLE trong khung bi u di n d ng cây các i t ng. B ng v&a
c
t o bây gi s) xu t hi n trong danh sách. Có th c n làm t i (refresh) khung nhìn
c a trung tâm i u khi n
có th th y
c s thay *i này.
26. Bây gi hãy th! ki m tra vi c ép ki u ng m
d li u SAMPLE. Th! các b c sau:
nh s! d ng b ng STAFF trong c s
C:\>db2 describe table staff
Chú ý r3ng c t ID c n ph i
c
nh ngh a ki u SMALLINT
C:\>db2 select * from staff where id = '350' --> Chú ý ‘350’ là m t chu i
C:\>db2 select * from staff where id =
Trong c hai tr
ng h p, k t qu
350 --> Chú ý 350 là m t s
u ra s) là:
ID
NAME
DEPT
JOB
YEARS SALARY
COMM
------ --------- ------ ----- ------ --------- --------350 Gafney
84 Clerk
5 43030.50
188.00
Ch
ng 8 - Làm vi c v i các
it
ng c s d li u
155
Trong câu l nh SELECT u tiên s! d ng ‘350’ là m t chu i, DB2 th c hi n vi c
ép ki u không t ng minh thành m t s (SMALLINT).
Ch
9
ng 9 -$%&c ti n 'ch di chuy(n d#$li u
C?c công D (ho$c l nh mô E (trong ph n F9y
c s!(G ng (di chuy n d (li u bên trong
m t c s (d (li u ho$c gi a D?c c s (d (li u v i nhau trong DHng ho$c I=?c n n t ng.
nh 9.1
a ra D?i F=Jn t*ng quan v (D?c ti n -ch di chuy n d (li u.
@Anh 9.1 –$%&c ti n 'ch di chuy(n d#$li u
Trong nh 9.1 DK(hai c s (d (li u, A L9(B. S!(G ng ti n -ch EXPORT DK(th (k t xu t d (
li u t&(m t M ng ra m t file. ' nh G ng file DK(th (N
9:
ASC = ASCII
DEL = Delimited ASCII
WSF = Worksheet format
IXF = Integrated Exchange Format
C?c file ASC L9 DEL N
9(D?c file v n M n DK(th (
c m (L9(xem Ni b3ng b t I4(EOJnh P8 n
E= o v n M n F9o. WSF N
9( nh G ng DK(th (s!(G ng cho vi c xu t d (li u ra D?c M ng E-nh
nh Excel ho$c Lotus® 1-2-3. ' nh G ng IXF không D=+(bao g m d (li u Q9(DRn N
9(Ngôn
ng (' nh FS=a D (li u (DDL – Data Definition Language) c a b ng. 'i u F9y r t ti n l i
b i khi c n E?i E o N i M ng, ta DK(th (xây d ng tr c ti p t&(m t t p k t xu t d (li u v i nh
G ng IXF; Q9( i u K(là không th ( i v i D?c nh G ng I=?c.
Khi d (li u T(
c xu t ra m t t p, ta DK(th (s!(G ng ti c -ch IMPORT (nh p d (li u t&(
t p K(L9o m t M ng I=?c. U ng V= i t n E i s"n i v i các nh G ng ASC, DEL L9(WSF,
không c n có tr c i v i IXF. M t ph ng V=?p I=?c (E i d (li u L9o m t M ng N
9(s!(
G ng công D (LOAD. Ti n -ch F9y nhanh h n LJ(FK( i tr c ti p L9o D?c trang c s (d (li u
Q 9(không t ng E?c v i h (th ng DB2; tuy nhiên ph ng V=?p F9y không ki m tra D?c
Ch
ng 9 - C?c ti n -ch di chuy n d li u
157
O9ng bu c, L9(D?c trigger (b%y s (ki n) không
c th c thi. '
m b o tính nh t quán
c a d li u
c n p khi s! d ng LOAD, l nh SET INTERGRITY th ng
c s! d ng
theo sau.
Ph n ti p theo mô E (chi ti t v (D?c ti n -ch EXPORT, IMPORT, L9(LOAD.
%BC$D:
;Jm hi u thêm v (D?ch N
9m vi c v i D?c ti n -ch di chuy n d (li u, xem video sau:
http://www.channeldb2.com/video/video/show?id=807741:Video:4262
9.1 Ti n 'ch EXPORT
Ti n -ch EXPORT nh
T(FKi (trên,
c s!(G ng (trích d (li u t&(m t M ng sang m t
t p. Phía sau k ch b n, m t l nh SQL SELECT
c th c hi n. W-(G (sau xu t ra 10 GRng
d (li u t&(M ng employee ra t p employee.ixf theo nh G ng IXF.
EXPORT TO employee.ixf OF IXF
SELECT * FROM employee
FETCH FIRST 10 ROWS ONLY
U n nên D= y th!(L-(G (trên. U ng employee n3m trong c s (d (li u SAMPLE, do K(
tr c tiên M n c n k t n i v i c s d (li u T(E o (ch ng tr c.
N u M n mu n N
9m vi c v i D?c công D (trên giao di n (= a (GUI), ti n -ch EXPORT
D6ng DK(th (
c S i t&(Control Center nh trong nh 9.2.
158
Nh p môn H qu n tr c s d li u DB2
@Anh 9.2 – Kh"i ch2y h p EBF2i EXPORT
Nh trong =Jnh, u tiên M n nh p chu t m t l n D= n M ng employee, sau K(nh p chu t
V= i lên M ng, m t menu s*(xu ng, M n D= n Export. Ti p theo, m t M ng D=+(d%n P)(hi n
E=. U n D=+(c n theo t&ng b c D=+(d%n (=89n E=9nh thao E?c.
9.2 Ti n 'ch IMPORT
Ti n -ch IMPORT
c GHng (F p d (li u t&(m t t p L9o m t M ng nh
T( (c p ph n
tr c. X=-a sau FK, m t thao E?c SQL INSERT
c th c thi. Khi m t thao E?c INSERT
c th c thi, Q i b%y (trigger)( u
c I-ch =8 t, t t D (D?c O9ng bu c P)(DK(hi u l c
ngay l p t c, L9(LHng nh ( m D a c s (d (li u P)(
c s!(G ng. W-(G (sau E i t t D (d (
li u t&(t p nh G ng IXF là employee.ixf(L9o M ng employee_copy. U n nên th c =9nh L-(
G (F9y, nh ng c n V= i D= y ti n -ch EXPORT nh
T(FKi (ph n tr c.
IMPORT FROM employee.ixf OF IXF
REPLACE_CREATE
INTO employee_copy
;Hy D= n REPLACE_CREATE N
9(m t trong r t nhi u EHy ch n DK(s"n DHng ti n -ch
IMPORT. ;Hy D= n F9y thay th (n i dung D a M ng employee_copy n u M ng T(t n E i
tr c khi th c hi n IMPORT, ho$c E o M ng L9(F p d (li u n u M ng ch a t n E i.
Ch
ng 9 - C?c ti n -ch di chuy n d li u
159
N u M n mu n N
9m vi c t&(Control Center, M n DK(th (S i ch c n ng IMPORT b3ng D?ch
D= n M ng b t I4, nh p chu t V= i lên FK(L9(D= n Import nh trong nh 9.3.
@Anh 9.3 – Kh"i ch2y h p EBF2i IMPORT
9.3 Ti n 'ch LOAD
Ti n -ch LOAD(N
9(m t D?ch nhanh h n (E i d (li u t&(t p(L9o M ng. Nh
T(mô t , ti n
-ch LOAD không V= i thông qua h (th ng DB2, do K(D?c b%y (trigger) không
c I-ch
=8 t, LHng m không
c s!(G ng, L9(D?c O9ng bu c d (li u cK(th
c th c hi n,
nh ng ph i các b c khác sau ó. M$t I=?c, thao E?c LOAD nhanh h n IMPORT LJ(FK(
N
9(công D (F p d (li u b c th p tr c ti p truy c p D?c trang d (li u trên a c ng. YK(N
9m
vi c theo ba pha: LOAD, BUILD, L9 DELETE.
W-(G (sau E i t t D (d (li u t&(t p nh G ng IXF là employee.ixf vào M ng
employee_copy. ;Hy D= n REPLACE N
9(m t trong nhi u EHy D= n i DHng v i LOAD.
Trong tr ng h p F9y FK(
c s!(G ng (THAY THZ(E89n b (n i dung D a M ng
employee_copy.
LOAD FROM employee.ixf OF IXF
REPLACE INTO employee_copy
Sau khi th c thi l nh trên, không gian D a M ng, n i M ng GHng (l u tr (d (li u DK(th (
c $t L9o EO ng E=?i CHECK PENDING (ch (ki m tra). 'i u K(DK(FS=a l9(M n c n
160
Nh p môn H qu n tr c s d li u DB2
D= y l nh SET INTEGRITY(
D?ch th c hi n:
(ki m tra E-nh nh t [\?n D a d (li u. W-(G (sau D=+(cho M n
SET INTEGRITY FOR employee_copy
ALL IMMEDIATE UNCHECKED
Mu n N
9m vi c t&(Control Center, M n DK(th (S i ti n -ch LOAD L9(SET INTEGRITY nh
trong nh 9.4 L9(9.5 t ng ng.
@Anh 9.4 – Kh"i ch2y ti n 'ch LOAD
Ch
ng 9 - C?c ti n -ch di chuy n d li u
161
@Anh 9.5 – Kh"i ch2y ti n ích SET INTEGRITY
9.4 Công c db2move
T i m i th i i m các công c EXPORT, IMPORT và LOAD ch+ làm vi c
c trên m t
b ng. M$c dù b n có th vi t m t k ch b n
phát sinh các câu l nh trên cho t&ng b ng
trong c s d li u, nh ng m t công c khác
c g i là db2move c6ng có th làm vi c
này cho b n. Công c db2move ch+ có th làm vi c v i nh ng t p IXF, và tên c a các t p
này s)
c db2move t
ng phát sinh. Ví d d i ây s) cho th y làm th nào
th c
hi n db2move l n l t v i các tùy ch n export và import b3ng vi c s! d ng c s d li u
SAMPLE.
db2move sample export
db2move sample import
Trung tâm i u khi n không có tùy ch n cho db2move.
9.5 Công c db2look
Trong khi các công c EXPORT, IMPORT, LOAD và db2move cho phép b n di chuy n d
li u t& b ng này t i b ng khác trong cùng m t c s d li u hay gi a các c s d li u
v i nhau, thì công c db2look l i có th
c s! d ng
rút trích các câu l nh DDL, các
s li u th ng kê v c s d li u, và các $c tính không gian b ng c a m t c s d li u,
r i l u chúng trong m t t p k ch b n
sau này có th ch y trên h th ng khác. Ví d nh ,
162
Nh p môn H qu n tr c s d li u DB2
n u b n mu n sao chép m t c s d li u t& máy ch DB2 ch y trên h i u hành Linux
sang máy ch DB2 ch y h i u hành Windows; thì u tiên b n s) ch y công c
db2look trên máy ch DB2 Linux
thu
c c u trúc c a c a c s d li u và l u c u
trúc này vào m t t p k ch b n. Sau ó, b n sao chép t p k ch b n này sang máy ch DB2
Windows, và th c thi k ch b n ó
b t u t o l p b n sao c s d li u. T i th i i m
này, thì c u trúc c a c s d li u ã
c sao chép xong. B c ti p theo là ch y công
c db2move v i tùy ch n export trong máy ch DB2 Linux, r i chép toàn b nh ng t p ã
c sinh ra sang máy ch DB2 Windows, và th c thi db2move v i m t trong hai tùy ch n
import ho$c load. Khi b c này hoàn t t, c s d li u c a b n s)
c sao chép toàn b
t& máy ch này sang m t máy ch ch y h i u hành khác.
K ch b n trên có th là c n thi t khi làm vi c v i nh ng c s d li u trên các h i u
hành khác nhau, ch1ng h n nh Linux và Windows. N u c hai máy ch
u ch y trên
cùng m t h i u hành, b n hãy s! d ng câu l nh backup và restore, nó s) giúp vi c x! lí
tr lên d dàng và nhanh chóng h n. Các câu l nh backup và restore s)
c trình bày k2
h n t i nh ng ch ng sau c a cu n sách này.
Ví d sau ây s) trích ra s
c a không gian b ng và b
m d li u, cùng v i các câu
l nh DDL t& c s d li u SAMPLE, và l u chúng thành t p sample.ddl. Chúng tôi
khuy n khích b n ch y câu l nh sau và xem l i t p v n b n u ra sample.ddl.
L nh db2look có quá nhi u tùy ch n
mô t trong quy n sách này, tuy nhiên b n có th
s! d ng c -h
có
c m t mô t tóm l c v nh ng tùy ch n có s"n.
db2look
-h
Công c db2look c6ng có th
Hình 9.6.
c g i ra t& trung tâm i u khi n nh th hi n trong
Ch
ng 9 - C?c ti n -ch di chuy n d li u
163
Hình 9.6 – Vi c rút trích DDL t1 trung tâm i u khi(n
Trong Hình 9.6 ch n c s d li u mà b n mu n rút trích DDL, nh n chu t ph i vào ó, và
ch n Generate DDL. C!a s* Generate DDL s) hi n ra cho th y m t vài tùy ch n rút trích,
nh trong Hình 9.7.
Hình 9.7 – Vi c rút trích DDL t1 trung tâm i u khi(n
164
Nh p môn H qu n tr c s d li u DB2
9. 6 Tóm t-t
Trong ch ng này, chúng ta ã bàn lu n v các hàm xu t và nh p c a DB2. B t u t&
các nh d ng xu t khác nhau (ASC, DEL, WSF, và IXF) r i tìm hi u sâu h n v công c
EXPORT. Các công c nh p IMPORT và LOAD c6ng ã
c
c p t i, cùng v i nh ng
i u c n bi t v câu l nh SET INTEGRITY khi s! d ng LOAD.
Câu l nh db2move cung c p cho b n m t ph ng ti n
n gi n hóa quá trình xu t và
nh p. M t câu l nh ph c t p h n, db2look, cho phép b n rút trích và l u tr t t c các
thành ph n c a c s d li u c n có
t o l i m t cách c l p toàn b c s d li u n u
mu n.
9.7 Bài t)p
Khi b n sao chép m t c s d li u, m c ích c a b n có th là t o l i c s d li u ó
m t cách n gi n và d hi u nh t. Vi c này th ng
c th c hi n b3ng cách s! d ng
các k ch b n SQL, nó có th
c th c thi ngay sau khi DB2 cài xong. Trong ph n bài t p
này, b n s) rút trích các nh ngh a v
i t ng t& c s d li u EXPRESS ( ã
ct o
t& m t bài t p tr c) b3ng cách s! d ng trung tâm i u khi n.
Th t c:
1. M trung tâm i u khi n.
2. Nh n chu t ph i vào c s d li u EXPRESS trong cây i t ng và ch n m c
Generate DDL. Nó s) kích ho t c!a s* h p tho i Generate DDL.
3. Trong c!a s* Generate DDL, ch+ rõ các tùy ch n cho Generate DDL, nh
ã th
hi n sau ây. N u b n ã t o nh ng i t ng b* sung trong môi tr ng c a b n,
nh các không gian b ng, các b
m d li u,... b n s) ch n chúng
ây. Khi
b n không mu n t o lo i i t ng nào, thì &ng ánh d u vào h p tho i ó. S
li u th ng kê v c s d li u không
c kèm theo vì môi tr ng ch y th t có
kh n ng ã có m t t p h p khác các s li u th ng kê so v i môi tr ng phát
tri n. T ng t , các thông s v c u hình c6ng có th khác i ôi chút. Trong môi
tr ng c a b n, n u m i th
c c u hình chính xác nh nh cách nó s)
c
tri n khai, b n c6ng có th ch n thêm nh ng tùy ch n b* sung.
Ch
ng 9 - C?c ti n -ch di chuy n d li u
165
4. Chuy n t i nhãn Object. B n có kh n ng ch n l a chi ti t nh ng i t ng mà
b n mu n phát sinh ra DDL. Trong tr ng h p này, l a ch n ng i dùng và gi n
ã s! d ng
t o nên m i i t ng c a b n và phát sinh DDL cho t t c các
i t ng trong l c
(schema). Nh n chu t vào nút Generate
b t ut o
DDL.
166
Nh p môn H qu n tr c s d li u DB2
5. Nhìn l i k t qu DDL. K t qu c a các b c tr c là m t k ch b n n i v i t t
c các câu l nh SQL cho các i t ng ã ch n. Bây gi b n s) t* ch c k ch b n
này thành nh ng nhóm lô-gíc.
6. T o th m c C:\express trong t p h th ng và l u t p DDL ã
c phát sinh
vào th m c m i trên v i tên schema.ddl. (Nh n chu t ch n nút Save)
7. M t p v&a m i
ch n File -> Open)
c l u trong Command Editor. (G i ý: T& Command Editor,
8. M$c dù chúng ta ch+ mu n DDL cho các b ng, nh ng b n s) th y r3ng c nh ng
DDL cho các i t ng khác c a c s d li u c6ng
c kèm theo. Chuy n t t
c các câu l nh CREATE TRIGGER vào m t t p m i riêng bi t g i là
triggers.ddl. Dù chúng ta ch+ t o m t b%y s ki n, nh ng ây là cách t t nh t
phân bi t các i t ng theo lo i.
9. T& gi tr
i, chúng tôi khuyên nên lo i b/ t t c :
Ch
ng 9 - C?c ti n -ch di chuy n d li u
167
Các câu l nh c s d li u CONNECT TO,
Các câu l nh DISCONNECT.
T i th i i m này, b n nên có hai k ch b n sau:
C:\express\schema.ddl ch a DDL cho các b ng, các hi n th , các ch+ m c và
các r3ng bu c.
C:\express\triggers.ddl ch a DDL cho các b%y s ki n.
10. D n s ch các k ch b n cho vi c tri n khai:
Lo i b/ nh ng câu l nh không c n thi t (ví d : -- CONNECT TO… )
Phân lo i các hàm và các th t c thành nh ng t p riêng c a chúng (vi c này r t
h u ích khi mà có quá nhi u các hàm và các th t c). B n c6ng có th mu n gom
nhóm chúng theo các hàm và các ng d ng (ví d : billing.ddl, math.ddl,
stringfunc.ddl,…)
11. B n hãy chú ý t i nh ng kí t
$c bi t ang
c dùng
làm d u thúc c a các
b%y s ki n, c a các hàm và các th t c (@). 'i u này là c n thi t
phân bi t
c k t thúc c a câu l nh CREATE <object> khác v i k t thúc c a câu l nh
theo th t c bên trong i t ng.
Ch
10
ng 10 - B o m)t C s" d# li u
Ch ng này nêu lên quy cách qu n lý b o m t trong DB2. Hình 10.1 th hi n cái nhìn t*ng
quan v b o m t.
Hình 10.1 - T:ng quan v b o m)t trong DB2
Theo hình 10.1, b o m t trong DB2 g m có hai ph n:
Ch ng th.c
'ây là ti n trình ki m tra h p l thông tin tài kho n ng i dùng. Ti n trình này
c m nh n b i m t ch ng trình b o m t b* sung bên ngoài DB2 (security
plug-in). Các plug–in b o m t m$c nh u d a vào c ch b o m t c a h i u
hành, nh ng ta c6ng có th s! d ng các plug–in khác nh Kerberos, LDAP hay ta
có th t xây d ng plug–in ch ng th c c a riêng mình. Khi s! d ng plug-in b o
m t c a h i u hành, nh danh và m t kh#u ng i dùng
c g!i n máy ch
c s d li u (ví d nh m t ph n c a câu l nh k t n i). Sau ó, máy ch c s
d li u s) g i ch c n ng ch ng th c c a h i u hành
ki m tra tính h p l c a
tài kho n này.
Quy n h2n
Sau khi ch ng th c thành công, DB2 s) xem xét các yêu c u ti p theo mà ng i
dùng này th c hi n. Thông tin quy n h n
c l u tr trong m t danh m c DB2 và
t p tin c u hình DBM.
Ví d , trong hình 10.1, ng
i dùng bob k t n i v i c s d li u SAMPLE b3ng câu l nh:
CONNECT TO sample USER bob USING pwd
Ch
ng 10 - B o m t C s d li u
169
C bob và pwd
c chuy n t i h i u hành ho$c m t ng d ng ch ng th c bên ngoài
ki m tra xem tên ng i dùng bob t n t i ch a và m t kh#u ó có kh p v i ng i dùng
này hay không. N u tài kho n h p l , h i u hành s) tr l i quy n ki m soát b o m t cho
DB2. Ti p theo, khi ng i dùng bob thi hành l nh sau:
SELECT * FROM mytable
DB2 ti p t c dùng quy n ki m soát thi hành 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. N u
quy n ó không h p l , DB2 thông báo l i, ng c l i câu l nh s)
c th c thi d a trên
b ng mytable.
Chú ý:
' bi t thêm thông tin v b o m t c a DB2, xin xem t i a ch+:
http://www.channeldb2.com/video/video/show?id=807741:Video:4267
10.1 Ch ng th.c
Tuy quá trình ch ng th c th c s
c th c hi n b i h i u hành thông qua m t ch ng
trình b o m t m$c nh (ho$c m t ch ng trình b o m t khác bên ngoài), nh ng chính
DB2 m i có quy n quy t nh n i nào th c hi n vi c ch ng th c.
Tham s c u hình AUTHENTICATION
c thi t l p phía server, theo dãy các giá tr cho
tr c . Ví d , khi tham s này
c thi t l p là SERVER (m$c nh), ti n trình ch ng th c
s)
c th c thi b i h i u hành ho$c ho$c plug-in b o m t phía máy ch . N u
AUTHENTICATION
c thi t l p là CLIENT, ti n trình ch ng th c s)
c th c thi b i
h i u hành ho$c plug-in b o m t phía máy khách. V n
này
c minh h a hình
10.2.
Hình 10.2 - N i di5n ra ti n trình ch ng th.c
170
Nh p môn H qu n tr c s d li u DB2
Tham s AUTHENTICATION có th
b ng 10.1
c thi t l p b3ng nh ng giá tr
L nh
c li t kê trong
Mô t
SERVER (m$c
nh)
CLIENT
Ch ng th c di n ra
máy ch
Ch ng th c di n ra
máy khách
SERVER_ENCRYPT
T ng t tham s SERVER nh ng tên
c a ng i dùng và m t kh#u
c mã
hóa
KERBEROS
Ti n trình nh danh di n ra dùng c
ch b o m t Kerberos
SQL_AUTHENTICATION_DATAENC
Ch ng th c và n i k t s! d ng mã
hóa d li u
SQL_AUTHENTICATION_DATAENC_CMP
Gi ng nh trên, nh ng s! d ng mã
hóa d li u ch+ khi s"n có.
GSSPLUGIN
Ch ng th c dùng plug-in b o m t trên
n n GSS API
B ng 10.1 – Các giá tr0 có th( có c a tham s AUTHENTICATION
10.2 Quy n h2n
Quy n h n bao g m các $c quy n (privileges), quy n (authorities), vai trò (roles) và nhãn
i u khi n truy c p (Label-based access control - LBAC)
c l u tr trong b ng h th ng
DB2 và
c DB2 qu n lý.
'$c quy n cho phép ng i dùng th c thi m t câu l nh
CREATE, UPDATE, DELETE, INSERT, …
n trên c s d li u nh là
Vai trò cho phép ta gom chung nh ng $c quy n v i nhau, trong ó ta có th c p quy n
cho m t ng i dùng, m t nhóm ng i dùng ho$c nh ng vai trò khác.
M t quy n là m t hành
ng
c xác
nh tr
c bao g m nhi u $c quy n.
LBAC g m các chính sách và các nhãn h tr cho vi c truy c p t p trung theo t a
dòng-c t nào ó
c ch+ nh b i ng i dùng. LBAC không có trong DB2 Express-C,
nh ng ta có th tìm hi u thêm trong Ch ng 2.
10.2.1
c quy n
Hình 10.3 minh h a các $c quy n khác nhau trong DB2.
Ch
Hình 10.3 - Nh#ng
ng 10 - B o m t C s d li u
171
c quy n trong DB2
Khi m t ng i dùng hay nhóm ng i dùng nh n $c quy n CONTROL, ngh a là h có th
gán $c quy n cho ng i dùng ho$c nhóm ng i dùng khác. Tham kh o thông tin chi ti t
v các $c quy n t i DB2 Information Center.
10.2.2 Quy n h2n (authorities)
Quy n h n
c chia làm 2 nhóm:
Quy n m c th hi n (instance): nh ng quy n này có th th c thi
d : SYSADM
Quy n m c c s d li u: nh ng quy n này ch+
li u, ví d : DBADM
10.2.2.1 Quy n m c th( hi n (instance)
B ng 10.2 li t kê các quy n m c th hi n
c th c thi
m c th hi n, ví
m cc s d
172
Nh p môn H qu n tr c s d li u DB2
Quy n
Mô t
SYSAMD
Qu n lý toàn b th hi n
SYSCTRL
Qu n tr viên m t th hi n qu n tr c s d li u
SYSMAINT
Duy trì c s d li u trong ph m vi th hi n
SYSMON
Giám sát th hi n và c s d li u c a nó
B ng 10.2 –Quy n m c instance
' gán quy n SYSADM, SYSCTRL, SYSMAINT, ho$c SYSMON cho m t nhóm, các tham
s t ng ng SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP và
SYSMON_GROUP, có th
c gán cho m t nhóm h i u hành.
Ví d ,
sau:
gán quy n SYSADM cho nhóm h
i u hành myadmns, b n s! d ng câu l nh
update dbm cfg using SYSADM_GROUP myadmns
V i m i th hi n c a DB2, t&ng nhóm
c nh ngh a các quy n riêng. Trên Windows,
các tham s
c m$c nh
r ng, ngh a là nhóm Local Administrators s) có quy n
SYSADM. Trong DB2 9.7, nhóm DB2ADMNS và LocalSystem Account c6ng s) có quy n
SYSADM. Quy n h n c a tài kho n LocalSystem có ID là SYSTEM. V i Linux, nhóm ch
c a th hi n
c m$c nh là nhóm SYSADM.
Hình 10.4 bên d i
c trích t& DB2 Information Center. Hình này mô t các quy n m c
th hi n và các ch c n ng c a chúng. Quy n SYSADM bao g m t t c các ch c n ng c a
SYSCTRL và các tính n ng khác. Quy n SYSCTRL bao g m t t c các ch c n ng c a
SYSMAINT và các tính n ng khác.
Ch
ng 10 - B o m t C s d li u
Hình 10.4 – Quy n m c th( hi n (instance) và các ch c n ng c a chúng
10.2.2.2 Quy n " m c c s" d# li u.
B ng 10.3 li t kê các quy n
m c c s d li u.
173
174
Nh p môn H qu n tr c s d li u DB2
Quy n
Mô t
SECADM
Qu n lý b o m t c s d li u.
DBADM
Qu n tr c s d li u.
Gán và h y các quy n và các $c quy n (khác v i các quy n SECADM,
DBADM, ACCESSCTRL, và DATAACCESS. Chú ý r3ng quy n
SECADM là c n
gán và h y nh ng quy n này)
ACCESSCTRL
Cho phép truy xu t d li u
DATAACCESS
SQLADM
Giám sát và i u ch+nh các câu truy v n SQL
WLMADM
Qu n lý l
EXPLAIN
Nh ng ng i dùng c n gi i thích k ho ch truy v n (quy n EXPLAIN
b n thân nó không cho truy c p d li u)
B ng 10.3 – Các
ng t i công vi c.
c quy n m c c s" d# li u.
' gán quy n m c c s d li u, ta s! d ng l nh GRANT. Ví d ,
cho ng i dùng bob trong c s d li u SAMPLE, s! d ng:
gán quy n DBADM
connect to sample
grant DBADM on database to user bob
Trong ví d trên, tr c h t ta c n k t n i n c s d li u SAMPLE, sau ó b n gán
quy n DBADM cho ng i dùng. ' gán quy n DBADM và nh ng quy n m c c s d
li u khác, b n ph i là SECADM.
Chú ý r3ng, DBADM không th t o không gian b ng, 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, b i vì không gian b ng có liên quan n các tài
nguyên v t lý c a h th ng ( a và các vùng m). Nh ng i v i quy n SYSADM thì ta có
th .
Hình 10.5 trích t& DB2 Information Center, cho th y s khác nhau gi a các quy n
c s d li u và các ch c n ng c a chúng.
m c
Ch
Hình 10.5 – Các
ng 10 - B o m t C s d li u
175
c quy n " m c c s" d# li u và ch c n ng c a chúng
Chú ý:
Trong DB2 9.7,
cung c p tính m b o m t và qu n tr d li u phù h p h n, quy n h n
nên
c c u hình rõ ràng, nên phân bi t rõ nhi m v c a ng i qu n tr h th ng, ng i
qu n tr c s d li u, ng i qu n tr b o m t.
Trong phiên b n DB 9.7, ph m vi ch c n ng c a m t s quy n ã
c h n ch h n so
v i các phiên b n DB2 tr c ó. Ví d , m t SYSADM không còn quy n truy c p d li u
t& b t kì c s d li u nào n a. M t DBADM không còn các quy n truy c p d li u cho c
s d li u mà ng i dùng này ang qu n tr . M$c khác, SECADM
c t ng nhi u ch c
n ng h n nh gán và h y các quy n và $c quy n cho nh ng ng i dùng, vai trò và
nhóm.
Nh ng quy n m i c6ng
c t o thêm
cho nhi u s l a ch n cho nhi m v b o m t
h th ng. 'i u này làm gi m thi u các r i ro c a vi c rò r+ d li u b3ng vi c không cho
ng i s! d ng nhi u quy n h n cái h c n trong công vi c c a mình.
10.2.2.3 Cho phép SYSADM và DBADM ho2t
N u mu n SYSADM gi ng nh
tâm.
ng nh
phiên b n cG DB2 (tr
các phiên b n c6 c a DB2, có hai tr
c 9.7).
ng h p c n quan
176
Nh p môn H qu n tr c s d li u DB2
N u SYSADM là ng i t o c s d li u, thì nó t
ng nh n quy n
DATAACCESS, ACCESSCTRL, SECADM và DBADM cho c s d li u ó. Nó
cho phép SYSADM có kh n ng t ng t nh
các phiên b n DB2 tr c phiên
b n 9.7.
N u SYSADM không ph i là ng i t o nên c s d li u, thì m t SECADM ph i
gán DBADM v i DATAACCESS và ACCESSCTRL (m$c nh) cho SYSADM trên
c s d li u
c ch+ nh.
M t vài tr
ng h p l u ý cho SECADM:
M$c
nh, SECADM là ng
i t o nên c s d li u.
N u m t ng i dùng có quy n SECADM, và gán SECADM cho m t ng i dùng có
quy n SYSADM, thì SYSADM có th gán SECADM cho nh ng ng i dùng khác.
N u m t ng i dùng v i quy n SECADM gán DBADM cho m t ng i dùng, thì
m$c nh DBADM c6ng nh n
c DATAACCESS và ACCESSCTRL.
N u ta chuy n sang c s d li u DB2 9.5, các kh n ng c a SYSADM và DBADM s)
không thay *i b i vì DB2 t d ng gán quy n DBADM, DATAACCESS và ACCESSCTRL
cho nhóm SYSADM trong lúc chuy n. DB2 c6ng t
ng gán quy n DATAACCESS và
ACCESSCTRL cho m i ID quy n h n ang có DBADM. Thêm vào ó, DB2 t
ng gán
quy n SECADM cho ng i dùng (ID) ang th c hi n di chuy n n u nh không có ID nào
có ki u là USER
c gi quy n SECADM trong c s d li u. SYSADM s) m t các kh
n ng ng m nh
gán ho$c h y DBADM và SECADM, bây gi ch+
c th c thi b i
SECADM.
10.2.3 Vai trò
Vai trò cho phép ng i qu n tr gán các $c quy n/ quy n cho vài ng i dùng ho$c nhóm
ng i dùng. Vai trò c6ng gi ng nh nhóm, nh ng nó
c nh ngh a bên trong DB2, và
do ó, có m t vài u i m nh t nh. Ví d , các $c quy n/ quy n gán cho các vai trò ph i
luôn
c s! d ng khi b n t o các i t ng nh khung nhìn (view), b%y s ki n (trigger),
nó không áp d ng cho nhóm ng i dùng. M$t khác, b n không th gán các quy n m c th
hi n ví d nh SYSADM cho m t vai trò, ch+
c gán các $c quy n và quy n m c c s
d li u; trong khi ó, t t c các $c quy n u có th
c gán cho nhóm ng i dùng.
Làm vi c v i các vai trò òi h/i các b
1. ' u tiên, ng
c sau:
i qu n tr b o m t (SECADM) t o m t vai trò s! d ng l nh nh sau:
CREATE ROLE TESTER
2. Ti p theo, DBADM ph i c p các $c quy n ho$c quy n cho vai trò v&a t o.Ví d ,
c p quy n SELECT trên các b ng STAFF and DEPT trong c s d li u
SAMPLE cho vai trò TESTER, ti n hành nh sau:
GRANT SELECT ON TABLE STAFF TO ROLE TESTER
GRANT SELECT ON TABLE DEPT TO ROLE TESTER
Ch
3. Ti p theo, ng
ng 10 - B o m t C s d li u
i qu n tr gán vai trò TESTER cho ng
177
i dùng RAUL và JIN:
GRANT ROLE TESTER TO USER RAUL, USER JIN
4. Ti p theo, n u JIN r i kh/i phòng TEST, ng
JIN:
i qu n tr g5 b/ vai trò TESTER c a
REVOKE ROLE TESTER FROM USER JIN
10.3 Xem xét vi c nhóm các
N u b n quy t
c quy n
nh s! d ng nhóm thay vì vai trò, có th xem xét d a vào các i u sau:
Khi m t nhóm
c gán các $c quy n, các thành viên c a nhóm ó
nh ng $c quy n ng m nh, k th&a qua thành viên nhóm.
c gán
Khi m t ng i dùng b xóa kh/i nhóm, ng i dùng này m t i các $c quy n ng m
nh c a nhóm, nh ng v%n gi các $c quy n mà h
c gán t ng minh tr c
ó. Các $c quy n
c gán t ng minh cho m t ng i dùng ph i
c g5 b/
t ng minh t& ng i dùng.
10.4 Nhóm PUBLIC
DB2 nh ngh a m t nhóm bên trong
c g i là PUBLIC. B t c ng i 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. Khi m t c s d li u
c t o ra, m t s quy n m$c nh s)
c
gán m t cách t
ng cho nhóm PUBLIC:
CONNECT,
CREATETAB,
IMPLICIT SCHEMA,
BINDADD
' thêm vào m c
REVOKE
REVOKE
REVOKE
REVOKE
b o m t, chúng ta nên h y b/ m i quy n t& nhóm PUBLIC nh sau:
CONNECT ON DATABASE FROM PUBLIC
CREATETAB ON DATABASE FROM PUBLIC
IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
BINDADD ON DATABASE FROM PUBLIC
10.5 L nh GRANT và REVOKE
L nh GRANT và REVOKE là l nh SQL chu#n,
c dùng
gán ho$c h y b/ quy n c a
m t ng i dùng, m t nhóm ho$c m t vai trò. Ng i dùng s! d ng
c nh ng l nh này, ít
nh t ph i có quy n ACCESSCTRL. Sau ây là m t s ví d v các câu l nh này:
178
Nh p môn H qu n tr c s d li u DB2
' 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 t& nhóm GROUP1:
REVOKE ALL ON TABLE T1 FROM GROUP group1
' gán quy n EXCUTE 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 EXCUTE trên th t c p1 t& ng
i dùng USER1:
REVOKE EXECUTE ON PROCEDURE p1 FROM USER user1
10.6 Vi c ki(m tra quy n và
c quy n
Cách t t nh t
ki m tra vi c quy n và $c quy n là thông qua trung tâm i u khi n. Hình
10.6 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.6 – M" h p tho2i Table Privileges
Ch
ng 10 - B o m t C s d li u
179
Nh hình 10.6, b n ch n b ng mong mu n, nh p chu t ph i vào b ng này và ch n
Privileges. M t khi
c ch n, h p tho i Table Privileges hi n th nh hình 10.7. Hình này
c6ng mô t các tr ng và các thành ph n c a h p tho i.
Hình 10.7 – H p tho2i Table Privileges
M t cách khác, 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. Ví d , 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, và mu n bi t ai ã gán quy n này, b n có th th c hi n
câu truy v n nh sau:
SELECT grantor, grantee, selectauth
FROM syscat.tabauth
WHERE tabname = 'T2'
GRANTOR
GRANTEE
SELECTAUTH
------------------------------------------------ARFCHONG
DB2ADMIN
Y
Trong ví d trên, ng
DB2ADMIN.
i dùng ARFCHONG ã gán quy n SELECT cho ng
i dùng
180
Nh p môn H qu n tr c s d li u DB2
10.7 Tính n ng b o m)t m" r ng trên Windows
' ng n ch$n s truy c p thông qua h i u hành Windows vào các t p tin và th m c
DB2 (là nh ng n i mà DB2 l u tr thông tin), DB2 b t tính n ng b o m t m r ng t i th i
i m cài $t. Tính b o m t m r ng t o ra hai nhóm:
DB2ADMNS: Nhóm này và các qu n tr a ph ng có toàn quy n truy c p vào t t
c các i t ng DB2 thông qua h i u hành.
DB2USERS: Nhóm này có quy n
thông qua h i u hành.
c và truy c p vào t t c các
it
ng DB2
' i v i DB2 9.7 thì các thành viên c a nhóm DB2ADMNS s) t
ng có quy n SYSADM
trong DB2 n u tính b o m t m r ng
c kích ho t và tham s SYSADM_GROUP không
c thi t l p.
10.8 Tóm t-t
Ch ng này trình bày các khía c nh b o m t c a DB2, b t u v i m t cu c th o lu n
toàn di n v s khác bi t gi a t m quan tr ng c a ch ng th v và ki m nh quy n. T& ó,
chúng ta xem xét các m c quy n khác nhau cung c p ch
b o m t cho các th hi n và
c s d li u.
Ti p theo, chúng ta trình bày các khái ni m m i v vai trò và làm th nào chúng có th
c s! d ng cho l i ích c a b n v b o m t và nh ng h n ch c a vi c thi t l p b o m t
thông qua các nhóm. C th , nhóm PUBLIC ã
c th o lu n, cùng v i nh ng
xu t
v cách b o m t nó
ng i dùng nói chung b ch$n t& máy ch d li u.
Ngoài ra, các câu l nh GRANT và REVOKE ã
c kh o sát, chúng ta xem xét làm th
nào
s! d ng Trung tâm i u khi n và các b ng danh m c h th ng
ki m tra các
quy n và các m c $c quy n.
10.9 Bài t)p
Ta ã s! d ng tài kho n qu n tr SYSADM
thao tác các l nh c s d li u. Tài kho n
này có quy n truy c p r ng rãi n t t c các ti n ích, d li u và các i t ng c s d
li u. 'i u quan tr ng là c n b o v tài kho n này
tránh s tình c hay c ý làm m t d
li u. Trong h u h t các tr ng h p, ta mu n t o ra nh ng tài kho n ng i dùng khác
nhau ho$c các nhóm v i m t t p các h n ch v quy n truy c p. Trong bài t p này, b n s)
t o ra m t tài kho n ng i dùng m i, sau ó gán cho nó nh ng $c quy n xác nh.
Ph n 1 - Làm vi c v i các
c quy n
Trong ph n này c a bài t p, b n s) th c hành cách làm th nào
c p phát và thu h i các
$c quy n t& ng i s! d ng b3ng cách s! d ng Trung tâm i u khi n.
Các b
c th c hi n:
1. M Windows Computer Management b3ng cách kích chu t ph i vào bi u t
My Computer và ch n m c Manage trong danh sách.
ng
Ch
ng 10 - B o m t C s d li u
181
2. M r ng nhóm System Tools trên cây th m c n3m bên trái c a c!a s*, sau ó
m th m c Local Users and Groups. Nh p chu t ph i lên th m c Users và ch n
m c New User.
3. Trong c!a s* h p tho i New User, nh p các thông tin sau: trong m c User name
nh p customer và trong m c Full name nh p Customer1. Trong m c
Description nh p A typical bookstore customer. Trong các m c Password
và Confirm password nh p ibmdb2ibm. B/ ánh d u tùy ch n User must
change password on next logon (Ng i dùng c n *i m t mã l n ng nh p l i)
và nh n nút Create
t o ng i dùng m i, sau ó nh n nút Close
óng c!a s*
h p tho i.
4. M Trung tâm i u khi n, và ch n ch
khung nhìn m r ng b3ng cách ch n
Tools -> Customize Control Center. Sau ó ch n tùy ch n Advanced và b m vào
nút OK.
5. M r ng cây i t ng c a Trung tâm i u khi n
Databases -> EXPRESS -> Tables.
bên trái c!a s*, ch n All
6. C p $c quy n c n có cho ng i s! d ng v&a
c t o ra. T& danh sách các
b ng trong c s d li u EXPRESS, kích chu t ph i lên b ng CUSTOMERS, và ch n
m c Privileges
hi n th c!a s* h p tho i Table Privileges.
7. Nh p vào nút Add User và ch n ng
OK
óng h p tho i Add User.
i dùng customer v a t o ra. Nh p vào nút
8. B n chú ý r3ng ng i s! d ng customer ã
c thêm vào danh sách ng i
dùng, nh ng ch a
c gán các $c quy n. ' c p các quy n SELECT, INSERT,
UPDATE, và DELETE cho ng i dùng này, ch n Yes t& các h p tho i kéo xu ng
c a các thành ph n ó. M t ng i dùng Internet c n có kh n ng xem/ thêm/ c p
nh t/ xóa d li u tài kho n c a h . Chúng ta không cung c p cho ng i s! d ng
nh ng quy n khác b i vì chúng không c n thi t i v i h . Nh p vào nút OK
182
Nh p môn H qu n tr c s d li u DB2
óng c!a s* h p tho i Table Privileges và ch p nh n nh ng thay *i b n v&a th c
hi n.
9. L$p l i các b c 7-9 cho các b ng BOOKS và SALES. ' i v i b ng BOOKS, ch+
c p $c quy n SELECT vì ng i dùng không nên có kh n ng s!a *i và ph c
h i b t k4 d li u nào trong kho. ' i v i b ng SALES, ch+ c p nh ng $c quy n
SELECT và INSERT. Các khách hàng không c n ph i có $c quy n DELETE
ho$c UPDATE b i vì ch+ nh ng nhân viên m i c n ph i có quy n truy c p
s!a
*i các giao d ch bán hàng.
10. K t n i v i c s d li u s! d ng ID c a ng i dùng customer t o ra trên
b3ng cách s! d ng DB2 Command Window (c!a s* dòng l nh c a DB2) nh sau:
db2 connect to express user customer using ibmdb2ibm
Th! SELECT d li u t& b ng customers. 'i u gì x y ra? Th! DELETE ho$c
UPDATE d li u trong b ng SALES. 'i u gì x y ra?
Ph n 2 - Làm vi c v i các quy n SYSADM, DBADM và SECADM
Trong ph n này c a bài t p, b n s) th c hành cách làm th nào
gán các quy n
SYSADM và DBADM, và hi u
c các quy n này làm vi c nh th nào.
Th t c:
Ch
1. Th c hi n theo các b
m i: mysysadm
ct
ng t nh
ng 10 - B o m t C s d li u
ph n 1
t o ra m t ng
183
i dùng
2. T o nhóm Windows mysysadmgrp. Th c hi n theo các b c t ng t nh
t o ra m t ng i dùng, nh ng thay vì chu t ph i lên th m c Users, b n
nh n chu t ph i vào th m c Groups và ch n New Group. ' i v i tr ng
Group name, nh p mysysadmgrp. Trong ph n Members, nh n vào Add
thêm m t thành viên m i, và nh p vào mysysadm. Nh p chu t vào nút Check
Names
xác nh n b n ã nh p vào các thành viên m t cách h p l . Sau khi
b n hoàn thành, nh p chu t vào Create, sau ó vào Close.
3. Nh v y n gi b n ã t o ra m t trong nh ng ng i s! d ng mysysadm và
m t nhóm mysysadmgrp mà ng i s! d ng mysysadm là thành viên. T t c
i u này
c th c hi n trên h i u hành Windows. Bây gi chúng ta c n
ph i thông báo cho DB2 r3ng chúng ta mu n nhóm mysysadmgrp
c là
nhóm SYSADM b3ng cách s! d ng l nh sau t& DB2 Command Window:
db2 update dbm cfg using SYSADM_GROUP mysysadmgrp
Khi tham s SYSADM_GROUP không ph i là ng, b n c n ph i d&ng l i
(stop) và b t u (start) m t th hi n. Tác d ng c a tùy ch n trong db2stop
s) m b o t t c các k t n i
c lo i b/ tr c khi db2stop.
db2stop force
db2start
4. K t n i v i c s d li u SAMPLE b3ng cách s! d ng ng i dùng mysysadm
t& DB2 Command Window, và
a ra m t câu l nh SELECT * trên b ng
STAFF. L u ý r3ng b n c n ph i s! d ng l c
chính xác v i cái
c s!
d ng khi b n t o ra b ng này. Trong ví d d i ây chúng tôi s! d ng
arfchong nh là m t l c .
db2 connect to sample user mysysadm using ibmdb2ibm
db2 select * from arfchong.staff
B n s) nh n
SYSADM?
c m t thông báo l i nh th này. T i sao? B n không ph i là
SQL0551N "MYSYSADM" does not have the required authorization or
privilege to perform operation "SELECT" on object
"ARFCHONG.STAFF". SQLSTATE=42501
B t u t& DB2 9.7, SYSADM không nh n
nh, ó là lý do t i sao b n nh n
c l i.
c quy n DBADM theo m$c
5. S! d ng ng i dùng Windows ã
c dùng
t o ra c s d li u
SAMPLE, k t n i v i c s d li u. Trong ví d , ARFCHONG là ng i s! d ng.
Ti p theo c p DBADM không có DATAACCESS cho ng i dùng mysysadm,
và th! SELECT trên STAFF l i nh mysysadm. Nó ã làm vi c? T i sao?
184
Nh p môn H qu n tr c s d li u DB2
db2
db2
db2
db2
connect to sample user arfchong using ibmdb2ibm
grant dbadm without dataaccess on database to user mysysadm
connect to sample user mysysadm using ibmdb2ibm
select * from arfchong.staff
Nh b n th y, b n v%n nh n
c thông báo l i t ng t ngay c sau khi
mysysadm ã
c c p DBADM. Cách x! lý này là bình th ng vì chúng ta
ã
a ra m nh
WITHOUT DATAACCESS ngh a là quy n DATAACCESS
ch a
c tính n, vì th mysysadm v%n ch a có quy n
truy c p vào d
li u. 'i u này cho b n th y m t ví d v cách b n có th gi i h n s truy c p
vào d li u v i DBADM.
6. Bây gi hãy c p DATAACCESS cho mysysadm và th! l i l nh SELECT.
db2
db2
db2
db2
connect to sample user arfchong using ibmdb2ibm
grant DATAACCESS on database to user mysysadm
connect to sample user mysysadm using ibmdb2ibm
select * from arfchong.staff
Bây gi SELECT s) v n hành. Bài t p này cho b n th y m t cách x! lý m i
cho SYSADM và DBADM b t u v i DB2 9.7. T t ng chính mà b n nên có
t& bài t p này là có m t s tách bi t gi a truy c p d li u và nh ng gì m t
SYSADM và DBADM có th làm.
7. Thi t l p l i giá tr c a SYSADM_GROUP là NULL
nhóm qu n tr a
ph ng (Local Administrator) và tài kho n LocalSystem tr l i thành
SYSADM:
db2 update dbm cfg using sysadm_group NULL
db2stop force
db2start
Ch
11
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, làm th nào
t o
m t b n sao chép y
hay b n sao chép m t ph n c s d li u c a b n b3ng cách s!
d ng ch c n ng BACKUP, và làm th nào khôi ph c d li u c a b n b3ng cách s! d ng
ch c n ng RESTORE.
Chú ý:
' có thêm thông tin v ghi nh t kí, sao chép, và khôi ph c, thì hãy xem video này:
http://www.channeldb2.com/video/video/show?id=807741:Video:4282
11.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, m i khi b n mu n b o m là tài
li u c a mình
c l u l i, thì b n nh p vào nút save. Trong th gi i c s d li u, m t
câu l nh COMMIT c6ng ch+ làm công vi c nh th . B t c khi nào m t câu l nh COMMIT
c th c thi, ch c ch n r3ng b t c thay *i nào trong d li u, c6ng
cl ul it im t
n i nào ó.
C6ng t ng t nh v y, khi b n làm vi c v i m t tài li u v n b n, ôi khi b n s) nhìn th y
góc ph i bên d i có m t thông báo ng n là “auto-saving”. Trong th gi i c a c s d
li u c6ng gi ng nh th , b i vì b t kì thao tác nào b n th c hi n trên d li u, nh là
UPDATE, INSERT hay DELETE, u
c l u m t n i nào ó khi b n th c hi n.
C m t& “m t n i nào ó” trong o n v n trên là nói n các nh t kí c s d li u. Các
nh t kí c s d li u
c l u tr trên * a và
c s! d ng
ghi l i các ho t ng
trong các giao d ch. N u có m t h th ng hay c s d li u b treo, thì các nh t kí
c s!
d ng
quay l i và th c hi n l i các giao d ch ã
c th c hi n trong su t quá trình khôi
ph c d li u.
Hình 11.1 minh h a m t s
t*ng quan c a nh ng ho t
ang làm vi c v i m t nh t kí c s d li u.
ng
c th c hi n khi b n
186
Nh p môn H qu n tr c s d li u DB2
Hình 11.1 – Nh)t kí c s" d# li u
Trong Hình 11.1, chúng ta th y m t không gian b n (table space) và các nh t kí (log). C
hai u
c l u tr trên a, m$c dù chúng tôi
ngh không nên gi chúng trên cùng
m t * a. Ví d , khi m t thao tác UPDATE
c th c thi thì các trang cho các hàng
c
xem xét s)
c chuy n n vùng m (b nh ). Nh ng thay *i c a câu l nh update
c th c hi n trên vùng m, và nh ng giá tr c6 và m i s)
c l u tr trên các t p tin
nh t kí, ôi khi là ngay l p t c, và ôi khi là lúc mà m t b
m nh t kí ã y. N u m t
thao tác COMMIT x y ra sau m t hành ng UPDATE, thì các giá tr c6 và m i s)
c
l u tr trong các t p tin nh t kí ngay l p t c. Quá trình này
c l$p l i i v i nhi u câu
l nh SQL khác
c th c hi n trên c s d li u. Ch+ khi th/a mãn nh ng i u ki n c
th , nh là vi c t n ng 5ng trang thay *i
c $c t trong tham s
CHNGPGS_THRES, thì nh ng trang trong vùng m d li u s)
c “truy xu t” và
c
ghi vào không gian b ng trên a c ng. Tham s CHNGPGS_THRES ch+ nh ph n tr m
c a vùng m v i các trang “b#n”, t c là các trang có ch a nh ng thay *i.
Th c hi n hai thao tác ghi cho m i thao tác COMMIT không mang tính hi u qu . M t thao
tác ghi vào các log, và m t thao tác ghi vào không gian b ng trên * a; ó chính là lý do
t i sao “s truy xu t” c a d li u n không gian b ng trên * a ch+ x y ra khi các tham s
nh là CHNGPGS_THRES t ng 5ng.
11.2 Các ki(u nh)t kí
Có hai ki u nh t kí:
Các nh t kí s c p
' c c p phát s"n và s l ng các nh t kí s c p
hình c s d li u LOGPRIMARY.
c xác
nh b i tham s c u
Các nh t kí th c p
' c DB2 c p phát ng khi c n. S l ng t i a c a các nh t kí th c p
c
thi t l p b i tham s c u hình c
d li u LOGSECOND. C p phát ng cho m t
nh t kí t n nhi u chi ph ; vì v y, i v i các hành ng x y ra th ng xuyên, v%n
Ch
ng 11 – Sao l u và Khôi ph c
187
n3m trong s c p phát các nh t kí s
p. Các t p tin nh t kí th c p b xóa i khi
t t c các k t n i n c
d li u b ng t.
N u giá tr c a LOGSECOND
t c; tuy nhiên, i u này không
c gán là -1 thì vi c ghi nh t kí có th
c th c hi n liên
c khuy n khích vì có th làm c n không gian l u tr .
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.3.1 Ghi tu n t. quay vòng
Ghi nh t kí tu n t quay vòng là ki u ghi m$c nh, và
c kích ho t khi c hai tham s
c u hình c s d li u LOGARCHMETH1 và LOGARCHMETH2
c gán thành OFF.
Nh ng tham s này ch+ nh ph ng th c s! d ng
l u tr các nh t kí, nh ng n u b n
t t (gán thành OFF), thì có ngh a là b n không mu n l u tr các nh t kí, ó chính là cách
làm vi c c a ghi nh t kí tu n t quay vòng. Hình 11.2 phác th o m t ví d minh h a ghi
tu n t quay vòng.
Hình 11.2 – Làm vi c v i nh)t kí s c p và th
c p
Trong Hình 11.2 có 3 nh t kí s c p (primary log), vì th chúng ta có th gi
nh r3ng giá
tr c a tham s LOGPRIMARY là 3. Ví d
n gi n, ch+ có m t giao d ch
c th c hi n.
Khi giao d ch
c th c hi n, thì t p tin nh t kí P1 b t u
c ghi, và sau ó là P2. N u
thao tác COMMIT
c th c thi và thông tin sau ó
c truy xu t n không gian b ng
trên a, sau ó P1 và P2 có th b ghi è, vì thông tin không còn c n thi t cho vi c khôi
ph c do h th ng b treo (ph n này s)
c th o lu n chi ti t h n ph n sau c a ch ng
này). M$t khác, n u giao d ch quá dài n n i ã s! d ng P1, P2, P3, mà v%n c n nhi u
không gian giao d ch h n n a b i vì giao d ch v%n ch a
c COMMIT l%n truy xu t, thì
sau ó m t nh t kí th c p (S1 nh trong hình) s)
c c p phát t
ng. N u giao d ch
ti p t c, thì nhi u nh t kí th c p s)
c c p phát h n cho n khi s nh t kí
cc p
phát t m c t i a LOGSECOND. N u v%n c n nhi u nh t kí n a, thì m t thông báo l i
xu t hi n cho bi t h t kh n ng c p phát nh t kí và giao d ch s) b quay l i. Ngoài ra, b n
có th c u hình DB2 s! d ng tham s c u hình BLK_LOG_DSK_FUL
ti p t c ghi nh t
kí c m i 5 phút trong khi m t s giao d ch b d&ng l i. 'i u này cho phép nhà qu n tr c
s d li u có th i gian
tìm không gian m i,
giao d ch có th ti p t c.
188
Nh p môn H qu n tr c s d li u DB2
Ghi tu n t quay vòng cho phép b n ph c h i t& các khôi ph c do b treo, nh ng n u b n
mu n khôi ph c d li u t i m t th i i m cho tr c, thì th i gian g n nh t có th là khi b n
th c hi n b n sao l u d li u ngo i tuy n l n cu i cùng.
11.3.2 Ghi nh)t kí l u tr#
Trong ki u ghi nh t kí l u tr ,
c bi t n nh là ghi l u tr l i, thì các t p tin nh t kí
không
c ghi è lên nhau, nh ng
c gi l i, c tr c tuy n hay ngo i tuy n. Các nh t
kí l u tr tr c tuy n
c l u tr v i các nh t kí ng c n cho các khôi ph c khi h th ng
b s c . Nh ng nh t kí l u tr ngo i tuy n
c chuy n n các ph ng ti n khác nh là
b ng t&, và i u này
c th c hi n v i các th ng trình USEREXIT (routines), Tivoli
Storage Manager, ho$c các s n ph#m l u tr c a bên th ba khác.
' kích ho t ch c n ng ghi nh t kí l u tr thì gán giá tr cho các tham s c u hình c s
d li u là LOGARCHMETH1 hay LOGARCHMETH2 (ho$c c hai) thành OFF. M t cách
khác
kích ho t ki u ghi nh t kí l u tr là gán giá tr cho tham s c u hình LOGRETAIN
thành RECOVERY. Tham s LOGARCHMETH1 s)
ct
ng gán thành LOGRETAIN.
Tuy nhiên, tham s LOGRETAIN s) không
c ch p nh n nh ng phiên b n sau, hi n
còn có nó là
t ng thích v i các phiên b n c6 h n c a DB2.
Nh t kí l u tr th ng
c s! d ng trong nh ng h th ng s n ph#m; b i vì nh ng nh t
kí ó s)
c gi l i, i u này cho phép khôi ph c c s d li u s m nh t có th t&
nh ng t p tin nh t kí c6 nh t. V i nh t kí l u tr , m t nhà qu n tr c s d li u có th
ph c h i t& l i do con ng i gây ra. Thí d , n u m t ng i dùng c a m t h th ng vô tình
th c hi n sai m t giao d ch di n ra trong nhi u ngày, khi v n
c phát hi n, thì ng i
qu n tr c s d li u có th ph c h i l i h th ng v th i i m tr c khi v n
x y ra.
Tuy nhiên, v%n còn m t s thao tác b t bu c ph i làm th công
b o m vi c khôi ph c
th c hi n m t cách chính xác.
Nh t kí l u tr là yêu c u b t bu c i v i quá trình khôi ph c l i và sao l u tr c tuy n.
Hình 11.3 mô t quá trình ghi nh t kí l u tr .
Ch
ng 11 – Sao l u và Khôi ph c
189
Hình 11.3 – Ghi nh)t kí l u tr#
11.4 Ghi nh)t kí c s" d# li u t1 Trung tâm i u khi(n
B n có th c u hình vi c ghi nh t kí c s d li u t& Trung tâm i u khi n b3ng cách nh p
chu t ph i trên c s d li u, và ch n Configure Database Logging. Hành ng này
c
mô t nh Hình 11.4.
190
Nh p môn H qu n tr c s d li u DB2
Hình 11.4 – C u hình nh)t kí c s" d# li u t1 Trung tâm i 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í c s d li u theo h ng d%n t&ng
b c, t i ây ta có th ch n ki u ghi nh t kí tu n t quay vòng hay ghi l u tr .
Ch
Hình 11.5 – Ghi nh)t kí c
s" d# li u theo h
ng 11 – Sao l u và Khôi ph c
ng d9n t1ng b
191
c
11.5 Các tham s c a nh)t kí
'ây là m t s các tham s DB CFG liên quan
các tham s chính.
n vi c ghi nh t kí. B ng 11.1 li t kê m t s
Tham s
Mô t
logbufsz
Dung l ng b nh
c dùng nh m t b
kí tr c khi ghi nh ng b n ghi này vào a
logfilsz
Kích th
logprimary
S l
logsecond
S l ng các t p tin nh t kí th c p
khôi ph c, n u c n thi t.
newlogpath
Các nh t kí l u tr c s d li u ho t ng và tr c tuy n th ng
c t o bên d i th m c c s d li u c a b n, trong th m c con
SQLOGDIR. B n có th thay *i v trí này b3ng cách thay *i giá tr
c a tham s c u hình này tr/ n m t th m c khác hay n m t thi t
c c a t&ng nh t kí
m cho các b n ghi nh t
c c u hình, có dung l
ng các b n nh t kí s c p c a kích th
ng 4KB
c logfilsz s)
ct o
c t o và s! d ng cho vi c
192
Nh p môn H qu n tr c s d li u DB2
b.
mirrorlogpath
' b o v các nh t kí trên
ng d%n chính kh/i nh ng s c h/ng
a hay vô tình xóa, thì b n có th ch+ nh m t thi t l p ng nh t cho
các nh t kí
c l u tr trên m t
ng d%n ph ( nh c a
ng
d%n nh t kí chính)
logarchmeth1 /
logarchmeth2
'$c t v trí h n là
ng d%n nh t kí ang ho t ng
l u tr các
t p tin nh t kí. N u c hai tham s này
c $c t thì m i t p tin
nh t kí s)
c ghi l u tr hai l n. T c là b n s) có hai b n sao chép
c a nh ng t p tin nh t kí l u tr
t i hai v trí khác nhau. Các giá tr
có th có là OFF (có ngh a là ghi nh t kí tu n t quay vòng
c kích
ho t), LOGRETAIN, USEREXIT, DISK, TSM, VENDOR
loghead
Tên c a t p tin nh t kí ang
softmax
Gi i h n chi phí c a vi c khôi ph c do h th ng b treo.
overflowlogpath
'$c t v trí cho DB2
tìm ki m các t p tin nh t kí c n thi t cho m t
ho t ng ph c h i. T ng t nh tùy ch n OVERFLOW LOG PATH
c a l nh ROLLFORWARD.
blk_log_dsk_ful
Thi t l p
tránh vi c tràn a phát sinh khi DB2 không th t o m t
t p tin nh t kí m i trong
ng d%n nh t kí ang ho t ng. Thay vào
ó, DB2 s) c g ng t o c n m phút m t t p tin nh t kí cho n khi
t o thành công. Khi h t tr ng i, thì SQL ch+- c có th ti p t c
max_log
Ph n tr m không gian nh t kí ho t
num_log_span
S t p tin nh t kí ho t
ng cho m t UOW ho t
mincommit
S l
nhóm l i tr
ng các commit
c s! d ng
ng b i m t giao d ch
c khi ghi
ng
a
B ng 11.1 – Các tham s nh)t kí
11.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 ra m t b n sao chép c s d li u lúc l nh
c th c thi. Cú pháp
n gi n nh t mà b n có th s! d ng
ch y l nh này là:
BACKUP DATABASE <dbname> [ TO <path> ]
H u h t các l nh và công c có th
c th c thi ch
tr c tuy n hay ngo i tuy n.
Tr c tuy n ngh a là nh ng ng i s! d ng khác có th 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 ang th c thi l nh c a mình. Ngo i tuy n t c là không
ng i nào ngoài b n
c k t n i n c s d li u trong khi b n th c hi n thao tác. '
cho phép m t thao tác tr c tuy n, thêm t& khóa ONLINE vào cú pháp l nh, n u không thì
m$c nh b n th c thi câu l nh trong ch
ngo i tuy n.
Ch
ng 11 – Sao l u và Khôi ph c
193
Ví d , n u mu n sao l u c s d li u SAMPLE
n
ng d%n C:\BACKUPS b n có th
th c hi n l nh này t& DB2 Command Window ho$c Linux shell:
db2 BACKUP DB sample TO C:\BACKUPS
Chú ý r3ng th m c C:\BACKUPS ph i t n t i tr c khi th c thi l nh. C6ng ph i 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 (ch
m$c nh là
ngo i tuy n), n u không b n s) nh n m t thông báo l i b i vì m t sao l u ngo i tuy n
không th
c th c thi khi có các k t n i n c s d li u.
Trong tr ng h p
tìm ra nh ng k t n i
s* l nh DB2 ho$c Linux shell:
n c s d li u, ta th c hi n l nh sau t& c!a
db2 list applications
' ng t t t c k t n i n t& các c s d li u t c thì, ta th c hi n l nh sau t& c!a s*
l nh DB2 ho$c Linux shell:
db2 force applications all
B n có l) không mu n th c hi n câu l nh v&a r i trong môi tr ng s n xu t v i nhi u
ng i s! d ng, n u không b n s) nh n nh ng cu c g i y gi n d t& các ng nghi p
y! Chú ý r3ng câu l nh ó ch y theo cách th c không ng b . Ngh a là khi b n c g ng
ch y l nh sao l u ngay sau ó, nó có th s) không ch y. Hãy ch trong giây lát, và l$p l i
câu l nh sao l u n u b n g$p l i nh lúc u.
Sau khi th c thi thành công câu l nh sao l u, m t t p m i ch a nh c s d li u sao l u
c t o ra. Tên c a t p này
c $t theo qui
c nh trong hình 11.6
Hình 11.6: Các qui
c
t tên t p nh sao l u
Lo i “0” có ngh a là ó là b n sao l u y . Ch1ng h n nh lo i “3”, ngh a là ch+ m t
không gian c a b ng c n sao l u. Giá tr NODE0000
c gán c
nh cho n t trong c
s d li u không-phân vùng, là tr ng h p cho t t c các n b n DB2 tr& n b n th ng
m i DB2 Enterprise Edition v i tính n ng DPF. Danh m c c6ng
c gán c
nh v i giá
tr CATN0000. Tham kh o sách h ng d%n s! d ng DB2
bi t thêm chi ti t.
Khi có nhi u b n sao l u
c ghi l i và l u tr trong cùng
ng d%n thì nhãn th i gian
cu i tên t p
c s! d ng
phân bi t gi a các nh sao l u. Nh chúng ta s) th y
194
Nh p môn H qu n tr c s d li u DB2
ph n ti p theo, l nh RESTORE có th s! d ng nhãn th i gian này
sao ã
c ch+ nh.
ph c h i m t b n
11.7 Khôi ph c c s" d# li u
Vi c ph c h i c s d li u bao hàm vi c ph c h i c s d li u t& các b n sao l u ho$c
các b n nh t ký. N u b n ch+ ph c h i t& b n sao l u, b n s) t o l i c s d li u úng
nh lúc mà nó
c sao l u.
N u ch c n ng ghi nh t kí l u tr
c b t lên tr c khi ti n hành sao l u, b n có th ti n
hành vi c khôi ph c không nh ng t& các b n sao l u, mà còn có th t& các b n nh t ký.
Nh chúng ta s) th y ch ng k ti p theo, vi c sao l u theo ki u cu n v phía tr c
cho phép chúng ta ph c h i t& các b n sao, và sau ó
c áp d ng (theo ki u cu n v
phía tr c) cho các nh t ký vào phía cu i c a các nh t ký, ho$c t i m t th i i m
c ch+
nh.
Chú ý r3ng t& khóa “recovery”
c s! d ng th ng xuyên
câu l nh mà chúng ta dùng thì l i
c g i là “RESTORE”.
trong ch
ng này, nh ng
11.7.1 Các ki(u khôi ph c d# li u
Có ba ki u khôi ph c d li u:
Khôi ph c d li u khi h th ng b treo ho$c kh i
ng l i
Gi s! b n ang làm vi c trên m t máy tính
bàn và ang ch y nhi u giao d ch
quan tr ng t i h c s d li u DB2. ' t nhi n b cúp i n ho$c ai ó vô tình tháo
dây ngu n c a máy tính: i u gì s) x y ra v i c s d li u c a b n?
Sau khi b n kh i ng l i máy tính c a mình, kh i ng l i DB2, c ch khôi ph c
d li u khi h th ng treo s)
c th c thi. Trong c ch khôi ph c d li u khi h
th ng b treo, DB2 s) t
ng ch y câu l nh RESTART DATABASE, s) c và
th c hi n l i ho$c không th c hi n các giao d ch d a trên các t p nh t kí. Khi câu
l nh này hoàn t t, b n s)
c m b o r3ng d li u c a b n trong tr ng thái
nh t quán, b t c giao d ch nào ã hoàn t t s)
c l u l i và b t c giao d ch nào
mà không
c hoàn t t s)
c quay lui tr l i tr ng thái tr c khi th c thi giao
d ch.
Khôi ph c d li u theo phiên b n ho$c các nh ã sao l u
Ki u khôi ph c này bao hàm r3ng b n ang ph c h i ch+ t& m t t p tin nh sao l u.
Vì v y, c s d li u c a b n s) tr ng thái nh là th i i m mà vi c sao l u
c th c hi n. B t kì giao d ch
c th c thi trên c s d li u sau khi vi c sao
l u
c th c hi n s) b m t.
Khôi ph c d li u theo ki u cu n v phía tr
c
V i ki u khôi ph c d li u này, b n không nh ng ch y l nh RESTORE t& các b n
nh sao l u mà còn ch y l nh ROLLFORWARD
g n các b n nh t ký lên b n
Ch
ng 11 – Sao l u và Khôi ph c
sao l u, nh
ó mà b n có th khôi ph c d li u t i m t th i i m
Ki u khôi ph c này gi m thi u vi c m t mát d li u.
195
c ch+
nh.
11.7.2 Ph c h i c s" d# li u
S! d ng l nh RESTORE
ph c h i l i c s d li u t& m t b n nh sao l u. D
là cú pháp n gi n nh t cho câu l nh này:
i ây
RESTORE DATABASE <dbname> [from <path>] [taken at <timestamp>]
Ví d , n u b n ã có m t t p tin nh sao l u c a c s d li u sample v i tên nh sau:
B n có th th c thi l nh nh sau:
RESTORE DB sample FROM <path> TAKEN AT 20060314131259
11.8 Thao tác khác v i câu l nh BACKUP và RESTORE
D i ây là danh sách m t s thao tác mà b n có th làm v i câu l nh BACKUP và
RESTORE. Chúng tôi khuy n khích các b n nên xem l i sách h ng d%n s! d ng DB2
bi t thêm chi ti t.
Sao l u m t c s d li u
d ng 32-bit, và ph c h i nó
d ng 64-bit
Ph c h i d li u trên m t c s d li u hi n t i.
S! d ng ch c n ng khôi ph c
c nh h ng l i (redirected restore) khi c n
ph c h i d li u trên m t h th ng mà
ó s l ng a l n h n s l ng a
c ch+ nh trong khi t o t p nh sao l u.
Sao l u ho$c ph c h i d li u b3ng không gian b ng, h n là toàn b c s d li u.
Th c hi n sao l u delta và sao l u t ng d n (incremental). Cách sao l u delta ch+
ghi l i nh ng thay *i so v i b n sao tr c, trong khi ó, sao l u t ng d n
(incremental backups) ghi l i toàn b nh ng gì thay *i và gom chúng l i thành
t&ng t p nh sao l u.
Sao l u t& các b n sao chép nhanh (flash copy) ( òi h/i t
c ng).
Khôi ph c các b ng ã xóa (n u tùy ch n
ng thích v ph n
c l p cho b ng).
Không th th c hi n vi c sao l u m t n n t ng (ví d Windows) và ph c h i
n n t ng khác (ví d Linux). S! d ng db2look và db2move trong tr ng h p này.
V i các phiên b n DB2 h tr h i u hành UNIX, bi t r3ng trong h i u hành
196
Nh p môn H qu n tr c s d li u DB2
UNIX, m t s n n t ng cho phép sao l u và ph c h i t& n n t ng UNIX t i n n
t ng khác.
11.9 Tóm t-t
Chúng ta c6ng ã tìm hi u làm sao
sao l u và ph c h i v i trình
n dòng l nh trong
DB2, bao g m vi c tìm hi u k2 v ba lo i khôi ph c c s d li u: khôi ph c khi máy b
treo (crash), khôi ph c d a vào phiên b n c s d li u (version) và khôi ph c ki u cu n
v phía tr c (roll-forward).
11.10 Bài t)p
M$c dù DB2 có kh n ng t
ng duy trì c s d li u, nh ng ôi khi b n c6ng mu n hi u
ch+nh chúng khi có m t ho t ng c th x y ra. Trong ph n bài t p này, b n s) hi u ch+nh
l ch sao l u cho c s d li u EXPRESS.
Th t c
1. T& cây i t ng trung tâm i u khi n (Control center), b n ch n All Database.
Nh p chu t ph i trên c s d li u EXPRESS và ch n m c Backup. Công c
Backup Wizard
c kh i ng
2. Ph n gi i thi u (Introduction) s) tóm t t tr ng thái hi n t i c a c s d li u bao
g m th i i m sao l u cu i cùng và ph ng th c truy c p. B m Next
chuy n
t i ph n ti p theo c a công c Backup.
3. Trong ph n Image, ch n ích n c a d li u s)
c sao l u. Thông th ng,
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. Bây gi ,
t o m t th m c m i trong h th ng có tên là C:\db2backup, ây s) là th m c
ch a c s d li u sao l u. Trong trình h tr , ch n File System trong danh sách
Media Type. B m nút Add, ch n th m c b n v&a t o ra, r i b m OK. Sau ó b m
Next
chuy n sang m c ti p theo.
4. B n có th khám phá ph n Options and Peformance tuy nhiên b n nên
ch
m$c nh vì DB2 m$c nh cho phép sao l u ch
t i u nh t. Th! nghi m
ph n Schedule sau khi khám phá xong ph n Options and Performance.
5. Trong ph n Schedule, 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. Ch n h th ng
t o ra danh m c các công c và th c hi n chúng.
Mô t m t gi n
cho danh m c công c và ch n
t o ra nó trong c s d li u
EXPRESS hi n hành. Danh m c công c s) ch a siêu d li u v t t c các tác v
l p l ch. B m nút OK
ti p t c. B m Next
chuy n sang m c ti p theo sau khi
danh m c công c ã
c t o l p.
Ch
ng 11 – Sao l u và Khôi ph c
6. Trong ph n Schedule, t o ra m t m c l c cho vi c thi hành các tác v . L p l ch
sao l u m i ngày vào lúc 1 gi sáng. B m Next
sang m c k ti p.
197
198
Nh p môn H qu n tr c s d li u DB2
7. Trong m c Summary, b n có th xem l i các tác v s)
Finish
t o ra tác v .
8. Ch y trung tâm tác v (Task Center)
v&a m i
c t o ra..
c t o ra. Sau ó b m
xem ho$c ch+nh s!a các tác v sao l u
Ch
ng 12 – Nhi m v b o trì
12
Trong ch ng này, chúng ta s) th o lu n v các công vi c c n thi t
b o trì t t c s d
li u c a b n. Nhìn chung, h ng gi i quy t c a DB2 là t
ng th c hi n h u h t các
công vi c này. C6ng gi ng nh các n b n DB2 hi n hành khác, DB2 Express-C c6ng có
nh ng kh n ng t
ng này. Kh n ng t qu n lý này có ích r t l n i v i các công ty
v&a và nh/, là nh ng công ty không th thuê m t nhà qu n tr c s d li u - DBA
(Database Administrator) làm vi c c ngày
qu n tr máy ch d li u c a công ty. M$t
khác, n u m t qu n tr viên nh v y
c thuê, h s) có nhi u th i gian r i h n
th c
hi n các công vi c nâng cao khác, i u này s) t t h n cho công ty.
Chú ý:
' bi t thêm các thông tin v các công vi t b o trì, b n có th xem o n video:
http://www.channeldb2.com/video/video/show?id=807741:Video:4302
12.1 REORG, RUNSTATS, REBIND
Có ba công vi c b o trì chính trong DB2, nh mô t
REBIND.
hình 12.1: REORG, RUNSTATS và
Hình 12.1 – Các công vi c b o trì: REORG, RUNSTATS, REBIND
200
Nh p môn H qu n tr c s d li u DB2
Hình 12.1 cho th y r3ng các công vi c b o trì
c th c hi n theo m t chu trình vòng
tròn. N u th c thi REORG, khuy n cáo b n c6ng nên ch y RUNSTATS, ti p theo ó là
REBIND. Sau m t th i gian, các b ng trong c s d li u s) b thay *i do vi c th c
hi n các thao tác UPDATE, DELETE và INSERT. Vào th i i m ó, m t chu k4 m i s)
b t u v i REORG.
12.1.1 L nh REORG
Theo th i gian, khi b n th c hi n các thao tác INSERT, UPDATE và DELETE trên c s
d li u, d li u c a b n càng ngày càng b phân m nh theo t&ng trang c s d li u. L nh
REORG thu h i l i các kho ng tr ng lãng phí và tái t* ch c l i d li u
có th truy v n
hi u qu h n. Các b ng th ng xuyên b thay *i s) có l i nhi u nh t t& l nh REORG.
B n có th REORG các ch+ m c c6ng nh các b ng, và REORG có th
c th c hi n
tr c tuy n hay ngo i tuy n.
L nh REORG ngo i tuy n th c hi n nhanh h n và hi u qu h n, nh ng l i không cho
phép truy nh p n các b ng, trong khi REORG tr c tuy n l i cho phép truy nh p t i các
b ng, nh ng l i có th s! d ng r t nhi u tài nguyên h th ng; l nh này ho t ng t t nh t
i v i các b ng có kích th c nh/.
Cú pháp:
REORG TABLE <tablename>
Ví d :
REORG TABLE employee
L nh REORGCHK có th
c s! d ng tr c l nh REORG
m t ch+ m c có c n
c s!a ch a hay không.
xác
nh li u m t b ng hay
12.1.2 L nh RUNSTATS
B t i u hóa Optimizer chính là “kh i óc” c a DB2. Nó tìm nh ng
ng d%n truy nh p
hi u qu nh t
nh v và truy v n d li u. B t i u hóa ánh giá chi phí c a h th ng,
và s! d ng th ng kê c a các i t ng c s d li u
c l u trong các b ng danh m c
(catalog table)
có th t i u hóa hi u n ng c a c s d li u. Ví d , các b ng danh
m c có s li u th ng kê v vi c hi n có bao nhiêu c t trong b ng, có bao nhiêu dòng, có
bao nhiêu ki u ch+ m c và nh ng ki u ch+ m c nào có th s! d ng
c v i m i b ng…
Thông tin th ng kê không
c c p nh t ng. '$c i m này là do khâu thi t k , vì b n s)
không mu n DB2 c p nh t thông tin th ng kê ngay sau m i thao tác trên c s d li u;
i u này có th t o ra các tác ng tiêu c c n hi u n ng c a toàn b c s d li u.
Thay vào ó, DB2 cung c p l nh RUNSTATS
có th c p nh t nh ng th ng kê này. Vi c
c p nh t các th ng kê v c s d li u là c n thi t. B t i u hóa c a DB2 có th t o ra
nh ng thay *i c b n v
ng d%n truy nh p khi nó xem xét m t b ng có m t dòng hay
có m t tri u dòng. Khi các th ng kê v c s d li u ã
c c p nh t, DB2 có th ch n
Ch
ng 12 – Nhi m v b o trì
m t ph ng án truy nh p t t h n. T n su t c a vi c t p h p các th ng kê này s)
xác nh d a trên m c
th ng xuyên thay *i c a d li u trong b ng.
201
c
Cú pháp:
RUNSTATS ON TABLE <schema.tablename>
Ví d :
RUNSTATS ON TABLE myschema.employee
12.1.3 BIND / REBIND
Sau khi th c thi thành công l nh RUNSTATS, không ph i t t c các truy v n u s) s!
d ng các th ng kê m i nh t. K ho ch truy nh p SQL t nh
c xác nh khi b n ch y
l nh BIND l n u tiên, do ó các th ng kê s! d ng t i th i i m ó có th không gi ng
v i các th ng kê hi n t i. Hình 12.2 minh h a cho ý t ng này.
Hình 12.2 – Quá trình k t n i SQL t4nh
Trong Hình 12.2, m t ch ng trình nhúng vi t b3ng ngôn ng C (l u trong t p tin v i ph n
m r ng “sqc”)
c ti n biên d ch. Sau quá trình ti n biên d ch, hai t p tin
c t o ra,
m t t p tin “.c” ch a các câu l nh C v i t t c các câu l nh SQL
c xem nh chú thích;
và m t t p tin “.bnd” ch a t t c các câu l nh SQL. T p tin C v i ph n m r ng “.c”
c
biên d ch nh thông th ng v i m t trình biên d ch C, t o ra m t “th vi n” nh
phía
trên bên ph i hình minh h a. T p tin “.bnd”
c liên k t m t cách t ng t , nó t o ra m t
gói
c l u tr trong c s d li u. Quá trình k t n i t ng
ng v i quá trình biên
d ch các câu l nh SQL v i k ho ch truy nh p t t nh t
c xác nh d a trên các th ng
kê s"n có t i th i i m ó, và sau ó l u tr chúng vào gói.
Bây gi , i u gì s) x y ra n u th c hi n vi c chèn m t tri u dòng vào b ng
c s! d ng
trong ch ng trình nhúng trên? Sau khi chèn, n u th c hi n l nh RUNSTATS, các th ng
kê s)
c c p nh t; tuy nhiên, gói s) không
c c p nh t t
ng
tính toán l i
202
Nh p môn H qu n tr c s d li u DB2
ng d%n truy nh p d a trên các th ng kê m i nh t. L nh db2rbind có th
c s!
d ng
tái k t n i t t c các gói hi n có sao cho có th liên h t i các th ng kê m i nh t.
Cú pháp:
db2rbind database_alias -l <logfile>
Ví d :
' tái k t n i t t c các gói trong c s d li u SAMPLE và l u tr thông tin
t p tin mylog.txt, ta th c thi l nh sau:
u ra trong
db2rbind sample -l mylog.txt
12.1.4 Các công vi c b o trì t1 Control Center (Trung tâm
i u khi(n)
T& Control Center, b n có th ch y l nh REORG và l nh RUNSTATS. Hình 12.3 minh h a
cách th c hi n.
Hình 12.3 – REORG và RUNSTATS t1 Control Center
Ch
ng 12 – Nhi m v b o trì
203
B n ch n b ng mà mình mu n thao tác, nh p chu t ph i vào b ng ó và ch n Reorganize
( i v i REORG) ho$c Run Statistics ( i v i RUNSTATS).
12.1.4.1 Khung nhìn thông s c s" d# li u (database operational view)
Khi b n ch n m t c s d li u, khung nhìn thông s v c s d li u hi n th phía d i
bên ph i c a Control Center s) cung c p thông tin v c s d li u, nh kích th c, th i
i m c s d li u
c sao l u g n nh t, li u ch c n ng t
ng b o trì có
c thi t
l p hay không… Khung nhìn này cho phép b n nhanh chóng xác nh các nhu c u b o trì
cho c s d li u c a b n. Hình 12.4 cho chúng ta th y các thông tin này.
Hình 12.4 – C a s: thông s c s" d# li u c a Control Center
12.2 Các l.a ch/n b o trì
Có ba cách
th c hi n công vi c b o trì:
B o trì th công
B n th c hi n các ho t
ng b o trì m t cách th công khi có nhu c u.
T o các k ch b n th c hi n b o trì
204
Nh p môn H qu n tr c s d li u DB2
B n có th t o các k ch b n v i các l nh b o trì và l p l ch cho chúng ch y
$n.
B o trì t
' DB2 t
ng
ng th c hi n vi c b o trì cho b n (REORG, RUNSTATS, BACKUP).
Trong ph n này chúng ta t p trung vào v n
B o trì t
u
b o trì t
ng.
ng bao g m các khía c nh sau:
Ng i s! d ng nh ngh a các c a s b o trì (maintainance windows), trong ó,
các tác v có th
c th c thi mà ít b gián o n nh t. Ví d , n u h th ng ít ho t
ng nh t vào kho ng t& 2 gi
n 4 gi sáng ngày ch nh t thì khung th i gian
này s) ho t ng nh m t c!a s* b o trì.
Có hai c!a s* b o trì: M t dành cho các thao tác tr c tuy n (online) và m t dành
cho các thao tác ngo i tuy n (offline).
DB2 s) th c hi n các ho t
c!a s* b o trì.
ng b o trì m t cách t
ng ch+ khi c n thi t trong các
T& Control Center, b n có th g i th thu t Configure Automated Maintenance (C u hình
b o trì t
ng) nh Hình 12.5.
Hình 12.5 – G/i c a s: th thu)t Configure Automated Maintenance
Ch
ng 12 – Nhi m v b o trì
205
Hình 12.6 s) cho ta th y k t qu khi ch n th thu t Configure Automated Maintenance.
Hình 12.6 – Wizard Configure Automated Maintenance
12.3 T:ng k t
Ch ng này nghiên c u v t m quan tr ng c a vi c b o trì i v i c s d li u, bao g m
vai trò c a các chu trình REORG, RUNSTATS và REBIND. L nh REORG, nh tên g i c a
nó, s) t* ch c l i d li u c a b n
lo i b/ s phân m nh và t ng t c
truy xu t d
li u. L nh RUNSTATS c p nh t l i nh ng thông tin th ng kê
c s! d ng b i công c t i
u c a DB2
t ng hi u su t cho các thao tác v i d li u. Hai quá trình BIND và REBIND
c p nh t các gói c a c s d li u v i
ng d%n truy c p m i nh t c a nó.
Chúng ta c6ng ã xem xét công c tr c quan
c cung c p trong Control Center c a
DB2
th c thi các ho t ng b o trì m t cách th công, hay thông qua các k ch b n,
ho$c ch y theo ch
t
ng.
12.4 Bài t)p
Trong bài t p này, b n s) c u hình b o trì t
ng cho c s d li u SAMPLE c a DB2.
206
Nh p môn H qu n tr c s d li u DB2
Th t c:
1. T& cây i t ng c!a s* Control Center, nh p chu t ph i vào c s d li u
SAMPLE và ch n Configure Automatic Maintenance. Thao tác này s) g i th thu t
Configure Automatic Maintenance.
2. Trang Introduction (Gi i thi u) c a th thu t hi n th nh ng thi t l p b o trì t
ng
hi n t i. N u b n t o c s d li u v i tùy ch n b o trì t
ng, thì b o trì t
ng
ãt
c c u hình. B n có th s! d ng th thu t này
c u hình l i các tùy
ch n cho b o trì t
ng. Ch n Next
chuy n sang trang ti p theo c a nó.
3. Trang Type (Ki u) yêu c u b n l a ch n gi a vi c t t t t c các tùy ch n b o trì t
ng và vi c thay *i các thi t l p b o trì t
ng. Ch n tùy ch n thay *i các thi t
l p b o trì t
ng hi n t i. Sau ó ch n Next.
4. Trang Timing (Th i gian) c a th thu t s) yêu c u b n ch+ nh các c!a s* b o trì.
C u hình c s d li u
nó ngo i tuy n (offline) vào các êm th b y và ch
nh t, t& n!a êm n 6h sáng nh hình bên d i. Ch n Change bên c nh khung
xem tr c các thi t l p b o trì ngo i tuy n và l a ch n th i gian mong mu n. Sau
khi ch+ ra các thông tin
c yêu c u, ch n OK
quay tr l i th thu t. '
nguyên c!a s* b o trì tr c tuy n (b o trì tr c tuy n có th th c hi n b t kì lúc
nào). Ch n Next
ti p t c.
Ch
ng 12 – Nhi m v b o trì
207
5. A trang Notification (C nh báo), b n có th thi t l p m t m i liên l c trong tr ng
h p ho t ng b o trì t
ng b l i. Bây gi ta s) b/ qua b c này và ch n Next.
6. A trang Activities (Các ho t ng), b n có th ch n
t
ng th c hi n t&ng
ph n hay không t
ng th c hi n m t s ho t ng c th , c6ng nh ch n
c thông báo v m t s ho t ng nào ó. Trong ví d này, hãy ch c ch n r3ng
t t c các h p ki m Automate u
c ch n và các h p ki m Notify không
c
ch n. Nh p chu t vào Next.
7. Tr c khi chuy n qua trang ti p theo, b n nên c u hình v trí sao l u c a c s d
li u. M t l a ch n lý t ng là b n s) l u nó trên m t * a v t lý khác phòng
tr ng h p * a ang s! d ng b l i. T& trang Activities, ch n tùy ch n sao l u
c s d li u Backup Database và sau ó ch n Configure Settings (Thi t l p c u
hình).
8. A [email protected] tiêu chí sao l u Backup Criteria c a c!a s* h i tho i Configure Settings, ta
ch n tùy ch n Balance Database Recoverability with Performance (cân b3ng gi a
kh n ng ph c h i c s d li u và hi u su t). A [email protected] v trí sao l u Backup
Location, ch n v trí sao l u ã có, r i ch n Change
thay *i. Ch+ ra m t v trí
khác
th c hi n vi c sao l u (và ch c ch n r3ng s) có
không gian l u tr
trên * a ó). A [email protected] ch
sao l u Backup Mode, hãy ch c ch n r3ng ch
sao
l u ngo i tuy n Offline Backup
c ch n. Ch n OK
óng [email protected] Backup Criteria
và ch n Next
chuy n qua trang ti p theo.
9. Trang Summary (T ng k t) c a th thu t ch a thông tin t*ng k t các l a ch n mà
ta ã ch n. Ch n Finish
ch p nh n và th c thi các thay *i.
Ch
ng 13 - Truy c)p
13
ng th i và khóa
Ch ng này s)
c p cách mà nhi u ng i dùng truy c p vào cùng m t c s5 d li u
cùng m t lúc mà không làm nh h ng l%n nhau, và gi cho tác v c a h *n nh. Chúng
ta s) nói v các nh ngh a sau: giao d ch (transactions), truy c p ng th i (concurrency)
và khóa (locking).
Chú thích:
' bi t thêm thông tin v truy c p
ng th i và khóa xem video t i :
http://www.channeldb2.com/video/video/show?id=807741:Video:4322
13.1 Giao d0ch (Transactions)
M t giao d ch hay m t n v c a công vi c là g m m t hay nhi u câu l nh SQL
c th c
thi, nên
c coi nh là m t n v
c l p, ngh a là n u m t trong nh ng câu l nh trong
giao d ch th t b i thì toàn b giao d ch th t b i, và nh ng câu l nh ã th c hi n t& tr c
i m sai s) b quay l i. M t giao d ch k t thúc v i dòng l nh COMMIT, c6ng có ngh a là b t
u v i m t giao d ch m i. Hình 13.1 cho ta th y m t ví d c a m t giao d ch.
Hình 13.1 – M t ví d v giao d0ch
Ch
ng 13 - Truy c p
ng th i và khóa
209
Trong hình 13.1, ví d b n mu n chuy n 100 ô la t& t i kho n ti t ki m sang tài kho n
séc. Nh th y trên, các vi c tu n t c n làm
th c thi tác v trên:
- Rút 100 ô la t& tài kho n ti t ki m
- Chuy n 100 ô la vào tài kho n séc
N u nh ng tác v trên không th c hi n nh m t n v
n [email protected] c a công vi c, hãy t ng
t ng chuy n gì s) x y ra khi m t sai l m nghiêm tr ng xu t hi n: sau khi tr& ti n tài
kho n ti t ki m, nh ng ti n không c ng vào tài kho n séc. B n s) m t 100 ô la!
13.2 Truy xu t
ng th i (Concurrency)
Truy xu t ng th i ng ý m t vài ng i dùng có th làm vi c trên m t i t ng c s d
li u cùng m t th i i m. DB2
c thi t k cho c s d li u a ng i dùng. Truy c p d
li u ph i k t h p m t cách thích h p và rõ ràng vi c s! d ng m t c ch b o m tính
toàn v,n và nh t quán. Xem ví d hình 13.2.
Hình 13.2 – M t ví d v truy xu t
xu t
ng th i
ng th i và s. c n thi t c a vi c ki(m soát truy
Trong hình 13.2, có 4 ng d ng , App A, App B, App C và App D ang c truy xu t cùng
m t dòng (dòng 2) trong cùng m t b ng. N u không có b t kì s ki m soát nào, m i ng
d ng s) có th th c hi n nh ng tác v trái ng c nhau. Gi s! m i ng d ng u ang
mu n c p nh t c t tu*i c a dòng 2 v i giá tr khác nhau, ng d ng nào c t nh t c t ó cu i
cùng thì là “ng i chi n th ng”. Rõ ràng chúng ta th y trong ví d trên, c n có m t vài s
ki m soát
b o m tính nh t quán c a k t qu . S ki m soát này d a trên vi c s! d ng
khóa (locking).
Khái ni m khóa và truy su t ng th i i cùng v i nhau. Khóa thì s) t m th d&ng nh ng
tác v c a nh ng ng d ng này cho n khi nh ng tác v c a nh ng ng d ng khác hoàn
thành. Càng nhi u khóa trên m t h th ng, càng ít nh ng truy su t ng th i có th . Và
ng c l i, càng ít khóa trên h th ng, càng nhi u nh ng truy su t ng th i.
Khóa xu t hi n m t cách t
ng và h tr m t giao d ch và
c gi i phóng khi giao d ch
k t thúc (s! d ng câu l nh COMMIT và ROLLBACK). Khóa có th xu t hi n trên b ng và
dòng. Có hai lo i khóa chính:
Khóa chia [email protected] - S locks (Share locks ) – xu t hi n khi m t ng d ng mu n
dòng và không các ng d ng khác c p nh t trên cùng m t dòng.
cm t
210
Nh p môn H qu n tr c s d li u DB2
Khóa dành riêng - X locks (Exclusive locks) – xu t hi n khi ng d ng c p nh t,
chèn, hay xóa m t dòng.
Bây gi hãy xem hình 13.3, gi ng hình 13.2 nh ng bây gi nó có thêm m t cái khóa.
Hình 13.3 - Ví d v s. truy xu t
ng th i và s. c n thi t c a khóa.
Ví d trong hình 13.3, n u ng d ng App B truy xu t dòng 2 u tiên, và th c hi n tác v
là UPDATE, App B gi khóa X lock trên dòng ó. Khi các ng d ng App A, App C và App
D mu n truy xu t cùng dòng ó, chúng không th UPDATE
c vì khóa X lock. S ki m
soát này b o m tính toàn v,n và nh t quán cho d li u.
13.3 M t s v n
n u không có s. ki(m soát truy c)p
N u không có s ki m soát truy c p
ng th i, chúng ta s) g$p các v n
ng th i
sau:
M t d li u c p nh t (Lost update)
' c d li u không hoàn t t (Uncommited read)
' c d li u không th l$p l i (Non-repeatable read)
' c d li u th&a (Phamtom read)
13.3.1 M t d# li u c)p nh)t (lost update)
M t d li u là m t v n
gi ng v i cái mà ta ã
hi n c p nh t cu i cùng là ng i chi n th ng
c p
u ch
ng là ng d ng nào th c
Ch
ng 13 - Truy c p
ng th i và khóa
211
Hình 13.4 - M t d# li u c)t nh)t
Trong hình 13.4, có hai ng d ng ang c c p nh t cùng m t hàng. Bên trái là ng d ng
App1, và bên ph i là ng d ng App2. Các s ki n x y ra nh sau:
1. App1 c p nh t m t dòng
2. App2 c p nh p cùng dòng ó
3. App1 hoàn t t
4. App2 hoàn t t
Vi c c p nh t c a App1 s) m t khi App2 th c hi n c p nh t, nh th chúng ta có thu t
ng “m t c p nh t d li u” (lost update).
13.3.2 /c d# li u không hoàn t t ( Uncommited read)
' c d li u không hoàn t t hay “ c b#n” cho phép m t ng d ng
ch a
c hoàn t t, và k t qu là không chính xác.
c nh ng thông tin
212
Nh p môn H qu n tr c s d li u DB2
Hình 13.5 -
/c d# li u không hoàn t t
Hình 13.5 cho ta th y các tác v sau:
1. App1 c t nh t m t dòng
2. App2
c giá tr m i hàng ó
3. App1 tr l i (rolls back) nh ng gì nó thay *i dòng ó
App2 ang c m t d li u ch a hoàn t t, và ó là t i sao v n
li u không hoàn t t” (uncommited read).
này
c g i ra “
cd
13.3.3 /c d# li u không th( l p l2i (Non-repeatable read)
' c d li u không th l$p l i ám ch+ là b n không th
th c hi n cùng vi c c trong cùng tác v .
t
c cùng m t k t qu sau khi
Ch
Hình 13.6 -
ng 13 - Truy c p
ng th i và khóa
213
/c d# li u không th( l p l2i
Trong hình 13.6, gi s! b n mu n $t m t chuy n bay t& Dallas
x y ra là:
n Honolulu. Các tác v
1. App1 m m t b ng (c6ng là t p k t qu ), nh b n th y trên hình .
2. App2 xóa dòng (ví d nh dòng có i m
n là “San Jose” ch1ng h n)
3. App2 hoàn t t thay *i
4. App1 óng và m l i con tr/
Trong tr ng h p này, vì App1 không th có cùng m t d li u khi
không th có cùng m t t p h p d li u; ó là t i sao v n
này
không th l$p l i”.
c l i d li u ó, nó
c g i là “ c d li u
13.3.4 /c d# li u th1a (Phantom read)
' c d li u th&a thì gi ng nh là c d li u không th l$p l i, nh ng khác bi t ch l n
c ti p theo, b n s) nh n
c nhi u dòng h n l n tr c. Hình 13.7 cho th y m t ví d .
214
Nh p môn H qu n tr c s d li u DB2
Hình 13.7 -
/c d# li u th1a
Hình 13.7 cho th y chu i s ki n sau:
1. App1 m b ng
2. App2 thêm m t dòng m i vào b ng ó
3. App2 hoàn thành s thay *i
4. App1 óng và m l i b ng
Trong tr ng h p này, App1 không có cùng m t d li u nh
mà nó s) có thêm nhi u dòng h n. 'ó là lý do t i sao v n
th&a”.
c d li u không th l$p l i,
này
c g i là “' c d li u
13.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, d a trên s l a ch n
m c cô l p 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 không cam k t (UR)
.n
nh con tr/ (CS)
' c *n
nh (RS)
' c l$p l i (RR)
cô l p d li u:
Ch
ng 13 - Truy c p
ng th i và khóa
215
13.4.1 /c không cam k t
' c không cam k t c6ng nh
c có ý x u. 'ó là m c cô l p th p nh t, và cung c p m c
ng th i cao nh t. Không có s khóa dòng nào t n t i trong nh ng thao tác c, tr&
khi ng d ng khác c b/ ho$c thay th m t b ng; và c p nh p nh ng thao tác, hành ng
nh là s! d ng m c cô l p *n nh con tr/.
Nh ng v n
v%n có th có
m c cô l p:
' c không cam k t
' c không l$p l i
' c th&a
Nh ng v n
ã
c ng n ng&a
m c cô l p này:
M t d li u khi c p nh t
13.4.2
n 0nh con trH
.n nh con tr/ là m c cô l p m$c nh. Nó cung c p m c
khóa t i thi u. C b n, v i
m c cô l p này "dòng hi n hành " (current) c a con tr/ b khóa. N u ó là dòng ch+
c
c, khóa s)
c gi cho n khi m t dòng m i
c n p ho$c
n v làm vi c
ck t
thúc. N u dòng
c c p nh t thì khóa s)
c gi cho n khi n v làm vi c
ck t
thúc.
Nh ng v n
v%n có th x y ra
m c cô l p này:
' c không l$p l i
' c th&a
Nh ng v n
c ng n ng&a v i m c cô l p này:
M t d li u c p nh t
' c không cam k t
13.4.2.1 Cam k t hi n th i
Tr c DB2 9.7 khi s! d ng *n nh con tr/ m c cô l p, v i thao tác c p nh t (UPDATE)
s) ng n trình c thao tác ch n (SELECT) truy c p n cùng m t hàng. Tính lô-gíc
ây
là khi thao tác thay *i n hàng thì trình c s) i cho n khi vi c c p nh t hoàn thành
th y rõ giá tr cam k t cu i cùng. Trong phiên b n DB2 9.7, có m t m$c nh m i v tác
ng con tr/ *n nh m c cô l p cho c s d li u m i. Tác ng m i này
c th c hi n
b3ng cách s! d ng cam k t hi n th i (currently committed - CC). V i cam k t hi n th i,
m t trình vi t s) không ng n c n m t trình c truy c p cùng m t hàng. Tác ng này có
th có phiên b n tr c n u b n ã s! d ng m c cô l p c không cam k t (UR); tuy
nhiên, s khác nhau
ây là v i cách oc không cam k t (UR) trình c l y l i giá tr
không cam k t, trong khi cam k t hi n th i (CC) trình c nh n giá tr cam k t hi n th i.
Giá tr
c cam k t hi n th i cam k t giá tr t& th i i m b t u c a c a thao tác vi t
(writer operation).
216
Nh p môn H qu n tr c s d li u DB2
Cho ví d , b n có b n T1 có n i dung theo d
FIRSTNAME
Raul
Jin
i ây:
LASTNAME
Chong
Xie
Gi s! b n có ch
ng trình AppA có câu truy v n không cam k t:
update T1 set lastname = 'Smith' where firstname = 'Raul'
Ti p theo, ch
ng trình AppB có câu truy v n:
select lastname from T1 where firstname = 'Raul' with CS
K t& phiên b n DB2 9.7, nh ng câu truy v n ki u nh trên s) b treo vì nó ang
riêng do AppA gi
c th ra.
i khóa
V i phiên b n DB2 9.7 và cam k t hi n th i
c b t (m$c nh cho c s d li u m i),
câu truy v n s)
c tr v giá tr cam k t hi n th i là Chong.
L u ý m$c dù con tr/ *n nh (CS) là m$c nh chúng ta v%n thêm ‘with CS’
Chúng ta s) th o lu n m nh
này ph n sau c a ch ng.
N u ch
câu truy v n.
ng trình AppB th! truy v n:
select lastname from T1 where firstname = 'Raul' with UR
Khi m c cô l p không cam k t (UR)
cam k t.
c s! d ng, k t qu s) là Smith ây là giá tr ch a
Ví d này cho th y v i cam k t hi n th i (CC), truy c p
ng d ng, nó cho phép nh ng trình c có th truy c p
c p nh t.
ng th i s) t t h n cho nh ng
n hàng khi mà trình ghi ang
M t k ch b n khác c6ng t o
c s tranh lu n t& phiên b n DB2 9.7 là trình c ng n
ng&a m t trình vi t truy c p n hàng. V i k ch b n này có m t lý do là t i sao m t
COMMIT
c
ngh cho c nh ng thao tác c, v i m b o khóa chia [email protected] (S lock)
c s! d ng. V i khóa CC v n
này không c n d$t ra, vi c c không ch$n vi c ghi.
' i v i nh ng thao tác chèn (INSERT) không
c cam k t, thao tác c s) gi chúng
theo m$c nh; th t v y, t p h p k t qu s) không hi n th nh ng hàng này. V i câu l nh
xóa (DELETE), thao tác c c6ng s) b/ qua nh ng hàng b nh h ng, nh ng hành vi c a
nó ph thu c vào giá tr c a bi n ng kí DB2 là DB2_SKIPDELETED. Các bi n ng kí
khác và thu c tính các l nh BIND và PREPARE có th thay *i theo hành vi m$c nh
c a CC.
Ch
ng 13 - Truy c p
ng th i và khóa
217
Ch+ c n nh : Cam k t hi n th i ngh a là nó s) ch+ hi n th thông tin cam k t hi n th i, do
ó các các l nh INSERT ho$c DELETE không cam k t s)
c b/ qua.
Nh
ã
c p t& tr c, CC
c b t m$c nh c s d li u m i. N u b n mu n t t
ho$c m c s d li u
c t o t& tr c th i i m phiên b n DB2 9.7 mà c p nh t lên
DB2 9.7, b n có th c p nh p giá tr c a c u hình c s d li u CUR_COMMIT. Ví d ,
t t c s d li u có tên là SAMPLE, ánh l nh:
db2 update db cfg for sample using CUR_COMMIT off
db2stop
db2start
13.4.3 /c :n 0nh
V i c *n nh, t t c các dòng mà ng d ng l y ra trong m t n v làm vi c u b
khóa. V i m t con tr/ xác nh, nó khóa t t c các dòng
tiêu chu#n trong t p h p k t
qu . Ví d , n u b n có m t b ng ch a 10.000 dòng và truy v n tr v 10 dòng, thì ch+ có
10 dòng b khóa.C ch
c *n nh s! d ng m t m c
khóa v&a ph i.
V n
còn t n t i v i m c cô l p này:
' c th&a
Nh ng v n
gi i quy t
c v i m c cô l p này:
M t d li u
' c không cam k t
' c không l$p l i
13.4.4 /c l p l2i
' c l$p l i là m c cô l p cao nh t. Nó cung c p
khóa cao nh t và truy c p ng th i t i
thi u nh t. Khóa
c gi trên t t c các dòng x! lý vi c xây d ng m t t p h p k t qu .
T c là c 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.
Không m t ch ng trình nào khác có th th c p nh t, xóa, ho$c thêm m i m t dòng
có th nh h ng n t p h p k t qu cho n khi m t n v công vi c
c hoàn t t.
C ch
c l$p l i b o m r3ng nh ng câu truy v n t ng t nhau
c
a ra b i m t
ng d ng trong m t n v làm vi c s) nh n k t qu gi ng nhau t i m i th i i m.
V n
còn t n t i v i m c cô l p này:
Không còn
Nh ng v n
c ng n ng&a v i m c cô l p này:
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
218
Nh p môn H qu n tr c s d li u DB2
13.4.5 So sánh các m c
cô l)p d# li u
Hình 13.8 so sánh s khác nhau mà các m c cô l p mang l i. Trong hình, chúng ta nhìn
th y m c
cô l p “ c không cam k t” không khóa gì c . M c
cô l p *n nh con tr/
gi m t cái khóa m t dòng 1 khi nó ang l y v , nh ng s) gi i phóng nó s m r i l y dòng
2 v ,… ' i v i m c
cô l p c *n nh ho$c c l$p l i, b t c dòng nào l y v s) b
khóa, và khóa s) không
c gi i phóng cho n khi k t thúc m t giao tác (khi hoàn t t).
Hình 13.8 – So sánh các m c
13.4.6
cô l)p
t m c cô l)p
Nh ng m c cô l p có th
c ch+ rõ t i nhi u m c:
Phiên làm vi c ( 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 ng d ng. N u không ch+ rõ
cm c
cô l p trong ng d ng c a các b n, nó m$c nh là con tr/ *n nh. Ch1ng
h n, b ng 13.1 cho th y nh ng m c cô l p kh d cho m t ch ng trình .NET hay JDBC
và làm sao khi cài $t nh ng thu c tính này ph i phù h p v i m c
cô l p..
DB2
.NET
JDBC
Uncommitted Read (UR)
ReadUncommitted
TRANSACTION_READ_UNCOMMITTED
Cursor Stability (CS)
ReadCommitted
TRANSACTION_READ_COMMITTED
Ch
ng 13 - Truy c p
ng th i và khóa
219
Read Stability (RS)
RepeatableRead
TRANSACTION_REPEATABLE_READ
Repeatable Read (RR)
Serializable
TRANSACTION_SERIALIZABLE
Table 13.1 – So sánh thu)t ng# gi#a các m c cô l)p
Câu l nh
m c cô l p có th dùng v i m nh
WITH {m c cô l p}. Ví d :
SELECT ... WITH {UR | CS | RS | RR}
Ví d k ch b n:
M t ng d ng c n xác nh “s b ” s hàng trong m t b ng. Hi u su t là quan tr ng. 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, các m c thi t l p
c $t th i gian ch y.
c $t t i th i i m óng gói, còn SQL
ng các m c
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 . N u ng d ng
c a các b n không yêu c u có nh ng giá tr nh trên ví d , ch n cô l p UR. 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ó, ch n cô l p RR.
' s! d ng cam k t ràng bu c hi n th i ng ngh a và úng th i i m ho$c th i gian
chu#n b , s! d ng cú pháp:
BIND:
>--+-------------------------------------------------------------+-->
'--CONCURRENTACCESSRESOLUTION--+--USE CURRENTLY COMMITTED--+--'
'--WAIT FOR OUTCOME---------'
PREPARE:
concurrent-access-resolution:
|-+-USE CURRENTLY COMMITTED-+--------------------------|
'-WAIT FOR OUTCOME--------'
A ng d ng JDBC s! d ng trình i u khi n máy ch d li u c a IBM (IBM Data Server
Driver) cho JDBC ho$c SQLJ, b n có th s! d ng thu c tính concurrentAccessResolution
m cam k t hi n th i.
220
Nh p môn H qu n tr c s d li u DB2
13.5 Khóa leo thang
M i khóa do DB2 t o ra s) s! d ng l ng b nh nh t nh. Khi b t i u cho r3ng
khóa trên toàn b b ng t t h n, thay vì khóa nhi u hàng, khi ó s leo thang xu t
hi n.Hình 13.9 minh h a cho i u này.
m t
Hình 13.9 – Khóa leo thang
Có 2 tham s c u hình c s d li u chính liên quan
LOCKLIST – S l
cho m i ng d ng
n khóa leo thang:
ng c a b nh (trong trang 4k) d tr
c k t n i.
MAXLOCKS – Ph n tr m c c
có th s! d ng.
qu n lý nh ng khóa
i c a toàn b danh sách khóa cho m t ng d ng
M$c nh cho hai tham bi n trên là t
ng, có ngh a r3ng trình qu n lý b nh (STMM) s)
ch+nh s!a kích th c nh . N u b n không b t ch c n ng STMM, và $t giá tr c a b n,
nh ng giá tr này s) nh h ng khi xu t hi n s leo thang. Ví d , n u b n $t LOCKLIST
n 200k và MAXLOG n 22%, thì khóa leo thang xu t hi n khi m t ng d ng
n yêu
c u h n 44k b nh khóa (200k * 22% = 44K). N u khóa leo thang xu t hi n liên t c i
v i nh ng thi t l p này, t ng giá tr c a LOCKLIST và MAXLOCKS. Khóa leo thang không
t t cho hi u su t vì nó làm gi m s truy nh p ng th i. T p tin cho vi c chu#n oán, nh t
kí db2diag.log có th dùng
bi t li u khóa leo thang có xu t hi n hay không. Xem thêm
ph l c A
hi u thêm v t p tin này.
Ch
ng 13 - Truy c p
ng th i và khóa
221
13.6 Ki(m soát khóa
B n có th theo dõi vi c s! d ng khóa DB2 b3ng ng d ng ch p nhanh nh khóa. ' m
ch p nh khóa, dùng câu l nh:
UPDATE MONITOR SWITCHES USING LOCK ON
Sau khi b t, thông tin
theo dõi s)
th i i m dùng câu l nh:
c thu th p. ' có
c báo cáo c a khóa vào m t
GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENTID <handle>
Hình 13.9 hi n th ví d
nh ch p nhanh b i ch
ng trình ví d .
Application Lock Snapshot
Snapshot timestamp
00:09:08.672586
= 11-05-2002
Application handle
Application ID
Sequence number
Application name
Authorization ID
Application status
Status change time
Application code page
Locks held
Total wait time (ms)
=
=
=
=
=
=
=
=
=
=
List Of Locks
Lock Name
Lock Attributes
Release Flags
Lock Count
Hold Count
Lock Object Name
Object Type
Tablespace Name
Table Schema
=
=
=
=
=
=
=
=
=
9
*LOCAL.DB2.00B9C5050843
0001
db2bp.exe
ADMINISTRATOR
UOW Waiting
Not Collected
1252
4
0
0x05000700048001000000000052
0x00000000
0x40000000
255
0
98308
Row
TEST4K
ADMINISTRATOR
Hình 13.9 –+ng d ng ch p nhanh khóa
222
Nh p môn H qu n tr c s d li u DB2
Chú ý:
Trong DB2 9.7, m t n* l c
di chuy n c s d li u giám sát t& h th ng giám sát và
công ngh ch p nhanh h ng t i các l nh SQL có th truy xu t vào b nh trong nh các
ch c n ng qu n lí b ng các công vi c và các công c c a IBM Data Studio. Xem tài li u v
DB2
có thêm thông tin.
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,
m t trong s ó có th ph i
i
nh n
c khóa c n thi t. Theo m$c nh, m t ng
d ng s) i vô h n. Th i gian ch
i m t khóa c a ng d ng
c ki m soát b i tham
s c u hình c s d li u LOCKTIMEOUT. Giá tr m$c nh c a tham s này là -1 ( i vô
h n).
Thanh ghi CURRENT LOCK TIMEOUT có th
c dùng
$t th i gian ch khóa cho
m t k t n i ã cho. Theo m$c nh, thanh ghi này
c $t giá tr c a LOCKTIMEOUT. S!
d ng SET LOCK TIMEOUT
thay *i giá tr c a nó. M t khi giá tr c a thanh ghi ã
c
$t cho m t k t n i, nó s) t n t i qua m i giao d ch.
Ví d :
SET LOCK TIMEOUT=WAIT n
13.8 V n
khóa ch t và phát hi n
Khóa ch t (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. 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à các ng d ng khác c n. Trong thi t k
ng d ng, nh ng khóa ch t luôn là m t
v n
chi m nhi u th i gian. Hình 13.11 minh h a cho m t tình hu ng khóa ch t.
Hình 13.11 – K0ch b n cho tình hu ng khóa ch t
Ch
ng 13 - Truy c p
ng th i và khóa
223
Trong hình 13.11, ng i A gi
c b t nho khô và gi s! s) không cho phép ng i khác
dùng cho n khi ông ta có s a. M$t khác, ng i B gi
c s a, và s) không cho phép
ng i khác dùng cho 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.
A DB2 9.7, vi c s! d ng cam k t hi n t i ã làm gi m áng k s xu t hi n c a các b
t c, nh m t ng d ng không c n ph i
i ng d ng khác th khóa ra mà thay vào ó
truy c p vào giá tr cam k t hi n t i.
Mô ph/ng m t tình hu ng b t c trong DB2 theo nh ng b
c sau ây:
1. T t các cam k t hi n t i
db2 update db cfg for sample using cur_commit off
db2stop force
db2start
2. M hai c!a s* so n th o l nh c a DB2 (g i là “CLP1” và “CLP2” t ng ng).
Chúng i di n cho hai ng d ng khác nhau cùng k t n i t i c s d li u.
3. T& CLP1, th c hi n các l nh:
db2 connect to sample
db2 +c update employee set firstnme = 'Mary' where empno = '000050'
' u tiên, chúng ta ang k t n i t i c s d li u có tên là SAMPLE, sau ó th c
hi n l nh c p nh t hàng trên b ng employee v i “empno = 000050”. L a ch n “+c”
trong câu l nh ch+ ra r3ng, chúng ta không mu n c!a s* c a l nh DB2 t
ng
cam k t l nh này. Chúng ta ang c ý làm i u này sao cho chúng ta s) gi
c
khóa.
4. T& CLP2 th c hi n các l nh:
db2 connect to sample
db2 +c update employee set firstnme = 'Tom' where empno = '000030'
A c!a s* CLP2, ó là i di n cho ng d ng th hai, chúng ta c6ng k t n i vào c
s d li u SAMPLE, nh ng l i c p nh t m t hàng khác b ng employee.
5. 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, câu l nh SELECT này
có th s) b treo. Th c s , ó không ph i là treo, mà là i khóa c a hàng này tr
v do CLP2 ã
c gi trong b c 4. T i th i i m này, n u CLOCKTIMEOUT
ã
c
l i v i giá tr ng m nh c a nó là -1, ng d ng CLP1 s)
i mãi mãi.
6. L nh t& CLP2:
db2 +c select firstnme from employee where empno = '000050'
224
Nh p môn H qu n tr c s d li u DB2
B3ng vi c th c hi n l nh SELECT trên, bây gi s b t c ang
c t o ra.
L nh SELECT này c6ng có [email protected] b treo, nh ng th c ra là ang
i khóa CLP1 ang
gi tr v .
Trong k ch b n khóa ch t trên, DB2 s) ki m tra tham s c u hình c s d li u
DLCHKTIME. Tham s này s) $t kho ng th i gian ki m tra xem có x#y ra s b
t c không. Ch1ng h n, giá tr c a tham s này
c $t t i 10 giây, DB2 s) 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, và m t
giao d ch nào s)
c ti p t c x! lý.
N u g$p tình hu ng b t c, c n ph i tái ki m tra nh ng giao d ch hi n h u xem có
th t* ch c l i
c không.
13.9 Truy c)p
M t s th thu t
ng th i và th.c ti5n khóa t t nh t.
truy c p
ng th i và th c ti n khóa t t nh t:
1. ' m b o b n kích ho t cam k t hi n t i (CC), n u ng d ng lô-gíc c a b n cho
phép.
2. Gi nh ng giao d ch càng ng n càng t t. 'i u này có th
t
c b3ng 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+
c) khi ng d ng c a b n cho phép.
3. Ch+ ghi nh t ký thông tin giao d ch khi có yêu c u.
4. L c d li u ã s! d ng nhanh chóng b3ng l nh:
ALTER TABLE ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
Ho$c v i DB2 9.7, s! d ng l nh TRUNCATE
TRUNCATE <table name>
5. Th c hi n nh ng thay *i d li u theo lô/nhóm. Ví d :
DELETE FROM (
SELECT * FROM tedwas.t1 WHERE c1 = … FETCH FIRST 3000 ROWS ONLY)
6. S! d ng nh ng $c tính t
DB2.
ng tranh c a nh ng công c chuy n *i d li u trong
7. '$t tham s LOCKTIMEOUT cho c s d li u (kho ng gi a 30-120 giây). B n
&ng nên cho giá tr ng m nh c a nó là -1. B n có th c6ng s! d ng khóa gi i
h n th i gian (timeout) trên t&ng phiên làm vi c.
8. Không khôi ph c nhi u d li u h n c n thi t. Ch1ng h n, s! d ng m nh
FETCH FIRST n ROWS ONLY trong câu l nh SELECT.
Ch
ng 13 - Truy c p
ng th i và khóa
225
Chú ý:
' có thêm thông tin v th c ti n t t nh t i v i s t ng tranh và khóa, b n xem tài li u
Th c ti n T t nh t trang http://www.ibm.com/developerworks/data/bestpractices/
13.10 Tóm t-t
Trong ch ng này chúng ta xem xét vi c duy trì tính toàn v,n d li u thông qua ki m soát
giao d ch, ng i s! d ng truy c p ng th i và m c
khóa. Các m c t ng tranh khác
nhau t t c
u có v n
là có th nh h ng n vi c truy c p và qu n lý d li u c a
b n nh th nào.
Chúng tôi c6ng nhìn c th vào vai trò c a thi t l p các m c cô l p
i phó v i nh ng
v n
này,và làm th nào m c
cô l p có th
c ch tác
cung c p s linh ho t t i
a yêu c u b i ng d ng c a b n và nhu c u d li u.
Chúng ta c6ng ã xem xét khóa leo thang, ch khóa và ki m soát khóa, cùng v i các
nguyên nhân, phát hi n và x! lý khi c s d li u b b t c.
Cu i cùng, chúng tôi xem xét m t s ý t ng th c hành
th cho nhu c u x! lí t ng tranh c a b n.
nh n
c k t qu t t nh t có
13.11 Bài t)p
Trong bài t p này, b n s) th c hành v i các khái ni m v t ng tranh và khóa mà chúng
ta ã th o lu n trong ch ng này b3ng cách s! d ng DB2 Command Window. Công c
này s! d ng c p
khóa v i s cô l p CS theo m$c nh. Sau khi th c hi n m t câu l nh
SQL, Command Window s) t
ng ra cam k t ( i u này còn
c g i là autocommit).
' i v i m c ích minh ho trong bài t p, chúng tôi s) s! d ng c +c
t t autocommit,
và s! d ng m nh
WITH <các m c cô l p> sau m t s câu l nh SQL
ghi è lên
m c cô l p m$c nh CS.
Ph n 1: Ki(m tra v n
/c th1a và m c cô l)p RR
Th t c:
1. M hai DB2 Command Windows nh
c hi n th trong hình d i ây. Chúng tôi
s) g i c!a s*
u "DB2 Command Window #1", và m t phía d i "DB2
Command Window #2"
226
Nh p môn H qu n tr c s d li u DB2
2. T& DB2 Command Window #1
a ra:
db2 connect to sample
db2 +c select * from staff
'i u này s) tr l i 35 b n ghi
3. T& DB2 Command Window #2
a ra:
db2 connect to sample
db2 +c insert into staff (id,name) values (400, 'test')
4.
T& DB2 Command Window #1
a ra:
db2 +c select * from staff
'i u này v%n ph i tr l i 35 b n ghi
5. T& DB2 Command Window #2
a ra:
db2 commit
6. T& DB2 Command Window #1
a ra:
db2 +c select * from staff
'i u này bây gi tr l i 36 b n ghi!
DB2 Command Window #1 i di n cho m t ng d ng mà s) m ra m t con tr/
ho$c t p h p k t qu (select * from staff) v i 35 b n ghi. Trong cùng m t
giao d ch (b i vì trong c!a s* này chúng tôi không phát ra b t k4 l nh cam k t -
Ch
ng 13 - Truy c p
ng th i và khóa
227
commit - nào), ng d ng m cùng con tr/, và v%n còn nhìn th y 35 b n ghi, ngay
c sau khi các ng d ng trong DB2 Command Window #2 chèn (nh ng không
cam k t) m t b n ghi m i.
Ti p theo, các ng d ng c a DB2 Command Window # 2 cam k t chèn, Và nh
v y l n th ba ng d ng DB2 Command Window #1 s) m con tr/, các t p h p
k t qu tr l i thêm m t hàng n a (m t c th&a) và có
c 36 b n ghi. Ví d
này minh h a các v n
v
c th&a: Trong cùng m t giao d ch, vi c m cùng
con tr/ l i tr v nhi u hàng h n. Chúng ta ang s! d ng m t m c cô l p CS, và
nh
c p tr c ó, CS không ng n c n c th&a.
7. Làm s ch các b n ghi
ã
c n p tr
c khi chúng tôi th! các b
c ti p theo
T& DB2 Command Window #1:
db2 rollback
T& DB2 Command Window #2:
db2 delete from staff where id = 400
db2 select * from staff
'i u này tr l i 35 b n ghi l n n a.
8. Bây gi hãy xem li u m c
cô l p RR có th ng n ch$n v n
T& DB2 Command Window #1
c th&a.
a ra:
db2 connect to sample
db2 +c select * from staff with RR
'i u này tr l i 35 b n ghi
T& DB2 Command Window #2:
db2 connect to sample
db2 +c insert into staff (id,name) values (400, 'test')
L nh này s) treo nh trông
i.
K t& khi m nh
WITH RR là
c b* sung vào l nh SELECT trên DB2
Command Window #1, m c cô l p này ng n ng&a m t INSERT trên m t hàng mà
có th làm thay *i k t qu
u ra. Ví d này minh h a r3ng m c
cô l p c a RR
không ng n ch$n c v n
c th&a.
228
Nh p môn H qu n tr c s d li u DB2
9. Làm s ch tr
c khi ti p t c
n ph n 2 c a bài t p này:
T& DB2 Command Window #2:
Ctrl-C (
d ng ch
ng trình)
'óng c!a s*
T& DB2 Command Window #1:
db2 rollback
'óng c!a s*
Ph n 2: Ki(m tra m c cam k t hi n t2i (CC) và /c không cam k t (UR)
Th t c 1: Phân tích hành vi c a cô l)p CS mà không có cam k t hi n t2i
1. M m t DB2 Command Window và
a ra các l nh sau ây:
db2 connect to sample
db2 select * from staff
Ki m tra các n i dung c a b ng STAFF, $c bi t tìm ki m giá tr c a ID b3ng '
10'
.
T ng ng c t NAME có giá tr Sanders. 'óng c!a s*.
2. Cam k t hi n t i là m$c
trong th c t :
nh cho các c s d li u m i. Xác minh nó ã
cb t
db2 get db cfg for sample
Tìm ki m hàng g n cu i c a k t qu
Currently Committed
u ra là:
(CUR_COMMIT) = ON
N u giá tr là ON, u tiên *i nó thành OFF
c a cô l p CS nh nó s)
c thi t l p tr c
chúng ta có th phân tích hành vi
DB2 9,7:
db2 update db cfg for sample using CUR_COMMIT off
db2 force applications all
Thêm tùy ch n force
m b o r3ng không có các k t n i và vi c c p nh t cho
CUR_COMMIT s) có hi u l c v i k t n i ti p theo.
Ki m tra CUR_COMMIT ã b vô hi u hóa, b3ng thông báo:
Currently Committed
(CUR_COMMIT) = DISABLED
Ch
3. M hai DB2 Command Windows nh
xem m c cô l p CS làm vi c nh th
c p nh t (ghi lên) và m t l nh l a ch
không c n $t "WITH CS" sau các m
ng 13 - Truy c p
ng th i và khóa
229
trong ph n 1, cái n n3m trên cái kia. Hãy
nào khi không cam k t hi n t i, khi có m t
n ( c) cùng m t hàng. L u ý chúng ta
nh
(vì ây là m$c nh).
T& DB2 Command window #1 ( ây là vi c ghi lên):
db2 connect to sample
db2 +c update staff set name = 'Chong' where id = 10
T& DB2 Command window #2 ( ây là vi c
c xu ng):
db2 connect to sample
db2 +c select * from staff
L nh SELECT này b treo vì ph i ch
i khóa X
c gi i phóng, do ng d ng
DB2 Command Window #1 n m. Nh b n th y, hành vi m$c nh c a CS tr c
DB2 9.7 cho phép gi m s t ng tranh.
T& DB2 Command Window #2:
Ctrl-C (
d ng ch
óng c a s
ng trình)
T& DB2 Command Window #1:
db2 rollback
'óng c!a s*
Th t c 2: Phân tích hành vi c a cô l)p CS v i cam k t hi n t2i
1. Thay *i cam k t hi n t i thành ON:
M m t DB2 Command Window và
a ra l nh:
db2 update db cfg for sample using CUR_COMMIT on
db2 force applications all
'óng c!a s .
2. M hai DB2 Command Windows nh trong ph n 1, cái n n3m trên cái kia. R i
a ra l nh sau ây:
T& DB2 Command Window #1:
db2 connect to sample
db2 +c update staff set name = 'Chong' where id = 10
230
Nh p môn H qu n tr c s d li u DB2
T& DB2 Command Window #2:
db2 connect to sample
db2 +c select * from staff
Bây gi l nh SELECT ã làm vi c!. Nó không treo, và giá tr hi n th là Sanders,
ó là giá tr cam k t hi n t i.
T& DB2 Command Window #1:
db2 rollback
'óng c!a s*.
T& DB2 Command Window #2:
db2 rollback
'óng c!a s*.
Th t c 3: Phân tích hành vi c a cô l)p UR
1. M hai DB2 Command Windows nh trong ph n 1, cái n n3m trên cái kia. R i
a ra l nh sau ây:
T& DB2 Command Window #1:
db2 connect to sample
db2 +c update staff set name = 'Chong' where id = 10
T& DB2 Command window #2:
db2 connect to sample
db2 +c select * from staff with UR
SELECT này làm vi c, nh ng l u ý r3ng giá tr hi n th là Chong ó là giá tr không
cam k t.
T& DB2 Command window #1:
db2 rollback
'óng c!a s*
T& DB2 Command window #2:
db2 rollback
'óng c!a s*
PH N III – H C DB2:
PHÁT TRI*N +NG D,NG
14
Ch ng 14 – Gi i thi u vi c phát tri(n
d ng v i DB2
ng
IBM DB2 là ph n m m máy ch d li u m nh m) trong vi c qu n lý d li u quan h c6ng
nh d li u XML, cho phép các nhà qu n tr c s d li u và các nhà phát tri n c s d
li u làm vi c m t cách linh ho t. Cho dù b n s! d ng b t c ngôn ng nào
phát tri n
các ch ng trình c a b n, DB2 u cung c p các trình i u khi n (drivers), các b thích
ng (adapters) và các m r ng (extensions) c n thi t
thao tác v i c s d li u nh
m t ph n trong ch ng trình. H n n a, v i DB2 Express-C, b n có th phát tri n ng
d ng mà không t n b t c m t chi phí nào, không b gi i h n v kích th c c s d li u,
ng th i v%n
c h tr v m$t ngôn ng l p trình m c t ng
ng nh v i các n
b n DB2 khác. Ch+ c n phát tri n ng d ng c a b n m t l n duy nh t v i DB2 Express-C,
b n có th th c thi ng d ng ó trên b t c
n b n DB2 nào mà không c n ch+nh s!a gì
thêm.
Chú ý:
Ph n này ch+ bao g m nh ng gi i thi u t*ng quan v vi c phát tri n ng d ng v i DB2.
Hi n t i, có h n 25 quy n sách tr c tuy n mi n phí ang
c phát tri n theo T sách
C ng ng (Community Book Series), trong ó có m t quy n sách chuyên v phát tri n
ng d ng DB2. M t s sách khác trong t sách bao g m các ch
ngoài DB2 nh Java,
PHP, Ruby on Rails, Python, Perl, Web 2.0, SOA, Eclipse, phát tri n mã ngu n m , i n
toán ám mây và nhi u ch
khác. Các sách khác n a
c p chi ti t n nh ng công
ngh c a IBM nh pureQuery, Data Studio, InfoSphere Data Architect. Nh ng quy n sách
này s)
c gi i thi u b t u t& tháng 10 n m 2009.
14.1 Phát tri(n ng d ng DB2: B c tranh l n
DB2 cho phép các nhà phát tri n c s d li u t n d ng linh ho t các tính n ng phát tri n
phía server nh các th t c l u và các hàm do ng i dùng nh ngh a, trong khi các nhà
phát tri n ng d ng có th phát tri n các ng d ng máy khách v i ngôn ng l p trình mà
h l a ch n. S linh ho t này
c minh h a nh trong hình 14.1.
234
Nh p môn H qu n tr c s d li u DB2
Hình 14.1 - DB2 cho m/i ng
tri(n ng d ng
i: các nhà phát tri(n c s" d# li u và các nhà phát
Trong hình 14.1, hình bên trái th hi n m t máy khách, trên ó, l p trình viên ng d ng s)
phát tri n và ch y ch ng trình c a mình. Trên máy khách này, ngoài h i u hành, IBM
Data Server Client có th
c cài $t d a vào lo i ng d ng ang
c phát tri n. IBM
Data Server Client bao g m các trình i u khi n k t n i c n thi t nh các trình i u khi n
JDBC và các trình i u khi n ODBC/CLI. Các trình i u khi n này c6ng có th
ct iv
c l p t i trang web c a IBM DB2 Express-C,
a ch+: www.ibm.com/db2/express.
B3ng vi c s! d ng các công c l p trình nh IBM Data Studio, InfoSphere Data Architect
(IDA), Rational Software Architect (RSA), Rational Application Developer (RAD),… b n có
th phát tri n ng d ng c a mình b3ng ngôn ng l p trình mong mu n. Th vi n API h
tr các ngôn ng này c6ng n3m trong IBM Data Server Client,
khi b n k t n i t i m t
máy ch DB2, t t c các ch+ th ch ng trình s)
c các API này d ch thành các câu l nh
SQL ho$c XQuery phù h p mà DB2 có th hi u
c. B ng 1.1 cho ta m t mô t ng n
g n v các công c
c
c p trên ây.
Tên công c
Mô t
IBM Data Studio
IBM Data Studio là m t công c d a trên n n
Eclipse, cho phép ng i dùng qu n lý máy ch d
li u c a h và phát tri n các th t c l u (Stored
Procedures), các hàm (Functions) và các d ch v
Web d li u (Data Web services). Trong sách
này, IBM Data Studio ã
c
c p n t&
tr c.
InfoSphere Data Architect (IDA)
IDA là công c mô hình hóa d li u, h tr trong
vi c xây d ng thi t k c s d li u m c logic
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
235
và m c v t lý.
Rational Software Architect (RSA)
RSA là m t công c d a trên n n Eclipse, dùng
trong k2 ngh ph n m m
tr giúp vi c phát
tri n các bi u
UML.
Rational Application Developer (RAD)
RAD là công c phát tri n ng d ng nhanh d a
trên n n Eclipse dành cho các nhà phát tri n ph n
m m.
Visual Studio
Microsoft Visual Studio là m t IDE cho phép b n
phát tri n ng d ng trên n n Windows b3ng vi c
s! d ng công ngh c a Microsoft.
ZendCore
Tr c ây
c g i là ZendCore for IBM. 'ây là
m t IDE mi n phí cho vi c phát tri n các ng
d ng PHP.
B ng 14.1 – Các công c h3 tr! phát tri(n
ng d ng v i DB2
Bên ph i Hình 14.1 minh h a m t máy ch DB2 cùng v i m t c s d li u. Trong c s
d li u này có các th t c l u, các hàm do ng i dùng nh ngh a và các b%y s ki n.
Trong các ph n ti p theo, chúng ta s) mô t chi ti t h n v các i t ng này.
14.2 Phát tri(n ng d ng phía máy ch
Phát tri n ng d ng phía máy ch trong DB2 có ngh a là các i t ng ng d ng
phát tri n và l u tr trên c s d li u DB2. Ph n này s) th o lu n tóm t t v các
t ng ng d ng sau:
c
i
Các th t c l u (Stored Procedures)
Các hàm do ng
i dùng
nh ngh a (User-defined Functions - UDFs)
Các b%y s ki n (Triggers)
14.2.1 Các th t c l u
M t th t c l u (Stored Procedure) là m t i t ng ng d ng c s d li u có ch c
n ng bao óng các câu l nh SQL và lô-gíc nghi p v . Vi c l u tr m t ph n lô-gíc ng
d ng trong c s d li u cho phép c i thi n t c
do l ng l u thông m ng gi a ng
d ng và c s d li u
c gi m thi u. Ngoài ra, các th t c l u cung c p m t v trí trung
tâm
l u tr mã l nh, nên các ng d ng khác có th tái s! d ng các th t c l u này. '
g i m t th t c l u, ta s! d ng l nh CALL. Trong DB2, b n có th phát tri n các th t c l u
b3ng m t s ngôn ng , bao g m SQL PL, Java, C/C++, CLR, OLE, và COBOL. M t ví d
n gi n
t o và g i m t th t c l u SQL PL t& c!a s* l nh DB2 (DB2 Command
Window) ho$c Linux shell nh sau:
db2 create procedure P1 begin end
236
Nh p môn H qu n tr c s d li u DB2
db2 call P1
Trong ví d này, th t c P1 là m t th t c l u r ng, không th c thi hành ng nào c . Ví d
c6ng cho th y s d dàng khi t o m t th t c l u. ' phát tri n các th t c l u v i các
logic ph c t p h n, chúng tôi khuy n khích b n s! d ng IBM Data Studio v i trình s!a l i
tích h p s"n.
14.2.2 Các hàm ng
i dùng 0nh ngh4a
M t hàm do ng i dùng nh ngh a (User-defined Function - UDF) là m t i t ng ng
d ng c s d li u cho phép ng i dùng m r ng ngôn ng SQL v i lô-gíc c a riêng h .
Hàm luôn tr v m t ho$c nhi u giá tr , th ng là k t qu c a lô-gíc nghi p v trong hàm
ó. ' g i m t hàm, ta s! d ng nó trong m t câu l nh SQL, ho$c s! d ng v i hàm
values. Trong DB2, b n có th phát tri n các hàm do ng i dùng nh ngh a này b3ng
m t s ngôn ng , bao g m SQL PL, Java, C/C++, OLE, CLR.
Ví d
n gi n d i ây minh h a cách t o và g i m t hàm ng
ngôn ng SQL PL t& c!a s* l nh DB2 ho$c Linux shell:
i dùng
nh ngh a v i
db2 create function F1() returns integer begin return 1000; end
db2 values F1
Trong ví d , hàm F1 là m t hàm tr v giá tr nguyên 1000. M nh
VALUES có th
c
dùng
g i hàm. C6ng nh trong tr ng h p các th t c l u, chúng tôi khuy n khích b n
t o các hàm v i IBM Data Studio.
14.2.3 Các b9y s. ki n
M t b y s ki n (Trigger) là m t i t ng t
ng th c thi m t thao tác trên m t b ng
ho$c m t khung nhìn. M t thao tác b%y (triggering) x y ra trên i t ng mà b%y s ki n
c nh ngh a s) kích ho t b%y s ki n ó. M t b%y s ki n th ng không
c xem là
m t i t ng ng d ng; do ó, các nhà phát tri n c s d li u th ng không l p trình
các b%y s ki n, mà ó là công vi c c a các nhà qu n tr c s d li u. Vì c n n m t
chút l p trình nên chúng tôi
a b%y s ki n vào ph n này. D i ây là m t ví d :
create trigger myvalidate no cascade before insert on T1
referencing NEW as N
for each row
begin atomic
set (N.myxmlcol) = XMLVALIDATE(N.myxmlcol
according to xmlschema id myxmlschema);
end
Trong ví d này, b%y s ki n
c kích ho t tr c m t thao tác INSERT trên b ng T1. B%y
s ki n này s) th c thi thao tác thêm giá tr ,
ây là m t v n b n XML, nh ng s) g i hàm
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
XMLVALIDATE
ki m tra v n b n XML này v i m t l c
pureXML s) trình bày thêm v XML và các l c
XML.
cho tr
c. Ch
237
ng 15, DB2
14.3 Phát tri(n ng d ng phía máy khách
Khi phát tri n ng d ng phía máy khách, các nhà phát tri n ng d ng l p trình ch ng
trình c a h trên máy khách, sau ó k t n i và truy nh p c s d li u DB2 s! d ng các
giao di n l p trình ng d ng (APIs) c a DB2. Trong ph n này chúng ta s) th o lu n v :
SQL nhúng
SQL t nh và SQL
ng
CLI và ODBC
JDBC, SQLJ và pureQuery
OLE DB
ADO.NET
PHP
Ruby on Rails
Perl
Python
14.3.1 SQL nhúng
Các ng d ng SQL nhúng là các ng d ng mà SQL
c nhúng vào m t ngôn ng ch
nh C, C++, ho$c COBOL. Bng d ng SQL nhúng có th ch a SQL t nh ho$c ng (s)
c mô t trong ph n ti p theo). Hình 14.2 cho th y cách xây d ng m t ng d ng SQL
238
Nh p môn H qu n tr c s d li u DB2
nhúng.
Hình 14.2 – Xây d.ng các
ng d ng SQL nhúng
Trong hình trên, ch ng trình C hello.sqc ch a SQL nhúng. API SQL nhúng dùng cho
ngôn ng C s! d ng EXEC SQL (
c khoanh tròn trong hình 14.2)
cho phép ti n trình
ti n biên d ch phân bi t các câu l nh SQL nhúng v i mã C th c s . Chú ý th y r3ng: trong
hello.sqc, m t s bi n có d u hai ch m i kèm 3ng tr c, nh :dbname,:userID và
:psw. Chúng
c g i là các bi n ch (host variables). Bi n ch là các bi n c a ngôn ng
ch
c tham chi u trong các câu l nh SQL nhúng.
S! d ng l nh precompile (còn
c g i là l nh prep) v i tùy ch n bindfile s) t o ra
hai t p tin, t p tin k t n i hello.bnd ch+ ch a các câu l nh SQL và t p tin hello.c ch+
ch a mã C. T p tin k t n i s)
c biên d ch b3ng l nh bind
t o ra m t gói (package)
c l u trong c s d li u. Gói bao g m SQL ã biên d ch / có th th c thi
c và
ng d%n truy nh p mà DB2 s) theo ó
nh n d li u. ' s! d ng l nh bind c n ph i
có m t k t n i t i c s d li u. A phía bên d i hình, t p tin hello.c
c biên d ch và
liên k t nh m i ch ng trình C thông th ng. T p tin th c thi k t qu hello.exe ph i
phù h p v i gói
c l u tr trong c s d li u
có th th c thi thành công.
14.3.2 SQL t4nh và SQL
ng
Câu l nh SQL t nh là câu l nh SQL mà c u trúc c a nó ã
th i i m ti n biên d ch. Ví d :
c nh n bi t
y
tr
c
SELECT lastname, salary FROM employee
Trong ví d này, tên c a các c t (lastname, salary) và b ng (employee) ã
c xác
nh y
tr c th i i m ti n biên d ch. Ví d sau c6ng là m t câu l nh SQL t nh:
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
239
SELECT lastname, salary FROM employee WHERE firstnme = :fname
Trong ví d th hai, bi n ch :fname
c s! d ng nh m t ph n c a câu l nh SQL
nhúng. M$c dù tính cho n th i i m ch y v%n không bi t giá tr c a bi n ch , nh ng
ch ng trình có th xác nh
c ki u d li u c a nó, và t t c các i t ng khác (nh
tên c t, tên b ng) c6ng
c nh n bi t hoàn toàn tr c th i h n. DB2
c l ng cho
nh ng bi n ch này
tính toán tr c k ho ch truy nh p; vì v y, tr ng h p này v%n
c xem là SQL t nh.
Quá trình ti n biên d ch, k t n i và biên d ch t nh các câu l nh SQL
c th c thi tr c khi
b n ch y ng d ng. SQL t nh
c s! d ng t t nh t trên các c s d li u mà các th ng
kê không thay *i quá nhi u. Chúng ta hãy xem xét m t ví d n a:
SELECT ?, ? FROM ?
Trong ví d này, th i i m ch y, tên c a các c t và b ng
c tham chi u trong câu
l nh ch a
c nh n bi t y . Vì v y, k ho ch truy nh p ch+
c tính toán vào th i
i m ch y và s! d ng các th ng kê có s"n vào th i i m ó. Ki u câu l nh này
cg i
là câu l nh SQL
ng.
M t s th vi n l p trình API nh JDBC và ODBC, luôn s! d ng SQL ng, cho dù câu
l nh SQL có bao hàm các i t ng ã
c nh n bi t hay ch a. L y ví d , câu l nh
SELECT lastname, salary FROM employee có t t c các c t và tên b ng ã
c
nh n bi t tr c, nh ng qua JDBC ho$c ODBC thì không c n ti n hành ti n biên d ch. T t
c các k ho ch truy nh p u
c tính toán khi th c thi.
Thông th
ng, hai câu l nh sau
c s! d ng
x! lý câu l nh SQL theo ki u
ng:
PREPARE: Câu l nh này chu#n b ho$c biên d ch câu l nh SQL b3ng vi c tính toán
k ho ch truy nh p
truy v n d li u.
EXECUTE: Câu l nh này th c thi SQL
Ho$c b n có th th c thi PREPARE và EXECUTE trong cùng m t câu l nh
IMMEDIATELY.
n: EXECUTE
Li t kê 14.1 là ví d v m t câu l nh C nhúng SQL
sau ó th c thi nh sau:
c chu#n b và
ng. Câu l nh này
strcpy(hVStmtDyn, “SELECT name FROM emp WHERE dept = ?");
PREPARE StmtDyn FROM :hVStmtDyn;
EXECUTE StmtDyn USING 1;
EXECUTE StmtDyn USING 2;
Li t kê 14.1 – M t câu l nh C nhúng SQL
ng, s
d ng PREPARE và EXECUTE
Li t kê 14.2 d i ây cho ta th y m t ví d t
l nh EXECUTE IMMEDIATELY.
ng t nh li t kê 14.1, nh ng s! d ng câu
EXECUTE IMMEDIATELY SELECT name from EMP where dept = 1
EXECUTE IMMEDIATELY SELECT name from EMP where dept = 2
240
Nh p môn H qu n tr c s d li u DB2
Li t kê 14.2 – M t câu l nh C nhúng SQL
ng, s
d ng EXECUTE IMMEDIATELY
V i nhi u ngôn ng l p trình ng nh PHP hay Ruby on Rails, trong ó SQL
thi ng, các l p trình viên có xu h ng vi t cùng m t câu l nh SQL v i các tr
khác nhau nh sau:
c th c
ng giá tr
SELECT lastname, salary FROM employee where firstnme = 'Raul'
SELECT lastname, salary FROM employee where firstnme = 'Jin'
...
Trong ví d này, các câu l nh là ng nh t, ngo i tr& giá tr c a c t firstnme. DB2 xem
hai câu l nh SQL ng này là khác bi t nhau, và vì v y, th i gian ch y, nó s) chu#n b
và sau ó th c thi m i câu l nh m t cách c l p. T*ng chi phí cho s chu#n b m t câu
l nh l$p l i m t s l n có th gây ra s không t i u v hi u n ng ho t ng c a h th ng,
vì v y, tr c phiên b n 9.7, DB2
xu t vi t l i các câu l nh nh sau:
SELECT lastname, salary FROM employee where firstnme = ?
D u ch m h/i (?) trong câu l nh này
c g i là m t ánh d u tham s (parameter
marker). Vi c s! d ng các ánh d u tham s này s) giúp ch ng trình có th chu#n b
câu l nh duy nh t m t l n, và sau ó th c thi các l nh EXECUTE v i các giá tr khác nhau
cho ánh d u tham s ó.
Trong phiên b n 9.7, DB2 gi i thi u m t công ngh g i là b g p l nh (statement
concentrator), trong ó, t t c các câu l nh gi ng nhau, tr& các tr ng giá tr , s)
ct
ng thu g n l i thành m t câu l nh
n v i các ánh d u tham s , và sau ó các câu
l nh EXECUTE s)
c th c thi v i các giá tr khác nhau. B g p l nh c6ng có kh n ng
thông minh trong vi c quy t nh xem khi nào thì nên ho$c không nên g p các câu l nh l i
v i nhau; ví d , khi b n ch ý thêm vào m t s câu l nh
tác ng n b t i u DB2.
V hi u n ng, SQL t nh th ng cho hi u n ng t t h n so v i SQL ng, vì k ho ch truy
nh p trong SQL t nh
c ti n hành vào th i i m ti n biên d ch ch không ph i th i i m
th c thi. Tuy nhiên, trong các môi tr ng có nhi u thao tác nh INSERT hay DELETE, các
th ng kê
c tính toán th i i m ti n biên d ch có th không
c c p nh t, và do ó,
k ho ch truy nh p c a SQL t nh có th không t i u. Trong tr ng h p này, SQL ng có
th là l a ch n t t h n, v i vi c th c thi th ng xuyên câu l nh RUNSTATS
thu th p
các th ng kê hi n t i.
Chú ý:
Nhi u ng i dùng ngh r3ng SQL nhúng ch+ là t nh. Trong th c t , câu l nh này có th có
c hai lo i t nh và ng.
14.3.3 CLI và ODBC
Giao di n m c g i - CLI (Call Level Interface) ban u
c phát tri n b i công ty
X/Open và SQL Access Group. Nó là m t $c t cho giao di n SQL có th g i (callable
SQL interface) v i m c ích phát tri n các ng d ng C/C++ kh chuy n mà không c n
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
241
quan tâm n nhà cung c p h qu n tr c s d li u quan h (Relational Database
Management System - RDBMS). D a trên b n th o s b c a X/Open CLI, Microsoft ã
phát tri n K t n i c s d li u m - ODBC (Open Database Connectivity) và sau ó,
chu#n qu c t ISO CLI ã ch p nh n g n nh toàn b $c t X/Open CLI. DB2 CLI d a
trên hai y u t : ODBC và chu#n qu c t dành cho SQL/CLI nh trong Hình 14.3.
Hình 14.3 - DB2 CLI d.a trên ODBC và chu n qu c t ISO CLI
DB2 CLI thích ng v i chu#n ODBC 3.51, v i ngh a cung c p h u h t các tính n ng
c
tìm th y trong ODBC 3.51, và có th
c s! d ng nh m t trình i u khi n ODBC khi
c n p b i trình qu n lý trình i u khi n ODBC (ODBC Driver Manager). Hình 14.4 có
th giúp b n hình dung ra nh ng h tr c a DB2 CLI dành cho ODBC.
Hình 14.4 - DB2 CLI thích
ng v i chu n ODBC 3.51
CLI/ODBC có các $c i m sau:
242
Nh p môn H qu n tr c s d li u DB2
Mã ngu n có th d dàng chuy n *i qua l i gi a m t s bên cung c p h qu n tr
c s d li u quan h .
Khác v i SQL nhúng,
Th c thi SQL
ây không c n ph i có b ti n biên d ch hay các bi n ch
ng
R t ph* bi n
' ch y m t ng d ng CLI/ODBC, t t c nh ng gì b n c n là m t trình i u khi n DB2
CLI. Trình i u khi n này có th
c cài $t t& m t trong các ngu n sau (b n có th t i
v và s! d ng mi n phí t i a ch+ www.ibm.com/db2/express):
IBM Data Server Client
IBM Data Server Runtime Client
IBM Data Server Driver dành cho ODBC và CLI
' phát tri n m t ng d ng CLI/ODBC, b n c n ph i có trình i u khi n DB2 CLI và các
th vi n thích h p. Nh ng thành ph n này có th tìm th y trên IBM Data Server Client.
Chúng ta hãy xem qua ví d sau
có th hi u rõ h n v cách cài $t trình i u khi n
DB2 CLI cho các ng d ng c a b n. Hình 14.5 mô t ba máy tính khác nhau, m t
Indonesia, m t Brazil và m t Canada.
Hình 14.5 – Ví d v DB2 CLI/ODBC
Minh h a trên cho th y hai tr
ng h p:
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
243
Trong hình bên trái, máy tính Indonesia ang ch y m t ng d ng ODBC có th làm vi c
v i b t kì h qu n tr c s d li u quan h nào nh Oracle, Microsoft SQL Server hay
DB2. Trình qu n lý trình i u khi n ODBC s) n p trình i u khi n ODBC thích h p d a
vào c s d li u ang
c truy nh p. Trong tr ng h p ng d ng c n truy nh p n
m t c s d li u DB2 Canada, thì quá trình k t n i c n ph i thông qua m t máy khách
DB2 có các thành ph n k t n i t& xa.
Trong hình bên ph i, m t ng d ng CLI ang ch y trên m t máy tính Brazil. 'ó là m t
ng d ng CLI b i vì nó có th ang s! d ng m t s ch c n ng riêng không có s"n trong
ODBC, và vì nó ch+ làm vi c v i m t c s d li u DB2. Bng d ng CLI này s) i qua m t
trình i u khi n DB2 CLI. Bng d ng có th k t n i n c s d li u DB2 n i b $t
Brazil. Khi c n k t n i n c s d li u t& xa Canada, nó s) thông qua m t máy khách
DB2.
'i m cu i cùng
c
c p n trong ph n này là s so sách gi a m t ng d ng
CLI/ODBC v i m t ng d ng C nhúng SQL ng. Hình 14.6 minh h a cho s so sánh này.
Hình 14.6 - +ng d ng CLI/ODBC và ng d ng vi t b<ng C nhúng v i SQL
ng
Nh trong Hình 14.6, chúng ta có th th y s khác bi t duy nh t gi a ng d ng CLI/ODBC
so v i ng d ng C nhúng SQL ng là: v i CLI/ODBC, mã ngu n c a b n có th kh
chuy n và có th d dàng truy nh p các h qu n tr c s d li u quan h khác b3ng cách
thay *i chu i k t n i, trong khi ó, v i phiên b n C nhúng SQL ng, b n có th ph i l p
trình các ph n t! riêng cho DB2. Ngoài ra, chúng ta còn có th th y s khác bi t trong
cách th c g i các hàm khác nhau cho các l nh PREPARE và EXECUTE.
244
Nh p môn H qu n tr c s d li u DB2
14.3.4 JDBC, SQLJ và pureQuery
Th vi n k t n i c s d li u Java - JDBC (Java Database Connectivity) là m t API
c thi t k dành cho ngôn ng l p trình Java, h tr vi c chu#n hóa ph ng th c làm
vi c và quá trình truy nh p c s d li u. Trong JDBC, mã ngu n có tính kh chuy n d
dàng gi a m t s h qu n tr c s d li u quan h . Nh ng thay *i n mã ngu n
th ng ch+ là thông tin v trình i u khi n JDBC nào s)
c n p, và thông tin v chu i
k t n i (connection string). JDBC ch+ s! d ng SQL ng, và hi n nay ã r t ph* bi n.
SQLJ là chu#n cho vi c nhúng SQL vào các ch ng trình Java. SQLJ
c s! d ng
chính v i SQL t nh, m$c dù có th ho t ng cùng v i JDBC nh trong Hình 14.7. M$c dù
các ch ng trình SQLJ th ng có tính óng h n các ch ng trình JDBC và cho hi u
n ng c6ng t t h n, nh ng hi n nay chúng v%n ch a
c s! d ng r ng rãi. Các ch ng
trình SQLJ ph i
c ch y qua m t b ti n x! lý (b d ch SQLJ) tr c khi
c biên d ch.
Hình 14.7 - M i quan h gi#a các
ng d ng SQLJ và các ng d ng JDBC
Trong Hình 14.7, máy khách DB2 có th c n ph i có ho$c không, ph thu c vào lo i trình
i u khi n JDBC
c s! d ng, chúng ta s) th o lu n v i u này sau.
pureQuery là m t ch ng trình nh/ d a trên n n t ng Eclipse c a IBM, có ch c n ng
qu n lý d li u quan h nh các i t ng. Ra
i t& n m 2007, pureQuery có th t
ng sinh mã
thi t l p m t ánh x
i t ng - quan h (object-relational mapping ORM) gi a mã h ng i t ng c a b n v i các i t ng c a c s d li u quan h .
B n b t u b3ng vi c t o m t d án Java v i Optim Development Studio (ODS), k t n i
t i m t c s d li u DB2, và sau ó ODS s) phát hi n ra t t c các i t ng c s d
li u. Thông qua giao di n ng i dùng c a ODS, b n có th l y m t b ng, sau ó l a ch n
sinh mã pureQuery, c th s) bi n *i các th c th b ng quan h c s t ng ng
sang các i t ng Java. Mã
c sinh ra
t o các câu l nh SQL thích h p và các i
t ng Java cha bao óng các câu l nh SQL này. Các i t ng Java và các câu l nh SQL
c sinh ra có th l i
c i u ch+nh thêm. V i pureQuery, trong th i gian ch y, b n có
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
th quy t nh vi c l a ch n ch y các câu l nh SQL c a b n
PureQuery h tr c Java và .NET.
ch
t nh hay
245
ng.
14.3.4.1 Các trình i u khi(n JDBC và SQLJ
Có m t s lo i trình i u khi n JDBC, nh : lo i 1, lo i 2, lo i 3, lo i 4; nh ng thông th ng
ng i ta không s! d ng lo i 1 và lo i 3, và DB2 c6ng không h tr các lo i này nh ng
phiên b n sau n a. V i lo i 2, có 2 trình i u khi n mà chúng ta s) mô t s l c sau ây,
nh ng m t trong s ó c6ng không
c ti p t c h tr v sau.
Lo i 2 và lo i 4
c h tr v i DB2 c th nh li t kê trong B ng 14.2. Khi s! d ng các
trình i u khi n lo i 2, c n cài $t m t máy khách DB2
trình i u khi n s! d ng khi thi t
l p quá trình truy n thông v i c s d li u. Lo i 4 là m t máy khách Java thu n, v y nên
không c n m t máy khách DB2 n a, nh ng trình i u khi n ph i
c cài $t trên máy có
ch y ng d ng JDBC.
Lo2i trình
i u khi(n
Yêu c u phiên b n
Java SDK nhH nh t
Tên trình i u khi(n
Gói
H3 tr!
Lo i 2
Trình i u khi n DB2
JDBC Lo i 2 dành
cho Linux, UNIX và
Windows (Không
!c ti p t c h3 tr!
" các phiên b n
sau)
db2java.zip
JDBC 1.2 và
JDBC 2.0
1.4.2
Lo i 2 và
Lo i 4
Trình i u khi n IBM
Data Server dành cho
JDBC và SQLJ
db2jcc.jar
và sqlj.zip
JDBC 3.0
compliant
1.4.2
db2jcc4.jar
và sqlj4.zip
JDBC 4.0 tr
xu ng
6
B ng 14.2 - Các trình i u khi(n DB2 JDBC và SQLJ
Nh
ã
c p n t& tr c, và nh trong B ng 14.2, có 2 trình i u khi n DB2 JDBC lo i
2 khác nhau; tuy nhiên, trình i u khi n DB2 JDBC lo i 2 dành cho Linux, UNIX và
Windows, v i tên gói là db2java.zip không
c ti p t c h tr
các phiên b n sau n a.
Khi b n cài $t m t máy ch DB2, m t máy khách DB2 ho$c m t trình i u khi n IBM Data
Server dành cho JDBC và SQLJ, các gói db2jcc.jar và sqlj.zip phù h p v i JDBC 3.0
c
t
ng b* sung vào bi n
ng d%n n các l p c a b n (classpath).
14.3.5 OLE DB
C s d li u liên k t và nhúng
i t ng - OLE DB (Object Linking and Embedding,
Database) là t p các giao di n cho phép truy nh p n d li u l u tr trong nhi u ngu n
246
Nh p môn H qu n tr c s d li u DB2
khác nhau. Nó
c thi t k nh m t s thay th cho ODBC, v i m r ng h tr cho
nhi u ngu n d li u khác nhau h n n a, bao g m các c s d li u không quan h , nh
các c s d li u h ng i t ng và các b ng tính. OLE DB
c cài $t s! d ng công
ngh Mô hình i t ng thành ph n - COM (Component Object Model).
Ng i s! d ng OLE DB có th truy nh p c s d li u DB2 v i b cung c p OLE DB c a
IBM dành cho DB2 (IBM OLE DB Provider for DB2). B cung c p này có nh ng $c i m
sau:
Tên b cung c p: IBMDADB2
H tr m c 0 c a $c t k2 thu t b cung c p OLE DB, và m t s giao di n
1 b* sung thêm
m c
Phù h p v i phiên b n 2.7 tr lên c a $c t k2 thu t Microsoft OLE DB
Yêu c u cài $t Microsoft Data Access Components (MDAC) trên IBM Data Server
Client
N u IBMDADB2 không
c ch+ nh rõ ràng, thì m$c nh, trình i u khi n OLE
DB c a Microsoft (MSDASQL) s)
c s! d ng. MSDASQL cho phép ng i dùng
s! d ng OLE DB
truy nh p các ngu n d li u không thu c Microsoft SQL
Server b3ng vi c s! d ng trình i u khi n ODBC, nh ng không m b o
c y
ch c n ng c a trình i u khi n OLE DB.
14.3.6 ADO.NET
.NET Framework là m t s thay th cho công ngh COM (Component Object Model) c a
Mocrosoft. S! d ng .NET Framework, b n có th l p trình các ng d ng .NET v i h n 40
ngôn ng l p trình khác nhau; ph* bi n nh t trong ó, có th k
n nh C# và Visual
Basic .NET.
Th vi n l p .NET Framework cung c p các kh i h p nh t cho phép b n xây d ng các
ng d ng .NET. Th vi n l p này không quan tâm n ngôn ng l p trình, cung c p các
giao di n
v n hành h th ng và các d ch v
ng d ng. Bng d ng .NET c a b n (không
xét n ngôn ng )
c biên d ch sang ngôn ng trung gian (Intermediate Language - IL),
là m t d ng bytecode.
B th c thi ngôn ng chung - CLR (Common Language Runtime) là trung tâm c a .NET
Framework, có ch c n ng biên d ch mã ngôn ng trung gian khi c n thi t, và th c thi nó.
Khi th c thi mã trung gian ã
c biên d ch, CLR s) kích ho t các i t ng, ki m tra
m c
b o m t, phân ph i b nh , th c thi mã và d n d,p b nh sau khi th c thi xong.
T ng t v i cách th c làm vi c c a Java, trong Java, m t ch ng trình có th ch y trên
nhi u n n t ng khác nhau mà ch+ c n m t chút ho$c không ph i ch+nh s!a gì c , ó chính
là: “M t ngôn ng , a n n t ng”. Trong .NET, m t ch ng trình
c vi t b i b t c ngôn
ng nào trong 40 ngôn ng
c h tr có th ch y trên m t n n t ng, là Windows, v i
m t chút ho$c không ph i ch+nh s!a gì c , ó l i là: “'a ngôn ng , m t n n t ng”.
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
247
ADO.NET là cách h tr truy nh p d li u
c cung c p b i .NET Framework. ADO.NET
h tr c nh ng truy nh p ã k t n i và ã ng t k t n i. Thành ph n khóa trong truy nh p
d li u ã ng t k t n i trong ADO.NET chính là l p DataSet, nh ng th c th c a nó ho t
ng nh m t b
m c s d li u n3m bên trong b nh c a ng d ng.
V i c 2 cách truy nh p k t n i và ng t k t n i, các ng d ng c a b n u s! d ng c s
d li u thông qua m t b cung c p d li u (data provider). Hi n t i ã có khá nhi u lo i
s n ph#m c s d li u khác nhau có ch a nh ng b cung c p d li u .NET riêng c a
chúng, trong ó có DB2 dành cho Windows.
M t b cung c p d li u .NET có xây d ng các l p c b n sau ây:
Connection: thi t l p và qu n lý m t k t n i t i c s d li u.
Command: th c thi m t câu l nh SQL t i c s d li u.
DataReader:
c và tr v k t qu l y d li u t& m t c s d li u.
DataAdapter: liên k t m t th c th DataSet t i m t c s d li u. Thông qua m t
th c th DataAdapter, DataSet có th
c và ghi d li u t& các b ng trong c s
d li u.
Có 3 b cung c p d li u có th làm vi c v i DB2 nh
c ch+ ra trong B ng 14.3
B cung c p d# li u
ODBC .NET Data provider
(không ki n ngh dùng)
c i(m
T o các l i g i ODBC n ngu n d li u DB2 s!
d ng trình i u khi n DB2 CLI.
Có h tr các t& khóa và nh ng h n ch gi ng nh
v i trình i u khi n DB2 CLI.
Có th
c s! d ng v i .NET Framework phiên b n
1.1, 2.0 ho$c 3.0.
OLE DB .NET Data provider
(không ki n ngh dùng)
S! d ng trình i u khi n IBM DB2 OLE DB
(IBMDADB2).
Có h tr các t& khóa và nh ng h n ch gi ng nh
v i trình i u khi n DB2 OLE DB.
Ch+ có th
c s! d ng v i .NET Framework phiên
b n 1.1, 2.0 ho$c 3.0.
DB2 .NET Data provider
M r ng DB2
h tr cho giao di n ADO.NET.
(ki n ngh s! d ng)
Cài $t t p các l p và các ph
ADO.NET chu#n.
' c nh ngh a d
IBM.DATA.DB2.
ng th c nh c a
i không gian tên
Có th l y b3ng cách t i v m t trong các thành ph n
248
Nh p môn H qu n tr c s d li u DB2
sau:
- Trình i u khi n Data Server dành cho ODBC,
CLI, và .NET
- IBM Data Server Runtime Client
- DB2 Data Server
B ng 14.3 - Các c cung c p d# li u ADO.NET
14.3.7 PHP
B ti n x lý siêu v n b n - PHP (PHP Hypertext Preprocessor) là m t ngu n m , là
ngôn ng l p trình k ch b n c l p v i n n,
c thi t k cho vi c phát tri n các ng
d ng Web. PHP có th
c nhúng vào HTML, và th ng ch y trên m t máy ch Web,
l y u vào là mã PHP, và t o các trang Web nh là u ra c a nó.
PHP là m t ngôn ng h ng module. B n có th s! d ng các m r ng
tùy ch+nh các
ch c n ng s"n có. Các m r ng PHP ph* bi n nh t là các m r ng
c s! d ng
truy
nh p c s d li u. IBM h tr truy nh p c s d li u DB2 thông qua 2 m r ng sau:
ibm_db2: M r ng ibm_db2 cung c p m t giao di n l p trình ng d ng h ng th
t c, có ch c n ng t o, c, c p nh t và ghi các thao tác i v i c s d li u bên
c nh vi c m r ng truy nh p n các siêu d li u c s d li u. Nó có th
c
biên d ch v i PHP 4 ho$c PHP 5.
pdo_ibm: pdo_ibm là m t trình i u khi n dành cho m r ng các i t ng d li u
PHP - PDO (PHP Data Objects extension), cho phép truy nh p c s d li u DB2
thông qua m t giao di n c s d li u h ng i t ng chu#n
c gi i thi u
trong PHP 5.1. Nó có th
c biên d ch tr c ti p v i các th vi n DB2.
Các m r ng và các trình i u khi n PHP
c cung c p mi n phí
a ch+ dành riêng
cho PECL http://pecl.php.net/, hay ngay trong IBM Data Server Client. C ibm_db2 và
pdo_ibm u d a trên n n t ng IBM DB2 CLI Layer.
IBM c6ng h p tác v i công ty Zend Technologies Inc trong vi c h tr ZendCore, m t môi
tr ng mi n phí v i b công c ti n ích s"n sàng cho vi c phát tri n PHP và DB2 ExpressC. Gói ZendCore bao g m các th vi n PHP, máy ch Web Apache và DB2 Express-C.
B n có th t i ZendCore
a ch+ http://www.ibm.com/software/data/info/zendcore.
14.3.8 Ruby on Rails
Ruby là m t ngôn ng h ng i t ng mã ngu n m . Rails là m t ki n trúc Web
c
t o ra b i Ruby. Ruby on Rails (RoR) là m t ph ng th c lý t ng cho vi c phát tri n các
ng d ng Web d a trên c s d li u. Công ngh m i này d a trên ki n trúc Mô hình Hi n th - 'i u khi n MVC (Model - View - Controller) và nguyên lý phát tri n ph n m m
nhanh.
Rails không yêu c u nh d ng t p tin $c bi t nào c6ng nh không yêu c u các môi
tr ng phát tri n tích h p (IDE); b n hoàn toàn có th b t u v i m t trình so n th o v n
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
249
b n thu n túy. Tuy nhiên, nhi u IDE khác nhau c6ng có h tr s"n Rails, nh RadRails,
m t môi tr ng Rails trên Eclipse. ' bi t thêm chi ti t v RadRails, b n có th tham kh o
t i a ch+ http://www.radrails.org.
DB2 h tr Ruby t& phiên b n 1.8.5 tr lên, và h tr Ruby on Rails t& phiên b n 1.2.1 tr
lên. Gói IBM_DB bao g m trình i u khi n IBM_DB Ruby và b thích ng Rails cho phép
b n làm vi c v i DB2 và d a trên n n CLI Layer. Gói này ph i
c cài $t kèm theo IBM
Data Server Client. ' cài $t trình i u khi n và b thích ng IBM_DB, b n có th s!
d ng gói Ruby ho$c m t plug-in cho Rails.
14.3.9 Perl
Perl là m t ngôn ng l p trình thông d ch ph* bi n, s"n có mi n phí trên nhi u h i u
hành. Perl s! d ng SQL ng, và nó là lý t ng i v i các ng d ng nguyên m%u.
Perl cung c p m t module chu#n, g i là module Giao di n C s d li u - DBI (Database
Interface)
truy nh p các c s d li u khác nhau, s"n có
a ch+: http://www.perl.com.
Module này làm vi c v i các trình i u khi n t& các ngu n c s d li u khác nhau. Trong
tr ng h p DB2 s) là trình i u khi n DBD::DB2, b n có th t i v t& a ch+:
http://www.ibm.com/software/data/db2/perl.
14.3.10 Python
Python là m t ngôn ng
ng th ng
c s! d ng cho k ch b n. Nó nh n m nh vào tính
d
c mã và h tr nhi u lo i m%u l p trình khác nhau, bao g m l p trình h ng th t c,
l p trình h ng i t ng, l p trình h ng khía c nh, siêu l p trình và l p trình h ng
ch c n ng. Python là lý t ng cho m ng phát tri n ng d ng nhanh.
B ng 14.4 là các m r ng s"n có cho vi c truy nh p các c s d li u DB2 t& m t ng
d ng Python.
M" r ng
ibm_db
Mô t
'
c
nh ngh a b i IBM
Cung c p nh ng h tr t t nh t cho các $c tính cao
c p
Cho phép b n g i các truy v n SQL, g i các th t c l u,
s! d ng pureXML và truy nh p thông tin siêu d li u.
ibm_db_dbi
Tuân theo $c t API Python Database phiên b n 2.0.
Không cung c p m t s
ibm_db h tr .
$c tính cao c p mà API
N u b n có m t ng d ng v i m t trình i u khi n h
tr $c t API Python Database phiên b n 2.0, b n có
th d dàng chuy n sang ibm_db. Các API ibm_db và
ibm_db_dbi
c óng gói kèm v i nhau.
250
Nh p môn H qu n tr c s d li u DB2
ibm_db_sa
H tr SQLAlchemy, m t b công c mã ngu n m ph*
bi n Python SQL và ánh x
i t ng - quan h .
B ng 14.4 - Các m" r ng c a Python - IBM Data Server
14.4 XML và DB2 pureXML
Ngôn ng
ánh d u m r ng - XML (Extensible Markup Language) là công ngh
dành cho các công c và k2 thu t Web 2.0, c6ng nh dành cho Ki n trúc nh h
d ch v - SOA (Service Oriented Architecture). IBM s m nh n ra t m quan tr ng c
và ã chú tr ng u t
a công ngh pureXML ng d ng vào DB2 nh3m h tr
h n quá trình l u tr các tài li u XML.
c b n
ng
a XML
t t
' c gi i thi u vào n m 2006, DB2 9 là m t máy ch d li u lai: nó cho phép l u tr
thu n d li u quan h c6ng nh d li u phân c p. So v i các phiên b n tr c ây c a
DB2 và các máy ch d li u khác trên th tr ng có th l u tr các tài li u XML, ph ng
pháp l u tr
c s! d ng trong DB2 9 ã
c c i thi n v hi u n ng và m c
linh
ho t. V i công ngh pureXML trong DB2 9, các tài li u XML
c l u tr bên trong theo
ph ng pháp phân tích phân c p, d i d ng cây; theo ó, quá trình làm vi c v i các tài
li u XML
c c i thi n khá nhi u. Các phiên b n phát hành m i h n c a DB2 nh DB2
9.5 và DB2 9.7 ã có nh ng c i thi n h n n a trong vi c h tr cho pureXML. Ch ng 15,
DB2 pureXML s) t p trung mô t chi ti t v ch
này.
14.5 D0ch v Web
' nh ngh a m t cách n gi n, có th hi u m t d ch v Web nh m t hàm có th tri u g i
thông qua m ng mà không c n bi t v ngôn ng l p trình
c s! d ng
phát tri n nó,
không c n bi t v h i u hành mà hàm s) th c thi trên ó, c6ng nh v trí th c thi. Các
d ch v Web cho phép m t ng d ng trao *i d li u v i ng d ng khác thông qua giao
th c chu#n công nghi p m r ng (extensible industry standard protocols) d a trên n n
t ng XML. Minh h a nh trong Hình 14.8.
Ch
Hình 14.8 – Cách th c ho2t
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
251
ng c a d0ch v Web
Trong hình trên, phía bên trái bi u di n m t h th ng hàng không gi l p Air Atlantis, s!
d ng DB2 trên n n Linux
l u tr thông tin v các chuy n bay d i d ng XML trong c
s d li u DB2. Phía bên ph i là m t h th ng hàng không gi l p khác, Air Discovery, s!
d ng SQL Server ch y trên n n Windows. Bây gi , m t h p ng h p tác s)
c ký k t
gi a Air Atlantis và Air Discovery, hai h th ng này s) chia [email protected] l ch bay và thông tin v giá
c
ph i h p các chuy n bay. Vi c chia [email protected] d li u gi a hai h th ng có th s) g$p khó
kh n do h dùng hai h i u hành khác nhau (Linux, Windows), và hai máy ch d li u
khác nhau (DB2, SQL Server). Khi Air Atlantis thay *i l ch trình c a chuy n bay t&
Toronto i B c Kinh, làm th nào
phía Air Discovery có th t
ng i u ch+nh l ch trình
riêng cho chuy n bay chuy n ti p t& B c Kinh i Th ng H i? Câu tr l i n3m các d ch
v Web. Air Atlantis có th trích m t ph n thông tin v các chuy n bay b3ng cách t o m t
d ch v Web d li u (Data Web service) tr v
u ra c a m t th t c l u
(getFlightInfo) thông tin chuy n bay l y t& c s d li u DB2. D ch v Web d li u là
m t d ch v Web d a trên thông tin c s d li u. Khi d ch v Web d li u này
c tri n
khai vào m t máy ch
ng d ng nh WebSphere Application Server; thì máy khách, hay
thành viên nh Air Discovery có th s! d ng trình duy t
truy c p xem thông tin v các
chuy n bay c a Air Atlantis m t cách d dàng. Trong ví d này, Air Atlantis gi ng nh m t
nhà cung c p d ch v Web, vì nó ã phát tri n và làm cho d ch v Web này tr nên có hi u
l c; còn Air Discovery là khách hàng s! d ng d ch v Web.
252
Nh p môn H qu n tr c s d li u DB2
Air Discovery có th tri u g i d ch v Web t& ng d ng JDBC c a riêng nó,
t& ó có th
th c thi các phép tính toán có s! d ng d li u t& c s d li u SQL Server c a nó. Ví d ,
n u m t chuy n bay t& Toronto i B c Kinh m t trung bình 12 gi , Air Discovery có th
tính toán th i gian cho chuy n bay chuy n ti p t& B c Kinh i Th ng H i, b3ng cách tính
th i gian kh i hành c a máy bay Air Atlantis lúc r i Toronto, c ng thêm th i gian bay và
thêm m t vài gi
m. S gi
m này có th
c l u trong c s d li u SQL Server t i
h th ng c a Air Discovery. D i ây là công th c
n gi n
c s! d ng trong ng
d ng JDBC:
N u Air Atlantis thay *i th i gian xu t phát c a chuy n bay, thông tin này s) t
c c p nh t vào h th ng Air Discovery khi nó tri u g i d ch v Web.
ng
14.6 Các API qu n lý
DB2 cung c p m t s l ng l n các API qu n lý
các nhà phát tri n có th s! d ng
xây d ng các ti n ích và công c c a riêng mình. Ví d ,
t o m t c s d li u m i, b n
có th tri u g i sqlecrea API;
kh i t o m t th hi n, b n dùng db2InstanceStart
API; ho$c
nh p d li u vào m t b ng thì s! d ng db2Import API. Danh sách y
các API qu n lý
c li t kê trong Trung tâm thông tin DB2 (DB2 Information Center). B n
có th xem m c Tài nguyên
bi t a ch+ trang c a n i dung này.
14.7 Các phát tri(n khác
M t s ng i dùng c a DB2 Express-C c6ng có t ng tác v i các s n ph#m c a bên th
ba khác nh MS Excel và MS Access
t o các bi u m%u n gi n có k t n i t i c s
d li u DB2. Trong m c này, chúng ta s) mô t cách th c làm vi c v i nh ng ph n m m
này cùng v i DB2 Express-C.
DB2 Express-C c6ng
c h tr trên h i u hành Mac OS X, vì v y, b n có th s! d ng
DB2 m t cách t nhiên
phát tri n các ng d ng c s d li u trên m t máy Mac. 'i u
này có th t o ra s c h p d%n $c bi t n c ng ng RoR nh ng ng i i theo n n t ng
Mac.
14.7.1 Làm vi c v i Microsoft Access và Microsoft Excel
Microsoft Excel và Microsoft Access là các công c ph* bi n
t o các báo cáo, bi u m%u
và phát tri n các ng d ng n gi n em l i m t gi i pháp qu n tr doanh nghi p thông
minh (Business Intelligence) nào ó cho d li u c a b n. DB2 có th t ng tác khá d
dàng v i các công c này. Qu n tr viên c s d li u (DBA) có th l u tr d li u c a
doanh nghi p trong m t máy ch DB2 b o m t, và nh ng ng i dùng thông th ng, v i
Access ho$c Excel, có th truy c p các d li u này và xu t ra các báo cáo. Xem minh h a
Hình 14.9.
Ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
253
Hình 14.9 – Làm vi c v i Excel, Access và DB2
Trong hình trên, Excel và Access có th
c dùng
phát tri n ng d ng t ng ngo i
vi, trong khi DB2 quan tâm n v n
b o m t d li u,
tin c y và hi u n ng, là t ng
d i c a ng d ng. Vi c l u tr d li u m t cách t p trung nh trong DB2 t o nên m t mô
hình l u tr d li u
n gi n hóa.
' i v i Excel, cách d dàng nh t
truy nh p d li u trong DB2 là s! d ng trình i u
khi n OLE DB, ch1ng h n nh b cung c p IBM OLE DB dành cho DB2 (IBM OLE DB
Provider for DB2), i kèm theo b cài $t mi n phí IBM Data Server Client t i trang web
c a DB2 Express-C: www.ibm.com/db2/express. Khi cài $t, b n c n ch n ngu n d li u
thích h p v i b cung c p OLE DB
s! d ng t& trình n c a MS Excel. Ch n Data
Import External Data
Import Data. Các b c ti p theo
c mô t trong bài báo IBM®
DB2® Universal Database™ and the Microsoft® Excel Application Developer… for
Beginners [1]. B n có th xem chi ti t v bài báo t i m c Tham kh o.
' i v i Microsoft Access, b n c6ng nên cài $t m t trong các thành ph n sau:
IBM Data Server client, ho$c
Trình i u khi n IBM Data Server (IBM Data Server Driver) dành cho ODBC, CLI và
.Net, ho$c
Trình i u khi n IBM Data Server dành cho ODBC và CLI
Trình i u khi n IBM Data Server dành cho ODBC, CLI và .Net, và trình i u khi n IBM
Data Server dành cho ODBC và CLI, còn
c g i là trình i u khi n IBM DB2 ODBC,
t ng t nh trình i u khi n DB2 CLI. 'ây là trình i u khi n dùng
k t n i Access v i
DB2. Sau khi trình i u khi n
c cài $t xong, ta t o m t d án trong Access 2007, và
ch n tùy ch n c s d li u ODBC s"n có trong th! External Data c a d i ch c n"ng
Table Tools (Table Tools Ribbon). Các b c ti p theo
c mô t trong bài báo DB2 9
and Microsoft Access 2007 Part 1: Getting the Data...[2]. Khi s! d ng các b ng liên k t
(linked tables) trong Microsoft Access, ng i dùng Access 2007 có th s! d ng d li u
c a các b ng ó, nh ng th c ch t, các d li u ó thu c v máy ch d li u DB2.
254
Nh p môn H qu n tr c s d li u DB2
V i các phiên b n Excel tr c 2007, quá trình cài $t có chút khác bi t, b n có th xem
bài báo Use Microsoft Access to interact with your DB2 data [3], chi ti t t i m c Tham
kh o.
14.8 Các công c phát tri(n
Hi n nay, Microsoft Visual Studio và Eclipse là hai môi tr ng phát tri n tích h p
(Integrated Development Environments - IDEs)
c các nhà phát tri n s! d ng ph* bi n
nh t. C hai môi tr ng này u làm vi c hi u qu v i DB2.
V i Microsoft Visual Studio, DB2 cung c p thêm b Visual Studio Add-in,
sau khi cài
$t, các công c c a IBM s)
c thêm vào các trình n c a Visual Studio. B3ng cách
này, nhà phát tri n không c n ph i chuy n sang các công c khác
có th làm vi c v i
các c s d li u DB2. B n có th t i Visual Studio Add-in t i trang web c a DB2 ExpressC,
a ch+ www.ibm.com/db2/express.
V i Eclipse, IBM ã phát hành IBM Data Studio, m t công c mi n phí d a trên n n
Eclipse cho phép b n phát tri n các o n mã SQL và XQuery, các th t c l u, các hàm do
ng i dùng nh ngh a và các d ch v Web. Do
c phát tri n d a trên n n t ng Eclipse,
nhi u nhà phát tri n có th d dàng s! d ng công c này d a trên nh ng ki n th c có s"n
v Eclipse.
14.9 Các ch
ng trình m9u
' h c cách l p trình v i các ngôn ng khác nhau s! d ng DB2 nh m t máy ch d li u,
b n có th tham kh o các ng d ng m%u i kèm theo b cài $t máy ch DB2 trong th
m c SQLLIB\samples. Hình 14.10 bên d i li t kê m t s ch ng trình m%u
c cung
c p kèm v i DB2 trên n n t ng Windows.
Ch
Hình 14.10 – Các ch
ng 14 – Gi i thi u vi c phát tri n ng d ng v i DB2
255
ng trình m9u i kèm v i DB2
14.10 Tóm t-t
Trong ch ng này, chúng ta ã tìm hi u cách DB2 em l i s linh ho t cho vi c l p trình
các ng d ng c s d li u c bên trong c s d li u phía máy ch , c6ng nh các ng
d ng phía ng i dùng có k t n i n máy ch d li u DB2.
Bng d ng phía máy ch bao g m các th t c l u, các hàm do ng
các b%y s ki n.
i dùng
nh ngh a, và
Phía ng i dùng, chúng ta ã th o lu n r t nhi u các giao di n và ph ng th c l p trình
c h tr b i quá trình phát tri n ng d ng DB2, m t l n n a ch ng minh tính linh ho t
và hi u n ng áng k c a DB2 trong vai trò c a m t máy ch d li u.
Ch
ng 15 - DB2 pureXML
15
Trong ch ng này, chúng ta s) th o lu n v pureXML, công ngh m i
c
a vào DB2
9
h tr l u tr thu n các v n b n XML. Nhi u ví d và khái ni m
c th o lu n trong
ch ng này
c l y t& IBM Redbook: “DB2 9: T ng quan và b#t u nhanh v i
pureXML” (DB2 9: pureXML overview and fast start). B n có th xem m c Tài nguyên
có thêm thông tin. Hình 15.1 ch+ ra ph n ki n th c trong b c tranh l n DB2 s)
c chúng
ta th o lu n ch ng này.
Hình 15.1 – B c tranh l n DB2: Các câu l nh DB2, SQL/XML và XQuery
Ch
ng 15 - DB2 pureXML
257
Chú ý:
B n có th tham kh o video sau
có thêm thông tin v pureXML:
http://www.channeldb2.com/video/video/show?id=807741:Video:4382
15.1 S
d ng XML v i c s" d# li u
Các tài li u XML có th
c l u tr d i d ng t p tin v n b n, kho XML hay c s d
li u. Có hai lí do chính khi n các công ty l a ch n l u tr XML b3ng c s d li u, ó là:
Qu n lý các kh i l ng l n d li u XML là m t v n
v c s d li u. XML là
m t lo i d li u gi ng v i các d li u khác, ch+ khác
nh d ng t*ng th . Bên
c nh ó, có m t s lý do khi n ng i ta l a ch n l u tr d li u quan h b3ng c
s d li u c6ng có th
c áp d ng cho d li u XML, nh : các c s d li u
cung c p các ch c n ng tìm ki m và trích rút hi u qu , h tr cao tính b n v ng
c a d li u, cho phép sao l u và ph c h i, h tr giao d ch, tính hi u qu và kh
n ng m r ng.
Tính tích h p: B3ng vi c l u tr
ng th i tài li u quan h và tài li u XML, b n có
th tích h p thêm d li u XML m i v i d li u quan h có s"n, và k t h p SQL v i
XPath ho$c XQuery vào cùng m t truy v n. Thêm n a, d li u quan h có th
c chuy n thành XML, và ng c l i. Thông qua vi c tích h p, các c s d li u
có th h tr t t h n các ng d ng Web, SOA và các d ch v Web.
15.2 C s" d# li u XML
Có 2 lo i c s d li u dành cho vi c l u tr d li u XML nh sau:
C s d li u có h tr XML (XML-enabled database)
C s d li u thu n XML (Native XML database)
15.2.1 C
s" d# li u có h3 tr! XML
C s d li u có h tr XML s! d ng mô hình quan h là mô hình l u tr d li u chính
l u tr XML. 'i u này òi h/i ho$c là ph i có m t ánh x gi a mô hình d li u XML (phân
c p) v i mô hình d li u quan h , ho$c là ph i l u tr d li u XML d i d ng các i
t ng l n có thu c tính. M$c dù v%n
c xem nh m t công ngh c6, nh ng nó v%n
ang
c s! d ng b i nhi u nhà cung c p c s d li u. Hình 15.2 mô t chi ti t h n v
hai l a ch n l u tr c a nó.
258
Nh p môn H qu n tr c s d li u DB2
Hình 15.2 – Hai l.a ch/n l u tr# XML trong c s" d# li u h3 tr! XML
Phía bên trái Hình 15.2 là ph ng pháp CLOB và varchar khi l u tr các tài li u XML
trong c s d li u. Theo ph ng pháp này, tài li u XML
c l u tr d i d ng chu i
ch a phân tích trong c t CLOB ho$c c t varchar trong c s d li u. N u tài li u XML
c l u tr d i d ng chu i, thì khi b n mu n l y ra m t ph n tài li u XML, ch ng trình
c a b n v%n ph i l y toàn b chu i, sau ó phân tích nó
tìm nh ng gì b n c n. Quá
trình phân tích gi ng nh quá trình xây d ng c u trúc cây cho tài li u XML trong b nh ,
sao cho b n có th duy t qua cây này. Ph ng pháp này c n b nh l n và không
c
linh ho t cho l m.
L a ch n khác dành cho c s d li u h tr XML
c g i là phân rã (shredding /
decomposition),
c minh h a bên ph i Hình 15.2. S! d ng ph ng pháp này, toàn b
tài li u XML
c phân rã thành các ph n t!
c l u tr trong các b ng. Và c6ng theo
ph ng pháp này, b n ã th c s chuy n tài li u XML thành mô hình quan h , mà b n
thân nó v n d a trên mô hình phân c p. Ph ng pháp này không
c linh ho t, vì n u
tài li u XML thay *i, thì nh ng thay *i ó c6ng không d truy n n các b ng t ng
ng, và có th ph i t o thêm nhi u b ng khác n a. Ph ng pháp này c6ng cho hi u n ng
không t t: n u b n c n l y l i tài li u XML ban u, b n ph i th c thi m t thao tác k t n i
SQL v i chi phí cao, và chi phí này có th cao h n n a khi ph i g i t i nhi u b ng h n.
15.2.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 d li u XML
l u tr và x! lý XML
bên trong. ' nh d ng l u tr gi ng v i nh d ng x! lý: không có ánh x nào sang mô hình
quan h , và các v n b n XML không
c l u tr nh các chu i ch a phân tích (CLOB
ho$c varchar). Khi các câu l nh XPath hay XQuery
c s! d ng, chúng
c máy x! lý
Ch
ng 15 - DB2 pureXML
259
m t cách t nhiên, và không chuy n sang SQL. 'ây là lí do các c s d li u này
c
g i là các c s d li u thu n XML. Hi n t i DB2 là máy ch d li u th ng m i duy nh t
h tr i u này.
15.3 XML trong DB2
Hình 15.3 d i ây minh h a cách th c l u tr
ng th i d li u quan h và d li u phân
c p (các tài li u XML) trong m t c s d li u lai DB2. Hình v) c6ng bi u di n câu l nh
CREATE TABLE
c s! d ng
t o b ng dept.
Hình 15.3 – XML trong DB2
Chú ý r3ng trong nh ngh a b ng s! d ng ki u d li u m i dành cho c t deptdoc, là ki u
XML. M6i tên bên trái trong hình v) ch+ ra r3ng c t quan h deptID
c l u tr d i
d ng quan h (b ng), trong khi c t XML deptdoc
c l u tr d i d ng phân tích phân
c p.
Hình 15.4 minh h a b n cách truy nh p d li u hi n nay
S! d ng SQL
c s! d ng trong DB2 9:
truy nh p d li u quan h
S! d ng SQL và các m r ng XML (SQL/XML)
S! d ng XQuery
truy nh p d li u XML
S! d ng XQuery
truy nh p d li u quan h
truy nh p d li u XML
260
Nh p môn H qu n tr c s d li u DB2
Hình 15.4 – B n cách truy nh)p d# li u trong DB2
Nh v y, ph thu c vào ph ng di n c a b n, n u
ng trên ph ng di n ng i s! d ng
SQL, b n có th xem DB2 nh m t h qu n tr c s d li u c p cao có h tr XML. N u
ng trên ph ng di n ng i s! d ng XML, b n có th xem DB2 nh kho l u tr XML
c p cao h tr SQL.
Chú ý r3ng IBM s! d ng khái ni m pureXML thay vì khái ni m thu n XML (native XML)
mô t công ngh này. Các nhà cung c p khác v%n s! d ng các công ngh c6
CLOB/varchar hay phân rã
l u tr các tài li u XML, h g i nh ng công ngh c6 ó là
thu n XML. ' tránh nh m l%n, IBM ã quy t nh s! d ng khái ni m m i pureXML, và $t
th ng hi u cho khái ni m này
các nhà cung c p c s d li u và XML khác có th s!
d ng nó
g i n m t công ngh m i. pureXML h tr các c s d li u
c sinh ra
d i c 2 nh d ng Unicode và non-Unicode.
15.3.1 Iu i(m c a công ngh pureXML
Công ngh (pureXML em l i nhi u u i m nh sau:
1. B n có th nâng cao kh n ng s! d ng d li u quan h , b3ng cách l u tr (các tài
li u XML trong các c t c a các b ng, s! d ng ki u d li u m i XML.
2. B n có th gi m s ph c t p c a mã l nh. Ví d , Hình 15.5 minh h a m t o n
PHP có s! d ng và không s! d ng pureXML. S! d ng pureXML (khung F=/(bên
trái), s dòng mã l nh ã
c gi m. 'i u này không ch+ có ngh a là mã l nh ít
ph c t p h n, mà t*ng hi u n ng c6ng
c c i thi n, vì s dòng
c phân tích
và b o trì trong mã l nh c6ng ít h n.
Ch
ng 15 - DB2 pureXML
261
Hình 15.5 – S. ph c t2p c a mã l nh có s d ng và không s d ng pureXML
3. Nh ng thay *i t i l c
s) d dàng h n khi s! d ng XML và công ngh
pureXML. Hình 15.6 N
9(m t ví d minh h a v s t ng c ng tính linh ng này.
Trong hình, gi s! b n có m t c s d (li u bao g m các b ng Employee và
Department. 'i n hình v i lo i c s d li u không có XML, n u nhà qu n lý yêu
c u b n l u tr (không ch+ m t s i n tho i cho m t nhân viên (s i n tho i bàn),
mà còn l u tr (thêm s i n tho i th hai khác n a (s di ng), b n có th thêm
m t c t trong b ng Employee và l u tr (s i n tho i di ng trong c t m i ó.
Tuy nhiên, ph ng pháp này vi V= m các quy t c chu#n hóa c a c s d li u
quan h . N u b n mu n gi các quy t c ó, b n V= i t o m t b ng ph m i, b ng
Phone, và chuy n t t c các thông tin v s i n tho i vào b ng này. B n c6ng có
th thêm vào nhi u s di ng khác n a. T o b ng m i s) t n chi phí, không ch+
b i vì ph i di chuy n s l ng l n các d (li u ã t n t i, mà còn vì t t c các câu
l nh SQL trong các ng d ng c a b n c6ng s) ph i thay *i
tr/( n b ng m i.
Thay L9o K, D=<ng tôi
a ra D?ch th c hi n i u(F9y b3ng vi c s!(G ng XML
nh
(phía bên trái =Jnh d i ây. N u nhân viên Christine c6ng có m t s di
ng, ta thêm m t [email protected](m i (l u thông tin F9y. N u nhân viên Michael không có
s i n tho i di ng, ta s)
nguyên.
262
Nh p môn H qu n tr c s d li u DB2
Hình 15.6 – T ng c
ng tính linh
ng d#$li u v i XML
4. B n có th c i thi n hi u n ng ng d ng XML c a b n. Th c nghi m cho th y vi c
s! d ng công ngh pureXML giúp c i thi n áng k hi u n ng cho các ng d ng
XML. B ng 15.1
a ra các k t qu th! nghi m cho m t công ty khi chuy n *i t&
nh ng công ngh c6 sang công ngh pureXML. C t th hai bi u di n k t qu khi
dùng ph ng pháp làm vi c c6 v i XML trong m t h ([\ n EO(c s (d (li u I=?c,
và c t th ba bi u di n các k t qu khi s!(G ng DB2 9 v i pureXML.
Công vi c
C s" d# li u
quan h khác
DB2 v i pureXML
Phát tri n các quá trình tìm ki m và
trích rút th ng m i
CLOB: 8 ti ng
S dòng mã I/O t
100
35 ( gi m 65%)
1 tu n
5 phút
24 - 36 ti ng
20 giây - 10 phút
Thêm tr
ng vào l
Truy v n
ng
c
i
30 phút
Shred: 2 ti ng
B ng 15.1 – T ng hi u n ng khi s d ng công ngh pureXML
15.3.2 C b n v XPath
XPath là m t ngôn ng có th
c s! d ng
truy v n các tài li u XML. Li t kê 15.1
d i ây mô t m t tài li u XML, và Hình 15.7 minh h a cùng tài li u ó, nh ng
c trình
bày d i d ng phân tích phân c p (DRn S i là “nút” ho$c “lá”). Chúng ta s) dùng nh d ng
phân tích phân c p ó
gi i thích cách th c XPath làm vi c nh th nào.
Ch
ng 15 - DB2 pureXML
263
<dept bldg=“101”>
<employee id=“901”>
<name>John Doe</name>
<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>
Li t kê 15.1 – M t tài li u XML
dept
employee
id=901
name
John Doe
phone
408-555-1212
employee
office
344
id=902
name
Peter Pan
phone
office
408-555-9918
Hình 15.7 – Bi(u di5n phân tích phân c p cho tài li u XML trong li t kê 15.1
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 (change
directory - cd) trong MS–DOS ho$c Linux/UNIX. S! d ng l nh cd, b n duy t qua
m t cây th m c nh sau:
cd /directory1/directory2/…
T ng t , v i XPath, b n s! d ng d u g ch chéo (/)
chuy n t& ph n t! này n ph n
t! khác trong tài li u XML. Ví d , s!(G ng tài li u trong Li t kê 15.1 v i XPath, b n có th
a ra tên c a t t c các nhân viên v i truy v n:
/dept/employee/name
15.3.2.1 Các bi(u th c XPath
216
264
Nh p môn H qu n tr c s d li u DB2
Bi u th c XPath s! d ng
ng d%n y
(xác nh D?c ph n t! và D?c thu c tính. Kí
hi u “@”
c dùng
ch+ nh m t thu c tính. ' l y riêng ph n giá tr (text node) c a
m t ph n t!, b n s! d ng hàm text(). B ng 15.2
a ra nh ng truy v n XPath và các
k t qu t ng ng khi ?p G ng trên tài li u XML Li t kê 15.1.
XPath
Result
/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 15.2 – M t s ví d v bi(u th c XPath
15.3.2.2 %&c kí t. 2i di n XPath
Có hai kí t
i di n chính trong XPath:
“*” thay th cho b t k4 tên [email protected] nào
“//” là kí t
B ng 15.3
i di n cho “t& ây tr xu ng” (“descendent-or-self”)
a thêm các ví d v i tài li u XML
Li t kê 15.1.
XPath
Result
/dept/employee/*/text()
John Doe
408 555 1212
344
Peter Pan
408 555 9918
216
/dept/*/@id
901
902
//name/text()
Peter Pan
John Doe
/dept//phone
<phone>408 555 1212</phone>
<phone>408 555 9918</phone>
B ng 15.3 – M t s ví d v kí t. 2i di n XPath
Ch
ng 15 - DB2 pureXML
265
15.3.2.3 Các v0 t1 XPath
Các L(t&
c $t trong d u ngo$c vuông []. Nh m t phép so sánh t ng t , b n có
th ngh chúng t ng
ng v i m nh
WHERE ( âu) trong SQL. Ví d ,
[@id=”902”] có th
c hi u là “
âu thu c tính id b3ng 902”. Có th có nhi u v t&
trong m t bi u th c XPath. ' ch+ ra m t v t& D=+(v trí, ta dùng [n], v i ngh a là ph n t!
con th n
c ch n. Ví d , employee[2] ngh a là nhân viên th 2
c ch n. B ng
15.4 cho ta thêm các ví d .
XPath
Result
/dept/employee[@id=“902”]/name
<name>Peter
Pan</name>
/dept[@bldg=“101”]/employee[office >“300”]/name
<name>John Doe</name>
//employee[office=“344” OR office=“216”]/@id
901
902
/dept/employee[2]/@id
902
B ng 15.4 – Các ví d v0 t1 XPath
15.3.2.4 M c cha
Gi ng nh MS-DOS hay Linux/Unix, b n có th s! d ng d u ch m “.” (dot)
ch+
trong bi u th c r3ng b n ang tham chi u n ng c nh hi n t i, và “..” (dot dot)
chi u n v trí trên nó m t c p (m c cha). B ng 15.5 cho ta thêm các ví d .
nh
tham
XPath
Result
/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 15.5 – M c cha trong XPath
15.3.3 C b n v XQuery
XQuery là ngôn ng truy v n
c t o ra dành cho XML. XQuery h tr các bi u th c
ng d%n
duy t c u trúc phân c p c a XML. Trên th c t , XPath là m t t p con c a
XQuery; do ó, m i th chúng ta ã h c tr c ây v XPath c6ng
c áp d ng t ng t
cho XQuery. XQuery h tr c các lo i d li u nh ki u và d li u không nh ki u.
XQuery không h tr các giá tr null b i vì các tài li u XML m$c nhiên s) b/ qua các d
266
Nh p môn H qu n tr c s d li u DB2
li u không xác nh ho$c b thi u. Các bi u th c XQuery và XPath có phân bi t kí t hoa
và kí t th ng, và XQuery s) tr v chu i d li u XML tu n t .
XQuery h tr bi u th c FLWOR. N u so sánh v i SQL, FLWOR t ng
SELECT-FROM-WHERE. Ph n ti p theo s) mô t c th h n v FLWOR.
ng v i bi u th c
15.3.3.1 XQuery: Bi(u th c FLWOR
FLWOR là vi t t t c a:
FOR:
th c hi n l$p qua m t chu i, gán m t bi n cho các ph n t! chu i
LET:
gán m t bi n cho m t chu i
WHERE:
lo i b/ các ph n t! trong vòng l$p
ORDER:
s p x p l i tr t t các ph n t! trong vòng l$p
RETURN:
xây d ng các k t qu truy v n
FLWOR là bi u th c cho phép th c hi n các thao tác v i các tài li u XML và tr v m t
bi u th c khác. Ví d , gi s! b n có m t b ng v i nh ngh a nh sau:
CREATE TABLE dept(deptID CHAR(8), deptdoc XML);
Và tài li u XML v i n i dung nh trong Li t kê 15.2
c chèn vào c t deptdoc.
<dept bldg=”101”>
<employee id=”901”>
<name>John Doe</name>
<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>
Li t kê 15.2 – Tài li u XML m9u
Khi ó, câu l nh XQuery trong Li t kê 15.3 s! d ng bi u th c FLWOR có th
thi:
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>
c th c
Ch
ng 15 - DB2 pureXML
267
{$d/@bldg, $emp}
</EmpList>
Li t kê 15.3 – Câu l nh XQuery m9u s d ng bi(u th c FLWOR
Bi u th c này s) tr v k t qu nh trong Li t kê 15.4
<EmpList bldg="101">
<name>
John Doe
</name>
<name>
Peter Pan
</name>
</EmpList>
Li t kê 15.4 – K t qu sau khi th.c thi câu l nh XQuery trong Li t kê 15.3
15.3.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
c th c hi n b3ng cách s!
d ng câu l nh SQL INSERT, ho$c ti n ích IMPORT. XQuery không
c dùng cho m c
ích này b i vì nó v%n ch a
c nh ngh a trong chu#n.
Hãy th! xem xét k ch b n table_creation.txt có n i dung nh trong Li t kê 15.5 d i
ây, o n mã này có th
c th c thi t& c!a s* l nh DB2 ho$c Linux shell v i câu l nh:
db2 –tvf 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 (
id
int primary key not null,
brandname
varchar(30),
itemname
varchar(30),
sku
int,
srp
decimal(7,2),
268
Nh p môn H qu n tr c s d li u DB2
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)
;
Li t kê 15.5 – N i dung c a t)p tin table_creation.txt
T p tin k ch b n này và các t p tin liên quan
c cung c p trong t p tin nén
Expressc_book_exercises_9.7.zip i kèm v i sách này. Sau ây là mô t c th
các dòng trong o n k ch b n c a Li t kê 15.5:
1. Xóa c s d li u mydb. Vi c này th ng
c làm trong các t p tin k ch b n
th c hi n vi c d n d,p. N u c s d li u mydb không t n t i tr c ó, b n s)
nh n
c thông báo l i, nh ng i u này không có v n
gì.
2. T o c s d li u mydb v i b ng mã UTF-8. Câu l nh này t o m t c s d li u
Unicode. pureXML h tr c các c s d li u Unicode và không Unicode.
3. K t n i t i c s d li u mydb v&a
i t ng bên trong c s d li u.
c t o ra. Vi c này là c n thi t
4. T o b ng items. L u ý r3ng c t cu i cùng trong b ng (c t comments)
ngh a nh m t c t XML s! d ng ki u d li u XML m i.
t o các
c
5. Chúng ta t o b ng clients. C t cu i cùng trong b ng (c t contact) c6ng
nh ngh a v i ki u d li u XML m i.
nh
c
Ch
ng 15 - DB2 pureXML
269
6. B3ng cách s! d ng câu l nh SQL INSERT này, b n có th chèn m t tài li u XML
vào m t c t XML. Trong câu l nh INSERT, tài li u XML
c truy n vào nh m t
chu i
c óng trong c$p d u nháy n.
7. S! d ng l nh IMPORT, b n có th chèn ho$c nh p m t s tài li u XML cùng v i
các d li u quan h vào c s d li u. Trong (7), b n ang nh p d li u t& t p tin
clients.del (m t t p tin ascii có kí t phân tách), và b n c6ng ch+ nh v trí c a
d li u XML
c tham chi u b i t p tin clients.del (trong ví d này là
D:\Raul)
Chúng ta s) tìm hi u k2 h n v t p tin clients.del, nh ng tr
n i dung th m c D:\Raul nh trong Hình 15.8.
Hình 15.8 – N i dung c a th
c h t hãy xem qua
m c D:\Raul ch a các tài li u XML
Li t kê 15.6 cho ta n i dung c a t p tin v n b n clients.del nh sau:
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'/>
Li t kê 15.6 – N i dung c a t)p tin clients.del
Trong t p tin clients.del, “XDS FIL=” dùng
ch+
nh m t t p tin XML xác
nh.
Hình 15.9 minh h a Trung tâm 'i u khi n - Control Center sau khi th c thi o n mã trên.
270
Nh p môn H qu n tr c s d li u DB2
Hình 15.9 – Control Center sau khi th.c thi li t kê k0ch b n table_creation.txt
Trong hình trên, chúng ta cho hi n ra n i dung c a b ng CLIENTS. C t cu i cùng
contact là m t c t XML. Khi b n nh p chu t vào nút có ba d u ch m, m t c!a s* khác
s) cho b n th y n i dung c a tài li u XML. B n có th xem minh h a nh
góc ph i phía
d i c a Hình 15.9.
15.3.5 Truy v n d# li u XML
Trong DB2 có hai cách
truy v n d li u XML:
S! d ng SQL v i các m r ng XML (SQL/XML)
S! d ng XQuery
Trong c hai cách trên, DB2
u tuân theo chu#n XML qu c t .
15.3.5.1 Truy v n d# li u XML v i SQL/XML
S! d ng các câu l nh SQL thông th ng cho phép b n làm vi c v i các dòng và các c t.
M t câu l nh SQL có th làm vi c
c v i toàn b tài li u XML y ; tuy nhiên, SQL s)
không th giúp b n làm vi c ch+ v i m t ph n tài li u XML. Trong tr ng h p này, b n c n
s! d ng SQL v i các m r ng XML (SQL/XML).
B ng 15.6 mô t m t s hàm SQL/XML có s"n v i chu#n SQL 2006.
Ch
Tên hàm
ng 15 - DB2 pureXML
271
Mô t
XMLPARSE
Phân tích d li u kí t hay d li u nh phân c a
l y ra giá tr XML
XMLSERIALIZE
Chuy n giá tr XML sang d ng d li u kí t hay d li u nh phân
c a i t ng l n
XMLVALIDATE
Ki m tra d li u XML v i l
XML
XMLEXISTS
Ki m tra xem XQuery có tr v k t qu không (ví d , m t dãy có
m t ho$c nhi u ph n t!)
XMLQUERY
Th c thi XQuery và tr v dãy k t qu
XMLTABLE
Th c thi XQuery và tr v dãy k t qu nh m t b ng quan h
(n u có th )
XMLCAST
Ép ki u t& ki u XML
c
it
ng l n,
XML và ghi chú ki u c a giá tr
B ng 15.6 – Các hàm SQL/XML
S! d ng c s d li u mydb
ã t o tr
c ây
th c hi n các ví d sau:
Ví d 1
Gi s! b n c n xác nh tên c a t t c các khách hàng s ng vùng nào ó (có mã vùng zip code). B ng clients l u a ch+ khách hàng, bao g m thông tin mã vùng trong m t
c t XML. B n có th s! d ng hàm XMLEXISTS
tìm mã vùng phù h p trên c t XML và
trích rút k t qu tr v theo ó. Li t kê 15.7 minh h a câu l nh SQL t ng ng.
SELECT name FROM clients
WHERE xmlexists(
'$c/Client/Address[zip="95116"]'
passing clients.contact as "c"
)
Li t kê 15.7 - Ví d s d ng XMLEXISTS
Trong Li t kê 15.7, dòng u tiên là m nh
name trong b ng clients.
SQL ch+ ra r3ng b n mu n l y thông tin c t
M nh
WHERE g i hàm XMLEXISTS, ch+
t! zip có giá tr 95116.
nh rõ bi u th c XPath yêu c u DB2 tìm ph n
M nh
$c/Client/Address ch+ ra
ng d%n trong c u trúc phân c p c a tài li u
XML
DB2 có th tìm ra ph n t! zip. Kí t ($)
c s! d ng
ch+ nh m t bi n. Nh
v y “c” là bi n. Bi n “c”
c nh ngh a b i dòng: passing clients.contact as
"c". Trong ó, 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 gán tài li u XML cho bi n “c”.
272
Nh p môn H qu n tr c s d li u DB2
DB2 ki m tra tài li u XML ch a trong c t contact, duy t t& nút g c Client xu ng nút
Address, sau ó là zip, và cu i cùng xác nh xem khách hàng có s ng vùng có mã
vùng c n tìm hay không. N u hàm XMLEXISTS tr v “true”, DB2 s) l y ra tên khách
hàng t ng ng.
Trong DB2 9.5, câu truy v n trên có th vi t
n gi n nh sau:
SELECT name FROM clients
WHERE xmlexists(
'$CONTACT/Client/Address[zip="95116"]'
)
Li t kê 15.8 - Cách vi t
n gi n c a truy v n trong ki t kê 15.7
DB2 s) t
ng t o ra m t bi n có cùng tên v i tên c t XML. Trong ví d trên, DB2 t
ng t o ra bi n CONTACT có tên trùng v i tên c t XML CONTACT.
Ví d 2
Chúng ta ngh xem làm th nào
t o
c báo cáo g m danh sách các a ch+ th
t! c a các khách hàng “Vàng” (có status là “Gold”). Truy v n trong Li t kê 15.9 d
ây s) gi i quy t v n
này.
i n
i
SELECT xmlquery('$c/Client/email' passing contact as "c")
FROM clients
WHERE status = 'Gold'
Li t kê 15.9 – Ví d s
d ng XMLQUERY
Dòng u tiên ch+ ra r3ng chúng ta mu n l y ra a ch+ email, là m t ph n t! c a tài li u
XML (không ph i m t c t d li u quan h ). T ng t ví d tr c, bi n “$c” l u tr tài li u
XML. Trong ví d này, hàm XMLQUERY
c s! d ng theo sau m nh
SELECT, trong khi
hàm XMLEXISTS
c s! d ng theo sau m nh
WHERE.
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. Chúng ta có th th c
hi n i u này b3ng cách s! d ng hàm XMLTABLE nh trong Li t kê 15.10 d i ây.
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
Li t kê 15.10 – Ví d s d ng XMLTABLE
Dòng u tiên ch+ ra các c t s) xu t hi n trong t p k t qu . Các c t b t
d a trên giá tr c a các ph n t! trong XML.
u v i bi n “t”
Ch
ng 15 - DB2 pureXML
273
Dòng th ba g i hàm XMLTABLE
xác nh rõ c t XML c a DB2 ch a d li u c n thi t
(i.comments) và
ng d%n n ph n t! c n tìm trong tài li u XML.
T& dòng 4 n dòng 6, m nh
columns ch+ ra các ph n t! XML s)
c ánh x t ng
ng v i các c t trong b ng k t qu c a câu l nh SQL dòng 1. Vi c ánh x này c6ng ch+
ra ki u d li u mà giá tr c a các ph n t! XML s)
c chuy n sang. Trong ví d này,
toàn b d li u XML
c chuy n sang các ki u d li u truy n th ng c a SQL.
Ví d 4
Bây gi chúng ta xem qua ví d
SQL/XML XMLQUERY. Ví d
n gi n có ch a bi u th c XQuery FLWOR bên trong hàm
c th hi n trong Li t kê 15.11.
SELECT name, xmlquery(
‘for $e in $c/Client/email[1] return $e’
passing contact as “c”
)
FROM clients
WHERE status = ‘Gold’
Li t kê 15.11 – Ví d s d ng XMLQUERY và FLWOR
Dòng u tiên ch+ ra tên khách hàng và k t qu c a hàm XMLQUERY s)
c ch a trong
t p k t qu . Dòng th hai ch+ ra ph n t! con email
u tiên c a ph n t! Client s)
c tr v . Dòng th ba ch+ ngu n d li u XML (c t contact). Dòng th t cho bi t c t
này l y t& b ng clients, và dòng th n m nói r3ng ch+ l y ra các khách hàng “Vàng”
(“Gold”).
Ví d 5
Ví d trong Li t kê 15.12 bên d i minh h a hàm XMLQUERY có s! d ng bi u th c XQuery
FLWOR; tuy nhiên, ví d này không ch+ tr v d li u XML mà còn tr v d li u HTML.
SELECT xmlquery('for $e in $c/Client/email[1]/text()
return <p>{$e}</p>'
passing contact as "c")
FROM clients
WHERE status = 'Gold'
Li t kê 15.12 – Ví d tr v XML và HTML
M nh
return c a XQuery cho phép chuy n *i d li u XML u ra theo yêu c u. S!
d ng hàm text() dòng u tiên ch+ ra r3ng chúng ta ch+ quan tâm n bi u di n d ng
v n b n c a a ch+ email u tiên trong các khách hàng th/a mãn i u ki n. Dòng th hai
cho bi t thông tin này s)
c bao b i [email protected] <p> c a HTML.
Ví d 6
274
Nh p môn H qu n tr c s d li u DB2
Ví d sau ây s! d ng hàm XMLELEMENT
t o m t dãy các ph n t!, m i ph n t! ch a
các ph n t! con, bao g m ID, nhãn hi u hàng hóa (brand name), l ng hàng t n kho (sku
- stock keeping unit) l y t& các c t t ng ng c a b ng items. V c b n, b n có th s!
d ng hàm XMLELEMENT khi b n mu n chuy n t& d li u quan h sang d li u XML. 'i u
này
c minh h a trong Li t kê 15.13.
SELECT
xmlelement (name
xmlelement (name
xmlelement (name
xmlelement (name
FROM items
WHERE srp < 100
"item", itemname),
"id", id),
"brand", brandname),
"sku", sku)
Li t kê 15.13 – Ví d s d ng XMLELEMENT
Truy v n trong Li t kê 15.13 tr v k t qu nh trong Li t kê 15.14.
<item>
<id>4272</id>
<brand>Classy</brand>
<sku>981140</sku>
</item>
…
<item>
<id>1193</id>
<brand>Natural</brand
<sku>557813</sku>
</item>
Li t kê 15.14 – K t qu c a truy v n trong li t kê 15.13
15.3.5.2 Truy v n d# li u XML v i XQuery
Trong ph n tr c, chúng ta ã xem xét cách th c truy v n d li u XML b3ng vi c s! d ng
SQL v i các m r ng XML. SQL luôn là ph ng pháp truy v n chính, và XQuery ho$c
XPath
c nhúng vào bên trong SQL. Trong ph n này, chúng ta s) th o lu n cách th c
truy v n d li u XML v i XQuery. Lúc này, XQuery s) là ph ng pháp truy v n chính, và
trong m t s tr ng h p, chúng ta s) s! d ng SQL nhúng bên trong XQuery (s! d ng
hàm db2-fn:sqlquery). Khi s! d ng XQuery, chúng ta s) g i m t s hàm, và c6ng s)
s! d ng bi u th c FLWOR.
Ví d 1
'ây là m t XQuery n gi n tr v d li u liên l c c a khách hàng. Trong ví d , CONTACT
là tên c t XML, và CLIENTS là tên b ng.
xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)
Ch
ng 15 - DB2 pureXML
275
B n hãy nh luôn luôn thêm l nh xquery vào u m i bi u th c XQuery
DB2 hi u
r3ng nó ph i s! d ng b phân tích XQuery (XQuery parser). N u không, DB2 s) cho r3ng
b n ang c g ng th c thi m t bi u th c SQL. Hàm db2-fn:xmlcolumn l y ra các tài
li u XML t& c t
c ch+ nh nh tham s
c truy n vào. Câu l nh trên t ng
ng
v i câu l nh SQL sau ây, th c hi n vi c l y ra toàn b các n i dung trong c t:
SELECT contact FROM clients
Ví d 2
Ví d này
c th hi n trong Li t kê 15.15, chúng ta s! d ng bi u th c FLWOR
li u fax c a khách hàng.
l yd
xquery
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/fax
return $y
Li t kê 15.15 - XQuery và bi(u th c FLWOR
Dòng u tiên g i n 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 ch a trong c t CLIENTS.CONTACT. M i ph n t! fax
c gán vào bi n $y.
Dòng th ba nói r3ng giá tr bi n $y s)
c tr v trong m i l n l$p.
K t qu truy v n
c minh h a nh trong Li t kê 15.16 (Chúng tôi b/ qua không gian tên
trong k t qu
u ra, n u không s) khó c vì nó có th chi m m t s dòng).
<fax>4081112222</fax>
<fax>5559998888</fax>
Li t kê 15.16 – K t qu
u ra c a truy v n trong li t kê 15.15
Ví d 3
Ví d trong Li t kê 15.17 truy v n d li u XML và tr v k t qu d
i d ng HTML.
xquery
<ul> {
for $y in db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address
order by $y/zip
return <li>{$y}</li>
}
</ul>
Li t kê 15.17 – Câu l nh XQuery v i bi(u th c FLWOR, tr v k t qu d2ng HTML
M%u k t qu HTML tr v có d ng nh Li t kê 15.18.
<ul>
276
Nh p môn H qu n tr c s d li u DB2
<li>
<address>
<street>9407 Los Gatos Blvd.</street>
<city>Los Gatos</city>
<state>ca</state>
<zip>95302</zip>
</address>
</li>
<address>
<street>4209 El Camino Real</street>
<city>Mountain View</city>
<state>CA</state>
<zip>95302</zip>
</address>
</li>
...
</ul>
Li t kê 15.18 – K t qu
u ra c a truy v n trong Li t kê 15.17
Ví d 4
Ví d ti p theo ch+ ra cách nhúng SQL vào XQuery b3ng vi c s! d ng hàm db2fn:sqlquery. Hàm db2-fn:sqlquery th c thi m t truy v n SQL và ch+ tr v nh ng
d li u XML
c ch n. Truy v n SQL
c truy n vào hàm db2-fn:sqlquery ph i tr
v d li u XML. Sau ó, d li u XML này s)
c XQuery x! lí. 'i u này
c minh h a
trong Li t kê 15.19.
xquery
for $y in
db2-fn:sqlquery(
‘select comments from items where srp > 100’
)/Comments/Comment
where $y/ResponseRequested=‘Yes’
return (
<action>
{$y/ProductID
$y/CustomerID
$y/Message}
</action>
)
Li t kê 15.19 – M t ví d c a hàm db2-fn:sqlquery có nhúng SQL trong XQuery
Ch
ng 15 - DB2 pureXML
277
Trong ví d trên, truy v n SQL l c ra các dòng v i i u ki n giá tr t i c t srp l n h n 100.
T& các dòng ã l c 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
c s! d ng
nh y n các ph n t! con.
Chú ý:
SQL không phân bi t kí t hoa, kí t th ng, và DB2 l u tr t t c các tên b ng và tên
c t m$c nh b3ng ch hoa. Nh ng XQuery l i phân bi t kí t hoa, kí t th ng. Các
hàm trên ây là các hàm giao di n c a XQuery, v y nên các tên b ng và tên c t truy n
vào hàm ph i
c chuy n thành ch hoa. 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.
15.3.6 K t n i v i SQL/XML
Ph n này mô t cách th c th c hi n các l nh k t n i JOIN gi a hai c t XML c a các b ng
khác nhau, ho$c gi a m t c t XML và m t c t quan h . Gi s! b n ã t o hai b ng b3ng
các câu l nh trong Li t kê 15.20.
CREATE TABLE dept (unitID CHAR(8), deptdoc XML)
CREATE TABLE unit (unitID CHAR(8) primary key not null,
name
CHAR(20),
manager VARCHAR(20),
...
)
Li t kê 15.20 – DDL c a các b ng
!c s
d ng trong ví d JOIN
Ta có th th c hi n l nh JOIN b3ng m t trong hai cách. Cách th nh t
trong Li t kê 15.21.
c th hi n nh
SELECT u.unitID
FROM dept d, unit u
WHERE XMLEXISTS (
‘$e//employee[name = $m]’
passing d.deptdoc as “e”, u.manager as “m”)
Li t kê 15.21 – Cách th
nh t ( th.c hi n l nh JOIN v i SQL/XML
Dòng 4 c a câu l nh trong o n mã trên ch+ ra r3ng l nh JOIN xu t hi n gi a ph n t!
name, là ph n t! con c a c t XML deptdoc trong b ng dept và c t quan h manager
trong b ng unit.
Li t kê 15.22 th hi n cách th hai
th c hi n l nh JOIN.
SELECT u.unitID
FROM dept d, unit u
WHERE u.manager = XMLCAST(
XMLQUERY(‘$e//employee/name ‘
passing d.deptdoc as “e”)
278
Nh p môn H qu n tr c s d li u DB2
AS char(20))
Li t kê 15.22 – Cách th
hai ( th.c hi n l nh JOIN v i SQL/XML
Trong cách th hai này, c t quan h n3m bên trái l nh JOIN. N u c t quan h
d u b3ng, m t ch+ m c quan h có th
c dùng thay cho m t ch+ m c XML.
bên trái
15.3.7. K t n i v i XQuery
Gi s! ta ã t o các b ng sau:
CREATE TABLE dept(unitID CHAR(8), deptdoc XML)
CREATE TABLE project(projectDoc XML)
N u ta s! d ng SQL/XML, l nh JOIN
c s! d ng nh Li t kê 15.23.
SELECT XMLQUERY (
‘$d/dept/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.projectDoc as “p”)
Li t kê 15.23 – L nh JOIN v i SQL/XML
L nh JOIN t
ng
ng s! d ng XQuery
c th hi n
Li t kê 15.24.
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
Li t kê 15.24 – L nh JOIN v i XQuery
Ph ng pháp th hai này d phiên d ch h n - bi n $dept ch a tài li u XML c a c t
deptdoc trong b ng dept. Bi n $proj ch a tài li u XML c a c t XML projectdoc
trong b ng project. 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.
15.3.8 Các thao tác c)p nh)t và xóa
Các thao tác c p nh t và xóa trên d li u XML có th
cách sau:
c th c hi n b3ng m t trong hai
S! d ng các câu l nh SQL UPDATE và DELETE.
S! d ng bi u th c TRANSFORM.
V i cách th nh t, s! d ng các câu l nh SQL UPDATE và DELETE, thao tác c p nh t ho$c
xóa x y ra m c tài li u; t c là, toàn b tài li u XML
c thay th b3ng m t tài li u
c
Ch
ng 15 - DB2 pureXML
c p nh t m i. Ví d , trong câu l nh UPDATE trong Li t kê 15.25 d
mu n thay *i ph n t! <state> thì toàn b tài li u XML v%n s)
279
i ây, n u b n ch+
c thay th th c s .
UPDATE clients SET contact=(
xmlparse(document
‘<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>
<fax>4087776666</fax>
<email>[email protected]</email>
</Client>')
)
WHERE id = 3227
Li t kê 15.25 – Ví d v câu l nh SQL UPDATE
A cách th hai, b n có th th c hi n vi c c p nh t tài li u con b3ng cách s! d ng bi u
th c TRANSFORM v i hi u qu t t h n nhi u. 'i u này cho phép b n thay th , chèn, xóa
ho$c *i tên các nút trong m t tài li u XML. B n c6ng có th thay *i giá tr c a m t nút
mà không ph i thay th chính nút ó, i n hình là vi c thay *i giá tr c a m t ph n t! hay
giá tr c a thu c tính - d ng c p nh t r t ph* bi n. S h tr này ã
c b* sung trong
DB2 9.5.
Bi u th c TRANSFORM là m t ph n c a ngôn ng XQuery, b n có th s! d ng nó b t c
n i nào b n v%n s! d ng XQuery, ví d trong m t bi u th c FLWOR hay trong hàm
XMLQUERY c a câu l nh SQL/XML. Tr ng h p s! d ng $c tr ng nh t là trong câu l nh
SQL UPDATE
ch+nh s!a tài li u XML trong m t c t XML.
Li t kê 15.26
a ra cú pháp c a bi u th c TRANSFORM.
>>-transform--| copy clause |--| modify clause |--| return clause |-><
copy clause
.-,---------------------------------------.
V
|
|--copy----$VariableName--:=--CopySourceExpression-+------------|
280
Nh p môn H qu n tr c s d li u DB2
modify clause
|--modify--ModifyExpression-------------------------------------|
return clause
|--return--ReturnExpression-------------------------------------|
Li t kê 15.26 – Cú pháp c a bi(u th c TRANSFORM
M nh
copy
c s! d ng
gán các tài li u XML b n mu n x! lý vào m t bi n. Trong
m nh
modify, b n có th g i m t bi u th c insert, delete, rename ho$c
replace. Các bi u th c này cho phép b n th c hi n vi c c p nh t tài li u XML c a b n.
Ví d :
N u mu n thêm các nút m i vào tài li u, ta s! d ng bi u th c insert.
' xóa các nút c a m t tài li u XML, ta s! d ng bi u th c delete.
' *i tên m t ph n t! hay m t thu c tính trong tài li u XML, ta s! d ng bi u th c
rename.
' thay th m t nút ang t n t i b i m t nút m i ho$c m t chu i các nút, ta s!
d ng bi u th c replace. Giá tr thay th c a bi u th c ch+ có th
c s! d ng
thay *i giá tr c a m t ph n t! hay m t thu c tính.
M nh
return tr v k t qu c a bi u th c TRANSFORM.
Li t kê 15.27
a ra m t ví d c a câu l nh UPDATE s! d ng bi u th c TRANSFORM.
(1)-- UPDATE customers
(2)-- SET contactinfo = xmlquery( 'declare default element namespace
(3)-"http://posample.org";
(4)-transform
(5)-copy $newinfo := $c
(6)-modify do insert <email2>my2email.gm.com</email2>
(7)-as last into $newinfo/customerinfo
(8)-return $newinfo' passing contactinfo as "c")
(9)-- WHERE id = 100
Li t kê 15.27 – L nh UPDATE s
d ng bi(u th c TRANSFORM
Trong ví d trên, các dòng (1), (2) và (9) là các ph n trong cú pháp c a câu l nh SQL
UPDATE. Trong dòng (2), hàm XMLQUERY
c g i, hàm này s) g i t i bi u th c chuy n
*i dòng (4). 'o n mã c a bi u th c chuy n *i n3m t& dòng (4) t i dòng (8), và nó
c s! d ng
chèn m t nút m i ch a ph n t! email2 vào tài li u XML. Chú ý r3ng
vi c c p nh t các ph n t! trong tài li u XML thông qua m t khung nhìn (view) không
c
h tr .
Ch
ng 15 - DB2 pureXML
281
Vi c xóa toàn b các tài li u XML t& các b ng c6ng t ng t nh khi s! d ng câu l nh
SELECT trong SQL/XML. B n s! d ng l nh SQL DELETE và ch+ ra các i u ki n c n thi t
trong m nh
WHERE.
15.3.9 ánh ch> m c XML
Trong tài li u XML, các ch+ m c có th
c t o cho các ph n t!, các thu c tính, ho$c cho
các giá tr (text node - các nút v n b n). D i ây là m t s ví d . Gi s! r3ng ta ã t o ra
b ng sau:
CREATE TABLE customer(info XML)
Và gi s! tài li u XML trong Li t kê 15.28 là m t trong các tài li u
c l u trong b ng ó.
<customerinfo Cid="1004">
<name>Matt Foreman</name>
<addr country="Canada">
<street>1596 Baseline</street>
<city>Toronto</city>
<state>Ontario</state>
<pcode>M3Z-5H9</pcode>
</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>
Li t kê 15.28 – Tài li u XML s d ng trong các ví d liên quan t i các ch> m c XML
Câu l nh trong Li t kê 15.29 t o ra m t ch+ m c cho thu c tính Cid.
CREATE UNIQUE INDEX idx1 ON customer(info)
GENERATE KEY USING
xmlpattern '/customerinfo/@Cid'
AS sql DOUBLE
Li t kê 15.29 – M t ch> m c cho thu c tính Cid
Câu l nh trong Li t kê 15.30 t o ra m t ch+ m c cho ph n t! name.
CREATE INDEX idx2 ON customer(info)
GENERATE KEY USING
xmlpattern '/customerinfo/name'
AS sql VARCHAR(40)
Li t kê 15.30 – M t ch> m c cho ph n t
name
Câu l nh trong Li t kê 15.31 t o m t ch+ m c cho t t c các ph n t! name.
282
Nh p môn H qu n tr c s d li u DB2
CREATE INDEX idx3 ON customer(info)
GENERATE KEY USING
xmlpattern '//name'
AS sql VARCHAR(40);
Li t kê 15.31 – M t ch> m c cho t t c các ph n t
name
Câu l nh trong Li t kê 15.32 t o ra m t ch+ m c cho t t c các nút v n b n (t t c các giá
tr ). Chúng tôi khuy n cáo b n không nên làm nh v y, vì s) m t r t nhi u chi phí cho vi c
duy trì ch+ m c cho các thao tác update, delete, insert và ch+ m c có th quá l n.
CREATE INDEX idx4 ON customer(info)
GENERATE KEY USING
xmlpattern '//text()'
AS sql VARCHAR(40);
Li t kê 15.32 – T2o ch> m c cho t t c các nút v n b n (không khuy n cáo)
15.4 Làm vi c v i l !c
XML
DB2 cho phép b n chèn m t tài li u XML vào c s d li u n u nó tuân theo nh d ng
úng (well-formed). N u không, b n s) nh n
c m t l i t i th i i m chèn. M$t khác,
DB2 không òi h/i b n ph i ki m tra tính h p l c a tài li u XML. N u b n mu n ki m tra,
b n có th th c hi n m t s ph ng án thay th mà chúng ta s) th o lu n trong ph n này.
15.4.1
ng kí l !c
XML
Các l c
XML (XML Schemas)
c l u trong các c s d li u DB2, trong kho l c
XML (XML Schema repository). ' thêm m t l c
XML vào kho, b n s! d ng l nh
REGISTER XMLSCHEMA.
Ví d , gi s! b n có m t tài li u XML
c l u trong t p tin order.xml nh Hình 15.10.
Ch
ng 15 - DB2 pureXML
Hình 15.10 – T)p tin order.xml ch a m t tài li u XML
Bây gi , gi s! b n có m t l
15.11.
c
XML
c l u trong t p tin order.xsd nh Hình
283
284
Nh p môn H qu n tr c s d li u DB2
Hình 15.11 – T)p tin order.xsd ch a l !c
Trong tài li u l
e-lip:
c
XML này, chúng ta chú ý
XML
n các vùng
<xsd:schema ...>: ch+ ra r3ng ây là tài li u l
c
<xsd:import ...>: nh p các t p tin xsd khác (các l
các thành ph n c a l c
l n h n này.
c ánh d u b i các vòng
XML.
c
XML khác) óng vai trò là
minOccurs=“1”: ví d v m t quy t c trong l c
XML, theo ó, ph n t! Item
ph i xu t hi n ít nh t m t l n, hay nói cách khác, ph i có ít nh t m t ph n t! Item.
Ti p ó,
ng kí l c
nh trong Li t kê 15.33 d
XML vào c s d li u, b n s! d ng o n k ch b n t
i ây. K ch b n này có các ghi chú i kèm.
ng t
-- CONNECT TO THE DATABASE
CONNECT TO SAMPLE;
-- REGISTER THE MAIN XML SCHEMA
REGISTER XMLSCHEMA http://www.test.com/order FROM D:\example3\order.xsd AS
order;
Ch
ng 15 - DB2 pureXML
285
-- ADD XML SCHEMA DOCUMENT TO MAIN SCHEMA
ADD XMLSCHEMA DOCUMENT TO order ADD http://www.test.com/header FROM
D:\example3\header.xsd;
-- ADD XML SCHEMA DOCUMENT TO MAIN SCHEMA
ADD XMLSCHEMA DOCUMENT TO order ADD http://www.test.com/product FROM
D:\example3\product.xsd;
-- ADD XML SCHEMA DOCUMENT TO MAIN SCHEMA
ADD XMLSCHEMA DOCUMENT TO order ADD http://www.test.com/customer FROM
D:\example3\customer.xsd;
-- COMPLETE THE SCHEMA REGISTRATION
COMPLETE XMLSCHEMA order;
Li t kê 15.33 – K0ch b n m9u th( hi n các b
c
ng ký m t l !c
' xem l i thông tin này v sau, b n có th dùng SELECT
Catalog nh trong Li t kê 15.34 d i ây.
XML
l y thông tin t& các b ng
SELECT CAST(OBJECTSCHEMA AS VARCHAR(15)), CAST(OBJECTNAME AS VARCHAR(15))
FROM syscat.xsrobjects
WHERE OBJECTNAME='ORDER';
Li t kê 15.34 – L y thông tin l !c
XML t1 các b ng Catalog c a DB2
15.4.2 Ki(m tra tính h!p l theo l !c
XML
Khi b n ã ng ký l c
XML trên DB2, b n có th ki m tra tính h p l cho tài li u XML
c a b n theo hai cách sau:
S! d ng hàm XMLVALIDATE trong câu l nh INSERT.
S! d ng m t b%y s ki n BEFORE.
Hình 15.12 minh h a ví d ki m tra s h p l c a tài li u XML Hình 15.10 theo l
XML Hình 15.11.
c
286
Nh p môn H qu n tr c s d li u DB2
Hình 15.12 - Ki(m tra tính h!p l theo l !c
XML s d ng XMLVALIDATE
' ki m tra m t tài li u XML có h p l hay không, b n có th s! d ng v t& IS
VALIDATED trong ràng bu c CHECK.
B n có th ki m tra tính h p l cho các tài li u XML trong m t c t s! d ng nhi u l c
XML khác nhau. 'i u này có ý ngh a quan tr ng trong s chuy n *i d dàng c a m t
l c
XML t& phiên b n 1 sang phiên b n 2. Trong cùng m t c t XML, b n c6ng có th
tìm th y nh ng tài li u XML không h
c ki m tra tính h p l . 'i u này r t h u d ng
n u các tài li u
c nh n t& nh ng ngu n áng tin c y và c nh ng ngu n không áng
tin c y, trong khi ch+ các b c x! lý sau ó m i c n ki m tra tính h p l c a các tài li u
này theo l c .
15.4.3 Các h3 tr! XML khác
Các tài li u XML nh/ có th
c l u tr c ti p cùng v i b ng c s . 'i u này có ngh a là
d li u XML
c l u tr trong cùng v trí nh các d li u quan h , và có th t n d ng các
Ch
ng 15 - DB2 pureXML
c ch nén t ng t nh v i d li u quan h chu#n. Các tài li u XML l n
trong i t ng n i b riêng bi t, và i t ng này c6ng có th
c nén.
287
c l u tr
DB2 c6ng h tr ti n hóa l c
XML. 'i u này có ngh a là: n u l c
XML c a b n
thay *i, b n có th c p nh t d dàng v i l nh UPDATE XMLSCHEMA. N u nh ng thay *i
t il c
XML quá m nh, b n có th nh n
c m t s l i.
Trong DB2, s phân rã XML (XML decomposition / shredding) c6ng
c h tr . 'ây là
ph ng pháp "c6"
l u tr XML trong các c s d li u, và c6ng là cách mà các nhà
cung c p khác s! d ng
l u tr XML. DB2 v%n h tr ph ng pháp này n u b n mu n
s! d ng, nh ng chúng tôi khuyên b n nên s! d ng pureXML. DB2 c6ng h tr m r ng
XML (XML Extender), và c6ng s! d ng ph ng pháp c6
l u tr XML, nh ng m r ng
này s) không còn
c c i ti n n a.
V i DB2 9.7, t t c các ích l i c a pureXML ã
c m r ng n các phân vùng c s
d li u th ng s! d ng cho kho d li u. Ch c n ng phân vùng c s d li u (Database
Partitioning Feature - DPF)
c cung c p trong phiên b n DB2 Enterprise Edition.
15.5 Tóm t-t
Ch ng này gi i thi u v XML và công ngh pureXML. Vi c s! d ng tài li u XML ang
t ng lên theo c p s nhân v i các công c Web 2.0 và các công ngh nh SOA. B3ng
cách l u tr tài li u XML trong c s d li u DB2, b n có th t n d ng l i th b o m t, l i
th v hi u n ng ho t ng c6ng nh l p trình linh ho t b3ng vi c s! d ng pureXML.
pureXML là m t công ngh cho phép b n l u tr các tài li u XML theo nh d ng phân tích
phân c p, nh m t cây, và i u này
c th c hi n ngay t i th i i m chèn c s d li u.
T i th i gian truy v n, không c n phân tích các tài li u XML
xây d ng cây tr c khi x!
lý. Cây cho các tài li u XML ã
c xây d ng và
c l u gi trong c s d li u. Ngoài
ra, công ngh pureXML s! d ng m t c c u XML thu n có th hi u XQuery; vì v y, không
c n ánh x XQuery sang SQL nh các s n ph#m h qu n tr c s d li u quan h khác.
Ch ng này c6ng
c p n cách chèn, xóa, c p nh t và truy v n các tài li u XML b3ng
cách s! d ng SQL/XML và XQuery. Ngoài ra, ch ng còn th o lu n v các ch+ m c XML,
l c
XML, và các tính n ng khác nh nén và ti n hóa l c
XML.
15.6 Bài t)p
Trong su t ch ng này, b n ã bi t m t s ví d v cú pháp c a SQL/XML, c a XQuery,
và chúng ã
c gi i thi u trong trình so n th o l nh DB2 Command Editor và IBM DB2
Data Studio. Bài t p này s) ki m tra ki n th c SQL/XML và XQuery c a b n trong khi ti p
thu kinh nghi m s! d ng nh ng công c này. Chúng ta s) s! d ng c s d li u mydb ã
c t o b3ng t p tin k ch b n table_creation.txt ã
c gi i thích tr c trong
ch ng này (Danh sách 15.5).
Th t c
1. T o c s d li u mydb và n p d li u XML, nh
c th o lu n t& tr
ch ng này. T p tin table_creation.txt n3m trong t p tin
c, trong
288
Nh p môn H qu n tr c s d li u DB2
Expressc_book_exercises_9.7.zip thu c th m c Ch ng 2. Ch y t p tin
k ch b n table_creation.txt t& c!a s* l nh DB2 ho$c Linux shell nh sau:
db2 –tvf table_creation.txt
2. N u k ch b n không thành công b c nào ó, hãy c g ng tìm ra v n
b3ng
cách xem các thông báo l i. M t v n
i n hình khi ch y k ch b n là b n có th
c n ph i thay *i các
ng d%n c a các t p tin, vì chúng có th n3m trong các
th m c khác nhau. B n luôn có th xóa toàn b c s d li u và b t u l i b3ng
vi c th c hi n l nh sau t& c!a s* l nh DB2 ho$c Linux shell:
db2 drop database mydb
3. N u xu t hi n l i khi b n ang c g ng xóa c s d li u do các k t n i ang ho t
ng, hãy th c hi n câu l nh này tr c:
db2 force applications all
4. Sau khi ch y thành công k ch b n, b n hãy s! d ng DB2 Control Center, ho$c
IBM Data Studio
xác minh r3ng các b ng items và clients ã
ct ov i
s hàng t ng ng là 4 và 7 hàng.
5. V i c s d li u mydb ã
c t o và v i hai b ng ã
c n p, bây gi b n có
th k t n i n c s d li u, và th c hi n các truy v n trong các li t kê, t& Li t kê
15.7 n 5.19.
A
Ph l c A – Kh-c ph c s. c
Ph l c này th o lu n v vi c làm th nào
kh c ph c các s c có th g$p ph i khi làm
vi c v i DB2. Hình A.1 cho ta m t cái nhìn t*ng quan v các hành ng nên th c hi n khi
có v n
phát sinh.
db2 ? <code>
Review Administration
Notification Log
Review db2diag.log
Problem!
Review system with
Operating System
commands
Search for APARs, or
known problems
Collect Traces, dumps,
trap files, core files and
contact IBM DB2 Tech
Support
Hình A.1 – T:ng quan v kh-c ph c s. c
Chú ý:
B n có th tham kh o video sau
bi t thêm thông tin v vi c kh c ph c s c :
http://www.channeldb2.com/video/video/show?id=807741:Video:4462
290
Nh p môn H qu n tr c s d li u DB2
A.1 Tìm thêm thông tin v các mã l3i
' có thêm thông tin v m t mã l i g$p ph i, b n nh p mã l i cùng v i d u ch m h/i i
kèm 3ng tr c vào vùng nh p l nh c a trình so n th o l nh (Command Editor) và nh p
chu t vào Execute. B n có th xem minh h a nh trong Hình A.2.
Hình A.2 – Tìm thêm thông tin v các mã l3i c a DB2
D u ch m h/i (?) s) g i n trình tr giúp c a DB2. D i ây là m t s ví d v vi c làm
th nào
g i trình tr giúp, ch1ng h n khi b n g$p mã l i SQL “-104”, trong ó các ví d
là t ng
ng:
db2
db2
db2
db2
db2
?
?
?
?
?
SQL0104N
SQL104N
SQL-0104
SQL-104
SQL-104N
A.2 SQLCODE và SQLSTATE
SQLCODE là mã nh n
c sau khi th c thi m i câu l nh SQL. Ý ngh a các giá tr c a
SQLCODE
c tóm t t nh sau:
SQLCODE = 0; câu l nh th c hi n thành công
SQLCODE > 0; câu l nh th c hi n thành công, nh ng tr v m t c nh báo
SQLCODE < 0; câu l nh th c hi n không thành công và tr v m t l i
SQLSTATE là m t chu i g m n m ký t theo chu#n ISO/ANSI SQL92. Hai ký t
c g i là mã l p SQLSTATE:
u tiên
Ph l c A – Kh c ph c s c
291
Mã l p là 00 ngh a là câu l nh ã th c hi n thành công
Mã l p là 01 ngh a là có m t c nh báo
Mã l p là 02 ngh a là 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
A.3 Nh)t ký thông báo qu n tr0 DB2
Nh t ký thông báo qu n tr DB2 cung c p thông tin ch#n oán v các l i t i i m phát sinh
l i. Trên môi tr ng Linux và UNIX, nh t ký thông báo qu n tr là m t t p tin v n b n d ng
<tên th hi n>.nfy (ví d “db2inst.nfy”). Trên Windows, t t c các thông báo qu n tr
c
ghi vào Windows Event Log.
Tham s c u hình DBM notifylevel cho phép ng
c ghi l i:
0 – Không có thông báo qu n tr nào
i qu n tr xác
nh m c
thông tin
c gi l i (không khuy n khích)
1 – Các l i nghiêm tr ng ho$c không th ph c h i
2 – Yêu c u th c hi n hành
ng ngay l p t c
3 – Thông tin quan tr ng, nh ng không yêu c u th c hi n hành
(m$c nh)
ng ngay l p t c
4 – Các thông i p
A.4 db2diag.log
Db2diag.log cung c p thông tin chi ti t h n nh t ký thông báo qu n tr DB2. Thông th ng
nó ch+
c s! d ng b i ng i h tr k2 thu t IBM DB2 hay nhà qu n tr c s d li u có
kinh nghi m. Thông tin trong db2diag.log bao g m:
V trí mã DB2 phát sinh l i.
Các thông tin nh n d ng ng d ng cho phép b n có th k t n i các m c c a các
ng d ng trong các t p tin db2diag.log trên máy ch và máy tr m.
M t thông i p chu#n oán (b t
u v i “DIA”) gi i thích nguyên nhân gây l i.
Các d li u h tr s"n có, nh c u trúc d li u SQLCA và con tr/
xu t ho$c t p b%y.
Trên Windows (tr& Vista), m$c
nh, db2diag.log
c $t trong th m c:
C:\Documents and Settings\All Users\Application
Data\IBM\DB2\DB2COPY1\<instance name>
Trên Windows Vista, db2diag.log
c $t trong:
n v trí c a k t
292
Nh p môn H qu n tr c s d li u DB2
C:\ProgramData\IBM\DB2\DB2COPY1\<instance name>
Trên Linux/UNIX:
/home/<instance_owner>/sqllib/db2dump
Tính y
c a v n b n chu#n oán
c xác nh b i tham s c u hình dbm cfg, là
DIAGLEVEL. M c
t& 0 n 4, trong ó 0 là
n gi n nh t, 4 là y
nh t. M c m$c
nh là 3.
A.5 Theo v t CLI
V i các ng d ng CLI, Java, PHP, và Ruby on Rails, b n có th b t ti n ích theo v t CLI
kh c ph c s c cho ng d ng c a b n. 'i u này có th
c th c hi n b3ng cách
thay *i t p tin db2cli.ini máy ch mà ng d ng c a b n ang ch y, nh minh h a Li t
kê A.1 d i ây:
[common]
trace=0
tracerefreshinterval=300
tracepathname=/path/to/writeable/directory
traceflush=1
Li t kê A.1 – Các dòng trong t)p tin db2cli.ini cho phép b)t ti n ích theo v t CLI
Ti n ích theo v t m c th p (db2trc) c6ng
cho ng i h tr k2 thu t DB2.
c cung c p s"n, nh ng th
ng ch+ h u d ng
A.6 Khi m khuy t và s a l3i trong DB2
'ôi khi v n
b n g$p ph i có th là do m t khi m khuy t c a DB2. IBM u $n phát
hành các gói vá l i
s!a ch a nh ng khi m khuy t ó (APARs). Trong tài li u c a b n
vá l i có ch a danh sách nh ng khi m khuy t mà nó s!a ch a
c. Khi phát tri n các
ng d ng m i, chúng tôi luôn khuyên b n nên s! d ng b n vá l i m i nh t. ' xem phiên
b n hi n t i c a b n và phiên b n c a b n vá l i: t& Control Center, ch n About t& trình
n Help; ho$c t& c!a s* l nh (Command Window), b n gõ db2level. L u ý r3ng các
gói vá l i và các h tr k2 thu t chính th c c a IBM DB2 không
c cung c p i kèm v i
DB2 Express-C. V i DB2 Express-C, các vá l i
c h p nh t vào chính t p tin cài $t
ch không
c ính kèm nh các gói vá l i r i n a.
Ph l c B – Tham kh o và Tài nguyên
B
B.1 Tham kh o
[1] ZIKOPOULOS, P. IBM® DB2® Universal Database™ and the Microsoft® Excel
Application Developer… for Beginners, dbazine.com article, Tháng 4 n m 2005
http://www.dbazine.com/db2/db2-disarticles/zikopoulos15
[2] ZIKOPOULOS, P. DB2 9 and Microsoft Access 2007 Part 1: Getting the Data...,
Database Journal article, Tháng 5 n m 2008
http://www.databasejournal.com/features/db2/article.php/3741221
[3] BHOGAL, K. Use Microsoft Access to interact with your DB2 data, developerWorks
article, Tháng 5 n m 2006
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0605bhogal/
[4] SARACCO, C. et all. IBM Redbook DB2 9: pureXML overview and fast start
Tháng 7 n m 2006
http://www.redbooks.ibm.com/abstracts/sg247298.html
B.2 Các trang Web:
1. Trang Web chính th c c a DB2 Express-C: www.ibm.com/db2/express
B n có th t i v các t p tin cài $t cho máy ch DB2 Express-C, máy tr m DB2,
các trình i u khi n DB2, tài li u h ng d%n s! d ng, b n c6ng có th truy c p
blog c a nhóm phát tri n DB2, ng ký
nh n email…
2. Di n àn DB2 Express:
www.ibm.com/developerworks/forums/dw_forum.jsp?forum=805&cat=19
B n có th s! d ng di n àn này
ng các câu h/i v k2 thu t khi b n không
th t tìm th y câu tr l i trong các tài li u h ng d%n.
294
Nh p môn H qu n tr c s d li u DB2
3. Trung tâm Thông tin DB2
Trung tâm thông tin giúp b n truy c p n ngu n tài li u h ng d%n tr c tuy n.
'ây là ngu n tài nguyên
c c p nh t th ng xuyên nh t. M i phiên b n c a
DB2 có m t Trung tâm Thông tin DB2 t ng ng:
DB2 9.1: http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
DB2 9.5: http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp
DB2 9.7: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
4. developerWorks: http://www.ibm.com/developerworks/db2
Trang Web này là m t ngu n tài nguyên tuy t v i cho các nhà phát tri n và các
nhà qu n tr c s d li u. A ây, h có th tìm th y các bài báo, bài h ng
d%n… hoàn toàn mi n phí.
5. alphaWorks: http://www.alphaworks.ibm.com/
Trang Web này cho phép b n truy c p tr c ti p vào các công ngh n*i tr i c a
IBM. 'ây là n i b n có th tìm th y nh ng công ngh m i nh t t& Phòng nguyên
c u c a IBM.
6. planetDB2: www.planetDB2.com
'ây là n i t p h p nhi u blog c a nh ng ng
i vi t v DB2.
7. H tr k2 thu t DB2: http://www.ibm.com/software/data/db2/support/db2_9/
B n có th tìm th y nh ng khi m khuy t và báo cáo v các v n
DB2 (APARs) cùng v i các thông tin k2 thu t khác…
g$p ph i c a
8. ChannelDB2: http://www.ChannelDB2.com/
ChannelDB2 là m t m ng xã h i c a c ng ng DB2. Nó cung c p các ti n ích
nh : các video, demo, podcast, blog, các cu c th o lu n, tài nguyên… v DB2,
dành cho Linux, UNIX, Windows, z/OS, và i5/OS.
Ph l c B – Tham kh o và Tài nguyên
295
B.3 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. 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
3. Free 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
4. Understanding DB2 – Learning Visually with Examples V9.5
Raul F. Chong, et all.
Tháng 1 n m 2008
ISBN-10: 0131580183
5. DB2® SQL PL: Essential Guide for DB2® UDB on Linux™, UNIX®, Windows™,
i5/OS™, and z/OS®, 2nd Edition
Zamil Janmohamed, Clara Liu, Drew Bradstock, Raul Chong, Michael Gao, Fraser
McArthur, Paul Yip
ISBN: 0-13-100772-6
6. DB2 9: pureXML overview and fast start
Cynthia M. Saracco, Don Chamberlin, Rav Ahuja
Tháng 6 n m 2006 SG24-7298
http://www.redbooks.ibm.com/abstracts/sg247298.html?Open
7. Information on Demand - Introduction to DB2 9 New Features
Paul Zikopoulos, George Baklarz, Chris Eaton, Leon Katsnelson
ISBN-10: 0071487832
ISBN-13: 978-0071487832
296
Nh p môn H qu n tr c s d li u DB2
B.4 Email liên h
H p th DB2 Express-C (cho nh ng câu h/i ki u hành chính): [email protected]
H p th DB2 dành cho các tr
ng ' i h c: [email protected]
Fly UP